PPPoA driver calls ppp_unregister_channel from invalid context
Hi,
in case a VCC is being closed, pppoatm calls pppoatm_unassign_vcc (from pppoatm_push), which calls ppp_unregister_channel. However the context pppoatm_push is running in is not "process context" as demanded by ppp_unregister_channel, resulting in (valid) warning messages, like the one below.
The kernel is 2.6.7, the ATM card is a Fore HE155 (which shouldn't matter since pppoatm_push is definitely not "process context".
What would be the right way of unregistering the channel in case the VCC is being closed (or imagine a native PPPoEoA driver [yes, not using br2684...]) receiving a PADT, so one has to initiate an unregister from the driver?
Rganks for the help,
Immanuel
Jul 28 16:09:34 ipat06 kernel: Debug: sleeping function called from invalid context at include/linux/rwsem.h:66 Jul 28 16:09:34 ipat06 kernel: in_atomic():1, irqs_disabled():1 Jul 28 16:09:34 ipat06 kernel: [dump_stack+30/32] dump_stack+0x1e/0x20 Jul 28 16:09:34 ipat06 kernel: [<c01080de>] dump_stack+0x1e/0x20 Jul 28 16:09:34 ipat06 kernel: [__might_sleep+199/224] __might_sleep+0xc7/0xe0 Jul 28 16:09:34 ipat06 kernel: [<c011ff57>] __might_sleep+0xc7/0xe0 Jul 28 16:09:34 ipat06 kernel: [pg0+945292153/1068032000] ppp_unregister_channel+0x39/0x3e0 [ppp_generic] Jul 28 16:09:34 ipat06 kernel: [<f8af0379>]
ppp_unregister_channel+0x39/0x3e0 [ppp_generic]
...
Signature · 2 lines
Till Immanuel Patzschke, CTO Q Inc
This was an issue at one point with the PPPoE driver. The solution, IIRC, was to mark the socket connection as having received a PADT and unregister it next time an operation was performed from process context.
Signature · 1 line
Michal Ostrowski <[email protected]>
Quoted 33 lines · Till Immanuel Patzschke
Hi,
in case a VCC is being closed, pppoatm calls
pppoatm_unassign_vcc(frompppoatm_push), which callsppp_unregister_channel. However the contextpppoatm_pushis running in is not "process context" as demanded byppp_unregister_channel, resulting in (valid) warning messages, like the one below.
The kernel is 2.6.7, the ATM card is a Fore HE155 (which shouldn't matter sincepppoatm_pushis definitely not "process context".What would be the right way of unregistering the channel in case the VCC is being closed (or imagine a native PPPoEoA driver [yes, not using br2684...]) receiving a PADT, so one has to initiate an unregister from the driver?
Rganks for the help,
Immanuel
Jul 28 16:09:34 ipat06 kernel: Debug: sleeping function called from invalid context at include/linux/rwsem.h:66 Jul 28 16:09:34 ipat06 kernel: in_atomic():1, irqs_disabled():1 Jul 28 16:09:34 ipat06 kernel: [dump_stack+30/32] dump_stack+0x1e/0x20 Jul 28 16:09:34 ipat06 kernel: [<c01080de>] dump_stack+0x1e/0x20 Jul 28 16:09:34 ipat06 kernel: [__might_sleep+199/224] __might_sleep+0xc7/0xe0 Jul 28 16:09:34 ipat06 kernel: [<c011ff57>] __might_sleep+0xc7/0xe0 Jul 28 16:09:34 ipat06 kernel: [pg0+945292153/1068032000] ppp_unregister_channel+0x39/0x3e0 [ppp_generic] Jul 28 16:09:34 ipat06 kernel: [<f8af0379>]
ppp_unregister_channel+0x39/0x3e0[ppp_generic]
...