Patch "HID: intel-ish-hid: Fix use-after-free issue in hid_ishtp_cl_remove()" has been added to the 6.13-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

    HID: intel-ish-hid: Fix use-after-free issue in hid_ishtp_cl_remove()

to the 6.13-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:
     hid-intel-ish-hid-fix-use-after-free-issue-in-hid_is.patch
and it can be found in the queue-6.13 subdirectory.

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



commit 0c0668479bc1870ce39e777163eb90f52a8ca8c4
Author: Zhang Lixu <lixu.zhang@xxxxxxxxx>
Date:   Tue Feb 18 14:37:29 2025 +0800

    HID: intel-ish-hid: Fix use-after-free issue in hid_ishtp_cl_remove()
    
    [ Upstream commit 823987841424289339fdb4ba90e6d2c3792836db ]
    
    During the `rmmod` operation for the `intel_ishtp_hid` driver, a
    use-after-free issue can occur in the hid_ishtp_cl_remove() function.
    The function hid_ishtp_cl_deinit() is called before ishtp_hid_remove(),
    which can lead to accessing freed memory or resources during the
    removal process.
    
    Call Trace:
     ? ishtp_cl_send+0x168/0x220 [intel_ishtp]
     ? hid_output_report+0xe3/0x150 [hid]
     hid_ishtp_set_feature+0xb5/0x120 [intel_ishtp_hid]
     ishtp_hid_request+0x7b/0xb0 [intel_ishtp_hid]
     hid_hw_request+0x1f/0x40 [hid]
     sensor_hub_set_feature+0x11f/0x190 [hid_sensor_hub]
     _hid_sensor_power_state+0x147/0x1e0 [hid_sensor_trigger]
     hid_sensor_runtime_resume+0x22/0x30 [hid_sensor_trigger]
     sensor_hub_remove+0xa8/0xe0 [hid_sensor_hub]
     hid_device_remove+0x49/0xb0 [hid]
     hid_destroy_device+0x6f/0x90 [hid]
     ishtp_hid_remove+0x42/0x70 [intel_ishtp_hid]
     hid_ishtp_cl_remove+0x6b/0xb0 [intel_ishtp_hid]
     ishtp_cl_device_remove+0x4a/0x60 [intel_ishtp]
     ...
    
    Additionally, ishtp_hid_remove() is a HID level power off, which should
    occur before the ISHTP level disconnect.
    
    This patch resolves the issue by reordering the calls in
    hid_ishtp_cl_remove(). The function ishtp_hid_remove() is now
    called before hid_ishtp_cl_deinit().
    
    Fixes: f645a90e8ff7 ("HID: intel-ish-hid: ishtp-hid-client: use helper functions for connection")
    Signed-off-by: Zhang Lixu <lixu.zhang@xxxxxxxxx>
    Acked-by: Srinivas Pandruvada <srinivas.pandruvada@xxxxxxxxxxxxxxx>
    Signed-off-by: Jiri Kosina <jkosina@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/hid/intel-ish-hid/ishtp-hid-client.c b/drivers/hid/intel-ish-hid/ishtp-hid-client.c
index cb04cd1d980bd..6550ad5bfbb53 100644
--- a/drivers/hid/intel-ish-hid/ishtp-hid-client.c
+++ b/drivers/hid/intel-ish-hid/ishtp-hid-client.c
@@ -832,9 +832,9 @@ static void hid_ishtp_cl_remove(struct ishtp_cl_device *cl_device)
 			hid_ishtp_cl);
 
 	dev_dbg(ishtp_device(cl_device), "%s\n", __func__);
-	hid_ishtp_cl_deinit(hid_ishtp_cl);
 	ishtp_put_device(cl_device);
 	ishtp_hid_remove(client_data);
+	hid_ishtp_cl_deinit(hid_ishtp_cl);
 
 	hid_ishtp_cl = NULL;
 




[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