• D
    FS-Cache: Don't use spin_is_locked() in assertions · dcfae32f
    David Howells 提交于
    Under certain circumstances, spin_is_locked() is hardwired to 0 - even when the
    code would normally be in a locked section where it should return 1.  This
    means it cannot be used for an assertion that checks that a spinlock is locked.
    
    Remove such usages from FS-Cache.
    
    The following oops might otherwise be observed:
    
    FS-Cache: Assertion failed
    BUG: failure at fs/fscache/operation.c:270/fscache_start_operations()!
    Kernel panic - not syncing: BUG!
    CPU: 0 PID: 10 Comm: kworker/u2:1 Not tainted 3.10.0-rc1-00133-ge7ebb75 #2
    Workqueue: fscache_operation fscache_op_work_func [fscache]
    7f091c48 603c8947 7f090000 7f9b1361 7f25f080 00000001 7f26d440 7f091c90
    60299eb8 7f091d90 602951c5 7f26d440 3000000008 7f091da0 7f091cc0 7f091cd0
    00000007 00000007 00000006 7f091ae0 00000010 0000010e 7f9af330 7f091ae0
    Call Trace:
    7f091c88: [<60299eb8>] dump_stack+0x17/0x19
    7f091c98: [<602951c5>] panic+0xf4/0x1e9
    7f091d38: [<6002b10e>] set_signals+0x1e/0x40
    7f091d58: [<6005b89e>] __wake_up+0x4e/0x70
    7f091d98: [<7f9aa003>] fscache_start_operations+0x43/0x50 [fscache]
    7f091da8: [<7f9aa1e3>] fscache_op_complete+0x1d3/0x220 [fscache]
    7f091db8: [<60082985>] unlock_page+0x55/0x60
    7f091de8: [<7fb25bb0>] cachefiles_read_copier+0x250/0x330 [cachefiles]
    7f091e58: [<7f9ab03c>] fscache_op_work_func+0xac/0x120 [fscache]
    7f091e88: [<6004d5b0>] process_one_work+0x250/0x3a0
    7f091ef8: [<6004edc7>] worker_thread+0x177/0x2a0
    7f091f38: [<6004ec50>] worker_thread+0x0/0x2a0
    7f091f58: [<60054418>] kthread+0xd8/0xe0
    7f091f68: [<6005bb27>] finish_task_switch.isra.64+0x37/0xa0
    7f091fd8: [<600185cf>] new_thread_handler+0x8f/0xb0
    Reported-by: NMilosz Tanski <milosz@adfin.com>
    Signed-off-by: NDavid Howells <dhowells@redhat.com>
    Reviewed-and-tested-By: NMilosz Tanski <milosz@adfin.com>
    dcfae32f
operation.c 13.9 KB