NFS: Fix memory leaks and corruption in readdir
authorTrond Myklebust <trondmy@gmail.com>
Sun, 2 Feb 2020 22:53:53 +0000 (17:53 -0500)
committerBen Hutchings <ben@decadent.org.uk>
Fri, 22 May 2020 20:19:42 +0000 (21:19 +0100)
commitb2b6bbf8c801fa2f9756b095e10c232418f7cddd
treeca2c57bae7cbc8de86442440b3e43ee3fedeb320
parent1680400380bde60cc95a782eb90490302b6f9e2a
NFS: Fix memory leaks and corruption in readdir

commit 4b310319c6a8ce708f1033d57145e2aa027a883c upstream.

nfs_readdir_xdr_to_array() must not exit without having initialised
the array, so that the page cache deletion routines can safely
call nfs_readdir_clear_array().
Furthermore, we should ensure that if we exit nfs_readdir_filler()
with an error, we free up any page contents to prevent a leak
if we try to fill the page again.

Fixes: 11de3b11e08c ("NFS: Fix a memory leak in nfs_readdir")
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Reviewed-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
fs/nfs/dir.c