diff options
author | Jens Axboe <axboe@suse.de> | 2006-02-07 15:00:01 +0100 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-02-07 10:11:19 -0800 |
commit | d43da75fd6be4197c280903e1553eafcc39218e2 (patch) | |
tree | b53eb1ec81f712bbc1312fd24fd41aeafa3caa59 /drivers/block | |
parent | e8a82fd030c2e0ba4d4169cc4257ef174ff6f6b4 (diff) | |
download | lwn-d43da75fd6be4197c280903e1553eafcc39218e2.tar.gz lwn-d43da75fd6be4197c280903e1553eafcc39218e2.zip |
[PATCH] cciss: softirq handler needs to save interrupt flags
The softirq rq completion handler needs to save/restore interrupt flags
appropriately.
Signed-off-by: Jens Axboe <axboe@suse.de>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/block')
-rw-r--r-- | drivers/block/cciss.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/block/cciss.c b/drivers/block/cciss.c index 12d7b9bdfa93..0d65394707db 100644 --- a/drivers/block/cciss.c +++ b/drivers/block/cciss.c @@ -2183,6 +2183,7 @@ static void cciss_softirq_done(struct request *rq) { CommandList_struct *cmd = rq->completion_data; ctlr_info_t *h = hba[cmd->ctlr]; + unsigned long flags; u64bit temp64; int i, ddir; @@ -2205,10 +2206,10 @@ static void cciss_softirq_done(struct request *rq) printk("Done with %p\n", rq); #endif /* CCISS_DEBUG */ - spin_lock_irq(&h->lock); + spin_lock_irqsave(&h->lock, flags); end_that_request_last(rq, rq->errors); cmd_free(h, cmd,1); - spin_unlock_irq(&h->lock); + spin_unlock_irqrestore(&h->lock, flags); } /* checks the status of the job and calls complete buffers to mark all |