summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorHeiko Carstens <heiko.carstens@de.ibm.com>2007-11-05 11:10:07 +0100
committerMartin Schwidefsky <schwidefsky@de.ibm.com>2007-11-05 11:10:16 +0100
commit33583c3657ef30cd7f4cb563071ac23cb6ff69a0 (patch)
treea65a508bf9b29278ea1b83aa3908ed148f201dfe /drivers
parent74521c28e550c4ec265cda14114bd9b908e9de34 (diff)
[S390] cio: use INIT_WORK to initialize struct work.
Use INIT_WORK to initialize struct work and don't initialize a struct work partial by explicitly initializing its private structures. Fixes the following lockdep bug because no key was assigned: INFO: trying to register non-static key. the code is fine but needs lockdep annotation. turning off the locking correctness validator. 0000000001f07bb8 0000000001f07bf8 0000000000000002 0000000000000000 0000000001f07c98 0000000001f07c10 0000000001f07c10 0000000000015406 0000000000000000 0000000000000002 0000000000000000 0000000000000000 0000000001f07bf8 000000000000000c 0000000001f07bf8 0000000001f07c68 000000000039ae60 0000000000015406 0000000001f07bf8 0000000001f07c48 Call Trace: ([<0000000000015376>] show_trace+0xda/0x104) [<0000000000015460>] show_stack+0xc0/0xf8 [<00000000000154c6>] dump_stack+0x2e/0x3c [<000000000006a71e>] __lock_acquire+0x47e/0x11a0 [<000000000006b4f0>] lock_acquire+0xb0/0xd8 [<00000000000555a6>] run_workqueue+0x1aa/0x24c [<00000000000556de>] worker_thread+0x96/0xf4 [<000000000005c210>] kthread+0x90/0xb4 [<000000000001947a>] kernel_thread_starter+0x6/0xc [<0000000000019474>] kernel_thread_starter+0x0/0xc Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/s390/cio/device.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/s390/cio/device.c b/drivers/s390/cio/device.c
index 7ee57f084a8..74f6b539974 100644
--- a/drivers/s390/cio/device.c
+++ b/drivers/s390/cio/device.c
@@ -738,7 +738,7 @@ static int io_subchannel_initialize_dev(struct subchannel *sch,
atomic_set(&cdev->private->onoff, 0);
cdev->dev.parent = &sch->dev;
cdev->dev.release = ccw_device_release;
- INIT_LIST_HEAD(&cdev->private->kick_work.entry);
+ INIT_WORK(&cdev->private->kick_work, NULL);
cdev->dev.groups = ccwdev_attr_groups;
/* Do first half of device_register. */
device_initialize(&cdev->dev);