Staging
v0.8.1
v0.8.1
https://github.com/torvalds/linux
Revision 8d6c83f0ba5e1bd1e8bb2e3c7de4c276dc247f99 authored by KOSAKI Motohiro on 19 August 2010, 21:13:39 UTC, committed by Linus Torvalds on 20 August 2010, 16:34:55 UTC
dump_tasks() needs to hold the RCU read lock around its access of the target task's UID. To this end it should use task_uid() as it only needs that one thing from the creds. The fact that dump_tasks() holds tasklist_lock is insufficient to prevent the target process replacing its credentials on another CPU. Then, this patch change to call rcu_read_lock() explicitly. =================================================== [ INFO: suspicious rcu_dereference_check() usage. ] --------------------------------------------------- mm/oom_kill.c:410 invoked rcu_dereference_check() without protection! other info that might help us debug this: rcu_scheduler_active = 1, debug_locks = 1 4 locks held by kworker/1:2/651: #0: (events){+.+.+.}, at: [<ffffffff8106aae7>] process_one_work+0x137/0x4a0 #1: (moom_work){+.+...}, at: [<ffffffff8106aae7>] process_one_work+0x137/0x4a0 #2: (tasklist_lock){.+.+..}, at: [<ffffffff810fafd4>] out_of_memory+0x164/0x3f0 #3: (&(&p->alloc_lock)->rlock){+.+...}, at: [<ffffffff810fa48e>] find_lock_task_mm+0x2e/0x70 Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com> Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: David Rientjes <rientjes@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
1 parent b52723c
Tip revision: 8d6c83f0ba5e1bd1e8bb2e3c7de4c276dc247f99 authored by KOSAKI Motohiro on 19 August 2010, 21:13:39 UTC
oom: __task_cred() need rcu_read_lock()
oom: __task_cred() need rcu_read_lock()
Tip revision: 8d6c83f
File | Mode | Size |
---|---|---|
lzo | ||
raid6 | ||
reed_solomon | ||
zlib_deflate | ||
zlib_inflate | ||
.gitignore | -rw-r--r-- | 51 bytes |
Kconfig | -rw-r--r-- | 4.1 KB |
Kconfig.debug | -rw-r--r-- | 39.7 KB |
Kconfig.kgdb | -rw-r--r-- | 2.3 KB |
Kconfig.kmemcheck | -rw-r--r-- | 2.9 KB |
Makefile | -rw-r--r-- | 3.6 KB |
argv_split.c | -rw-r--r-- | 1.8 KB |
atomic64.c | -rw-r--r-- | 4.1 KB |
atomic64_test.c | -rw-r--r-- | 3.5 KB |
audit.c | -rw-r--r-- | 1.2 KB |
bcd.c | -rw-r--r-- | 257 bytes |
bitmap.c | -rw-r--r-- | 32.6 KB |
bitrev.c | -rw-r--r-- | 2.1 KB |
btree.c | -rw-r--r-- | 19.2 KB |
bug.c | -rw-r--r-- | 4.7 KB |
bust_spinlocks.c | -rw-r--r-- | 636 bytes |
check_signature.c | -rw-r--r-- | 599 bytes |
checksum.c | -rw-r--r-- | 4.9 KB |
cmdline.c | -rw-r--r-- | 3.6 KB |
cpu-notifier-error-inject.c | -rw-r--r-- | 1.5 KB |
cpumask.c | -rw-r--r-- | 4.6 KB |
crc-ccitt.c | -rw-r--r-- | 3.0 KB |
crc-itu-t.c | -rw-r--r-- | 2.8 KB |
crc-t10dif.c | -rw-r--r-- | 2.9 KB |
crc16.c | -rw-r--r-- | 2.8 KB |
crc32.c | -rw-r--r-- | 14.5 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-- | 25.2 KB |
dec_and_lock.c | -rw-r--r-- | 782 bytes |
decompress.c | -rw-r--r-- | 1.2 KB |
decompress_bunzip2.c | -rw-r--r-- | 23.5 KB |
decompress_inflate.c | -rw-r--r-- | 3.6 KB |
decompress_unlzma.c | -rw-r--r-- | 15.5 KB |
decompress_unlzo.c | -rw-r--r-- | 4.9 KB |
devres.c | -rw-r--r-- | 7.7 KB |
div64.c | -rw-r--r-- | 2.3 KB |
dma-debug.c | -rw-r--r-- | 31.5 KB |
dump_stack.c | -rw-r--r-- | 290 bytes |
dynamic_debug.c | -rw-r--r-- | 18.0 KB |
extable.c | -rw-r--r-- | 2.4 KB |
fault-inject.c | -rw-r--r-- | 7.9 KB |
find_last_bit.c | -rw-r--r-- | 1.1 KB |
find_next_bit.c | -rw-r--r-- | 6.4 KB |
flex_array.c | -rw-r--r-- | 9.8 KB |
gcd.c | -rw-r--r-- | 291 bytes |
gen_crc32table.c | -rw-r--r-- | 2.2 KB |
genalloc.c | -rw-r--r-- | 5.1 KB |
halfmd4.c | -rw-r--r-- | 2.0 KB |
hexdump.c | -rw-r--r-- | 6.5 KB |
hweight.c | -rw-r--r-- | 1.9 KB |
idr.c | -rw-r--r-- | 21.5 KB |
inflate.c | -rw-r--r-- | 38.6 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-- | 1006 bytes |
ioremap.c | -rw-r--r-- | 2.1 KB |
irq_regs.c | -rw-r--r-- | 578 bytes |
is_single_threaded.c | -rw-r--r-- | 1.3 KB |
kasprintf.c | -rw-r--r-- | 704 bytes |
kernel_lock.c | -rw-r--r-- | 3.2 KB |
klist.c | -rw-r--r-- | 9.3 KB |
kobject.c | -rw-r--r-- | 23.3 KB |
kobject_uevent.c | -rw-r--r-- | 10.3 KB |
kref.c | -rw-r--r-- | 1.6 KB |
lcm.c | -rw-r--r-- | 265 bytes |
libcrc32c.c | -rw-r--r-- | 2.1 KB |
list_debug.c | -rw-r--r-- | 1.7 KB |
list_sort.c | -rw-r--r-- | 5.3 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 |
lru_cache.c | -rw-r--r-- | 14.6 KB |
nlattr.c | -rw-r--r-- | 12.2 KB |
parser.c | -rw-r--r-- | 6.1 KB |
percpu_counter.c | -rw-r--r-- | 3.7 KB |
plist.c | -rw-r--r-- | 2.9 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-- | 34.8 KB |
random32.c | -rw-r--r-- | 3.9 KB |
ratelimit.c | -rw-r--r-- | 1.5 KB |
rational.c | -rw-r--r-- | 1.5 KB |
rbtree.c | -rw-r--r-- | 9.9 KB |
reciprocal_div.c | -rw-r--r-- | 159 bytes |
rwsem-spinlock.c | -rw-r--r-- | 6.9 KB |
rwsem.c | -rw-r--r-- | 8.1 KB |
scatterlist.c | -rw-r--r-- | 12.5 KB |
sha1.c | -rw-r--r-- | 2.4 KB |
show_mem.c | -rw-r--r-- | 1.3 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.9 KB |
string.c | -rw-r--r-- | 14.3 KB |
string_helpers.c | -rw-r--r-- | 1.7 KB |
swiotlb.c | -rw-r--r-- | 25.4 KB |
syscall.c | -rw-r--r-- | 2.4 KB |
textsearch.c | -rw-r--r-- | 9.6 KB |
ts_bm.c | -rw-r--r-- | 5.3 KB |
ts_fsm.c | -rw-r--r-- | 10.6 KB |
ts_kmp.c | -rw-r--r-- | 4.3 KB |
uuid.c | -rw-r--r-- | 1.4 KB |
vsprintf.c | -rw-r--r-- | 50.2 KB |
Computing file changes ...