linux/arch/s390/kernel
Michael Holzheu 5a334c082f s390/debug: Fix s390dbf lockdep problem in debug_(un)register_view()
The debug_register/unregister_view() functions call debugfs_remove()
while holding the debug_info spinlock. Because debugfs_remove() takes
a mutex and therefore can sleep this is not allowed. To fix the problem
we give up the debug_info lock before calling debugfs_remove().

The following shows the lockdep message:

[ INFO: possible circular locking dependency detected ]
-------------------------------------------------------
rmmod/4379 is trying to acquire lock:
(&sb->s_type->i_mutex_key#2){+.+.+.}, at: [<00000000003acae2>] debugfs_remove+0x5e/0xa

but task is already holding lock:
(&(&rc->lock)->rlock){-.-...}, at: [<000000000010a5ae>] debug_unregister_view+0x3a/0xd

which lock already depends on the new lock.

-> #0 (&sb->s_type->i_mutex_key#2){+.+.+.}:
[<00000000001b1644>] validate_chain+0x880/0x1154
[<00000000001b4d6c>] __lock_acquire+0x414/0xc44
[<00000000001b5c16>] lock_acquire+0xbe/0x178
[<0000000000614016>] mutex_lock_nested+0x66/0x36c
[<00000000003acae2>] debugfs_remove+0x5e/0xac
[<000000000010a620>] debug_unregister_view+0xac/0xd0
[<000003ff8002f140>] qeth_core_exit+0x48/0xf08 [qeth]
[<00000000001c35a4>] SyS_delete_module+0x1a4/0x260
[<0000000000618134>] sysc_noemu+0x22/0x28
[<000003fffd4704da>] 0x3fffd4704da

Signed-off-by: Michael Holzheu <holzheu@linux.vnet.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2013-01-08 10:57:03 +01:00
..
vdso32 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
vdso64 s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
.gitignore s390: add various .gitignore files. 2012-05-16 14:42:41 +02:00
asm-offsets.c s390: add support for transactional memory 2012-09-26 15:45:02 +02:00
audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
audit.h [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
base.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
bitmap.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
cache.c s390/cache: fix data/instruction cache output 2012-10-18 17:50:11 +02:00
compat_audit.c [S390] Get rid of a bunch of sparse warnings again. 2007-10-12 16:13:06 +02:00
compat_exec_domain.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
compat_linux.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
compat_linux.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/signal 2012-10-10 12:02:25 +09:00
compat_ptrace.h [S390] ptrace cleanup 2011-01-05 12:47:31 +01:00
compat_signal.c s390/signal: set correct address space control 2012-11-12 16:24:38 +01:00
compat_wrapper.S open*(2) compat fixes (s390, arm64) 2012-12-02 10:46:38 -08:00
cpcmd.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
crash_dump.c s390/crashdump: move fill_cpu_elf_notes() prototype to header file 2012-09-26 15:45:22 +02:00
debug.c s390/debug: Fix s390dbf lockdep problem in debug_(un)register_view() 2013-01-08 10:57:03 +01:00
diag.c [S390] replace diag10() with diag10_range() function 2011-05-10 17:13:43 +02:00
dis.c s390/pci: base support 2012-11-30 15:40:45 +01:00
early.c s390/mm: use pfmf instruction to initialize storage keys 2012-10-09 14:16:55 +02:00
ebcdic.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
entry64.S Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-12-13 14:20:19 -08:00
entry.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-12-13 14:20:19 -08:00
entry.S Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2012-12-13 14:20:19 -08:00
ftrace.c [S390] cleanup ftrace backend functions 2011-01-05 12:47:31 +01:00
head31.S s390/mm: let kernel text section always begin at 1MB 2012-10-09 14:16:59 +02:00
head64.S s390/mm: let kernel text section always begin at 1MB 2012-10-09 14:16:59 +02:00
head_kdump.S s390/kdump: Use 64 bit mode for 0x10000 entry point 2012-10-18 17:50:09 +02:00
head.S s390: add zEC12 code generation support 2012-11-23 11:14:31 +01:00
ipl.c s390/ipl: Use diagnose 8 command separation 2012-07-26 10:07:26 +02:00
irq.c s390/pci: PCI adapter interrupts for MSI/MSI-X 2012-11-30 17:47:21 +01:00
jump_label.c s390/jump-label: add arch_jump_label_transform_static() 2011-10-25 11:54:37 -07:00
kprobes.c s390/exceptions: switch to relative exception table entries 2012-09-26 15:45:10 +02:00
lgr.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
machine_kexec.c s390/crashdump: move fill_cpu_elf_notes() prototype to header file 2012-09-26 15:45:22 +02:00
Makefile s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
mcount64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
mcount.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
mem_detect.c [S390] Rework create_mem_hole() function 2011-12-27 11:27:09 +01:00
module.c s390/vmalloc: have separate modules area 2012-10-09 14:17:01 +02:00
nmi.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
os_info.c s390/smp: make absolute lowcore / cpu restart parameter accesses more robust 2012-06-14 09:09:02 +02:00
perf_cpum_cf.c perf_cpum_cf: Add support for counters available with IBM zEC12 2012-10-18 17:50:09 +02:00
perf_event.c [S390] Fix build errors (fallout from system.h disintegration) 2012-03-30 09:41:12 +02:00
pgm_check.S s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
process.c flagday: don't pass regs to copy_thread() 2012-11-28 23:43:42 -05:00
processor.c s390/processor: use ARRAY_SIZE instead of hard coded value 2012-09-26 15:45:03 +02:00
ptrace.c s390/ptrace: add missing ifdef 2012-09-26 15:45:21 +02:00
reipl64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
reipl.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel64.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
relocate_kernel.S s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
runtime_instr.c s390/mm: rename addressing_mode to s390_user_mode 2012-09-26 15:45:05 +02:00
s390_ksyms.c s390/string: provide asm lib functions for memcpy and memcmp 2012-09-26 15:44:50 +02:00
sclp.S s390/sclp: fix addressing mode clobber 2012-11-06 22:39:51 +01:00
setup.c s390: add zEC12 code generation support 2012-11-23 11:14:31 +01:00
signal.c s390/ptrace: race of single stepping vs signal delivery 2012-11-23 11:14:33 +01:00
smp.c ARCH: drivers remove __dev* attributes. 2013-01-03 15:57:13 -08:00
stacktrace.c s390/comments: unify copyright messages and remove file names 2012-07-20 11:15:04 +02:00
suspend.c Disintegrate asm/system.h for S390 2012-03-28 18:30:02 +01:00
swsusp_asm64.S s390/sigp: use sigp order code defines in assembly code 2012-06-05 13:23:36 +02:00
sys_s390.c s390: do not clobber personality flags in sys_32_personality() 2012-08-08 07:32:56 -07:00
syscalls.S s390/syscalls: wire up kcmp system call 2012-09-26 15:45:17 +02:00
sysinfo.c s390/sysinfo,stsi: change return code handling 2012-09-26 15:45:12 +02:00
time.c Merge branch 'timers-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-10-12 22:17:48 +09:00
topology.c s390/topology: cleanup topology code 2012-11-23 11:14:31 +01:00
traps.c s390/traps: preinitialize program check table 2012-11-23 11:14:25 +01:00
vdso.c s390/mm: rename addressing_mode to s390_user_mode 2012-09-26 15:45:05 +02:00
vmlinux.lds.S s390: fix linker script for 31 bit builds 2012-10-18 17:50:10 +02:00
vtime.c vtime: Warn if irqs aren't disabled on system time accounting APIs 2012-11-20 15:42:51 +01:00