diff options
author | Xiang Chen <chenxiang66@hisilicon.com> | 2021-12-20 19:21:27 +0800 |
---|---|---|
committer | Martin K. Petersen <martin.petersen@oracle.com> | 2021-12-22 23:38:29 -0500 |
commit | 42159d3c8d879e8d5fc225733f0cedc8baf19002 (patch) | |
tree | 9f013c185ba121638a1ef6939629093b99d6bdfe /drivers/scsi/libsas | |
parent | 6e1fcab00a23f7fe9f4fe9704905a790efa1eeab (diff) | |
download | linux-stable-42159d3c8d879e8d5fc225733f0cedc8baf19002.tar.gz linux-stable-42159d3c8d879e8d5fc225733f0cedc8baf19002.tar.bz2 linux-stable-42159d3c8d879e8d5fc225733f0cedc8baf19002.zip |
scsi: libsas: Add spin_lock/unlock() to protect asd_sas_port->phy_list
Most places that use asd_sas_port->phy_list in libsas are protected by
spinlock asd_sas_port->phy_list_lock. However, there are still a few places
which miss the lock. Add it in those places.
Link: https://lore.kernel.org/r/1639999298-244569-5-git-send-email-chenxiang66@hisilicon.com
Reviewed-by: John Garry <john.garry@huawei.com>
Signed-off-by: Xiang Chen <chenxiang66@hisilicon.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Diffstat (limited to 'drivers/scsi/libsas')
-rw-r--r-- | drivers/scsi/libsas/sas_event.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/scsi/libsas/sas_event.c b/drivers/scsi/libsas/sas_event.c index f703115e7a25..af605620ea13 100644 --- a/drivers/scsi/libsas/sas_event.c +++ b/drivers/scsi/libsas/sas_event.c @@ -104,11 +104,15 @@ void sas_enable_revalidation(struct sas_ha_struct *ha) if (!test_and_clear_bit(ev, &d->pending)) continue; - if (list_empty(&port->phy_list)) + spin_lock(&port->phy_list_lock); + if (list_empty(&port->phy_list)) { + spin_unlock(&port->phy_list_lock); continue; + } sas_phy = container_of(port->phy_list.next, struct asd_sas_phy, port_phy_el); + spin_unlock(&port->phy_list_lock); sas_notify_port_event(sas_phy, PORTE_BROADCAST_RCVD, GFP_KERNEL); } |