summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChandrakanth Patil <chandrakanth.patil@broadcom.com>2026-08-26 02:33:58 +0530
committerMartin K. Petersen (Oracle) <mkp@kernel.org>2026-09-09 22:08:15 -0400
commitf0ec04bdf6156ed2ae7d86a8819dafdd9383b705 (patch)
tree27e2f764249b847d15127c73d2e36f1ca3886cd3
parent37e7d274272bc5e545e2d5f9261afa7f33f1cf49 (diff)
downloadlinux-next-f0ec04bdf6156ed2ae7d86a8819dafdd9383b705.tar.gz
linux-next-f0ec04bdf6156ed2ae7d86a8819dafdd9383b705.zip
scsi: mpi3mr: Fix target device reference leak in BSG task management
The target device lookup takes a reference, but it is only dropped inside a branch that also requires the SCSI target data to be set up. When it is not, the reference is leaked. Drop the reference whenever the lookup succeeded. Fixes: 506bc1a0d6ba ("scsi: mpi3mr: Add support for MPT commands") Signed-off-by: Chandrakanth Patil <chandrakanth.patil@broadcom.com> Link: https://patch.msgid.link/20260825210411.301535-5-chandrakanth.patil@broadcom.com Signed-off-by: Martin K. Petersen (Oracle) <mkp@kernel.org>
-rw-r--r--drivers/scsi/mpi3mr/mpi3mr_app.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/scsi/mpi3mr/mpi3mr_app.c b/drivers/scsi/mpi3mr/mpi3mr_app.c
index a4fe10a05cb3..94b992acb233 100644
--- a/drivers/scsi/mpi3mr/mpi3mr_app.c
+++ b/drivers/scsi/mpi3mr/mpi3mr_app.c
@@ -2745,10 +2745,12 @@ static long mpi3mr_bsg_process_mpt_cmds(struct bsg_job *job)
}
if (block_io) {
tgtdev = mpi3mr_get_tgtdev_by_handle(mrioc, dev_handle);
- if (tgtdev && tgtdev->starget && tgtdev->starget->hostdata) {
- stgt_priv = (struct mpi3mr_stgt_priv_data *)
- tgtdev->starget->hostdata;
- atomic_inc(&stgt_priv->block_io);
+ if (tgtdev) {
+ if (tgtdev->starget && tgtdev->starget->hostdata) {
+ stgt_priv = (struct mpi3mr_stgt_priv_data *)
+ tgtdev->starget->hostdata;
+ atomic_inc(&stgt_priv->block_io);
+ }
mpi3mr_tgtdev_put(tgtdev);
}
}