lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Wed, 03 Oct 2007 17:44:53 +0200 From: Peter Zijlstra <a.p.zijlstra@...llo.nl> To: linux-kernel <linux-kernel@...r.kernel.org>, netdev <netdev@...r.kernel.org> Cc: Stephen Hemminger <shemminger@...ux-foundation.org>, Jeff Dike <jdike@...toit.com>, David Miller <davem@...emloft.net> Subject: [PATCH] net: fix race in process_backlog Subject: net: fix race in process_backlog The recent NAPI rework (4fa57c9ea9f36f9ca852f3a88ca5d2f1aebbc960) introduced a race between netif_rx() and process_backlog() which resulted in softirq processing to drop dead. netif_rx() process_backlog() irq_disable(); skb = __skb_dequeue(); irq_enable(); irq_disable(); __skb_queue_tail(); napi_schedule(); irq_enable(); if (!skb) napi_complete(); <-- oops! we cleared the napi bit, even though there is data to process. Signed-off-by: Peter Zijlstra <a.p.zijlstra@...llo.nl> --- net/core/dev.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) Index: linux-2.6/net/core/dev.c =================================================================== --- linux-2.6.orig/net/core/dev.c +++ linux-2.6/net/core/dev.c @@ -2095,11 +2095,11 @@ static int process_backlog(struct napi_s local_irq_disable(); skb = __skb_dequeue(&queue->input_pkt_queue); - local_irq_enable(); if (!skb) { - napi_complete(napi); + __napi_complete(napi); break; } + local_irq_enable(); dev = skb->dev; - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists