From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Jeffin Philip <jeffinphilip14@gmail.com>
Cc: linux-input@vger.kernel.org, linux-kernel@vger.kernel.org,
syzbot+1e2ef9bcb29af666b2e6@syzkaller.appspotmail.com
Subject: Re: [PATCH v3] Input: atkbd - fix uaf in atkbd_set_repeat_rate
Date: Sat, 29 Aug 2026 03:33:21 -0700 [thread overview]
Message-ID: <apK03L7Li2TkOMOu@google.com> (raw)
In-Reply-To: <20260828162211.149899-1-jeffinphilip14@gmail.com>
Hi Jeffin,
On Fri, Aug 28, 2026 at 09:52:11PM +0530, Jeffin Philip wrote:
> atkbd_disable() marks atkbd as disabled to prevent any work
> event to be executed, however this can race with atkbd_event_work().
> If a pending work passes the atkbd->enabled check and atkbd_disable()
> runs after in disconnect, it could dereference dev which is freed in
> disconnect following atkbd being marked disabled. Fix this by adding
> disable_delayed_work_sync() which drops all work events preventing
> any rescheduling after atkbd is marked disabled.
>
> Reported-by: syzbot+1e2ef9bcb29af666b2e6@syzkaller.appspotmail.com
> Closes: https://syzkaller.appspot.com/bug?extid=1e2ef9bcb29af666b2e6
> Fixes: 0ef7a26af127 ("Input: atkbd - fix canceling event_work in disconnect")
> Signed-off-by: Jeffin Philip <jeffinphilip14@gmail.com>
> ---
> Changelog:
> - Changes in v3:
> Rewrote the patch to include disable_delayed_work_sync() as per
> Dmitry's suggestion.
>
> - Changes in v2:
> Added a check for atkbd->enabled so userspace cannot queue events after
> atkbd_disable.
> ---
> drivers/input/keyboard/atkbd.c | 11 ++++-------
> 1 file changed, 4 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/input/keyboard/atkbd.c b/drivers/input/keyboard/atkbd.c
> index 5736f4bc5a50..a92a04c005aa 100644
> --- a/drivers/input/keyboard/atkbd.c
> +++ b/drivers/input/keyboard/atkbd.c
> @@ -963,15 +963,12 @@ static void atkbd_disconnect(struct serio *serio)
>
> atkbd_disable(atkbd);
>
> - input_unregister_device(atkbd->dev);
> -
> /*
> - * Make sure we don't have a command in flight.
> - * Note that since atkbd->enabled is false event work will keep
> - * rescheduling itself until it gets canceled and will not try
> - * accessing freed input device or serio port.
> + * Prevent work from being rescheduled after atkbd is marked disabled
> */
> - cancel_delayed_work_sync(&atkbd->event_work);
> + disable_delayed_work_sync(&atkbd->event_work);
> +
> + input_unregister_device(atkbd->dev);
There is no need to move the call to input_unregister_device(). When
atkbd->disabled is true the work handler will not attempt to access
input device or serio structures. The only change that is needed is
replacing cancel_delayed_work_sync with disable_delayed_work_sync.
Thanks.
--
Dmitry
prev parent reply other threads:[~2026-08-29 10:33 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-28 16:22 [PATCH v3] Input: atkbd - fix uaf in atkbd_set_repeat_rate Jeffin Philip
2026-08-29 10:33 ` Dmitry Torokhov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=apK03L7Li2TkOMOu@google.com \
--to=dmitry.torokhov@gmail.com \
--cc=jeffinphilip14@gmail.com \
--cc=linux-input@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=syzbot+1e2ef9bcb29af666b2e6@syzkaller.appspotmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.