NFS: Don't leak in nfs_proc_symlink()
Hi, In fs/nfs/proc.c::nfs_proc_symlink() we will leak memory if either nfs_alloc_fhandle() or nfs_alloc_fattr() returns NULL but the other one doesn't. This patch ensures memory allocated by one when the other fails is always released (this is safe since nfs_free_fattr() and nfs_free_fhandle() both call kfree which deals gracefully with NULL pointers). Signed-off-by: Jesper Juhl <jj@chaosbits.net> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
Родитель
1174dd1f89
Коммит
878215feb8
|
@ -458,7 +458,7 @@ nfs_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page,
|
|||
fattr = nfs_alloc_fattr();
|
||||
status = -ENOMEM;
|
||||
if (fh == NULL || fattr == NULL)
|
||||
goto out;
|
||||
goto out_free;
|
||||
|
||||
status = rpc_call_sync(NFS_CLIENT(dir), &msg, 0);
|
||||
nfs_mark_for_revalidate(dir);
|
||||
|
@ -471,6 +471,7 @@ nfs_proc_symlink(struct inode *dir, struct dentry *dentry, struct page *page,
|
|||
if (status == 0)
|
||||
status = nfs_instantiate(dentry, fh, fattr);
|
||||
|
||||
out_free:
|
||||
nfs_free_fattr(fattr);
|
||||
nfs_free_fhandle(fh);
|
||||
out:
|
||||
|
|
Загрузка…
Ссылка в новой задаче