check the return value of ndo_select_queue()
Subsystems (2)
PATCH 1/1 check the return value of ndo_select_queue()
check the return value of ndo_select_queue()
Check the return value of ndo_select_queue(). If the value isn't smaller than the real_num_tx_queues, print a warning message, and reset it to zero.
----net/core/dev.c | 24 ++++++++++++++++++------
1 file changed, 18 insertions(+), 6 deletions(-)
net/core/dev.c +18 -6
@@ -1791,13 +1791,25 @@ EXPORT_SYMBOL(skb_tx_hash);static struct netdev_queue *dev_pick_tx (struct net_device *dev,struct sk_buff *skb) { -const struct net_device_ops *ops = dev->netdev_ops; -u16 queue_index =0 ; - -if (ops->ndo_select_queue) - queue_index = ops->ndo_select_queue (dev, skb); -else if (dev->real_num_tx_queues >1 ) +u16 queue_index; +u16 (*ndo_select_queue)(struct net_device *,struct sk_buff *); +unsigned int real_num_tx_queues = dev->real_num_tx_queues; + +if (real_num_tx_queues ==1 ) { + queue_index =0 ; + }else if ((ndo_select_queue = dev->netdev_ops->ndo_select_queue)) { + queue_index =ndo_select_queue (dev, skb); +if (unlikely (queue_index >= real_num_tx_queues)) { +if (net_ratelimit ()) +WARN (1 ,"%s selects TX queue %d, " +"but real number of TX queues is %d\n" , + dev->name, queue_index, + real_num_tx_queues); + queue_index =0 ; + } + }else { queue_index =skb_tx_hash (dev, skb); + }skb_set_queue_mapping (skb, queue_index);return netdev_get_tx_queue (dev, queue_index);
Quoted 6 lines · Changli Gao
check the return value of
ndo_select_queue()Check the return value of
ndo_select_queue(). If the value isn't smaller than thereal_num_tx_queues, print a warning message, and reset it to zero.Signed-off-by Changli Gao <[email protected]>
David Miller
maintainerFrom: Eric Dumazet <[email protected]>
Date: Tue, 10 Nov 2009 04:43:33 +0100
Quoted 9 lines
Quoted 6 lines · Changli Gao
check the return value of
ndo_select_queue()Check the return value of
ndo_select_queue(). If the value isn't smaller than thereal_num_tx_queues, print a warning message, and reset it to zero.Signed-off-by Changli Gao <[email protected]>Acked-by Eric Dumazet <[email protected]>
This patch does not apply properly to net-next-2.6, the dev_pick_tx() function looks a lot different now.
Please respin this patch and resubmit, thank you.