• Roberto Sassu's avatar
    ocfs2: Switch to security_inode_init_security() · de3004c8
    Roberto Sassu authored
    In preparation for removing security_old_inode_init_security(), switch to
    security_inode_init_security().
    
    Extend the existing ocfs2_initxattrs() to take the
    ocfs2_security_xattr_info structure from fs_info, and populate the
    name/value/len triple with the first xattr provided by LSMs.
    
    As fs_info was not used before, ocfs2_initxattrs() can now handle the case
    of replicating the behavior of security_old_inode_init_security(), i.e.
    just obtaining the xattr, in addition to setting all xattrs provided by
    LSMs.
    
    Supporting multiple xattrs is not currently supported where
    security_old_inode_init_security() was called (mknod, symlink), as it
    requires non-trivial changes that can be done at a later time. Like for
    reiserfs, even if EVM is invoked, it will not provide an xattr (if it is
    not the first to set it, its xattr will be discarded; if it is the first,
    it does not have xattrs to calculate the HMAC on).
    
    Finally, since security_inode_init_security(), unlike
    security_old_inode_init_security(), returns zero instead of -EOPNOTSUPP if
    no xattrs were provided by LSMs or if inodes are private, additionally
    check in ocfs2_init_security_get() if the xattr name is set.
    
    If not, act as if security_old_inode_init_security() returned -EOPNOTSUPP,
    and set si->enable to zero to notify to the functions following
    ocfs2_init_security_get() that no xattrs are available.
    Signed-off-by: default avatarRoberto Sassu <roberto.sassu@huawei.com>
    Reviewed-by: default avatarCasey Schaufler <casey@schaufler-ca.com>
    Acked-by: default avatarJoseph Qi <joseph.qi@linux.alibaba.com>
    Reviewed-by: default avatarMimi Zohar <zohar@linux.ibm.com>
    Signed-off-by: default avatarPaul Moore <paul@paul-moore.com>
    de3004c8
xattr.c 193 KB