lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.17 557/772] nfsd: destroy percpu stats counters after reply cache shutdown
    Date
    From: Julian Schroeder <jumaco@amazon.com>

    [ Upstream commit fd5e363eac77ef81542db77ddad0559fa0f9204e ]

    Upon nfsd shutdown any pending DRC cache is freed. DRC cache use is
    tracked via a percpu counter. In the current code the percpu counter
    is destroyed before. If any pending cache is still present,
    percpu_counter_add is called with a percpu counter==NULL. This causes
    a kernel crash.
    The solution is to destroy the percpu counter after the cache is freed.

    Fixes: e567b98ce9a4b (“nfsd: protect concurrent access to nfsd stats counters”)
    Signed-off-by: Julian Schroeder <jumaco@amazon.com>
    Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    fs/nfsd/nfscache.c | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
    index a4a69ab6ab28..a83890950290 100644
    --- a/fs/nfsd/nfscache.c
    +++ b/fs/nfsd/nfscache.c
    @@ -212,7 +212,6 @@ void nfsd_reply_cache_shutdown(struct nfsd_net *nn)
    struct svc_cacherep *rp;
    unsigned int i;

    - nfsd_reply_cache_stats_destroy(nn);
    unregister_shrinker(&nn->nfsd_reply_cache_shrinker);

    for (i = 0; i < nn->drc_hashsize; i++) {
    @@ -223,6 +222,7 @@ void nfsd_reply_cache_shutdown(struct nfsd_net *nn)
    rp, nn);
    }
    }
    + nfsd_reply_cache_stats_destroy(nn);

    kvfree(nn->drc_hashtbl);
    nn->drc_hashtbl = NULL;
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-06-07 23:34    [W:6.827 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site