• Dan Carpenter's avatar
    fs/posix_acl.c: make posix_acl_create() safer and cleaner · c0c3a718
    Dan Carpenter authored
    If posix_acl_create() returns an error code then "*acl" and "*default_acl"
    can be uninitialized or point to freed memory.  This is a dangerous thing
    to do.  For example, it causes a problem in ocfs2_reflink():
    
    	fs/ocfs2/refcounttree.c:4327 ocfs2_reflink()
    	error: potentially using uninitialized 'default_acl'.
    
    I've re-written this so we set the pointers to NULL at the start.  I've
    added a temporary "clone" variable to hold the value of "*acl" until end.
    Setting them to NULL means means we don't need the "no_acl" label.  We may
    as well remove the "apply_umask" stuff forward and remove that label as
    well.
    Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
    Cc: Alexander Viro <viro@zeniv.linux.org.uk>
    Cc: Joel Becker <jlbec@evilplan.org>
    Cc: Mark Fasheh <mfasheh@suse.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    c0c3a718
posix_acl.c 19.9 KB