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
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <1280495027.3710.13.camel@jlt3.sipsolutions.net>
Date:	Fri, 30 Jul 2010 15:03:47 +0200
From:	Johannes Berg <johannes@...solutions.net>
To:	netdev <netdev@...r.kernel.org>
Subject: RPS vs. hard-irq-context netif_rx()

I got the following on a kvm instance I use for testing:

[   51.358803] WARNING: at kernel/lockdep.c:2327 trace_hardirqs_on_caller+0x167/0x200()
[   51.360210] Hardware name: Bochs
[   51.360210] Modules linked in:
[   51.360210] Pid: 1546, comm: dhclient3 Tainted: G        W   2.6.35-rc6-wl+ #588
[   51.360210] Call Trace:
[   51.360210]  <IRQ>  [<ffffffff8104e87f>] warn_slowpath_common+0x7f/0xc0
[   51.360210]  [<ffffffff8104e8da>] warn_slowpath_null+0x1a/0x20
[   51.360210]  [<ffffffff81087977>] trace_hardirqs_on_caller+0x167/0x200
[   51.360210]  [<ffffffff81087a1d>] trace_hardirqs_on+0xd/0x10
[   51.360210]  [<ffffffff81056ade>] local_bh_enable+0x9e/0x130
[   51.360210]  [<ffffffff8139fa82>] netif_rx+0xc2/0x250
[   51.360210]  [<ffffffff813146d7>] ei_receive+0x1b7/0x2c0
[   51.360210]  [<ffffffff81314ca2>] __ei_interrupt+0x282/0x360
[   51.360210]  [<ffffffff81314dce>] ei_interrupt+0xe/0x10
[   51.360210]  [<ffffffff810abe85>] handle_IRQ_event+0x85/0x300
[   51.360210]  [<ffffffff810aead5>] handle_level_irq+0x95/0x120
[   51.360210]  [<ffffffff81005a12>] handle_irq+0x22/0x30
[   51.360210]  [<ffffffff814394b3>] do_IRQ+0x73/0xf0
...


The reason seems to be that
 * RCU_TREE uses local_bh_disable/enable
 * CONFIG_RPS uses RCU within netif_rx()
 * the driver I'm using calls netif_rx() within the irq context

So .. where's the bug? I'd point to CONFIG_RPS since it's newest.

johannes

--
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ