Thread (1 message) 1 message, 1 author, 2015-09-21

Re: [RFC v7 14/41] richacl: Create-time inheritance

From: Andreas Gruenbacher <hidden>
Date: 2015-09-21 20:37:25
Also in: linux-cifs, linux-fsdevel, linux-nfs, lkml

2015-09-18 19:58 GMT+02:00 J. Bruce Fields [off-list ref]:
On Sat, Sep 05, 2015 at 12:27:09PM +0200, Andreas Gruenbacher wrote:
quoted
+                     if (dir_ace->e_flags & RICHACE_NO_PROPAGATE_INHERIT_ACE)
+                             ace->e_flags &= ~RICHACE_INHERITANCE_FLAGS;
+                     else if ((dir_ace->e_flags & RICHACE_FILE_INHERIT_ACE) &&
+                              !(dir_ace->e_flags & RICHACE_DIRECTORY_INHERIT_ACE))
The FILE_INHERIT_ACE check there is redundant since we already know
dir_ace is inheritable.

(So, OK, it isn't wrong to check it again but let's not make this
condition any more complicated than necessary.)
Indeed, we can turn it into:

        if (dir_ace->e_flags & RICHACE_NO_PROPAGATE_INHERIT_ACE)
                ace->e_flags &= ~RICHACE_INHERITANCE_FLAGS;
        else if (!(dir_ace->e_flags & RICHACE_DIRECTORY_INHERIT_ACE))
                ace->e_flags |= RICHACE_INHERIT_ONLY_ACE;
quoted
+static struct richacl *
+richacl_inherit_inode(const struct richacl *dir_acl, struct inode *inode)
+{
+     struct richacl *acl;
+     mode_t mask;
+
+     acl = richacl_inherit(dir_acl, S_ISDIR(inode->i_mode));
+     if (acl) {
+             mask = inode->i_mode;
+             if (richacl_equiv_mode(acl, &mask) == 0) {
+                     richacl_put(acl);
+                     acl = NULL;
Why is it correct to ignore entirely the inherited acl in this case?

Oh, I see, I'm forgetting that richacl_equiv_mode is setting the mask,
which will get applied at the end of this function.  In my defense,
maybe it's easy to overlook a side effect in an if condition.... But I
don't have a better idea.  OK.
Yes. I'll leave that as it is.
So, nits aside:

        Reviewed-by: J. Bruce Fields [off-list ref]
Thanks,
Andreas
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help