Message ID | 20221031154921.500620-1-jlayton@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] nfsd: fix net-namespace logic in __nfsd_file_cache_purge | expand |
> On Oct 31, 2022, at 11:49 AM, Jeff Layton <jlayton@kernel.org> wrote: > > If the namespace doesn't match the one in "net", then we'll continue, > but that doesn't cause another rhashtable_walk_next call, so it will > loop infinitely. > > Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") > Reported-by: Petr Vorel <pvorel@suse.cz> > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > fs/nfsd/filecache.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) Thank you! Applied and pushed to for-rc. I'll send a PR in a few days. > The v1 patch applies cleanly to v6.0, but not to Chuck's for-next > branch. This one should be suitable there. > diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > index 98c6b5f51bc8..4a8aa7cd8354 100644 > --- a/fs/nfsd/filecache.c > +++ b/fs/nfsd/filecache.c > @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) > > nf = rhashtable_walk_next(&iter); > while (!IS_ERR_OR_NULL(nf)) { > - if (net && nf->nf_net != net) > - continue; > - nfsd_file_unhash_and_dispose(nf, &dispose); > + if (!net || nf->nf_net == net) > + nfsd_file_unhash_and_dispose(nf, &dispose); > nf = rhashtable_walk_next(&iter); > } > > -- > 2.38.1 > -- Chuck Lever
> > On Oct 31, 2022, at 11:49 AM, Jeff Layton <jlayton@kernel.org> wrote: > > If the namespace doesn't match the one in "net", then we'll continue, > > but that doesn't cause another rhashtable_walk_next call, so it will > > loop infinitely. > > Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") > > Reported-by: Petr Vorel <pvorel@suse.cz> > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > > --- > > fs/nfsd/filecache.c | 5 ++--- > > 1 file changed, 2 insertions(+), 3 deletions(-) > Thank you! Applied and pushed to for-rc. I'll send a PR in a few days. Thanks for a quick action! What a shame you didn't put link to the report, which contains reproducer. https://lore.kernel.org/ltp/Y1%2FP8gDAcWC%2F+VR3@pevik/ Kind regards, Petr > > The v1 patch applies cleanly to v6.0, but not to Chuck's for-next > > branch. This one should be suitable there. > > diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > > index 98c6b5f51bc8..4a8aa7cd8354 100644 > > --- a/fs/nfsd/filecache.c > > +++ b/fs/nfsd/filecache.c > > @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) > > nf = rhashtable_walk_next(&iter); > > while (!IS_ERR_OR_NULL(nf)) { > > - if (net && nf->nf_net != net) > > - continue; > > - nfsd_file_unhash_and_dispose(nf, &dispose); > > + if (!net || nf->nf_net == net) > > + nfsd_file_unhash_and_dispose(nf, &dispose); > > nf = rhashtable_walk_next(&iter); > > } > > -- > > 2.38.1
On Mon, 2022-10-31 at 19:45 +0100, Petr Vorel wrote: > > > > On Oct 31, 2022, at 11:49 AM, Jeff Layton <jlayton@kernel.org> wrote: > > > > If the namespace doesn't match the one in "net", then we'll continue, > > > but that doesn't cause another rhashtable_walk_next call, so it will > > > loop infinitely. > > > > Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") > > > Reported-by: Petr Vorel <pvorel@suse.cz> > > > Signed-off-by: Jeff Layton <jlayton@kernel.org> > > > --- > > > fs/nfsd/filecache.c | 5 ++--- > > > 1 file changed, 2 insertions(+), 3 deletions(-) > > > Thank you! Applied and pushed to for-rc. I'll send a PR in a few days. > > Thanks for a quick action! > No problem. > What a shame you didn't put link to the report, which contains reproducer. > https://lore.kernel.org/ltp/Y1%2FP8gDAcWC%2F+VR3@pevik/ > > Kind regards, > Petr > Chuck, could you add that link to the changelog when you merge it? Thanks, Jeff > > > The v1 patch applies cleanly to v6.0, but not to Chuck's for-next > > > branch. This one should be suitable there. > > > diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > > > index 98c6b5f51bc8..4a8aa7cd8354 100644 > > > --- a/fs/nfsd/filecache.c > > > +++ b/fs/nfsd/filecache.c > > > @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) > > > > nf = rhashtable_walk_next(&iter); > > > while (!IS_ERR_OR_NULL(nf)) { > > > - if (net && nf->nf_net != net) > > > - continue; > > > - nfsd_file_unhash_and_dispose(nf, &dispose); > > > + if (!net || nf->nf_net == net) > > > + nfsd_file_unhash_and_dispose(nf, &dispose); > > > nf = rhashtable_walk_next(&iter); > > > } > > > > -- > > > 2.38.1
> On Oct 31, 2022, at 2:46 PM, Jeff Layton <jlayton@kernel.org> wrote: > > On Mon, 2022-10-31 at 19:45 +0100, Petr Vorel wrote: >> >>>> On Oct 31, 2022, at 11:49 AM, Jeff Layton <jlayton@kernel.org> wrote: >> >>>> If the namespace doesn't match the one in "net", then we'll continue, >>>> but that doesn't cause another rhashtable_walk_next call, so it will >>>> loop infinitely. >> >>>> Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") >>>> Reported-by: Petr Vorel <pvorel@suse.cz> >>>> Signed-off-by: Jeff Layton <jlayton@kernel.org> >>>> --- >>>> fs/nfsd/filecache.c | 5 ++--- >>>> 1 file changed, 2 insertions(+), 3 deletions(-) >> >>> Thank you! Applied and pushed to for-rc. I'll send a PR in a few days. >> >> Thanks for a quick action! >> > > No problem. > >> What a shame you didn't put link to the report, which contains reproducer. >> https://lore.kernel.org/ltp/Y1%2FP8gDAcWC%2F+VR3@pevik/ >> >> Kind regards, >> Petr >> > > Chuck, could you add that link to the changelog when you merge it? In progress, I'll push the update in a moment. > > Thanks, > Jeff > >>>> The v1 patch applies cleanly to v6.0, but not to Chuck's for-next >>>> branch. This one should be suitable there. >>>> diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c >>>> index 98c6b5f51bc8..4a8aa7cd8354 100644 >>>> --- a/fs/nfsd/filecache.c >>>> +++ b/fs/nfsd/filecache.c >>>> @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) >> >>>> nf = rhashtable_walk_next(&iter); >>>> while (!IS_ERR_OR_NULL(nf)) { >>>> - if (net && nf->nf_net != net) >>>> - continue; >>>> - nfsd_file_unhash_and_dispose(nf, &dispose); >>>> + if (!net || nf->nf_net == net) >>>> + nfsd_file_unhash_and_dispose(nf, &dispose); >>>> nf = rhashtable_walk_next(&iter); >>>> } >> >>>> -- >>>> 2.38.1 > > -- > Jeff Layton <jlayton@kernel.org> -- Chuck Lever
> > On Oct 31, 2022, at 2:46 PM, Jeff Layton <jlayton@kernel.org> wrote: > > On Mon, 2022-10-31 at 19:45 +0100, Petr Vorel wrote: > >>>> On Oct 31, 2022, at 11:49 AM, Jeff Layton <jlayton@kernel.org> wrote: > >>>> If the namespace doesn't match the one in "net", then we'll continue, > >>>> but that doesn't cause another rhashtable_walk_next call, so it will > >>>> loop infinitely. > >>>> Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") > >>>> Reported-by: Petr Vorel <pvorel@suse.cz> > >>>> Signed-off-by: Jeff Layton <jlayton@kernel.org> > >>>> --- > >>>> fs/nfsd/filecache.c | 5 ++--- > >>>> 1 file changed, 2 insertions(+), 3 deletions(-) > >>> Thank you! Applied and pushed to for-rc. I'll send a PR in a few days. > >> Thanks for a quick action! > > No problem. > >> What a shame you didn't put link to the report, which contains reproducer. > >> https://lore.kernel.org/ltp/Y1%2FP8gDAcWC%2F+VR3@pevik/ > >> Kind regards, > >> Petr > > Chuck, could you add that link to the changelog when you merge it? > In progress, I'll push the update in a moment. Thanks a lot! Kind regards, Petr > > Thanks, > > Jeff > >>>> The v1 patch applies cleanly to v6.0, but not to Chuck's for-next > >>>> branch. This one should be suitable there. > >>>> diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > >>>> index 98c6b5f51bc8..4a8aa7cd8354 100644 > >>>> --- a/fs/nfsd/filecache.c > >>>> +++ b/fs/nfsd/filecache.c > >>>> @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) > >>>> nf = rhashtable_walk_next(&iter); > >>>> while (!IS_ERR_OR_NULL(nf)) { > >>>> - if (net && nf->nf_net != net) > >>>> - continue; > >>>> - nfsd_file_unhash_and_dispose(nf, &dispose); > >>>> + if (!net || nf->nf_net == net) > >>>> + nfsd_file_unhash_and_dispose(nf, &dispose); > >>>> nf = rhashtable_walk_next(&iter); > >>>> } > >>>> -- > >>>> 2.38.1 > > -- > > Jeff Layton <jlayton@kernel.org>
Hi all, > If the namespace doesn't match the one in "net", then we'll continue, > but that doesn't cause another rhashtable_walk_next call, so it will > loop infinitely. > Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") Adding this to regression tracker. https://linux-regtracking.leemhuis.info/tracked-regression/ #regzbot ^introduced ce502f81ba88 #regzbot ignore-activity Kind regards, Petr > Reported-by: Petr Vorel <pvorel@suse.cz> > Signed-off-by: Jeff Layton <jlayton@kernel.org> > --- > fs/nfsd/filecache.c | 5 ++--- > 1 file changed, 2 insertions(+), 3 deletions(-) > The v1 patch applies cleanly to v6.0, but not to Chuck's for-next > branch. This one should be suitable there. > diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c > index 98c6b5f51bc8..4a8aa7cd8354 100644 > --- a/fs/nfsd/filecache.c > +++ b/fs/nfsd/filecache.c > @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) > nf = rhashtable_walk_next(&iter); > while (!IS_ERR_OR_NULL(nf)) { > - if (net && nf->nf_net != net) > - continue; > - nfsd_file_unhash_and_dispose(nf, &dispose); > + if (!net || nf->nf_net == net) > + nfsd_file_unhash_and_dispose(nf, &dispose); > nf = rhashtable_walk_next(&iter); > }
[Note: this mail is primarily send for documentation purposes and/or for regzbot, my Linux kernel regression tracking bot. That's why I removed most or all folks from the list of recipients, but left any that looked like a mailing lists. These mails usually contain '#forregzbot' in the subject, to make them easy to spot and filter out.] On 04.11.22 22:21, Petr Vorel wrote: > Hi all, > >> If the namespace doesn't match the one in "net", then we'll continue, >> but that doesn't cause another rhashtable_walk_next call, so it will >> loop infinitely. > >> Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") > > Adding this to regression tracker. > https://linux-regtracking.leemhuis.info/tracked-regression/ > > #regzbot ^introduced ce502f81ba88 > #regzbot ignore-activity #regzbot fixed-by: d3aefd2b29ff5
diff --git a/fs/nfsd/filecache.c b/fs/nfsd/filecache.c index 98c6b5f51bc8..4a8aa7cd8354 100644 --- a/fs/nfsd/filecache.c +++ b/fs/nfsd/filecache.c @@ -890,9 +890,8 @@ __nfsd_file_cache_purge(struct net *net) nf = rhashtable_walk_next(&iter); while (!IS_ERR_OR_NULL(nf)) { - if (net && nf->nf_net != net) - continue; - nfsd_file_unhash_and_dispose(nf, &dispose); + if (!net || nf->nf_net == net) + nfsd_file_unhash_and_dispose(nf, &dispose); nf = rhashtable_walk_next(&iter); }
If the namespace doesn't match the one in "net", then we'll continue, but that doesn't cause another rhashtable_walk_next call, so it will loop infinitely. Fixes: ce502f81ba88 ("NFSD: Convert the filecache to use rhashtable") Reported-by: Petr Vorel <pvorel@suse.cz> Signed-off-by: Jeff Layton <jlayton@kernel.org> --- fs/nfsd/filecache.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) The v1 patch applies cleanly to v6.0, but not to Chuck's for-next branch. This one should be suitable there.