diff options
author | Patrick McHardy <kaber@trash.net> | 2007-07-20 19:45:45 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-07-20 19:45:45 -0700 |
commit | 31ce72a6b1c7635259cf522459539c0611f2c50c (patch) | |
tree | d8a20cc99b87822c56081b4bc2b4e9bf796a196a | |
parent | fc7b93800b48324667e218a4b6b784b853cf4dd7 (diff) | |
download | op-kernel-dev-31ce72a6b1c7635259cf522459539c0611f2c50c.zip op-kernel-dev-31ce72a6b1c7635259cf522459539c0611f2c50c.tar.gz |
[NET]: Fix loopback crashes when multiqueue is enabled.
From: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | include/linux/netdevice.h | 2 | ||||
-rw-r--r-- | net/core/dev.c | 4 |
2 files changed, 3 insertions, 3 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 9820ca1..4a616d7 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h @@ -575,7 +575,7 @@ struct net_device /* The TX queue control structures */ unsigned int egress_subqueue_count; - struct net_device_subqueue egress_subqueue[0]; + struct net_device_subqueue egress_subqueue[1]; }; #define to_net_dev(d) container_of(d, struct net_device, dev) diff --git a/net/core/dev.c b/net/core/dev.c index 38212c3..ee40355 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3624,7 +3624,7 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, /* ensure 32-byte alignment of both the device and private area */ alloc_size = (sizeof(*dev) + NETDEV_ALIGN_CONST + - (sizeof(struct net_device_subqueue) * queue_count)) & + (sizeof(struct net_device_subqueue) * (queue_count - 1))) & ~NETDEV_ALIGN_CONST; alloc_size += sizeof_priv + NETDEV_ALIGN_CONST; @@ -3642,7 +3642,7 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, dev->priv = ((char *)dev + ((sizeof(struct net_device) + (sizeof(struct net_device_subqueue) * - queue_count) + NETDEV_ALIGN_CONST) + (queue_count - 1)) + NETDEV_ALIGN_CONST) & ~NETDEV_ALIGN_CONST)); } |