diff options
author | Ben Hutchings <ben@decadent.org.uk> | 2010-01-23 13:40:29 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-02-08 19:35:14 -0500 |
commit | 2cec802980727f1daa46d8c31b411e083d49d7a2 (patch) | |
tree | a760436a6179f41e1ccaeb9fd564c6c9d2e84ab4 /drivers/scsi/qla1280.c | |
parent | 7c56533cf4fb072abc39e850e7ef4fb6166cc83b (diff) |
[SCSI] qla1280: Drop host_lock while requesting firmware
request_firmware() may sleep and it appears to be safe to release the
spinlock here.
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Cc: stable@kernel.org
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/qla1280.c')
-rw-r--r-- | drivers/scsi/qla1280.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/scsi/qla1280.c b/drivers/scsi/qla1280.c index 8371d917a9a2..49ac4148493b 100644 --- a/drivers/scsi/qla1280.c +++ b/drivers/scsi/qla1280.c | |||
@@ -1640,8 +1640,10 @@ qla1280_load_firmware_pio(struct scsi_qla_host *ha) | |||
1640 | uint16_t mb[MAILBOX_REGISTER_COUNT], i; | 1640 | uint16_t mb[MAILBOX_REGISTER_COUNT], i; |
1641 | int err; | 1641 | int err; |
1642 | 1642 | ||
1643 | spin_unlock_irq(ha->host->host_lock); | ||
1643 | err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname, | 1644 | err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname, |
1644 | &ha->pdev->dev); | 1645 | &ha->pdev->dev); |
1646 | spin_lock_irq(ha->host->host_lock); | ||
1645 | if (err) { | 1647 | if (err) { |
1646 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | 1648 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", |
1647 | ql1280_board_tbl[ha->devnum].fwname, err); | 1649 | ql1280_board_tbl[ha->devnum].fwname, err); |
@@ -1699,8 +1701,10 @@ qla1280_load_firmware_dma(struct scsi_qla_host *ha) | |||
1699 | return -ENOMEM; | 1701 | return -ENOMEM; |
1700 | #endif | 1702 | #endif |
1701 | 1703 | ||
1704 | spin_unlock_irq(ha->host->host_lock); | ||
1702 | err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname, | 1705 | err = request_firmware(&fw, ql1280_board_tbl[ha->devnum].fwname, |
1703 | &ha->pdev->dev); | 1706 | &ha->pdev->dev); |
1707 | spin_lock_irq(ha->host->host_lock); | ||
1704 | if (err) { | 1708 | if (err) { |
1705 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", | 1709 | printk(KERN_ERR "Failed to load image \"%s\" err %d\n", |
1706 | ql1280_board_tbl[ha->devnum].fwname, err); | 1710 | ql1280_board_tbl[ha->devnum].fwname, err); |