diff options
author | Ingo Molnar <mingo@elte.hu> | 2006-07-03 03:25:26 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-03 18:27:09 -0400 |
commit | 60be6b9a41cb0da0df7a9f11486da56baebf04cd (patch) | |
tree | 26cb558d0d57183fdbf9136ad54b581328d6f016 | |
parent | 366c7f554e888e51b8395f9b07b273fe775c7ff3 (diff) |
[PATCH] lockdep: annotate on-stack completions
lockdep needs to have the waitqueue lock initialized for on-stack waitqueues
implicitly initialized by DECLARE_COMPLETION(). Annotate on-stack completions
accordingly.
Has no effect on non-lockdep kernels.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | arch/x86_64/kernel/smpboot.c | 2 | ||||
-rw-r--r-- | block/ll_rw_blk.c | 2 | ||||
-rw-r--r-- | drivers/ide/ide-io.c | 2 | ||||
-rw-r--r-- | drivers/scsi/libata-core.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi.c | 2 | ||||
-rw-r--r-- | kernel/kmod.c | 2 |
6 files changed, 7 insertions, 5 deletions
diff --git a/arch/x86_64/kernel/smpboot.c b/arch/x86_64/kernel/smpboot.c index 9705a6a384f1..b7c705969791 100644 --- a/arch/x86_64/kernel/smpboot.c +++ b/arch/x86_64/kernel/smpboot.c | |||
@@ -775,6 +775,8 @@ static int __cpuinit do_boot_cpu(int cpu, int apicid) | |||
775 | }; | 775 | }; |
776 | DECLARE_WORK(work, do_fork_idle, &c_idle); | 776 | DECLARE_WORK(work, do_fork_idle, &c_idle); |
777 | 777 | ||
778 | lockdep_set_class(&c_idle.done.wait.lock, &waitqueue_lock_key); | ||
779 | |||
778 | /* allocate memory for gdts of secondary cpus. Hotplug is considered */ | 780 | /* allocate memory for gdts of secondary cpus. Hotplug is considered */ |
779 | if (!cpu_gdt_descr[cpu].address && | 781 | if (!cpu_gdt_descr[cpu].address && |
780 | !(cpu_gdt_descr[cpu].address = get_zeroed_page(GFP_KERNEL))) { | 782 | !(cpu_gdt_descr[cpu].address = get_zeroed_page(GFP_KERNEL))) { |
diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c index 5813d63c20af..ab17c7224bb6 100644 --- a/block/ll_rw_blk.c +++ b/block/ll_rw_blk.c | |||
@@ -2516,7 +2516,7 @@ EXPORT_SYMBOL_GPL(blk_execute_rq_nowait); | |||
2516 | int blk_execute_rq(request_queue_t *q, struct gendisk *bd_disk, | 2516 | int blk_execute_rq(request_queue_t *q, struct gendisk *bd_disk, |
2517 | struct request *rq, int at_head) | 2517 | struct request *rq, int at_head) |
2518 | { | 2518 | { |
2519 | DECLARE_COMPLETION(wait); | 2519 | DECLARE_COMPLETION_ONSTACK(wait); |
2520 | char sense[SCSI_SENSE_BUFFERSIZE]; | 2520 | char sense[SCSI_SENSE_BUFFERSIZE]; |
2521 | int err = 0; | 2521 | int err = 0; |
2522 | 2522 | ||
diff --git a/drivers/ide/ide-io.c b/drivers/ide/ide-io.c index d6bf1ec96322..fb6795236e76 100644 --- a/drivers/ide/ide-io.c +++ b/drivers/ide/ide-io.c | |||
@@ -1705,7 +1705,7 @@ int ide_do_drive_cmd (ide_drive_t *drive, struct request *rq, ide_action_t actio | |||
1705 | { | 1705 | { |
1706 | unsigned long flags; | 1706 | unsigned long flags; |
1707 | ide_hwgroup_t *hwgroup = HWGROUP(drive); | 1707 | ide_hwgroup_t *hwgroup = HWGROUP(drive); |
1708 | DECLARE_COMPLETION(wait); | 1708 | DECLARE_COMPLETION_ONSTACK(wait); |
1709 | int where = ELEVATOR_INSERT_BACK, err; | 1709 | int where = ELEVATOR_INSERT_BACK, err; |
1710 | int must_wait = (action == ide_wait || action == ide_head_wait); | 1710 | int must_wait = (action == ide_wait || action == ide_head_wait); |
1711 | 1711 | ||
diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index 82caba464291..1c960ac1617f 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c | |||
@@ -1001,7 +1001,7 @@ unsigned ata_exec_internal(struct ata_device *dev, | |||
1001 | struct ata_queued_cmd *qc; | 1001 | struct ata_queued_cmd *qc; |
1002 | unsigned int tag, preempted_tag; | 1002 | unsigned int tag, preempted_tag; |
1003 | u32 preempted_sactive, preempted_qc_active; | 1003 | u32 preempted_sactive, preempted_qc_active; |
1004 | DECLARE_COMPLETION(wait); | 1004 | DECLARE_COMPLETION_ONSTACK(wait); |
1005 | unsigned long flags; | 1005 | unsigned long flags; |
1006 | unsigned int err_mask; | 1006 | unsigned int err_mask; |
1007 | int rc; | 1007 | int rc; |
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index ed1cdf6ac8f3..146298ad7371 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
@@ -510,7 +510,7 @@ static void spi_complete(void *arg) | |||
510 | */ | 510 | */ |
511 | int spi_sync(struct spi_device *spi, struct spi_message *message) | 511 | int spi_sync(struct spi_device *spi, struct spi_message *message) |
512 | { | 512 | { |
513 | DECLARE_COMPLETION(done); | 513 | DECLARE_COMPLETION_ONSTACK(done); |
514 | int status; | 514 | int status; |
515 | 515 | ||
516 | message->complete = spi_complete; | 516 | message->complete = spi_complete; |
diff --git a/kernel/kmod.c b/kernel/kmod.c index 1b7157af051c..1d32defa38ab 100644 --- a/kernel/kmod.c +++ b/kernel/kmod.c | |||
@@ -233,7 +233,7 @@ static void __call_usermodehelper(void *data) | |||
233 | int call_usermodehelper_keys(char *path, char **argv, char **envp, | 233 | int call_usermodehelper_keys(char *path, char **argv, char **envp, |
234 | struct key *session_keyring, int wait) | 234 | struct key *session_keyring, int wait) |
235 | { | 235 | { |
236 | DECLARE_COMPLETION(done); | 236 | DECLARE_COMPLETION_ONSTACK(done); |
237 | struct subprocess_info sub_info = { | 237 | struct subprocess_info sub_info = { |
238 | .complete = &done, | 238 | .complete = &done, |
239 | .path = path, | 239 | .path = path, |