[Devel] Re: [PATCH] SUNRPC: skip dead but not buried clients on PipeFS events

Stanislav Kinsbursky skinsbursky at parallels.com
Thu Apr 19 04:36:57 PDT 2012


Sorry, but ignore this patch too.
It can't be that simple because of these cl_count tricks in rpc_release_client...

19.04.2012 14:57, Stanislav Kinsbursky пишет:
> These clients can't be safely dereferenced if their counter in 0.
>
> Signee-off-by: Stanislav Kinsbursky<skinsbursky at parallels.com>
>
> Signed-off-by: Stanislav Kinsbursky<skinsbursky at parallels.com>
>
> ---
>   net/sunrpc/clnt.c |    3 ++-
>   1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/net/sunrpc/clnt.c b/net/sunrpc/clnt.c
> index 6797246..591994d 100644
> --- a/net/sunrpc/clnt.c
> +++ b/net/sunrpc/clnt.c
> @@ -218,7 +218,8 @@ static struct rpc_clnt *rpc_get_client_for_event(struct net *net, int event)
>   		if (((event == RPC_PIPEFS_MOUNT)&&  clnt->cl_dentry) ||
>   		    ((event == RPC_PIPEFS_UMOUNT)&&  !clnt->cl_dentry))
>   			continue;
> -		atomic_inc(&clnt->cl_count);
> +		if (atomic_inc_return(&clnt->cl_count) == 1)
> +			continue;
>   		spin_unlock(&sn->rpc_client_lock);
>   		return clnt;
>   	}
>


-- 
Best regards,
Stanislav Kinsbursky




More information about the Devel mailing list