Commit a87dfe14 authored by Neil Horman's avatar Neil Horman Committed by David S. Miller

netprio_cgroup: fix an off-by-one bug

# mount -t cgroup xxx /mnt
  # mkdir /mnt/tmp
  # cat /mnt/tmp/net_prio.ifpriomap
  lo 0
  eth0 0
  virbr0 0
  # echo 'lo 999' > /mnt/tmp/net_prio.ifpriomap
  # cat /mnt/tmp/net_prio.ifpriomap
  lo 999
  eth0 0
  virbr0 4101267344

We got weired output, because we exceeded the boundary of the array.
We may even crash the kernel..
Origionally-authored-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Signed-off-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
Signed-off-by: default avatarNeil Horman <nhorman@tuxdriver.com>
CC: "David S. Miller" <davem@davemloft.net>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 027a3b61
...@@ -108,7 +108,7 @@ static void extend_netdev_table(struct net_device *dev, u32 new_len) ...@@ -108,7 +108,7 @@ static void extend_netdev_table(struct net_device *dev, u32 new_len)
static void update_netdev_tables(void) static void update_netdev_tables(void)
{ {
struct net_device *dev; struct net_device *dev;
u32 max_len = atomic_read(&max_prioidx); u32 max_len = atomic_read(&max_prioidx) + 1;
struct netprio_map *map; struct netprio_map *map;
rtnl_lock(); rtnl_lock();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment