diff --git a/drivers/md/dm-rq.c b/drivers/md/dm-rq.c index 4d36373e1c0f044264af149bfb46efe7aa6c25c5..12ed08245130913ff0644a5123df88388498ca2c 100644 --- a/drivers/md/dm-rq.c +++ b/drivers/md/dm-rq.c @@ -692,7 +692,6 @@ static void dm_old_request_fn(struct request_queue *q) /* Establish tio->ti before queuing work (map_tio_request) */ tio->ti = ti; kthread_queue_work(&md->kworker, &tio->work); - BUG_ON(!irqs_disabled()); } } diff --git a/drivers/usb/core/hcd.c b/drivers/usb/core/hcd.c index baf636ce00bb35ba6a15747651f8bb39467612f4..f13040bc33f77bbfb3838798797bc6391c03402d 100644 --- a/drivers/usb/core/hcd.c +++ b/drivers/usb/core/hcd.c @@ -1737,7 +1737,6 @@ static void __usb_hcd_giveback_urb(struct urb *urb) struct usb_hcd *hcd = bus_to_hcd(urb->dev->bus); struct usb_anchor *anchor = urb->anchor; int status = urb->unlinked; - unsigned long flags; urb->hcpriv = NULL; if (unlikely((urb->transfer_flags & URB_SHORT_NOT_OK) && @@ -1765,9 +1764,7 @@ static void __usb_hcd_giveback_urb(struct urb *urb) * and no one may trigger the above deadlock situation when * running complete() in tasklet. */ - local_irq_save(flags); urb->complete(urb); - local_irq_restore(flags); usb_anchor_resume_wakeups(anchor); atomic_dec(&urb->use_count); diff --git a/kernel/signal.c b/kernel/signal.c index 40cf8404539495d9735c677d14d3b4f8ec044815..29cab76b1058b6bac6db11f7255ad20abb561a7f 100644 --- a/kernel/signal.c +++ b/kernel/signal.c @@ -2111,15 +2111,7 @@ static void ptrace_stop(int exit_code, int why, int clear_code, siginfo_t *info) if (gstop_done && ptrace_reparented(current)) do_notify_parent_cldstop(current, false, why); - /* - * Don't want to allow preemption here, because - * sys_ptrace() needs this task to be inactive. - * - * XXX: implement read_unlock_no_resched(). - */ - preempt_disable(); read_unlock(&tasklist_lock); - preempt_enable_no_resched(); freezable_schedule(); } else { /* diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c index 8a4d01e427a22a1d800d750a96555a9da3ae34d1..4ab20f1138fd27d19f4e35ef7618d72e71e19332 100644 --- a/net/sched/sch_generic.c +++ b/net/sched/sch_generic.c @@ -1204,7 +1204,7 @@ void dev_deactivate_many(struct list_head *head) /* Wait for outstanding qdisc_run calls. */ list_for_each_entry(dev, head, close_list) { while (some_qdisc_is_busy(dev)) - yield(); + msleep(1); /* The new qdisc is assigned at this point so we can safely * unwind stale skb lists and qdisc statistics */