projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
612dafa
)
9p: fix a potential acl leak
author
Cong Wang
<
[email protected]
>
Wed, 22 Feb 2017 23:40:53 +0000
(15:40 -0800)
committer
Linus Torvalds
<
[email protected]
>
Thu, 23 Feb 2017 00:41:27 +0000
(16:41 -0800)
posix_acl_update_mode() could possibly clear 'acl', if so we leak the
memory pointed by 'acl'. Save this pointer before calling
posix_acl_update_mode() and release the memory if 'acl' really gets
cleared.
Link:
http://lkml.kernel.org/r/
[email protected]
Signed-off-by: Cong Wang <
[email protected]
>
Reported-by: Mark Salyzyn <
[email protected]
>
Reviewed-by: Jan Kara <
[email protected]
>
Reviewed-by: Greg Kurz <
[email protected]
>
Cc: Eric Van Hensbergen <
[email protected]
>
Cc: Ron Minnich <
[email protected]
>
Cc: Latchesar Ionkov <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
fs/9p/acl.c
patch
|
blob
|
history
diff --git
a/fs/9p/acl.c
b/fs/9p/acl.c
index b3c2cc79c20d255f5d3cdf59e407ad65c67c7089..082d227fa56b378772883f3a4254e7fd05c436d5 100644
(file)
--- a/
fs/9p/acl.c
+++ b/
fs/9p/acl.c
@@
-277,6
+277,7
@@
static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
case ACL_TYPE_ACCESS:
if (acl) {
struct iattr iattr;
+ struct posix_acl *old_acl = acl;
retval = posix_acl_update_mode(inode, &iattr.ia_mode, &acl);
if (retval)
@@
-287,6
+288,7
@@
static int v9fs_xattr_set_acl(const struct xattr_handler *handler,
* by the mode bits. So don't
* update ACL.
*/
+ posix_acl_release(old_acl);
value = NULL;
size = 0;
}