Re: [GIT PULL] keys: Miscellaneous fixes/changes

From: Jens Axboe
Date: Tue Mar 21 2023 - 15:17:03 EST


On 3/21/23 12:48?PM, Linus Torvalds wrote:
> On Tue, Mar 21, 2023 at 9:43?AM David Howells <dhowells@xxxxxxxxxx> wrote:
>>
>> (1) Fix request_key() so that it doesn't cache a looked up key on the
>> current thread if that thread is a kernel thread. The cache is
>> cleared during notify_resume - but that doesn't happen in kernel
>> threads. This is causing cifs DNS keys to be un-invalidateable.
>
> I've pulled this, but I'd like people to look a bit more at this.
>
> The issue with TIF_NOTIFY_RESUME is that it is only done on return to
> user space.
>
> And these days, PF_KTHREAD isn't the only case that never returns to
> user space. PF_IO_WORKER has the exact same behaviour.
>
> Now, to counteract this, as of this merge window (and marked for
> stable) IO threads do a fake "return to user mode" handling in
> io_run_task_work(), and so I think we're all good, but I'd like people
> to at least think about this.

I haven't seen the patch yet as it hasn't been pushed, but can imagine
what it looks like. It may make sense to add some debug check for
PF_KTHREAD having TIF_NOTIFY_RESUME set, or task_work pending for that
matter, as that is generally not workable without doing something to
handle it explicitly.

For PF_IO_WORKER, with the commit you mentioned, those threads should
deal with TIF_NOTIFY_RESUME just fine. Until something else gets added
that is also run from exit_to_user_mode...

--
Jens Axboe