spin_lock(&inode->i_lock);
if (*i_acl != ERR_PTR(-ENODATA))
posix_acl_release(*i_acl);
- *i_acl = posix_acl_dup(acl);
+ *i_acl = acl ? posix_acl_dup(acl) : ERR_PTR(-ENODATA);
spin_unlock(&inode->i_lock);
}
} else {
apply_umask:
/* no ACL, apply umask */
- inode->i_mode &= ~current->fs->umask;
+ inode->i_mode &= ~current_umask();
}
return err;