ethtool: Use kcalloc instead of kmalloc for ethtool_get_strings
authorJoe Perches <joe@perches.com>
Wed, 14 Oct 2015 08:09:40 +0000 (01:09 -0700)
committerSasha Levin <sasha.levin@oracle.com>
Fri, 13 Nov 2015 18:17:15 +0000 (13:17 -0500)
[ Upstream commit 077cb37fcf6f00a45f375161200b5ee0cd4e937b ]

It seems that kernel memory can leak into userspace by a
kmalloc, ethtool_get_strings, then copy_to_user sequence.

Avoid this by using kcalloc to zero fill the copied buffer.

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
net/core/ethtool.c

index 06dfb293e5aafa10ab2754bfb80d29ad29f2db95..14bb1583947ec2215b535181fcc1781b08ac7624 100644 (file)
@@ -1257,7 +1257,7 @@ static int ethtool_get_strings(struct net_device *dev, void __user *useraddr)
 
        gstrings.len = ret;
 
-       data = kmalloc(gstrings.len * ETH_GSTRING_LEN, GFP_USER);
+       data = kcalloc(gstrings.len, ETH_GSTRING_LEN, GFP_USER);
        if (!data)
                return -ENOMEM;