]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
HID: google: hammer: stop hardware on devres action failure
authorMyeonghun Pak <mhun512@gmail.com>
Fri, 24 Apr 2026 12:50:41 +0000 (21:50 +0900)
committerJiri Kosina <jkosina@suse.com>
Tue, 12 May 2026 16:01:05 +0000 (18:01 +0200)
hammer_probe() starts the HID hardware before registering the devres
action that stops it. If devm_add_action() fails, probe returns an
error with the hardware still started because the cleanup action was
never registered and the driver's remove callback is not called after a
failed probe.

Use devm_add_action_or_reset() so the stop action runs immediately on
registration failure while preserving the existing devres-managed cleanup
path for later probe failures and remove.

Signed-off-by: Myeonghun Pak <mhun512@gmail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.com>
drivers/hid/hid-google-hammer.c

index 1af477e58480b79cdbe9c2b4da5b131f515affe4..c99c3c0d442e1b21fa742ddd8616997da03dbe30 100644 (file)
@@ -496,7 +496,7 @@ static int hammer_probe(struct hid_device *hdev,
        if (error)
                return error;
 
-       error = devm_add_action(&hdev->dev, hammer_stop, hdev);
+       error = devm_add_action_or_reset(&hdev->dev, hammer_stop, hdev);
        if (error)
                return error;