diff options
author | Stefan Bader <shbader@de.ibm.com> | 2006-04-27 21:40:04 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-04-28 11:33:47 -0400 |
commit | 6dcfca78d4c036c9d012f913e2a622aae218827f (patch) | |
tree | 945d38095f9302d5d3139be96a5466f2b6e12383 | |
parent | 329b785bcee5d001f97a33bdb80de014bb5020b0 (diff) |
[PATCH] s390: enable interrupts on error path
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 <shbader@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r-- | drivers/s390/cio/chsc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/s390/cio/chsc.c b/drivers/s390/cio/chsc.c index daedb00a4346..72187e54dcac 100644 --- a/drivers/s390/cio/chsc.c +++ b/drivers/s390/cio/chsc.c | |||
@@ -635,13 +635,13 @@ __chp_add(struct subchannel_id schid, void *data) | |||
635 | if (sch->schib.pmcw.chpid[i] == chp->id) { | 635 | if (sch->schib.pmcw.chpid[i] == chp->id) { |
636 | if (stsch(sch->schid, &sch->schib) != 0) { | 636 | if (stsch(sch->schid, &sch->schib) != 0) { |
637 | /* Endgame. */ | 637 | /* Endgame. */ |
638 | spin_unlock(&sch->lock); | 638 | spin_unlock_irq(&sch->lock); |
639 | return -ENXIO; | 639 | return -ENXIO; |
640 | } | 640 | } |
641 | break; | 641 | break; |
642 | } | 642 | } |
643 | if (i==8) { | 643 | if (i==8) { |
644 | spin_unlock(&sch->lock); | 644 | spin_unlock_irq(&sch->lock); |
645 | return 0; | 645 | return 0; |
646 | } | 646 | } |
647 | sch->lpm = ((sch->schib.pmcw.pim & | 647 | sch->lpm = ((sch->schib.pmcw.pim & |