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 linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sat, 20 Dec 2014 11:36:36 +1100 From: Herbert Xu <herbert@...dor.apana.org.au> To: David Vrabel <david.vrabel@...rix.com> Cc: netdev@...r.kernel.org, xen-devel@...ts.xenproject.org, konrad.wilk@...cle.com, boris.ostrovsky@...cle.com, edumazet@...gle.com, "David S. Miller" <davem@...emloft.net> Subject: net: Detect drivers that reschedule NAPI and exhaust budget On Sat, Dec 20, 2014 at 11:23:27AM +1100, Herbert Xu wrote: > > A similar bug exists in virtio_net. In order to detect other drivers doing this we should add something like this. -- >8 -- The commit d75b1ade567ffab085e8adbbdacf0092d10cd09c (net: less interrupt masking in NAPI) required drivers to leave poll_list empty if the entire budget is consumed. We have already had two broken drivers so let's add a check for this. Signed-off-by: Herbert Xu <herbert@...dor.apana.org.au> diff --git a/net/core/dev.c b/net/core/dev.c index f411c28..88f9725 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4620,7 +4620,11 @@ static void net_rx_action(struct softirq_action *h) */ napi_gro_flush(n, HZ >= 1000); } - list_add_tail(&n->poll_list, &repoll); + /* Some drivers may have called napi_schedule + * prior to exhausting their budget. + */ + if (!WARN_ON_ONCE(!list_empty(&n->poll_list))) + list_add_tail(&n->poll_list, &repoll); } } Cheers, -- Email: Herbert Xu <herbert@...dor.apana.org.au> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt -- 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