kernel-fxtec-pro1x/drivers/s390/char
Carsten Otte 7b439d2530 [S390] vt220 console, initialize list head before use
This patch fixes a null pointer dereference during initialisation when no
sclp event facility is available:
sclp vt220 tty driver: could not register vt220 - sclp_register returned -5
Unable to handle kernel paging request at virtual user address 0000000000000000
Oops: 0004 [#1] PREEMPT SMP
Modules linked in:
CPU: 0 Not tainted 2.6.26-rc3-kvm-bigiron-00968-gd939e93-dirty #30
Process swapper (pid: 0, task: 0000000000600be0, ksp: 000000000064a000)
Krnl PSW : 0400000180000000 0000000000320d8c (sclp_unregister+0x48/0x8c)
           R:0 T:1 IO:0 EX:0 Key:0 M:0 W:0 P:0 AS:0 CC:0 PM:0 EA:3
Krnl GPRS: 0000000000000000 0000000000000000 0000000000630478 0700000000649c20
           0000000000000000 0000000000433060 000000000064a660 0000000002e26000
           00000000006db000 0000000000000000 0000000000a78578 0000000000649b80
           0000000000630dc0 000000000044fa20 0000000000320d76 0000000000649b80
Krnl Code: 0000000000320d7c: e310c0080004       lg      %r1,8(%r12)
           0000000000320d82: b9040032           lgr     %r3,%r2
           0000000000320d86: c02000187b79       larl    %r2,630478
          >0000000000320d8c: e34010000024       stg     %r4,0(%r1)
           0000000000320d92: e31040080024       stg     %r1,8(%r4)
           0000000000320d98: c01100200200       lgfi    %r1,2097664
           0000000000320d9e: e310c0080024       stg     %r1,8(%r12)
           0000000000320da4: c01100100100       lgfi    %r1,1048832
Call Trace:
([<0000000000320d76>] sclp_unregister+0x32/0x8c)
 [<00000000006657b4>] __sclp_vt220_cleanup+0xc4/0xe0
 [<000000000066595c>] __sclp_vt220_init+0x18c/0x1a0
 [<0000000000665aba>] sclp_vt220_con_init+0x42/0x68
 [<00000000006601ca>] console_init+0x4e/0x68
 [<000000000064acae>] start_kernel+0x3a2/0x4dc
 [<0000000000100020>] _stext+0x20/0x80
INFO: lockdep is turned off.
Last Breaking-Event-Address:
 [<000000000041f964>] _spin_lock_irqsave+0xb0/0xb4
 <4>---[ end trace 31fd0ba7d8756001 ]---

The issue is caused by a list_empty() check in __sclp_vt220_cleanup, which
usually fails on non-initialized list heads that contain {NULL,NULL} instead.

Signed-off-by: Carsten Otte <cotte@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
2008-06-10 10:03:27 +02:00
..
con3215.c s390 tty: Prepare for put_char to return success/fail 2008-04-30 08:29:45 -07:00
con3270.c
ctrlchar.c
ctrlchar.h
defkeymap.c Build fix for drivers/s390/char/defkeymap.c 2008-03-04 08:01:26 -08:00
defkeymap.map
fs3270.c
Kconfig
keyboard.c unicode diacritics support 2007-10-17 08:42:52 -07:00
keyboard.h unicode diacritics support 2007-10-17 08:42:52 -07:00
Makefile [S390] sclp: convert channel path configure code to use sync interface. 2008-01-26 14:11:10 +01:00
monreader.c [S390] Remove code duplication from monreader / dcssblk. 2008-04-17 07:47:07 +02:00
monwriter.c [S390] drivers/s390: Add missing "space" 2008-01-26 14:11:19 +01:00
raw3270.c [S390] 3270: fix race with stack local wait_queue_head_t. 2008-05-30 10:03:35 +02:00
raw3270.h
sclp.c [S390] sclp: clean up send/receive naming scheme 2008-02-19 15:29:34 +01:00
sclp.h [S390] sclp: clean up send/receive naming scheme 2008-02-19 15:29:34 +01:00
sclp_cmd.c [S390] Get rid of additional_cpus kernel parameter. 2008-01-26 14:11:15 +01:00
sclp_con.c
sclp_config.c [S390] Fix section mismatch warnings. 2008-05-30 10:03:34 +02:00
sclp_cpi.c [S390] sclp: sysfs interface for SCLP cpi 2008-01-26 14:11:08 +01:00
sclp_cpi_sys.c [S390] sclp: clean up send/receive naming scheme 2008-02-19 15:29:34 +01:00
sclp_cpi_sys.h [S390] sclp: sysfs interface for SCLP cpi 2008-01-26 14:11:08 +01:00
sclp_quiesce.c
sclp_rw.c [S390] sclp: clean up send/receive naming scheme 2008-02-19 15:29:34 +01:00
sclp_rw.h
sclp_sdias.c
sclp_tty.c s390 tty: Prepare for put_char to return success/fail 2008-04-30 08:29:45 -07:00
sclp_tty.h
sclp_vt220.c [S390] vt220 console, initialize list head before use 2008-06-10 10:03:27 +02:00
tape.h [S390] tape: fix race with stack local wait_queue_head_t. 2008-05-30 10:03:36 +02:00
tape_34xx.c [S390] replace remaining __FUNCTION__ occurrences 2008-04-17 07:47:04 +02:00
tape_3590.c [S390] drivers/s390/: Spelling fixes 2008-01-26 14:11:26 +01:00
tape_3590.h
tape_block.c [S390] tape: Fix race condition in tape block device driver 2008-05-30 10:03:33 +02:00
tape_char.c [S390] tape: duplicate sysfs filename when setting tape device online 2008-04-17 07:46:59 +02:00
tape_class.c [S390] tape: duplicate sysfs filename when setting tape device online 2008-04-17 07:46:59 +02:00
tape_class.h [S390] tape: duplicate sysfs filename when setting tape device online 2008-04-17 07:46:59 +02:00
tape_core.c [S390] tape: fix race with stack local wait_queue_head_t. 2008-05-30 10:03:36 +02:00
tape_proc.c s390: use non-racy method for proc entries creation 2008-04-29 08:06:21 -07:00
tape_std.c
tape_std.h
tty3270.c [S390] tty3270: fix put_char fail/success conversion. 2008-05-07 09:23:02 +02:00
tty3270.h
vmcp.c
vmcp.h
vmlogrdr.c s390: fix race in device_create 2008-05-20 13:31:56 -07:00
vmur.c [S390] vmur: Use wait queue instead of mutex to serialize open 2008-04-17 07:46:59 +02:00
vmur.h [S390] vmur: Use wait queue instead of mutex to serialize open 2008-04-17 07:46:59 +02:00
vmwatchdog.c [S390] replace remaining __FUNCTION__ occurrences 2008-04-17 07:47:04 +02:00
zcore.c [S390] replace remaining __FUNCTION__ occurrences 2008-04-17 07:47:04 +02:00