[PPPOL2TP]: Make locking calls softirq-safe
authorJames Chapman <jchapman@katalix.com>
Thu, 6 Mar 2008 02:39:08 +0000 (18:39 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 6 Mar 2008 02:39:08 +0000 (18:39 -0800)
commitcf3752e2d203bbbfc88d29e362e6938cef4339b3
treef48f87708423899ca04590e0a004b3c4913443f9
parent5a346a10c0b1192e7eae52f0f3a332f1d3f11226
[PPPOL2TP]: Make locking calls softirq-safe

Fix locking issues in the pppol2tp driver which can cause a kernel
crash on SMP boxes. There were two problems:-

1. The driver was violating read_lock() and write_lock() scheduling
   rules because it wasn't using softirq-safe locks in softirq
   contexts. So we now consistently use the _bh variants of the lock
   functions.

2. The driver was calling sk_dst_get() in pppol2tp_xmit() which was
   taking sk_dst_lock in softirq context. We now call __sk_dst_get().

Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/pppol2tp.c