slcan: ldisc generated skbs are received in softirq context
authorOliver Hartkopp <socketcan@hartkopp.net>
Wed, 10 Aug 2011 05:18:59 +0000 (05:18 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Aug 2011 12:52:57 +0000 (05:52 -0700)
As this discussion pointed out

http://marc.info/?l=linux-netdev&m=131257225602375

netdevices that are based on serial line disciplines should use netif_rx_ni()
when pushing received socketbuffers into the netdev rx queue.

Following commit 614851601c121b1320a35757ab88292d6272f906 ("slip: fix NOHZ
local_softirq_pending 08 warning") this patch updates the slcan driver
accordingly.

Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
CC: Matvejchikov Ilya <matvejchikov@gmail.com>
CC: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/can/slcan.c

index f523f1cc5142f05e29a73aaeb2e91b5125627d1b..4b70b7e8bdeb7690a12dd3e9bb9f2a172767f088 100644 (file)
@@ -197,7 +197,7 @@ static void slc_bump(struct slcan *sl)
        skb->ip_summed = CHECKSUM_UNNECESSARY;
        memcpy(skb_put(skb, sizeof(struct can_frame)),
               &cf, sizeof(struct can_frame));
-       netif_rx(skb);
+       netif_rx_ni(skb);
 
        sl->dev->stats.rx_packets++;
        sl->dev->stats.rx_bytes += cf.can_dlc;