v9fs_mount
  v9fs_session_init
    v9fs_cache_session_get_cookie
      v9fs_random_cachetag                     -->alloc cachetag
      v9ses->fscache = fscache_acquire_cookie  -->maybe NULL
  sb = sget                                    -->fail, goto clunk
clunk_fid:
  v9fs_session_close
    if (v9ses->fscache)                        -->NULL
      kfree(v9ses->cachetag)

Thus memleak happens.

Signed-off-by: Zheng Bin <[email protected]>
---
 fs/9p/v9fs.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/fs/9p/v9fs.c b/fs/9p/v9fs.c
index 15a99f9c7253..39def020a074 100644
--- a/fs/9p/v9fs.c
+++ b/fs/9p/v9fs.c
@@ -500,10 +500,9 @@ void v9fs_session_close(struct v9fs_session_info *v9ses)
        }

 #ifdef CONFIG_9P_FSCACHE
-       if (v9ses->fscache) {
+       if (v9ses->fscache)
                v9fs_cache_session_put_cookie(v9ses);
-               kfree(v9ses->cachetag);
-       }
+       kfree(v9ses->cachetag);
 #endif
        kfree(v9ses->uname);
        kfree(v9ses->aname);
--
2.26.0.106.g9fadedd

Reply via email to