[PATCH] cciss: softirq handler needs to save interrupt flags
authorJens Axboe <axboe@suse.de>
Tue, 7 Feb 2006 14:00:01 +0000 (15:00 +0100)
committerLinus Torvalds <torvalds@g5.osdl.org>
Tue, 7 Feb 2006 18:11:19 +0000 (10:11 -0800)
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>
drivers/block/cciss.c

index 12d7b9bdfa93b62ae0664255d2ca7b34b911841c..0d65394707dbd5653057cfe1dbca6c94fdd98c47 100644 (file)
@@ -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