提交 df3eb6cd 编写于 作者: B Bernie Harris 提交者: David S. Miller

net_sched: drr: check for NULL pointer in drr_dequeue

There are cases where qdisc_dequeue_peeked can return NULL, and the result
is dereferenced later on in the function.

Similarly to the other qdisc dequeue functions, check whether the skb
pointer is NULL and if it is, goto out.
Signed-off-by: NBernie Harris <bernie.harris@alliedtelesis.co.nz>
Reviewed-by: NCong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 b83ef507
...@@ -403,6 +403,8 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch) ...@@ -403,6 +403,8 @@ static struct sk_buff *drr_dequeue(struct Qdisc *sch)
if (len <= cl->deficit) { if (len <= cl->deficit) {
cl->deficit -= len; cl->deficit -= len;
skb = qdisc_dequeue_peeked(cl->qdisc); skb = qdisc_dequeue_peeked(cl->qdisc);
if (unlikely(skb == NULL))
goto out;
if (cl->qdisc->q.qlen == 0) if (cl->qdisc->q.qlen == 0)
list_del(&cl->alist); list_del(&cl->alist);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册