Skip to content

Commit

Permalink
net: clear heap allocations for privileged ethtool actions
Browse files Browse the repository at this point in the history
Several other ethtool functions leave heap uncleared (potentially) by
drivers. Some interfaces appear safe (eeprom, etc), in that the sizes
are well controlled. In some situations (e.g. unchecked error conditions),
the heap will remain unchanged in areas before copying back to userspace.
Note that these are less of an issue since these all require CAP_NET_ADMIN.

Cc: stable@kernel.org
Signed-off-by: Kees Cook <kees.cook@canonical.com>
Acked-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Kees Cook authored and David S. Miller committed Oct 11, 2010
1 parent 0aa7dea commit b00916b
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions net/core/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ static noinline_for_stack int ethtool_get_rxfh_indir(struct net_device *dev,
(KMALLOC_MAX_SIZE - sizeof(*indir)) / sizeof(*indir->ring_index))
return -ENOMEM;
full_size = sizeof(*indir) + sizeof(*indir->ring_index) * table_size;
indir = kmalloc(full_size, GFP_USER);
indir = kzalloc(full_size, GFP_USER);
if (!indir)
return -ENOMEM;

Expand Down Expand Up @@ -538,7 +538,7 @@ static int ethtool_get_rx_ntuple(struct net_device *dev, void __user *useraddr)

gstrings.len = ret;

data = kmalloc(gstrings.len * ETH_GSTRING_LEN, GFP_USER);
data = kzalloc(gstrings.len * ETH_GSTRING_LEN, GFP_USER);
if (!data)
return -ENOMEM;

Expand Down Expand Up @@ -775,7 +775,7 @@ static int ethtool_get_regs(struct net_device *dev, char __user *useraddr)
if (regs.len > reglen)
regs.len = reglen;

regbuf = kmalloc(reglen, GFP_USER);
regbuf = kzalloc(reglen, GFP_USER);
if (!regbuf)
return -ENOMEM;

Expand Down

0 comments on commit b00916b

Please sign in to comment.