hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/scsi/fcoe/fcoe_ctlr.c
....@@ -319,16 +319,17 @@
319319 {
320320 struct fcoe_fcf *sel;
321321 struct fcoe_fcf *fcf;
322
+ unsigned long flags;
322323
323324 mutex_lock(&fip->ctlr_mutex);
324
- spin_lock_bh(&fip->ctlr_lock);
325
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
325326
326327 kfree_skb(fip->flogi_req);
327328 fip->flogi_req = NULL;
328329 list_for_each_entry(fcf, &fip->fcfs, list)
329330 fcf->flogi_sent = 0;
330331
331
- spin_unlock_bh(&fip->ctlr_lock);
332
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
332333 sel = fip->sel_fcf;
333334
334335 if (sel && ether_addr_equal(sel->fcf_mac, fip->dest_addr))
....@@ -699,6 +700,7 @@
699700 {
700701 struct fc_frame *fp;
701702 struct fc_frame_header *fh;
703
+ unsigned long flags;
702704 u16 old_xid;
703705 u8 op;
704706 u8 mac[ETH_ALEN];
....@@ -732,11 +734,11 @@
732734 op = FIP_DT_FLOGI;
733735 if (fip->mode == FIP_MODE_VN2VN)
734736 break;
735
- spin_lock_bh(&fip->ctlr_lock);
737
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
736738 kfree_skb(fip->flogi_req);
737739 fip->flogi_req = skb;
738740 fip->flogi_req_send = 1;
739
- spin_unlock_bh(&fip->ctlr_lock);
741
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
740742 schedule_work(&fip->timer_work);
741743 return -EINPROGRESS;
742744 case ELS_FDISC:
....@@ -1713,10 +1715,11 @@
17131715 static int fcoe_ctlr_flogi_retry(struct fcoe_ctlr *fip)
17141716 {
17151717 struct fcoe_fcf *fcf;
1718
+ unsigned long flags;
17161719 int error;
17171720
17181721 mutex_lock(&fip->ctlr_mutex);
1719
- spin_lock_bh(&fip->ctlr_lock);
1722
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
17201723 LIBFCOE_FIP_DBG(fip, "re-sending FLOGI - reselect\n");
17211724 fcf = fcoe_ctlr_select(fip);
17221725 if (!fcf || fcf->flogi_sent) {
....@@ -1727,7 +1730,7 @@
17271730 fcoe_ctlr_solicit(fip, NULL);
17281731 error = fcoe_ctlr_flogi_send_locked(fip);
17291732 }
1730
- spin_unlock_bh(&fip->ctlr_lock);
1733
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
17311734 mutex_unlock(&fip->ctlr_mutex);
17321735 return error;
17331736 }
....@@ -1744,8 +1747,9 @@
17441747 static void fcoe_ctlr_flogi_send(struct fcoe_ctlr *fip)
17451748 {
17461749 struct fcoe_fcf *fcf;
1750
+ unsigned long flags;
17471751
1748
- spin_lock_bh(&fip->ctlr_lock);
1752
+ spin_lock_irqsave(&fip->ctlr_lock, flags);
17491753 fcf = fip->sel_fcf;
17501754 if (!fcf || !fip->flogi_req_send)
17511755 goto unlock;
....@@ -1772,7 +1776,7 @@
17721776 } else /* XXX */
17731777 LIBFCOE_FIP_DBG(fip, "No FCF selected - defer send\n");
17741778 unlock:
1775
- spin_unlock_bh(&fip->ctlr_lock);
1779
+ spin_unlock_irqrestore(&fip->ctlr_lock, flags);
17761780 }
17771781
17781782 /**