From: Chas W. (CONTRACTOR) <ch...@cm...> - 2014-08-15 00:56:43
|
In message <201...@re...>,David Miller writes: >From: Chas Williams - CONTRACTOR <ch...@cm...> >Date: Thu, 14 Aug 2014 09:19:47 -0400 > >> The LECS response contains the MTU that should be used. Correctly >> synchronize with other layers when updating. >> >> Signed-off-by: Chas Williams - CONTRACTOR <ch...@cm...> > >I don't think you can sleep from this function, which rtnl_lock() may >require. Look elsewhere in this routine, it's doing GFP_ATOMIC >allocations even. Its been a while but... This is the send routine for a virtual atm device that is the control interface bewteen the user space client and the kernel. The user space client creates an atm socket and uses an ioctl to connect that atm socket to the this virtual device. So the call path is something like: sendmsg() -> vcc_sendmsg() -> virtual atm device.send() Generally speaking, you can't sleep in the send routine of an atm device since there are other potential users besides sockets. The GFP_ATOMIC usage is probably a lack of understanding. The other IRQ level locks are necessary for coordination. |