The patch titled drivers/isdn/hysdn/hysdn_sched.c: sleep after taking spinlock fix has been removed from the -mm tree. Its filename was drivers-isdn-hysdn-hysdn_schedc-sleep-after-taking.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: drivers/isdn/hysdn/hysdn_sched.c: sleep after taking spinlock fix From: Amol Lad <amol@xxxxxxxxxxxxxxxxxxx> spin_lock_irq{save,restore} is incorrectly called here (the function can sleep after acquring the lock). done the necessary corrections and removed unwanted cli/sti. Signed-off-by: Amol Lad <amol@xxxxxxxxxxxxxxxxxxx> Signed-off-by: Karsten Keil <kkeil@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- drivers/isdn/hysdn/hysdn_sched.c | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff -puN drivers/isdn/hysdn/hysdn_sched.c~drivers-isdn-hysdn-hysdn_schedc-sleep-after-taking drivers/isdn/hysdn/hysdn_sched.c --- a/drivers/isdn/hysdn/hysdn_sched.c~drivers-isdn-hysdn-hysdn_schedc-sleep-after-taking +++ a/drivers/isdn/hysdn/hysdn_sched.c @@ -155,21 +155,17 @@ hysdn_tx_cfgline(hysdn_card *card, unsig if (card->debug_flags & LOG_SCHED_ASYN) hysdn_addlog(card, "async tx-cfg chan=%d len=%d", chan, strlen(line) + 1); - spin_lock_irqsave(&card->hysdn_lock, flags); while (card->async_busy) { - sti(); if (card->debug_flags & LOG_SCHED_ASYN) hysdn_addlog(card, "async tx-cfg delayed"); msleep_interruptible(20); /* Timeout 20ms */ - if (!--cnt) { - spin_unlock_irqrestore(&card->hysdn_lock, flags); + if (!--cnt) return (-ERR_ASYNC_TIME); /* timed out */ - } - cli(); } /* wait for buffer to become free */ + spin_lock_irqsave(&card->hysdn_lock, flags); strcpy(card->async_data, line); card->async_len = strlen(line) + 1; card->async_channel = chan; @@ -177,30 +173,23 @@ hysdn_tx_cfgline(hysdn_card *card, unsig /* now queue the task */ schedule_work(&card->irq_queue); - sti(); + spin_unlock_irqrestore(&card->hysdn_lock, flags); if (card->debug_flags & LOG_SCHED_ASYN) hysdn_addlog(card, "async tx-cfg data queued"); cnt++; /* short delay */ - cli(); while (card->async_busy) { - sti(); if (card->debug_flags & LOG_SCHED_ASYN) hysdn_addlog(card, "async tx-cfg waiting for tx-ready"); msleep_interruptible(20); /* Timeout 20ms */ - if (!--cnt) { - spin_unlock_irqrestore(&card->hysdn_lock, flags); + if (!--cnt) return (-ERR_ASYNC_TIME); /* timed out */ - } - cli(); } /* wait for buffer to become free again */ - spin_unlock_irqrestore(&card->hysdn_lock, flags); - if (card->debug_flags & LOG_SCHED_ASYN) hysdn_addlog(card, "async tx-cfg data send"); _ Patches currently in -mm which might be from amol@xxxxxxxxxxxxxxxxxxx are origin.patch git-cpufreq.patch drivers-scsi-ncr5380c-replacing-yield-with-a.patch drivers-scsi-megaraidc-replacing-yield-with-a.patch ioremap-balanced-with-iounmap-for-drivers-char-rio-rio_linuxc.patch ioremap-balanced-with-iounmap-for-drivers-char-moxac.patch ioremap-balanced-with-iounmap-for-drivers-char-istallionc.patch sound-oss-btaudioc-ioremap-balanced-with-iounmap.patch drivers-isdn-handcrafted-min-max-macro-removal.patch drivers-isdn-handcrafted-min-max-macro-removal-fix.patch ioremap-balanced-with-iounmap-for-drivers-video-virgefb.patch ioremap-balanced-with-iounmap-for-drivers-video-vesafb.patch ioremap-balanced-with-iounmap-for-drivers-video-tridentfb.patch ioremap-balanced-with-iounmap-for-drivers-video-tgafb.patch ioremap-balanced-with-iounmap-for-drivers-video-stifb.patch ioremap-balanced-with-iounmap-for-drivers-video-retz3fb.patch ioremap-balanced-with-iounmap-for-drivers-video-pvr2fb.patch ioremap-balanced-with-iounmap-for-drivers-video-platinumfb.patch ioremap-balanced-with-iounmap-for-drivers-video-offb.patch ioremap-balanced-with-iounmap-for-drivers-video-macfb.patch ioremap-balanced-with-iounmap-for-drivers-video-hpfb.patch ioremap-balanced-with-iounmap-for-drivers-video-fm2fb.patch ioremap-balanced-with-iounmap-for-drivers-video-ffb.patch ioremap-balanced-with-iounmap-for-drivers-video-cyberfb.patch ioremap-balanced-with-iounmap-for-drivers-video-cirrusfb.patch ioremap-balanced-with-iounmap-for-drivers-video-atyfb_base.patch ioremap-balanced-with-iounmap-for-drivers-video-atafb.patch ioremap-balanced-with-iounmap-for-drivers-video-amifb.patch ioremap-balanced-with-iounmap-for-drivers-video-S3triofb.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html