Re: [PATCH v4 1/9] NFSD: Prevent lock owner use-after-free during client teardown

Thorsten Leemhuis <[email protected]> Wed, 22 Jul 2026 16:33:24 +0200
Newsgroups dev.linux.lists.regressions,org.kernel.vger.linux-nfs
Message-ID <[email protected]>
On 7/22/26 15:48, Chuck Lever wrote:
> On Wed, Jul 22, 2026, at 6:24 AM, Thorsten Leemhuis wrote:
>> On 7/9/26 19:40, Chuck Lever wrote:
>>> __destroy_client() releases a client's open owners, but a lock owner
>>> whose only reference is a blocked lock (nbl) stays on
>>> cl_ownerstr_hashtbl.  client_has_state() does not count a bare owner,
>>> so DESTROY_CLIENTID can reach __destroy_client() with such owners
>>> present.
>>>
>>> [...]
>>>
>>> Reported-by: Wolfgang Walter <[email protected]>
>>> Closes: https://lore.kernel.org/linux-nfs/[email protected]/
>>> Fixes: 68ef3bc31664 ("nfsd: remove blocked locks on client teardown")
>>
>> What's the plan to merge this change? From the outside it looks like a
>> fix for a user reported regression from this merge window, as Wolfgang
>> afaics blamed commit 516403d4d85607 ("Revert "NFSD: Defer sub-object
>> cleanup in export put callbacks""), which also made it to various stable
>> trees.
>>
>> So shouldn't this change ideally be on it's way to Linus by now? Ideally
>> with a stable tag to ensure quick backporting? Or is it not a good idea
>> to have this in without the follow-up patches from this series?
>>
>> Or did I get something totally wrong (which is easily possible from my
>> external point)?
> 
> Thorsten, thanks for your attention to this issue.

Thank you for the answer!
> Here is the plan of record:
> 
> This commit is currently in nfsd-testing:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/cel/linux.git/commit/?h=nfsd-testing&id=3055ac7c996369876342aa22a33bcc68cd4abca1

Ahh, I see, the change gained a stable tag somewhere along the way, great!

> It will matriculate to nfsd-next in a week or so and then be
> sent to Linus in the initial nfsd-7.3 pull request.

Hmmm. Just reread your reply to Wolfgang's report where you explain
things in more detail:
https://lore.kernel.org/stable/[email protected]/

I now understand this better and it still feels to me like a situation
where Linus would want the fix to be included in mainline quickly[1] --
among others to not have another release with the bug[2] and because
it's something a user reported[3]. Yes, the root of the problem might be
in an older commit the Fixes: tag quoted above refers to -- but
apparently something (maybe the change Wolfgang and you suspected) seems
to have exposed the problem or made it happen more often at least in
6.18.y.

Anyway, if Wolfgang is the only one that seems to hit this and is happy
with the state of things I guess it's not worth arguing further about.

Thanks again for taking the time to answer my mail!

Ciao, Thorsten

[1] and Greg likely as well, as situations like that are the reason why
stable kernels released during or shortly after the merge window have
many hundreds of changes that have seen little testing (and we are
currently at the point where it could get some testing before hitting a
new release)

[2]
https://lore.kernel.org/all/CAHk-=wis_qQy4oDNynNKi5b7Qhosmxtoj1jxo5wmB6SRUwQUBQ@mail.gmail.com/

[3]
https://www.kernel.org/doc/html/latest/process/handling-regressions.html#on-how-quickly-regressions-should-be-fixed