diff mbox series

scsi: qla2xxx: Fix serialization of DCBX TLV data request

Message ID 20220926230245.790508-1-rafaelmendsr@gmail.com (mailing list archive)
State Accepted
Headers show
Series scsi: qla2xxx: Fix serialization of DCBX TLV data request | expand

Commit Message

Rafael Mendonca Sept. 26, 2022, 11:02 p.m. UTC
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.

Fixes: b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request")
Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
---
 drivers/scsi/qla2xxx/qla_attr.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Himanshu Madhani Sept. 27, 2022, 6:26 p.m. UTC | #1
> On Sep 26, 2022, at 4:02 PM, Rafael Mendonca <rafaelmendsr@gmail.com> wrote:
> 
> 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.
> 
> Fixes: b6faaaf796d7 ("scsi: qla2xxx: Serialize mailbox request")
> Signed-off-by: Rafael Mendonca <rafaelmendsr@gmail.com>
> ---
> drivers/scsi/qla2xxx/qla_attr.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
> index fa1fcbfb946f..c2bc7f9c728a 100644
> --- a/drivers/scsi/qla2xxx/qla_attr.c
> +++ b/drivers/scsi/qla2xxx/qla_attr.c
> @@ -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;
> -- 
> 2.34.1
> 

Looks Good. 

Reviewed-by: Himanshu Madhani <himanshu.madhani@oracle.com>
Martin K. Petersen Oct. 1, 2022, 9:50 a.m. UTC | #2
Rafael,

> 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.

Applied to 6.1/scsi-staging, thanks!
diff mbox series

Patch

diff --git a/drivers/scsi/qla2xxx/qla_attr.c b/drivers/scsi/qla2xxx/qla_attr.c
index fa1fcbfb946f..c2bc7f9c728a 100644
--- a/drivers/scsi/qla2xxx/qla_attr.c
+++ b/drivers/scsi/qla2xxx/qla_attr.c
@@ -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;