2017-10-30 13:48:04

by Vasily Averin

[permalink] [raw]
Subject: [PATCH] nlm_shutdown_hosts_net() cleanup

nlm_complain_hosts() walk through nlm_server_hosts hlist that should be
protected by nlm_host_mutex.

Signed-off-by: Vasily Averin <[email protected]>
---
fs/lockd/host.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/fs/lockd/host.c b/fs/lockd/host.c
index d716c99..089c1d7 100644
--- a/fs/lockd/host.c
+++ b/fs/lockd/host.c
@@ -617,9 +617,8 @@ nlm_shutdown_hosts_net(struct net *net)

/* Then, perform a garbage collection pass */
nlm_gc_hosts(net);
- mutex_unlock(&nlm_host_mutex);
-
nlm_complain_hosts(net);
+ mutex_unlock(&nlm_host_mutex);
}

/*
--
2.7.4



2017-10-30 14:49:43

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH] nlm_shutdown_hosts_net() cleanup

On Mon, Oct 30, 2017 at 04:47:58PM +0300, Vasily Averin wrote:
> nlm_complain_hosts() walk through nlm_server_hosts hlist that should be
> protected by nlm_host_mutex.

I haven't looked at the NLM locking in ages. Do we know who else might
actually be accessing this list concurrently?

--b.

>
> Signed-off-by: Vasily Averin <[email protected]>
> ---
> fs/lockd/host.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/fs/lockd/host.c b/fs/lockd/host.c
> index d716c99..089c1d7 100644
> --- a/fs/lockd/host.c
> +++ b/fs/lockd/host.c
> @@ -617,9 +617,8 @@ nlm_shutdown_hosts_net(struct net *net)
>
> /* Then, perform a garbage collection pass */
> nlm_gc_hosts(net);
> - mutex_unlock(&nlm_host_mutex);
> -
> nlm_complain_hosts(net);
> + mutex_unlock(&nlm_host_mutex);
> }
>
> /*
> --
> 2.7.4

2017-10-30 14:58:51

by Vasily Averin

[permalink] [raw]
Subject: Re: [PATCH] nlm_shutdown_hosts_net() cleanup

On 2017-10-30 17:49, J. Bruce Fields wrote:
> On Mon, Oct 30, 2017 at 04:47:58PM +0300, Vasily Averin wrote:
>> nlm_complain_hosts() walk through nlm_server_hosts hlist that should be
>> protected by nlm_host_mutex.
>
> I haven't looked at the NLM locking in ages. Do we know who else might
> actually be accessing this list concurrently?

Thank you for the question, I'll investigate it.

>> Signed-off-by: Vasily Averin <[email protected]>
>> ---
>> fs/lockd/host.c | 3 +--
>> 1 file changed, 1 insertion(+), 2 deletions(-)
>>
>> diff --git a/fs/lockd/host.c b/fs/lockd/host.c
>> index d716c99..089c1d7 100644
>> --- a/fs/lockd/host.c
>> +++ b/fs/lockd/host.c
>> @@ -617,9 +617,8 @@ nlm_shutdown_hosts_net(struct net *net)
>>
>> /* Then, perform a garbage collection pass */
>> nlm_gc_hosts(net);
>> - mutex_unlock(&nlm_host_mutex);
>> -
>> nlm_complain_hosts(net);
>> + mutex_unlock(&nlm_host_mutex);
>> }
>>
>> /*
>> --
>> 2.7.4
>

2017-10-30 15:49:02

by Jeff Layton

[permalink] [raw]
Subject: Re: [PATCH] nlm_shutdown_hosts_net() cleanup

On Mon, 2017-10-30 at 10:49 -0400, J. Bruce Fields wrote:
> On Mon, Oct 30, 2017 at 04:47:58PM +0300, Vasily Averin wrote:
> > nlm_complain_hosts() walk through nlm_server_hosts hlist that should be
> > protected by nlm_host_mutex.
>
> I haven't looked at the NLM locking in ages. Do we know who else might
> actually be accessing this list concurrently?
>
> --b.
>

Since this is a per-net-ns shutdown, I suppose you could have concurrent
rpc.nfsd's shutting down different namespaces. Holding the mutex for
longer looks like a reasonable fix.

That said...I don't think lockd was ever properly namespace-ified. YMMV
here.

> >
> > Signed-off-by: Vasily Averin <[email protected]>
> > ---
> > fs/lockd/host.c | 3 +--
> > 1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/fs/lockd/host.c b/fs/lockd/host.c
> > index d716c99..089c1d7 100644
> > --- a/fs/lockd/host.c
> > +++ b/fs/lockd/host.c
> > @@ -617,9 +617,8 @@ nlm_shutdown_hosts_net(struct net *net)
> >
> > /* Then, perform a garbage collection pass */
> > nlm_gc_hosts(net);
> > - mutex_unlock(&nlm_host_mutex);
> > -
> > nlm_complain_hosts(net);
> > + mutex_unlock(&nlm_host_mutex);
> > }
> >
> > /*
> > --
> > 2.7.4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
> the body of a message to [email protected]
> More majordomo info at http://vger.kernel.org/majordomo-info.html

You can add:

Reviewed-by: Jeff Layton <[email protected]>