Replace kmalloc(size * sizeof) with kmalloc_array() for safer memory allocation and overflow prevention. Signed-off-by: chuguangqing --- drivers/net/ovpn/crypto_aead.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/net/ovpn/crypto_aead.c b/drivers/net/ovpn/crypto_aead.c index 2cca759feffa..da0ce4f348e6 100644 --- a/drivers/net/ovpn/crypto_aead.c +++ b/drivers/net/ovpn/crypto_aead.c @@ -72,8 +72,9 @@ int ovpn_aead_encrypt(struct ovpn_peer *peer, struct ovpn_crypto_key_slot *ks, return -ENOSPC; /* sg may be required by async crypto */ - ovpn_skb_cb(skb)->sg = kmalloc(sizeof(*ovpn_skb_cb(skb)->sg) * - (nfrags + 2), GFP_ATOMIC); + ovpn_skb_cb(skb)->sg = kmalloc_array(nfrags + 2, + sizeof(*ovpn_skb_cb(skb)->sg), + GFP_ATOMIC); if (unlikely(!ovpn_skb_cb(skb)->sg)) return -ENOMEM; @@ -185,8 +186,9 @@ int ovpn_aead_decrypt(struct ovpn_peer *peer, struct ovpn_crypto_key_slot *ks, return -ENOSPC; /* sg may be required by async crypto */ - ovpn_skb_cb(skb)->sg = kmalloc(sizeof(*ovpn_skb_cb(skb)->sg) * - (nfrags + 2), GFP_ATOMIC); + ovpn_skb_cb(skb)->sg = kmalloc_array(nfrags + 2, + sizeof(*ovpn_skb_cb(skb)->sg), + GFP_ATOMIC); if (unlikely(!ovpn_skb_cb(skb)->sg)) return -ENOMEM; -- 2.43.5