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 fa1fcbfb946f9dfd9de25a66df2ee41b5bb982b6..c2bc7f9c728a2cede188f82f09d3e8579caffd1a 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;