nfsd: Fix memory leak in nfsd_getxattr
Fix a memory leak in nfsd_getxattr. nfsd_getxattr should free up memory that it allocated if vfs_getxattr fails. Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com> Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
This commit is contained in:
parent
1cd9cd161c
commit
6c6a426fdc
@ -410,6 +410,7 @@ nfsd_setattr(struct svc_rqst *rqstp, struct svc_fh *fhp, struct iattr *iap,
|
|||||||
static ssize_t nfsd_getxattr(struct dentry *dentry, char *key, void **buf)
|
static ssize_t nfsd_getxattr(struct dentry *dentry, char *key, void **buf)
|
||||||
{
|
{
|
||||||
ssize_t buflen;
|
ssize_t buflen;
|
||||||
|
ssize_t ret;
|
||||||
|
|
||||||
buflen = vfs_getxattr(dentry, key, NULL, 0);
|
buflen = vfs_getxattr(dentry, key, NULL, 0);
|
||||||
if (buflen <= 0)
|
if (buflen <= 0)
|
||||||
@ -419,7 +420,10 @@ static ssize_t nfsd_getxattr(struct dentry *dentry, char *key, void **buf)
|
|||||||
if (!*buf)
|
if (!*buf)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
return vfs_getxattr(dentry, key, *buf, buflen);
|
ret = vfs_getxattr(dentry, key, *buf, buflen);
|
||||||
|
if (ret < 0)
|
||||||
|
kfree(*buf);
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user