Patch "scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate()" has been added to the 4.14-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate()

to the 4.14-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     scsi-scsi_dh_alua-fix-memleak-for-qdata-in-alua_acti.patch
and it can be found in the queue-4.14 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit 95675bd051896818bf11ea468c1bfa706cd52635
Author: Yu Kuai <yukuai3@xxxxxxxxxx>
Date:   Wed Mar 15 14:21:54 2023 +0800

    scsi: scsi_dh_alua: Fix memleak for 'qdata' in alua_activate()
    
    [ Upstream commit a13faca032acbf2699293587085293bdfaafc8ae ]
    
    If alua_rtpg_queue() failed from alua_activate(), then 'qdata' is not
    freed, which will cause following memleak:
    
    unreferenced object 0xffff88810b2c6980 (size 32):
      comm "kworker/u16:2", pid 635322, jiffies 4355801099 (age 1216426.076s)
      hex dump (first 32 bytes):
        00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        40 39 24 c1 ff ff ff ff 00 f8 ea 0a 81 88 ff ff  @9$.............
      backtrace:
        [<0000000098f3a26d>] alua_activate+0xb0/0x320
        [<000000003b529641>] scsi_dh_activate+0xb2/0x140
        [<000000007b296db3>] activate_path_work+0xc6/0xe0 [dm_multipath]
        [<000000007adc9ace>] process_one_work+0x3c5/0x730
        [<00000000c457a985>] worker_thread+0x93/0x650
        [<00000000cb80e628>] kthread+0x1ba/0x210
        [<00000000a1e61077>] ret_from_fork+0x22/0x30
    
    Fix the problem by freeing 'qdata' in error path.
    
    Fixes: 625fe857e4fa ("scsi: scsi_dh_alua: Check scsi_device_get() return value")
    Signed-off-by: Yu Kuai <yukuai3@xxxxxxxxxx>
    Link: https://lore.kernel.org/r/20230315062154.668812-1-yukuai1@xxxxxxxxxxxxxxx
    Reviewed-by: Benjamin Block <bblock@xxxxxxxxxxxxx>
    Reviewed-by: Bart Van Assche <bvanassche@xxxxxxx>
    Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c
index 2cf5579a9ad9c..750d57d77be3b 100644
--- a/drivers/scsi/device_handler/scsi_dh_alua.c
+++ b/drivers/scsi/device_handler/scsi_dh_alua.c
@@ -1025,10 +1025,12 @@ static int alua_activate(struct scsi_device *sdev,
 	rcu_read_unlock();
 	mutex_unlock(&h->init_mutex);
 
-	if (alua_rtpg_queue(pg, sdev, qdata, true))
+	if (alua_rtpg_queue(pg, sdev, qdata, true)) {
 		fn = NULL;
-	else
+	} else {
+		kfree(qdata);
 		err = SCSI_DH_DEV_OFFLINED;
+	}
 	kref_put(&pg->kref, release_port_group);
 out:
 	if (fn)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux