You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull fourth vfs update from Al Viro: "d_inode() annotations from David Howells (sat in for-next since before the beginning of merge window) + four assorted fixes" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: RCU pathwalk breakage when running into a symlink overmounting something fix I_DIO_WAKEUP definition direct-io: only inc/dec inode->i_dio_count for file systems fs/9p: fix readdir() VFS: assorted d_backing_inode() annotations VFS: fs/inode.c helpers: d_inode() annotations VFS: fs/cachefiles: d_backing_inode() annotations VFS: fs library helpers: d_inode() annotations VFS: assorted weird filesystems: d_inode() annotations VFS: normal filesystems (and lustre): d_inode() annotations VFS: security/: d_inode() annotations VFS: security/: d_backing_inode() annotations VFS: net/: d_inode() annotations VFS: net/unix: d_backing_inode() annotations VFS: kernel/: d_inode() annotations VFS: audit: d_backing_inode() annotations VFS: Fix up some ->d_inode accesses in the chelsio driver VFS: Cachefiles should perform fs modifications on the top layer only VFS: AF_UNIX sockets should call mknod on the top layer only
This commit is contained in:
+23
-23
@@ -593,7 +593,7 @@ static int smack_sb_copy_data(char *orig, char *smackopts)
|
||||
static int smack_sb_kern_mount(struct super_block *sb, int flags, void *data)
|
||||
{
|
||||
struct dentry *root = sb->s_root;
|
||||
struct inode *inode = root->d_inode;
|
||||
struct inode *inode = d_backing_inode(root);
|
||||
struct superblock_smack *sp = sb->s_security;
|
||||
struct inode_smack *isp;
|
||||
struct smack_known *skp;
|
||||
@@ -889,15 +889,15 @@ static int smack_inode_link(struct dentry *old_dentry, struct inode *dir,
|
||||
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_DENTRY);
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, old_dentry);
|
||||
|
||||
isp = smk_of_inode(old_dentry->d_inode);
|
||||
isp = smk_of_inode(d_backing_inode(old_dentry));
|
||||
rc = smk_curacc(isp, MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(old_dentry->d_inode, MAY_WRITE, rc);
|
||||
rc = smk_bu_inode(d_backing_inode(old_dentry), MAY_WRITE, rc);
|
||||
|
||||
if (rc == 0 && d_is_positive(new_dentry)) {
|
||||
isp = smk_of_inode(new_dentry->d_inode);
|
||||
isp = smk_of_inode(d_backing_inode(new_dentry));
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, new_dentry);
|
||||
rc = smk_curacc(isp, MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(new_dentry->d_inode, MAY_WRITE, rc);
|
||||
rc = smk_bu_inode(d_backing_inode(new_dentry), MAY_WRITE, rc);
|
||||
}
|
||||
|
||||
return rc;
|
||||
@@ -913,7 +913,7 @@ static int smack_inode_link(struct dentry *old_dentry, struct inode *dir,
|
||||
*/
|
||||
static int smack_inode_unlink(struct inode *dir, struct dentry *dentry)
|
||||
{
|
||||
struct inode *ip = dentry->d_inode;
|
||||
struct inode *ip = d_backing_inode(dentry);
|
||||
struct smk_audit_info ad;
|
||||
int rc;
|
||||
|
||||
@@ -956,8 +956,8 @@ static int smack_inode_rmdir(struct inode *dir, struct dentry *dentry)
|
||||
/*
|
||||
* You need write access to the thing you're removing
|
||||
*/
|
||||
rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(dentry->d_inode, MAY_WRITE, rc);
|
||||
rc = smk_curacc(smk_of_inode(d_backing_inode(dentry)), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(d_backing_inode(dentry), MAY_WRITE, rc);
|
||||
if (rc == 0) {
|
||||
/*
|
||||
* You also need write access to the containing directory
|
||||
@@ -995,15 +995,15 @@ static int smack_inode_rename(struct inode *old_inode,
|
||||
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_DENTRY);
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, old_dentry);
|
||||
|
||||
isp = smk_of_inode(old_dentry->d_inode);
|
||||
isp = smk_of_inode(d_backing_inode(old_dentry));
|
||||
rc = smk_curacc(isp, MAY_READWRITE, &ad);
|
||||
rc = smk_bu_inode(old_dentry->d_inode, MAY_READWRITE, rc);
|
||||
rc = smk_bu_inode(d_backing_inode(old_dentry), MAY_READWRITE, rc);
|
||||
|
||||
if (rc == 0 && d_is_positive(new_dentry)) {
|
||||
isp = smk_of_inode(new_dentry->d_inode);
|
||||
isp = smk_of_inode(d_backing_inode(new_dentry));
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, new_dentry);
|
||||
rc = smk_curacc(isp, MAY_READWRITE, &ad);
|
||||
rc = smk_bu_inode(new_dentry->d_inode, MAY_READWRITE, rc);
|
||||
rc = smk_bu_inode(d_backing_inode(new_dentry), MAY_READWRITE, rc);
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
@@ -1060,8 +1060,8 @@ static int smack_inode_setattr(struct dentry *dentry, struct iattr *iattr)
|
||||
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_DENTRY);
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
|
||||
|
||||
rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(dentry->d_inode, MAY_WRITE, rc);
|
||||
rc = smk_curacc(smk_of_inode(d_backing_inode(dentry)), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(d_backing_inode(dentry), MAY_WRITE, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -1075,7 +1075,7 @@ static int smack_inode_setattr(struct dentry *dentry, struct iattr *iattr)
|
||||
static int smack_inode_getattr(const struct path *path)
|
||||
{
|
||||
struct smk_audit_info ad;
|
||||
struct inode *inode = path->dentry->d_inode;
|
||||
struct inode *inode = d_backing_inode(path->dentry);
|
||||
int rc;
|
||||
|
||||
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_PATH);
|
||||
@@ -1142,8 +1142,8 @@ static int smack_inode_setxattr(struct dentry *dentry, const char *name,
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
|
||||
|
||||
if (rc == 0) {
|
||||
rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(dentry->d_inode, MAY_WRITE, rc);
|
||||
rc = smk_curacc(smk_of_inode(d_backing_inode(dentry)), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(d_backing_inode(dentry), MAY_WRITE, rc);
|
||||
}
|
||||
|
||||
return rc;
|
||||
@@ -1164,7 +1164,7 @@ static void smack_inode_post_setxattr(struct dentry *dentry, const char *name,
|
||||
const void *value, size_t size, int flags)
|
||||
{
|
||||
struct smack_known *skp;
|
||||
struct inode_smack *isp = dentry->d_inode->i_security;
|
||||
struct inode_smack *isp = d_backing_inode(dentry)->i_security;
|
||||
|
||||
if (strcmp(name, XATTR_NAME_SMACKTRANSMUTE) == 0) {
|
||||
isp->smk_flags |= SMK_INODE_TRANSMUTE;
|
||||
@@ -1209,8 +1209,8 @@ static int smack_inode_getxattr(struct dentry *dentry, const char *name)
|
||||
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_DENTRY);
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
|
||||
|
||||
rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_READ, &ad);
|
||||
rc = smk_bu_inode(dentry->d_inode, MAY_READ, rc);
|
||||
rc = smk_curacc(smk_of_inode(d_backing_inode(dentry)), MAY_READ, &ad);
|
||||
rc = smk_bu_inode(d_backing_inode(dentry), MAY_READ, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@@ -1246,12 +1246,12 @@ static int smack_inode_removexattr(struct dentry *dentry, const char *name)
|
||||
smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_DENTRY);
|
||||
smk_ad_setfield_u_fs_path_dentry(&ad, dentry);
|
||||
|
||||
rc = smk_curacc(smk_of_inode(dentry->d_inode), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(dentry->d_inode, MAY_WRITE, rc);
|
||||
rc = smk_curacc(smk_of_inode(d_backing_inode(dentry)), MAY_WRITE, &ad);
|
||||
rc = smk_bu_inode(d_backing_inode(dentry), MAY_WRITE, rc);
|
||||
if (rc != 0)
|
||||
return rc;
|
||||
|
||||
isp = dentry->d_inode->i_security;
|
||||
isp = d_backing_inode(dentry)->i_security;
|
||||
/*
|
||||
* Don't do anything special for these.
|
||||
* XATTR_NAME_SMACKIPIN
|
||||
|
||||
@@ -2490,7 +2490,7 @@ static int smk_fill_super(struct super_block *sb, void *data, int silent)
|
||||
return rc;
|
||||
}
|
||||
|
||||
root_inode = sb->s_root->d_inode;
|
||||
root_inode = d_inode(sb->s_root);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user