diff options
author | David Howells <dhowells@redhat.com> | 2019-05-12 09:05:10 +0200 |
---|---|---|
committer | David Howells <dhowells@redhat.com> | 2019-05-15 18:35:53 +0200 |
commit | cc1dd5c85cb70ebe09ccf1cc34f29af65442a10f (patch) | |
tree | ed2537da920f3e01d06d8fd340e0b214c5a9285a /fs/afs/xattr.c | |
parent | afs: Fix key leak in afs_release() and afs_evict_inode() (diff) | |
download | linux-cc1dd5c85cb70ebe09ccf1cc34f29af65442a10f.tar.xz linux-cc1dd5c85cb70ebe09ccf1cc34f29af65442a10f.zip |
afs: Fix incorrect error handling in afs_xattr_get_acl()
Fix incorrect error handling in afs_xattr_get_acl() where there appears to
be a redundant assignment before return, but in fact the return should be a
goto to the error handling at the end of the function.
Fixes: 260f082bae6d ("afs: Get an AFS3 ACL as an xattr")
Addresses-Coverity: ("Unused Value")
Reported-by: Colin Ian King <colin.king@canonical.com>
Signed-off-by: David Howells <dhowells@redhat.com>
cc: Joe Perches <joe@perches.com>
Diffstat (limited to 'fs/afs/xattr.c')
-rw-r--r-- | fs/afs/xattr.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/afs/xattr.c b/fs/afs/xattr.c index c81f85003fc7..b6c44e75b361 100644 --- a/fs/afs/xattr.c +++ b/fs/afs/xattr.c @@ -71,11 +71,10 @@ static int afs_xattr_get_acl(const struct xattr_handler *handler, if (ret == 0) { ret = acl->size; if (size > 0) { - ret = -ERANGE; - if (acl->size > size) - return -ERANGE; - memcpy(buffer, acl->data, acl->size); - ret = acl->size; + if (acl->size <= size) + memcpy(buffer, acl->data, acl->size); + else + ret = -ERANGE; } kfree(acl); } |