| From 85a825290fe115e55a889b108124e4d914688c83 Mon Sep 17 00:00:00 2001 |
| From: Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
| Date: Fri, 13 Sep 2019 09:04:40 -0400 |
| Subject: [PATCH] scsi: mpt3sas: Fix clear pending bit in ioctl status |
| |
| commit 782b281883caf70289ba6a186af29441a117d23e upstream. |
| |
| When user issues diag register command from application with required size, |
| and if driver unable to allocate the memory, then it will fail the register |
| command. While failing the register command, driver is not currently |
| clearing MPT3_CMD_PENDING bit in ctl_cmds.status variable which was set |
| before trying to allocate the memory. As this bit is set, subsequent |
| register command will be failed with BUSY status even when user wants to |
| register the trace buffer will less memory. |
| |
| Clear MPT3_CMD_PENDING bit in ctl_cmds.status before returning the diag |
| register command with no memory status. |
| |
| Link: https://lore.kernel.org/r/1568379890-18347-4-git-send-email-sreekanth.reddy@broadcom.com |
| Signed-off-by: Sreekanth Reddy <sreekanth.reddy@broadcom.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/scsi/mpt3sas/mpt3sas_ctl.c b/drivers/scsi/mpt3sas/mpt3sas_ctl.c |
| index 5181c03e82a6..c44f98f30947 100644 |
| --- a/drivers/scsi/mpt3sas/mpt3sas_ctl.c |
| +++ b/drivers/scsi/mpt3sas/mpt3sas_ctl.c |
| @@ -1550,7 +1550,8 @@ _ctl_diag_register_2(struct MPT3SAS_ADAPTER *ioc, |
| ioc_err(ioc, "%s: failed allocating memory for diag buffers, requested size(%d)\n", |
| __func__, request_data_sz); |
| mpt3sas_base_free_smid(ioc, smid); |
| - return -ENOMEM; |
| + rc = -ENOMEM; |
| + goto out; |
| } |
| ioc->diag_buffer[buffer_type] = request_data; |
| ioc->diag_buffer_sz[buffer_type] = request_data_sz; |
| -- |
| 2.7.4 |
| |