mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
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.
This commit is contained in:
commit
23d69b09b7
80 changed files with 289 additions and 156 deletions
|
|
@ -1247,7 +1247,7 @@ static void cxacru_unbind(struct usbatm_data *usbatm_instance,
|
|||
mutex_unlock(&instance->poll_state_serialize);
|
||||
|
||||
if (is_polling)
|
||||
cancel_rearming_delayed_work(&instance->poll_work);
|
||||
cancel_delayed_work_sync(&instance->poll_work);
|
||||
|
||||
usb_kill_urb(instance->snd_urb);
|
||||
usb_kill_urb(instance->rcv_urb);
|
||||
|
|
|
|||
|
|
@ -139,7 +139,8 @@ struct speedtch_instance_data {
|
|||
|
||||
struct speedtch_params params; /* set in probe, constant afterwards */
|
||||
|
||||
struct delayed_work status_checker;
|
||||
struct timer_list status_check_timer;
|
||||
struct work_struct status_check_work;
|
||||
|
||||
unsigned char last_status;
|
||||
|
||||
|
|
@ -498,7 +499,7 @@ static void speedtch_check_status(struct work_struct *work)
|
|||
{
|
||||
struct speedtch_instance_data *instance =
|
||||
container_of(work, struct speedtch_instance_data,
|
||||
status_checker.work);
|
||||
status_check_work);
|
||||
struct usbatm_data *usbatm = instance->usbatm;
|
||||
struct atm_dev *atm_dev = usbatm->atm_dev;
|
||||
unsigned char *buf = instance->scratch_buffer;
|
||||
|
|
@ -575,11 +576,11 @@ static void speedtch_status_poll(unsigned long data)
|
|||
{
|
||||
struct speedtch_instance_data *instance = (void *)data;
|
||||
|
||||
schedule_delayed_work(&instance->status_checker, 0);
|
||||
schedule_work(&instance->status_check_work);
|
||||
|
||||
/* The following check is racy, but the race is harmless */
|
||||
if (instance->poll_delay < MAX_POLL_DELAY)
|
||||
mod_timer(&instance->status_checker.timer, jiffies + msecs_to_jiffies(instance->poll_delay));
|
||||
mod_timer(&instance->status_check_timer, jiffies + msecs_to_jiffies(instance->poll_delay));
|
||||
else
|
||||
atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n");
|
||||
}
|
||||
|
|
@ -595,7 +596,7 @@ static void speedtch_resubmit_int(unsigned long data)
|
|||
if (int_urb) {
|
||||
ret = usb_submit_urb(int_urb, GFP_ATOMIC);
|
||||
if (!ret)
|
||||
schedule_delayed_work(&instance->status_checker, 0);
|
||||
schedule_work(&instance->status_check_work);
|
||||
else {
|
||||
atm_dbg(instance->usbatm, "%s: usb_submit_urb failed with result %d\n", __func__, ret);
|
||||
mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY));
|
||||
|
|
@ -624,7 +625,7 @@ static void speedtch_handle_int(struct urb *int_urb)
|
|||
}
|
||||
|
||||
if ((count == 6) && !memcmp(up_int, instance->int_data, 6)) {
|
||||
del_timer(&instance->status_checker.timer);
|
||||
del_timer(&instance->status_check_timer);
|
||||
atm_info(usbatm, "DSL line goes up\n");
|
||||
} else if ((count == 6) && !memcmp(down_int, instance->int_data, 6)) {
|
||||
atm_info(usbatm, "DSL line goes down\n");
|
||||
|
|
@ -640,7 +641,7 @@ static void speedtch_handle_int(struct urb *int_urb)
|
|||
|
||||
if ((int_urb = instance->int_urb)) {
|
||||
ret = usb_submit_urb(int_urb, GFP_ATOMIC);
|
||||
schedule_delayed_work(&instance->status_checker, 0);
|
||||
schedule_work(&instance->status_check_work);
|
||||
if (ret < 0) {
|
||||
atm_dbg(usbatm, "%s: usb_submit_urb failed with result %d\n", __func__, ret);
|
||||
goto fail;
|
||||
|
|
@ -686,7 +687,7 @@ static int speedtch_atm_start(struct usbatm_data *usbatm, struct atm_dev *atm_de
|
|||
}
|
||||
|
||||
/* Start status polling */
|
||||
mod_timer(&instance->status_checker.timer, jiffies + msecs_to_jiffies(1000));
|
||||
mod_timer(&instance->status_check_timer, jiffies + msecs_to_jiffies(1000));
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -698,7 +699,7 @@ static void speedtch_atm_stop(struct usbatm_data *usbatm, struct atm_dev *atm_de
|
|||
|
||||
atm_dbg(usbatm, "%s entered\n", __func__);
|
||||
|
||||
del_timer_sync(&instance->status_checker.timer);
|
||||
del_timer_sync(&instance->status_check_timer);
|
||||
|
||||
/*
|
||||
* Since resubmit_timer and int_urb can schedule themselves and
|
||||
|
|
@ -717,7 +718,7 @@ static void speedtch_atm_stop(struct usbatm_data *usbatm, struct atm_dev *atm_de
|
|||
del_timer_sync(&instance->resubmit_timer);
|
||||
usb_free_urb(int_urb);
|
||||
|
||||
flush_scheduled_work();
|
||||
flush_work_sync(&instance->status_check_work);
|
||||
}
|
||||
|
||||
static int speedtch_pre_reset(struct usb_interface *intf)
|
||||
|
|
@ -869,10 +870,11 @@ static int speedtch_bind(struct usbatm_data *usbatm,
|
|||
|
||||
usbatm->flags |= (use_isoc ? UDSL_USE_ISOC : 0);
|
||||
|
||||
INIT_DELAYED_WORK(&instance->status_checker, speedtch_check_status);
|
||||
INIT_WORK(&instance->status_check_work, speedtch_check_status);
|
||||
init_timer(&instance->status_check_timer);
|
||||
|
||||
instance->status_checker.timer.function = speedtch_status_poll;
|
||||
instance->status_checker.timer.data = (unsigned long)instance;
|
||||
instance->status_check_timer.function = speedtch_status_poll;
|
||||
instance->status_check_timer.data = (unsigned long)instance;
|
||||
instance->last_status = 0xff;
|
||||
instance->poll_delay = MIN_POLL_DELAY;
|
||||
|
||||
|
|
|
|||
|
|
@ -839,11 +839,9 @@ void gether_cleanup(void)
|
|||
return;
|
||||
|
||||
unregister_netdev(the_dev->net);
|
||||
flush_work_sync(&the_dev->work);
|
||||
free_netdev(the_dev->net);
|
||||
|
||||
/* assuming we used keventd, it must quiesce too */
|
||||
flush_scheduled_work();
|
||||
|
||||
the_dev = NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -901,7 +901,8 @@ static void ohci_stop (struct usb_hcd *hcd)
|
|||
|
||||
ohci_dump (ohci, 1);
|
||||
|
||||
flush_scheduled_work();
|
||||
if (quirk_nec(ohci))
|
||||
flush_work_sync(&ohci->nec_work);
|
||||
|
||||
ohci_usb_reset (ohci);
|
||||
ohci_writel (ohci, OHCI_INTR_MIE, &ohci->regs->intrdisable);
|
||||
|
|
|
|||
|
|
@ -1247,7 +1247,7 @@ static int __exit isp1301_remove(struct i2c_client *i2c)
|
|||
isp->timer.data = 0;
|
||||
set_bit(WORK_STOP, &isp->todo);
|
||||
del_timer_sync(&isp->timer);
|
||||
flush_scheduled_work();
|
||||
flush_work_sync(&isp->work);
|
||||
|
||||
put_device(&i2c->dev);
|
||||
the_transceiver = NULL;
|
||||
|
|
|
|||
|
|
@ -613,9 +613,8 @@ static void oti6858_close(struct usb_serial_port *port)
|
|||
dbg("%s(): after buf_clear()", __func__);
|
||||
|
||||
/* cancel scheduled setup */
|
||||
cancel_delayed_work(&priv->delayed_setup_work);
|
||||
cancel_delayed_work(&priv->delayed_write_work);
|
||||
flush_scheduled_work();
|
||||
cancel_delayed_work_sync(&priv->delayed_setup_work);
|
||||
cancel_delayed_work_sync(&priv->delayed_write_work);
|
||||
|
||||
/* shutdown our urbs */
|
||||
dbg("%s(): shutting down urbs", __func__);
|
||||
|
|
|
|||
Loading…
Reference in a new issue