Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1375873

Re: [PATCH net v2] net: sched: do not requeue a NULL skb

From Lars Persson <lars.persson@axis.com>
Newsgroups linux.kernel
Subject Re: [PATCH net v2] net: sched: do not requeue a NULL skb
Date 2016-04-11 15:40 +0200
Message-ID <rmKem-6GA-37@gated-at.bofh.it> (permalink)
References <rmDwd-1lv-7@gated-at.bofh.it> <rmK4G-6zt-17@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw



On 04/11/2016 03:23 PM, Eric Dumazet wrote:
> On Mon, 2016-04-11 at 08:24 +0200, Lars Persson wrote:
>> A failure in validate_xmit_skb_list() triggered an unconditional call
>> to dev_requeue_skb with skb=NULL. This slowly grows the queue
>> discipline's qlen count until all traffic through the queue stops.
>>
>> By introducing a NULL check in dev_requeue_skb it was also necessary
>> to make the __netif_schedule call conditional to avoid scheduling an
>> empty queue.
>>
>> Fixes: 55a93b3ea780 ("qdisc: validate skb without holding lock")
>> Signed-off-by: Lars Persson <larper@axis.com>
>> ---
>>   net/sched/sch_generic.c | 11 +++++++----
>>   1 file changed, 7 insertions(+), 4 deletions(-)
>>
>> diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
>> index f18c350..4e6a79c 100644
>> --- a/net/sched/sch_generic.c
>> +++ b/net/sched/sch_generic.c
>> @@ -47,10 +47,13 @@ EXPORT_SYMBOL(default_qdisc_ops);
>>
>>   static inline int dev_requeue_skb(struct sk_buff *skb, struct Qdisc *q)
>>   {
>> -	q->gso_skb = skb;
>> -	q->qstats.requeues++;
>> -	q->q.qlen++;	/* it's still part of the queue */
>> -	__netif_schedule(q);
>> +	if (skb) {
>> +		q->gso_skb = skb;
>> +		q->qstats.requeues++;
>> +		q->q.qlen++;	/* it's still part of the queue */
>> +	}
>> +	if (qdisc_qlen(q))
>> +		__netif_schedule(q);
>>
>>   	return 0;
>>   }
>
>
> Please always CC patch author when fixing a bug.
>
> Why adding the if (qdisc_qlen(q)) extra test ?
>
> This seems unrelated to the bug fix, and probably should be part of a
> second patch targeting net-next tree.

I though it would be prudent because the queue can be non-empty even for 
the case of skb=NULL. So should it be there in this patch, another patch 
or not at all ?

>
> Also please add a likely() clause
>
> if (likely(skb)) {
>          q->gso_skb = skb;
>          q->qstats.requeues++;
>          q->q.qlen++;    /* it's still part of the queue */
>          __netif_schedule(q);
> }

Will fix.

> Thanks !
>
>
>
>
>

Back to linux.kernel | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

[PATCH net v2] net: sched: do not requeue a NULL skb Lars Persson <lars.persson@axis.com> - 2016-04-11 08:30 +0200
  Re: [PATCH net v2] net: sched: do not requeue a NULL skb Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-11 15:30 +0200
    Re: [PATCH net v2] net: sched: do not requeue a NULL skb Lars Persson <lars.persson@axis.com> - 2016-04-11 15:40 +0200
      Re: [PATCH net v2] net: sched: do not requeue a NULL skb Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-11 16:30 +0200
        Re: [PATCH net v2] net: sched: do not requeue a NULL skb Lars Persson <lars.persson@axis.com> - 2016-04-11 17:20 +0200
          Re: [PATCH net v2] net: sched: do not requeue a NULL skb Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-11 18:00 +0200
            Re: [PATCH net v2] net: sched: do not requeue a NULL skb Cong Wang <xiyou.wangcong@gmail.com> - 2016-04-11 20:10 +0200
              Re: [PATCH net v2] net: sched: do not requeue a NULL skb Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-11 20:30 +0200
                Re: [PATCH net v2] net: sched: do not requeue a NULL skb Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-11 20:40 +0200
                Re: [PATCH net v2] net: sched: do not requeue a NULL skb Cong Wang <xiyou.wangcong@gmail.com> - 2016-04-12 01:20 +0200
                Re: [PATCH net v2] net: sched: do not requeue a NULL skb Eric Dumazet <eric.dumazet@gmail.com> - 2016-04-12 01:50 +0200
          Re: [PATCH net v2] net: sched: do not requeue a NULL skb Cong Wang <xiyou.wangcong@gmail.com> - 2016-04-11 20:00 +0200

csiph-web