Patch "HID: hid-steam: Fix use-after-free when detaching device" has been added to the 6.12-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: hid-steam: Fix use-after-free when detaching device

to the 6.12-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-hid-steam-fix-use-after-free-when-detaching-devi.patch
and it can be found in the queue-6.12 subdirectory.

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



commit 3d66f4bab1e58ca674edcff2cfa463d2ae75b913
Author: Vicki Pfau <vi@xxxxxxxxxxx>
Date:   Thu Feb 27 15:41:33 2025 -0800

    HID: hid-steam: Fix use-after-free when detaching device
    
    [ Upstream commit e53fc232a65f7488ab75d03a5b95f06aaada7262 ]
    
    When a hid-steam device is removed it must clean up the client_hdev used for
    intercepting hidraw access. This can lead to scheduling deferred work to
    reattach the input device. Though the cleanup cancels the deferred work, this
    was done before the client_hdev itself is cleaned up, so it gets rescheduled.
    This patch fixes the ordering to make sure the deferred work is properly
    canceled.
    
    Reported-by: syzbot+0154da2d403396b2bd59@xxxxxxxxxxxxxxxxxxxxxxxxx
    Fixes: 79504249d7e2 ("HID: hid-steam: Move hidraw input (un)registering to work")
    Signed-off-by: Vicki Pfau <vi@xxxxxxxxxxx>
    Signed-off-by: Jiri Kosina <jkosina@xxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/hid/hid-steam.c b/drivers/hid/hid-steam.c
index 7b35966898785..19b7bb0c3d7f9 100644
--- a/drivers/hid/hid-steam.c
+++ b/drivers/hid/hid-steam.c
@@ -1327,11 +1327,11 @@ static void steam_remove(struct hid_device *hdev)
 		return;
 	}
 
+	hid_destroy_device(steam->client_hdev);
 	cancel_delayed_work_sync(&steam->mode_switch);
 	cancel_work_sync(&steam->work_connect);
 	cancel_work_sync(&steam->rumble_work);
 	cancel_work_sync(&steam->unregister_work);
-	hid_destroy_device(steam->client_hdev);
 	steam->client_hdev = NULL;
 	steam->client_opened = 0;
 	if (steam->quirks & STEAM_QUIRK_WIRELESS) {




[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