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/media/video/em28xx | |
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/media/video/em28xx')
-rw-r--r-- | drivers/media/video/em28xx/em28xx-cards.c | 8 | ||||
-rw-r--r-- | drivers/media/video/em28xx/em28xx-input.c | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/drivers/media/video/em28xx/em28xx-cards.c b/drivers/media/video/em28xx/em28xx-cards.c index 8af302b425b3..099d5df8c572 100644 --- a/drivers/media/video/em28xx/em28xx-cards.c +++ b/drivers/media/video/em28xx/em28xx-cards.c | |||
@@ -2690,8 +2690,14 @@ static void request_modules(struct em28xx *dev) | |||
2690 | INIT_WORK(&dev->request_module_wk, request_module_async); | 2690 | INIT_WORK(&dev->request_module_wk, request_module_async); |
2691 | schedule_work(&dev->request_module_wk); | 2691 | schedule_work(&dev->request_module_wk); |
2692 | } | 2692 | } |
2693 | |||
2694 | static void flush_request_modules(struct em28xx *dev) | ||
2695 | { | ||
2696 | flush_work_sync(&dev->request_module_wk); | ||
2697 | } | ||
2693 | #else | 2698 | #else |
2694 | #define request_modules(dev) | 2699 | #define request_modules(dev) |
2700 | #define flush_request_modules(dev) | ||
2695 | #endif /* CONFIG_MODULES */ | 2701 | #endif /* CONFIG_MODULES */ |
2696 | 2702 | ||
2697 | /* | 2703 | /* |
@@ -3118,6 +3124,8 @@ static void em28xx_usb_disconnect(struct usb_interface *interface) | |||
3118 | 3124 | ||
3119 | em28xx_info("disconnecting %s\n", dev->vdev->name); | 3125 | em28xx_info("disconnecting %s\n", dev->vdev->name); |
3120 | 3126 | ||
3127 | flush_request_modules(dev); | ||
3128 | |||
3121 | /* wait until all current v4l2 io is finished then deallocate | 3129 | /* wait until all current v4l2 io is finished then deallocate |
3122 | resources */ | 3130 | resources */ |
3123 | mutex_lock(&dev->lock); | 3131 | mutex_lock(&dev->lock); |
diff --git a/drivers/media/video/em28xx/em28xx-input.c b/drivers/media/video/em28xx/em28xx-input.c index 29cc74441a7d..ba1ba8648c81 100644 --- a/drivers/media/video/em28xx/em28xx-input.c +++ b/drivers/media/video/em28xx/em28xx-input.c | |||
@@ -551,7 +551,7 @@ void em28xx_deregister_snapshot_button(struct em28xx *dev) | |||
551 | { | 551 | { |
552 | if (dev->sbutton_input_dev != NULL) { | 552 | if (dev->sbutton_input_dev != NULL) { |
553 | em28xx_info("Deregistering snapshot button\n"); | 553 | em28xx_info("Deregistering snapshot button\n"); |
554 | cancel_rearming_delayed_work(&dev->sbutton_query_work); | 554 | cancel_delayed_work_sync(&dev->sbutton_query_work); |
555 | input_unregister_device(dev->sbutton_input_dev); | 555 | input_unregister_device(dev->sbutton_input_dev); |
556 | dev->sbutton_input_dev = NULL; | 556 | dev->sbutton_input_dev = NULL; |
557 | } | 557 | } |