[BUG] scsi: qla4xxx: possible double lock in qla4_82xx_wr_32()

From: Tuo Li
Date: Wed Aug 11 2021 - 09:44:36 EST


Our static analysis tool finds a possible double lock in ql4_nx.c in Linux 5.14.0-rc3:

ha->hw_lock is first locked in:
418:    write_lock_irqsave(&ha->hw_lock, flags);

And then the function qla4_82xx_crb_win_lock() is called:
419:    qla4_82xx_crb_win_lock(ha);

In this function, the function qla4_82xx_rd_32() is called:
389:    done = qla4_82xx_rd_32(ha, QLA82XX_PCIE_REG(PCIE_SEM7_LOCK));

In this function, ha->hw_lock is locked again:
442:    write_lock_irqsave(&ha->hw_lock, flags);

I am not quite sure whether this possible double lock is real and how to fix it if it is real.
Any feedback would be appreciated, thanks!

Reported-by: TOTE Robot <oslab@xxxxxxxxxxxxxxx>

Best wishes,
Tuo Li