On Tue, May 04, 2021 at 01:43:43PM +0100, Khaled ROMDHANI wrote: > The -EIO error return path is leaking memory allocated > to page. Fix this by invoking the free_dentry_path before > the return. > > Addresses-Coverity: ("Resource leak") > Signed-off-by: Khaled ROMDHANI <khaledromdhani216@xxxxxxxxx> Add a Fixes tag. Fixes: 583248493f78 ("cifs: add shutdown support") > --- > fs/cifs/link.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/fs/cifs/link.c b/fs/cifs/link.c > index 1cbe7ec73728..1485c6095ba1 100644 > --- a/fs/cifs/link.c > +++ b/fs/cifs/link.c > @@ -686,8 +686,10 @@ cifs_symlink(struct user_namespace *mnt_userns, struct inode *inode, > void *page = alloc_dentry_path(); > struct inode *newinode = NULL; > > - if (unlikely(cifs_forced_shutdown(cifs_sb))) > + if (unlikely(cifs_forced_shutdown(cifs_sb))) { > + free_dentry_path(page); > return -EIO; > + } Better to move the allocation here. Avoid calling functions which can fail in the declaration block. Better to test for NULL directly instead of hiding the test inside the build_path_from_dentry() function. page = alloc_dentry_path(); if (!page) return -ENOMEM; The error handling in this function is slightly unweildy... regards, dan carpenter