fd78a76aef
This cleans up the irqflags tracing code quite a bit and ties it in to various missing callsites that caused an imbalance when CONFIG_PROVE_LOCKING was enabled. Previously this was catching on: 987 #ifdef CONFIG_PROVE_LOCKING 988 DEBUG_LOCKS_WARN_ON(!p->hardirqs_enabled); 989 DEBUG_LOCKS_WARN_ON(!p->softirqs_enabled); 990 #endif 991 retval = -EAGAIN; with hardirqs being doubly enabled, and subsequently bailing out with the following call trace: Call trace: [<88035224>] __lock_acquire+0x616/0x6a6 [<88015a8c>] do_fork+0xf8/0x2b0 [<880331ec>] trace_hardirqs_on_caller+0xd4/0x114 [<88241074>] _spin_unlock_irq+0x20/0x64 [<88035224>] __lock_acquire+0x616/0x6a6 [<8800386c>] kernel_thread+0x48/0x70 [<88024ecc>] ____call_usermodehelper+0x0/0x110 [<88024ecc>] ____call_usermodehelper+0x0/0x110 [<88003894>] kernel_thread_helper+0x0/0x14 [<88024bac>] __call_usermodehelper+0x38/0x70 [<88025dc0>] worker_thread+0x150/0x274 [<88035b9c>] lock_release+0x0/0x198 [<88024b74>] __call_usermodehelper+0x0/0x70 [<88028cf0>] autoremove_wake_function+0x0/0x30 [<88028bf2>] kthread+0x3e/0x70 [<88025c70>] worker_thread+0x0/0x274 [<8800389c>] kernel_thread_helper+0x8/0x14 [<88028bb4>] kthread+0x0/0x70 [<88003894>] kernel_thread_helper+0x0/0x14 Reported-by: Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com> Signed-off-by: Stuart Menefy <stuart.menefy@st.com> Signed-off-by: Matt Fleming <matt@console-pimps.org> Signed-off-by: Paul Mundt <lethal@linux-sh.org> |
||
---|---|---|
.. | ||
cpm_uart | ||
jsm | ||
8250.c | ||
8250.h | ||
8250_accent.c | ||
8250_acorn.c | ||
8250_boca.c | ||
8250_early.c | ||
8250_exar_st16c554.c | ||
8250_fourport.c | ||
8250_gsc.c | ||
8250_hp300.c | ||
8250_hub6.c | ||
8250_mca.c | ||
8250_pci.c | ||
8250_pnp.c | ||
21285.c | ||
68328serial.c | ||
68328serial.h | ||
68360serial.c | ||
amba-pl010.c | ||
amba-pl011.c | ||
atmel_serial.c | ||
bfin_5xx.c | ||
bfin_sport_uart.c | ||
bfin_sport_uart.h | ||
clps711x.c | ||
crisv10.c | ||
crisv10.h | ||
dz.c | ||
dz.h | ||
icom.c | ||
icom.h | ||
imx.c | ||
ioc3_serial.c | ||
ioc4_serial.c | ||
ip22zilog.c | ||
ip22zilog.h | ||
Kconfig | ||
kgdboc.c | ||
m32r_sio.c | ||
m32r_sio.h | ||
m32r_sio_reg.h | ||
Makefile | ||
max3100.c | ||
mcf.c | ||
mpc52xx_uart.c | ||
mpsc.c | ||
msm_serial.c | ||
msm_serial.h | ||
mux.c | ||
netx-serial.c | ||
nwpserial.c | ||
of_serial.c | ||
pmac_zilog.c | ||
pmac_zilog.h | ||
pnx8xxx_uart.c | ||
pxa.c | ||
s3c24a0.c | ||
s3c2400.c | ||
s3c2410.c | ||
s3c2412.c | ||
s3c2440.c | ||
s3c6400.c | ||
sa1100.c | ||
samsung.c | ||
samsung.h | ||
sb1250-duart.c | ||
sc26xx.c | ||
serial_core.c | ||
serial_cs.c | ||
serial_ks8695.c | ||
serial_lh7a40x.c | ||
serial_txx9.c | ||
sh-sci.c | ||
sh-sci.h | ||
sn_console.c | ||
suncore.c | ||
suncore.h | ||
sunhv.c | ||
sunsab.c | ||
sunsab.h | ||
sunsu.c | ||
sunzilog.c | ||
sunzilog.h | ||
timbuart.c | ||
timbuart.h | ||
uartlite.c | ||
ucc_uart.c | ||
vr41xx_siu.c | ||
zs.c | ||
zs.h |