From: Stefan Bader Interrupts can stay disabled if an error occurred in _chp_add(). Use spin_unlock_irq on the error paths to reenable interrupts. Signed-off-by: Stefan Bader Signed-off-by: Martin Schwidefsky Signed-off-by: Andrew Morton --- drivers/s390/cio/chsc.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff -puN drivers/s390/cio/chsc.c~s390-enable-interrupts-on-error-path drivers/s390/cio/chsc.c --- 25/drivers/s390/cio/chsc.c~s390-enable-interrupts-on-error-path Mon Apr 24 16:45:51 2006 +++ 25-akpm/drivers/s390/cio/chsc.c Mon Apr 24 16:45:51 2006 @@ -635,13 +635,13 @@ __chp_add(struct subchannel_id schid, vo if (sch->schib.pmcw.chpid[i] == chp->id) { if (stsch(sch->schid, &sch->schib) != 0) { /* Endgame. */ - spin_unlock(&sch->lock); + spin_unlock_irq(&sch->lock); return -ENXIO; } break; } if (i==8) { - spin_unlock(&sch->lock); + spin_unlock_irq(&sch->lock); return 0; } sch->lpm = ((sch->schib.pmcw.pim & _