]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
scsi: mpt3sas: Free diag buffer without any status check
authorSreekanth Reddy <sreekanth.reddy@broadcom.com>
Fri, 13 Sep 2019 13:04:41 +0000 (09:04 -0400)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 1 Oct 2020 11:17:10 +0000 (13:17 +0200)
[ Upstream commit 764f472ba4a7a0c18107ebfbe1a9f1f5f5a1e411 ]

Memory leak can happen when diag buffer is released but not unregistered
(where buffer is deallocated) by the user. During module unload time driver
is not deallocating the buffer if the buffer is in released state.

Deallocate the diag buffer during module unload time without any diag
buffer status checks.

Link: https://lore.kernel.org/r/1568379890-18347-5-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: Sasha Levin <sashal@kernel.org>
drivers/scsi/mpt3sas/mpt3sas_ctl.c

index d5a62fea8fe3eaf901fe94cba8f64d839ccbf5ed..bae7cf70ee1774ff6fae49a5a6c1b2a038fea6a9 100644 (file)
@@ -3717,12 +3717,6 @@ mpt3sas_ctl_exit(ushort hbas_to_enumerate)
                for (i = 0; i < MPI2_DIAG_BUF_TYPE_COUNT; i++) {
                        if (!ioc->diag_buffer[i])
                                continue;
-                       if (!(ioc->diag_buffer_status[i] &
-                           MPT3_DIAG_BUFFER_IS_REGISTERED))
-                               continue;
-                       if ((ioc->diag_buffer_status[i] &
-                           MPT3_DIAG_BUFFER_IS_RELEASED))
-                               continue;
                        dma_free_coherent(&ioc->pdev->dev,
                                          ioc->diag_buffer_sz[i],
                                          ioc->diag_buffer[i],