ubifs: Fix memory leak in do_rename
authorMårten Lindahl <marten.lindahl@axis.com>
Thu, 30 Mar 2023 14:40:59 +0000 (16:40 +0200)
committerRichard Weinberger <richard@nod.at>
Fri, 21 Apr 2023 20:38:51 +0000 (22:38 +0200)
commit3a36d20e012903f45714df2731261fdefac900cb
treec28c8378a995b501d5ec729f1d26d890f48e8888
parent1fb815b38bb31d6af9bd0540b8652a0d6fe6cfd3
ubifs: Fix memory leak in do_rename

If renaming a file in an encrypted directory, function
fscrypt_setup_filename allocates memory for a file name. This name is
never used, and before returning to the caller the memory for it is not
freed.

When running kmemleak on it we see that it is registered as a leak. The
report below is triggered by a simple program 'rename' that renames a
file in an encrypted directory:

  unreferenced object 0xffff888101502840 (size 32):
    comm "rename", pid 9404, jiffies 4302582475 (age 435.735s)
    backtrace:
      __kmem_cache_alloc_node
      __kmalloc
      fscrypt_setup_filename
      do_rename
      ubifs_rename
      vfs_rename
      do_renameat2

To fix this we can remove the call to fscrypt_setup_filename as it's not
needed.

Fixes: 278d9a243635f26 ("ubifs: Rename whiteout atomically")
Reported-by: Zhihao Cheng <chengzhihao1@huawei.com>
Signed-off-by: Mårten Lindahl <marten.lindahl@axis.com>
Reviewed-by: Zhihao Cheng <chengzhihao1@huawei.com>
Cc: stable@vger.kernel.org
Signed-off-by: Richard Weinberger <richard@nod.at>
fs/ubifs/dir.c