https://github.com/torvalds/linux
Revision 24b95685ffcdb3dc28f64b9e8af6ea3e8360fbc5 authored by James Chapman on 04 June 2008, 22:54:07 UTC, committed by David S. Miller on 04 June 2008, 22:54:07 UTC
Some problems have been experienced in the field which cause an oops in the pppol2tp driver if L2TP tunnels fail while passing data. The pppol2tp driver uses private data that is referenced via the sk->sk_user_data of its UDP and PPPoL2TP sockets. This patch makes sure that the driver uses sock_hold() when it holds a reference to the sk pointer. This affects its sendmsg(), recvmsg(), getname(), [gs]etsockopt() and ioctl() handlers. Tested by ISP where problem was seen. System has been up 10 days with no oops since running this patch. Without the patch, an oops would occur every 1-2 days. Signed-off-by: James Chapman <jchapman@katalix.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 293ad60
Tip revision: 24b95685ffcdb3dc28f64b9e8af6ea3e8360fbc5 authored by James Chapman on 04 June 2008, 22:54:07 UTC
l2tp: Fix possible oops if transmitting or receiving when tunnel goes down
l2tp: Fix possible oops if transmitting or receiving when tunnel goes down
Tip revision: 24b9568
File | Mode | Size |
---|---|---|
lzo | ||
reed_solomon | ||
zlib_deflate | ||
zlib_inflate | ||
.gitignore | -rw-r--r-- | 51 bytes |
Kconfig | -rw-r--r-- | 2.9 KB |
Kconfig.debug | -rw-r--r-- | 23.4 KB |
Kconfig.kgdb | -rw-r--r-- | 1.7 KB |
Makefile | -rw-r--r-- | 2.5 KB |
argv_split.c | -rw-r--r-- | 1.8 KB |
audit.c | -rw-r--r-- | 1.2 KB |
bitmap.c | -rw-r--r-- | 30.0 KB |
bitrev.c | -rw-r--r-- | 2.1 KB |
bug.c | -rw-r--r-- | 4.1 KB |
bust_spinlocks.c | -rw-r--r-- | 588 bytes |
check_signature.c | -rw-r--r-- | 599 bytes |
cmdline.c | -rw-r--r-- | 3.5 KB |
cpumask.c | -rw-r--r-- | 565 bytes |
crc-ccitt.c | -rw-r--r-- | 3.0 KB |
crc-itu-t.c | -rw-r--r-- | 2.8 KB |
crc16.c | -rw-r--r-- | 2.8 KB |
crc32.c | -rw-r--r-- | 14.9 KB |
crc32defs.h | -rw-r--r-- | 1.0 KB |
crc7.c | -rw-r--r-- | 2.3 KB |
ctype.c | -rw-r--r-- | 1.3 KB |
debug_locks.c | -rw-r--r-- | 1.1 KB |
debugobjects.c | -rw-r--r-- | 21.0 KB |
dec_and_lock.c | -rw-r--r-- | 806 bytes |
devres.c | -rw-r--r-- | 7.7 KB |
div64.c | -rw-r--r-- | 2.0 KB |
dump_stack.c | -rw-r--r-- | 290 bytes |
extable.c | -rw-r--r-- | 1.9 KB |
fault-inject.c | -rw-r--r-- | 7.9 KB |
find_next_bit.c | -rw-r--r-- | 6.4 KB |
gen_crc32table.c | -rw-r--r-- | 1.8 KB |
genalloc.c | -rw-r--r-- | 5.3 KB |
halfmd4.c | -rw-r--r-- | 2.0 KB |
hexdump.c | -rw-r--r-- | 6.1 KB |
hweight.c | -rw-r--r-- | 1.6 KB |
idr.c | -rw-r--r-- | 19.3 KB |
inflate.c | -rw-r--r-- | 37.8 KB |
int_sqrt.c | -rw-r--r-- | 533 bytes |
iomap.c | -rw-r--r-- | 7.4 KB |
iomap_copy.c | -rw-r--r-- | 2.1 KB |
iommu-helper.c | -rw-r--r-- | 1.8 KB |
ioremap.c | -rw-r--r-- | 2.1 KB |
irq_regs.c | -rw-r--r-- | 578 bytes |
kasprintf.c | -rw-r--r-- | 680 bytes |
kernel_lock.c | -rw-r--r-- | 2.9 KB |
klist.c | -rw-r--r-- | 7.5 KB |
kobject.c | -rw-r--r-- | 20.5 KB |
kobject_uevent.c | -rw-r--r-- | 8.0 KB |
kref.c | -rw-r--r-- | 1.9 KB |
libcrc32c.c | -rw-r--r-- | 6.4 KB |
list_debug.c | -rw-r--r-- | 2.0 KB |
lmb.c | -rw-r--r-- | 11.6 KB |
locking-selftest-hardirq.h | -rw-r--r-- | 207 bytes |
locking-selftest-mutex.h | -rw-r--r-- | 120 bytes |
locking-selftest-rlock-hardirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-rlock-softirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-rlock.h | -rw-r--r-- | 158 bytes |
locking-selftest-rsem.h | -rw-r--r-- | 163 bytes |
locking-selftest-softirq.h | -rw-r--r-- | 207 bytes |
locking-selftest-spin-hardirq.h | -rw-r--r-- | 73 bytes |
locking-selftest-spin-softirq.h | -rw-r--r-- | 73 bytes |
locking-selftest-spin.h | -rw-r--r-- | 118 bytes |
locking-selftest-wlock-hardirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-wlock-softirq.h | -rw-r--r-- | 74 bytes |
locking-selftest-wlock.h | -rw-r--r-- | 158 bytes |
locking-selftest-wsem.h | -rw-r--r-- | 163 bytes |
locking-selftest.c | -rw-r--r-- | 28.6 KB |
parser.c | -rw-r--r-- | 6.0 KB |
percpu_counter.c | -rw-r--r-- | 3.1 KB |
plist.c | -rw-r--r-- | 2.8 KB |
prio_heap.c | -rw-r--r-- | 1.4 KB |
prio_tree.c | -rw-r--r-- | 12.2 KB |
proportions.c | -rw-r--r-- | 9.3 KB |
radix-tree.c | -rw-r--r-- | 27.3 KB |
random32.c | -rw-r--r-- | 3.7 KB |
ratelimit.c | -rw-r--r-- | 1.3 KB |
rbtree.c | -rw-r--r-- | 8.6 KB |
reciprocal_div.c | -rw-r--r-- | 159 bytes |
rwsem-spinlock.c | -rw-r--r-- | 6.8 KB |
rwsem.c | -rw-r--r-- | 6.4 KB |
scatterlist.c | -rw-r--r-- | 9.2 KB |
sha1.c | -rw-r--r-- | 2.4 KB |
smp_processor_id.c | -rw-r--r-- | 1.1 KB |
sort.c | -rw-r--r-- | 2.5 KB |
spinlock_debug.c | -rw-r--r-- | 6.8 KB |
string.c | -rw-r--r-- | 13.6 KB |
swiotlb.c | -rw-r--r-- | 24.1 KB |
textsearch.c | -rw-r--r-- | 9.3 KB |
ts_bm.c | -rw-r--r-- | 4.9 KB |
ts_fsm.c | -rw-r--r-- | 10.5 KB |
ts_kmp.c | -rw-r--r-- | 3.8 KB |
vsprintf.c | -rw-r--r-- | 26.0 KB |
Computing file changes ...