bugreport: The r8169.c driver is calling netif_receive_skb from hardirq and with interrupts off
Subsystems (2)
The r8169.c driver is calling netif_receive_skb from hardirq and with interrupts off, which seems to be invalid (the comments of netif_receive_skb) certainly say so.
The calltrace is like this:
packet_rcvnetif_receive_skbrtl8168_rx_interruptrtl8168_interrupthandle_IRQ_eventhandle_fasteoi_irqdo_IRQ
Which triggers a warning in packet_rcv() since that does a local_bh_enable(), which gives a WARN_ON if irqs are disabled (rightfully so it seems).
The code looks is in rtl8169_rx_interrupt() line 2832 and looks like
if (rtl8169_rx_vlan_skb(tp, desc, skb) < 0)
rtl8169_rx_skb(skb);with
#define rtl8169_rx_skb netif_receive_skb
higher up in the file.
This is the 46th highest ranking warnon/oops report for 2.6.25-rc
Greetings,
Arjan van de Ven
Quoted 19 lines · On Mon, 14 Apr 2008 11:01:16 -0700 Arjan van de Ven <[email protected]>…
The
r8169.cdriver is callingnetif_receive_skbfrom hardirq and with interrupts off, which seems to be invalid (the comments ofnetif_receive_skb) certainly say so.The calltrace is like this:
packet_rcvnetif_receive_skbrtl8168_rx_interruptrtl8168_interrupthandle_IRQ_eventhandle_fasteoi_irqdo_IRQWhich triggers a warning in
packet_rcv()since that does alocal_bh_enable(), which gives aWARN_ONif irqs are disabled (rightfully so it seems).The code looks is in
rtl8169_rx_interrupt()line 2832 and looks like
Quoted 9 lines
if (rtl8169_rx_vlan_skb(tp, desc, skb) < 0) rtl8169_rx_skb(skb);with
#definertl8169_rx_skbnetif_receive_skb
higher up in the file.This is the 46th highest ranking warnon/oops report for 2.6.25-rc
rtl8169_rx_skb is defined as netif_receive_skb only if NAPI is enabled. But the backtrace has CONFIG_R8169_NAPI disabled.
I also concerned that the reset_task calls rx_interrupt with different locking than normal interrupt.
Quoted 29 lines · Stephen Hemminger
Quoted 26 lines · On Mon, 14 Apr 2008 11:01:16 -0700 Arjan van de Ven <[email protected]>…
The
r8169.cdriver is callingnetif_receive_skbfrom hardirq and with interrupts off, which seems to be invalid (the comments ofnetif_receive_skb) certainly say so.The calltrace is like this:
packet_rcvnetif_receive_skbrtl8168_rx_interruptrtl8168_interrupthandle_IRQ_eventhandle_fasteoi_irqdo_IRQWhich triggers a warning in
packet_rcv()since that does alocal_bh_enable(), which gives aWARN_ONif irqs are disabled (rightfully so it seems).The code looks is in
rtl8169_rx_interrupt()line 2832 and looks likeif (rtl8169_rx_vlan_skb(tp, desc, skb) < 0) rtl8169_rx_skb(skb);with
#definertl8169_rx_skbnetif_receive_skb
higher up in the file.
Quoted 5 lines
Quoted 2 lines
This is the 46th highest ranking warnon/oops report for 2.6.25-rc
rtl8169_rx_skbis defined asnetif_receive_skbonly if NAPI is enabled. But the backtrace hasCONFIG_R8169_NAPIdisabled.
what makes you think this config option is disabled ? (just curious)
Quoted 2 lines
I also concerned that the
reset_taskcallsrx_interruptwith different locking than normal interrupt.
Quoted 30 lines · On Mon, 14 Apr 2008 11:24:04 -0700 Arjan van de Ven <[email protected]>…
Quoted 29 lines · Stephen Hemminger
Quoted 26 lines · On Mon, 14 Apr 2008 11:01:16 -0700 Arjan van de Ven <[email protected]>…
The
r8169.cdriver is callingnetif_receive_skbfrom hardirq and with interrupts off, which seems to be invalid (the comments ofnetif_receive_skb) certainly say so.The calltrace is like this:
packet_rcvnetif_receive_skbrtl8168_rx_interruptrtl8168_interrupthandle_IRQ_eventhandle_fasteoi_irqdo_IRQWhich triggers a warning in
packet_rcv()since that does alocal_bh_enable(), which gives aWARN_ONif irqs are disabled (rightfully so it seems).The code looks is in
rtl8169_rx_interrupt()line 2832 and looks likeif (rtl8169_rx_vlan_skb(tp, desc, skb) < 0) rtl8169_rx_skb(skb);with
#definertl8169_rx_skbnetif_receive_skb
higher up in the file.
Quoted 8 lines
Quoted 5 lines
Quoted 2 lines
This is the 46th highest ranking warnon/oops report for 2.6.25-rc
rtl8169_rx_skbis defined asnetif_receive_skbonly if NAPI is enabled. But the backtrace hasCONFIG_R8169_NAPIdisabled.what makes you think this config option is disabled ? (just curious)
The receive path for NAPI would be:
netif_receive_skb rtl8169_rx_interrupt rtl8169_napi
*** But we are both wrong ***
This is not the mainline r8169 driver but more likely the out of tree vendor 8168 driver. There is no rtl8168_rx_interrupt in mainline.
Quoted 2 lines · Stephen Hemminger
*** But we are both wrong ***
This is not the mainline r8169 driver but more likely the out of tree vendor 8168 driver. There is nortl8168_rx_interruptin mainline.
woops...
sorry about that