lkml.org 
[lkml]   [2015]   [Sep]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [RFC v7 14/41] richacl: Create-time inheritance
From
2015-09-18 19:58 GMT+02:00 J. Bruce Fields <bfields@fieldses.org>:
> On Sat, Sep 05, 2015 at 12:27:09PM +0200, Andreas Gruenbacher wrote:
>> + 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;

>> +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 <bfields@redhat.com>

Thanks,
Andreas


\
 
 \ /
  Last update: 2015-09-21 23:01    [W:0.290 / U:0.312 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site