OpenCloudOS-Kernel/drivers/s390
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
..
block [S390] dasd: use a generic wait_queue for sleep_on 2008-05-30 10:03:35 +02:00
char [S390] vt220 console, initialize list head before use 2008-06-10 10:03:27 +02:00
cio [S390] cio: Fix inverted isc priorities. 2008-06-10 10:03:27 +02:00
crypto [S390] zcrypt: Comments and kernel-doc cleanup 2008-04-17 07:47:06 +02:00
kvm virtio: set device index in common code. 2008-05-30 15:09:42 +10:00
net netiucv: Fix missing driver attributes. 2008-04-29 01:56:36 -04:00
scsi [SCSI] Let scsi_cmnd->cmnd use request->cmd buffer 2008-05-02 10:18:22 -05:00
Makefile s390: KVM guest: virtio device support, and kvm hypercalls 2008-04-27 12:00:51 +03:00
ebcdic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
s390_rdev.c [PATCH] s390: kzalloc() conversion in drivers/s390 2006-03-24 07:33:18 -08:00
s390mach.c [S390] s390mach compile warning 2008-05-07 09:23:02 +02:00
s390mach.h [S390] Fix a lot of sparse warnings. 2008-04-17 07:47:06 +02:00
sysinfo.c [S390] Add new fields for System z10 to /proc/sysinfo 2008-04-17 07:47:01 +02:00