scsi: qla2xxx: Fix serialization of DCBX TLV data request
authorRafael Mendonca <rafaelmendsr@gmail.com>
Mon, 26 Sep 2022 23:02:44 +0000 (20:02 -0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 1 Oct 2022 09:48:23 +0000 (05:48 -0400)
Commit b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request") serialized
mailbox requests from userspace using the 'optrom' mutex. However, in the
case of DCBX TLV data, if the memory for it is already allocated, then the
mailbox request ends up not being serialized because it is done without
holding the 'optrom' mutex.

Link: https://lore.kernel.org/r/20220926230245.790508-1-rafaelmendsr@gmail.com
Fixes: b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request")
Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_attr.c

index fa1fcbf..c2bc7f9 100644 (file)
@@ -951,9 +951,9 @@ qla2x00_sysfs_read_dcbx_tlv(struct file *filp, struct kobject *kobj,
        if (!capable(CAP_SYS_ADMIN) || off != 0 || count > DCBX_TLV_DATA_SIZE)
                return 0;
 
+       mutex_lock(&vha->hw->optrom_mutex);
        if (ha->dcbx_tlv)
                goto do_read;
-       mutex_lock(&vha->hw->optrom_mutex);
        if (qla2x00_chip_is_down(vha)) {
                mutex_unlock(&vha->hw->optrom_mutex);
                return 0;