diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-07 19:58:04 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-01-07 19:58:04 -0500 |
commit | 23d69b09b78c4876e134f104a3814c30747c53f1 (patch) | |
tree | 40744de4f4126c21027ce537264524095e0e7979 /drivers/char | |
parent | e744070fd4ff9d3114277e52d77afa21579adce2 (diff) | |
parent | 569ff2de2e1c8ac67c8df3a7367d46d0d9460a35 (diff) |
Merge branch 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq
* 'for-2.6.38' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/wq: (33 commits)
usb: don't use flush_scheduled_work()
speedtch: don't abuse struct delayed_work
media/video: don't use flush_scheduled_work()
media/video: explicitly flush request_module work
ioc4: use static work_struct for ioc4_load_modules()
init: don't call flush_scheduled_work() from do_initcalls()
s390: don't use flush_scheduled_work()
rtc: don't use flush_scheduled_work()
mmc: update workqueue usages
mfd: update workqueue usages
dvb: don't use flush_scheduled_work()
leds-wm8350: don't use flush_scheduled_work()
mISDN: don't use flush_scheduled_work()
macintosh/ams: don't use flush_scheduled_work()
vmwgfx: don't use flush_scheduled_work()
tpm: don't use flush_scheduled_work()
sonypi: don't use flush_scheduled_work()
hvsi: don't use flush_scheduled_work()
xen: don't use flush_scheduled_work()
gdrom: don't use flush_scheduled_work()
...
Fixed up trivial conflict in drivers/media/video/bt8xx/bttv-input.c
as per Tejun.
Diffstat (limited to 'drivers/char')
-rw-r--r-- | drivers/char/hvsi.c | 4 | ||||
-rw-r--r-- | drivers/char/pcmcia/ipwireless/hardware.c | 2 | ||||
-rw-r--r-- | drivers/char/pcmcia/ipwireless/network.c | 3 | ||||
-rw-r--r-- | drivers/char/pcmcia/ipwireless/tty.c | 2 | ||||
-rw-r--r-- | drivers/char/sonypi.c | 2 | ||||
-rw-r--r-- | drivers/char/tpm/tpm.c | 4 |
6 files changed, 9 insertions, 8 deletions
diff --git a/drivers/char/hvsi.c b/drivers/char/hvsi.c index a2bc885ce60a..67a75a502c01 100644 --- a/drivers/char/hvsi.c +++ b/drivers/char/hvsi.c | |||
@@ -850,8 +850,8 @@ static void hvsi_flush_output(struct hvsi_struct *hp) | |||
850 | wait_event_timeout(hp->emptyq, (hp->n_outbuf <= 0), HVSI_TIMEOUT); | 850 | wait_event_timeout(hp->emptyq, (hp->n_outbuf <= 0), HVSI_TIMEOUT); |
851 | 851 | ||
852 | /* 'writer' could still be pending if it didn't see n_outbuf = 0 yet */ | 852 | /* 'writer' could still be pending if it didn't see n_outbuf = 0 yet */ |
853 | cancel_delayed_work(&hp->writer); | 853 | cancel_delayed_work_sync(&hp->writer); |
854 | flush_scheduled_work(); | 854 | flush_work_sync(&hp->handshaker); |
855 | 855 | ||
856 | /* | 856 | /* |
857 | * it's also possible that our timeout expired and hvsi_write_worker | 857 | * it's also possible that our timeout expired and hvsi_write_worker |
diff --git a/drivers/char/pcmcia/ipwireless/hardware.c b/drivers/char/pcmcia/ipwireless/hardware.c index 99cffdab1056..0aeb5a38d296 100644 --- a/drivers/char/pcmcia/ipwireless/hardware.c +++ b/drivers/char/pcmcia/ipwireless/hardware.c | |||
@@ -1729,7 +1729,7 @@ void ipwireless_hardware_free(struct ipw_hardware *hw) | |||
1729 | 1729 | ||
1730 | ipwireless_stop_interrupts(hw); | 1730 | ipwireless_stop_interrupts(hw); |
1731 | 1731 | ||
1732 | flush_scheduled_work(); | 1732 | flush_work_sync(&hw->work_rx); |
1733 | 1733 | ||
1734 | for (i = 0; i < NL_NUM_OF_ADDRESSES; i++) | 1734 | for (i = 0; i < NL_NUM_OF_ADDRESSES; i++) |
1735 | if (hw->packet_assembler[i] != NULL) | 1735 | if (hw->packet_assembler[i] != NULL) |
diff --git a/drivers/char/pcmcia/ipwireless/network.c b/drivers/char/pcmcia/ipwireless/network.c index 9fe538347932..f7daeea598e4 100644 --- a/drivers/char/pcmcia/ipwireless/network.c +++ b/drivers/char/pcmcia/ipwireless/network.c | |||
@@ -430,7 +430,8 @@ void ipwireless_network_free(struct ipw_network *network) | |||
430 | network->shutting_down = 1; | 430 | network->shutting_down = 1; |
431 | 431 | ||
432 | ipwireless_ppp_close(network); | 432 | ipwireless_ppp_close(network); |
433 | flush_scheduled_work(); | 433 | flush_work_sync(&network->work_go_online); |
434 | flush_work_sync(&network->work_go_offline); | ||
434 | 435 | ||
435 | ipwireless_stop_interrupts(network->hardware); | 436 | ipwireless_stop_interrupts(network->hardware); |
436 | ipwireless_associate_network(network->hardware, NULL); | 437 | ipwireless_associate_network(network->hardware, NULL); |
diff --git a/drivers/char/pcmcia/ipwireless/tty.c b/drivers/char/pcmcia/ipwireless/tty.c index 1a2c2c3b068f..f5eb28b6cb0f 100644 --- a/drivers/char/pcmcia/ipwireless/tty.c +++ b/drivers/char/pcmcia/ipwireless/tty.c | |||
@@ -577,7 +577,7 @@ void ipwireless_tty_free(struct ipw_tty *tty) | |||
577 | mutex_unlock(&ttyj->ipw_tty_mutex); | 577 | mutex_unlock(&ttyj->ipw_tty_mutex); |
578 | tty_hangup(ttyj->linux_tty); | 578 | tty_hangup(ttyj->linux_tty); |
579 | /* Wait till the tty_hangup has completed */ | 579 | /* Wait till the tty_hangup has completed */ |
580 | flush_scheduled_work(); | 580 | flush_work_sync(&ttyj->linux_tty->hangup_work); |
581 | /* FIXME: Exactly how is the tty object locked here | 581 | /* FIXME: Exactly how is the tty object locked here |
582 | against a parallel ioctl etc */ | 582 | against a parallel ioctl etc */ |
583 | mutex_lock(&ttyj->ipw_tty_mutex); | 583 | mutex_lock(&ttyj->ipw_tty_mutex); |
diff --git a/drivers/char/sonypi.c b/drivers/char/sonypi.c index 73f66d03624d..79e36c878a4c 100644 --- a/drivers/char/sonypi.c +++ b/drivers/char/sonypi.c | |||
@@ -1434,7 +1434,7 @@ static int __devexit sonypi_remove(struct platform_device *dev) | |||
1434 | sonypi_disable(); | 1434 | sonypi_disable(); |
1435 | 1435 | ||
1436 | synchronize_irq(sonypi_device.irq); | 1436 | synchronize_irq(sonypi_device.irq); |
1437 | flush_scheduled_work(); | 1437 | flush_work_sync(&sonypi_device.input_work); |
1438 | 1438 | ||
1439 | if (useinput) { | 1439 | if (useinput) { |
1440 | input_unregister_device(sonypi_device.input_key_dev); | 1440 | input_unregister_device(sonypi_device.input_key_dev); |
diff --git a/drivers/char/tpm/tpm.c b/drivers/char/tpm/tpm.c index 7c4133582dba..0b3af3fe6766 100644 --- a/drivers/char/tpm/tpm.c +++ b/drivers/char/tpm/tpm.c | |||
@@ -986,7 +986,7 @@ int tpm_release(struct inode *inode, struct file *file) | |||
986 | struct tpm_chip *chip = file->private_data; | 986 | struct tpm_chip *chip = file->private_data; |
987 | 987 | ||
988 | del_singleshot_timer_sync(&chip->user_read_timer); | 988 | del_singleshot_timer_sync(&chip->user_read_timer); |
989 | flush_scheduled_work(); | 989 | flush_work_sync(&chip->work); |
990 | file->private_data = NULL; | 990 | file->private_data = NULL; |
991 | atomic_set(&chip->data_pending, 0); | 991 | atomic_set(&chip->data_pending, 0); |
992 | kfree(chip->data_buffer); | 992 | kfree(chip->data_buffer); |
@@ -1038,7 +1038,7 @@ ssize_t tpm_read(struct file *file, char __user *buf, | |||
1038 | ssize_t ret_size; | 1038 | ssize_t ret_size; |
1039 | 1039 | ||
1040 | del_singleshot_timer_sync(&chip->user_read_timer); | 1040 | del_singleshot_timer_sync(&chip->user_read_timer); |
1041 | flush_scheduled_work(); | 1041 | flush_work_sync(&chip->work); |
1042 | ret_size = atomic_read(&chip->data_pending); | 1042 | ret_size = atomic_read(&chip->data_pending); |
1043 | atomic_set(&chip->data_pending, 0); | 1043 | atomic_set(&chip->data_pending, 0); |
1044 | if (ret_size > 0) { /* relay data */ | 1044 | if (ret_size > 0) { /* relay data */ |