Commit 53284877 authored by J. R. Okajima's avatar J. R. Okajima
Browse files

Merge branch 'aufs5.5/30stdalone' into aufs5.5/39public

parents 70f3cb53 ac9b8c99
......@@ -38,7 +38,7 @@ struct au_nhash {
struct au_vdir_destr {
unsigned char len;
unsigned char name[0];
unsigned char name[];
} __packed;
struct au_vdir_dehstr {
......
......@@ -584,7 +584,7 @@ struct au_drinfo_rev_elm {
struct au_drinfo_rev {
unsigned char already;
aufs_bindex_t nelm;
struct au_drinfo_rev_elm elm[0];
struct au_drinfo_rev_elm elm[];
};
/* todo: isn't it too large? */
......
......@@ -1180,15 +1180,14 @@ static void au_refresh_iattr(struct inode *inode, struct kstat *st,
* returns zero or negative (an error).
* @dentry will be read-locked in success.
*/
int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path,
int locked)
int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force,
struct path *h_path, int locked)
{
int err;
unsigned int mnt_flags, sigen;
unsigned char udba_none;
aufs_bindex_t bindex;
struct super_block *sb, *h_sb;
struct inode *inode;
h_path->mnt = NULL;
h_path->dentry = NULL;
......@@ -1229,7 +1228,11 @@ int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path,
di_read_lock_child(dentry, AuLock_IR);
body:
inode = d_inode(dentry);
if (!inode) {
inode = d_inode(dentry);
if (unlikely(!inode))
goto out;
}
bindex = au_ibtop(inode);
h_path->mnt = au_sbr_mnt(sb, bindex);
h_sb = h_path->mnt->mnt_sb;
......@@ -1269,7 +1272,8 @@ static int aufs_getattr(const struct path *path, struct kstat *st,
err = si_read_lock(sb, AuLock_FLUSH | AuLock_NOPLM);
if (unlikely(err))
goto out;
err = au_h_path_getattr(dentry, /*force*/0, &h_path, /*locked*/0);
err = au_h_path_getattr(dentry, /*inode*/NULL, /*force*/0, &h_path,
/*locked*/0);
if (unlikely(err))
goto out_si;
if (unlikely(!h_path.dentry))
......
......@@ -207,8 +207,8 @@ struct au_icpup_args {
int au_pin_and_icpup(struct dentry *dentry, struct iattr *ia,
struct au_icpup_args *a);
int au_h_path_getattr(struct dentry *dentry, int force, struct path *h_path,
int locked);
int au_h_path_getattr(struct dentry *dentry, struct inode *inode, int force,
struct path *h_path, int locked);
/* i_op_add.c */
int au_may_add(struct dentry *dentry, aufs_bindex_t bindex,
......
......@@ -194,7 +194,7 @@ out:
static int au_smack_reentering(struct super_block *sb)
{
#if IS_ENABLED(CONFIG_SECURITY_SMACK)
#if IS_ENABLED(CONFIG_SECURITY_SMACK) || IS_ENABLED(CONFIG_SECURITY_SELINUX)
/*
* as a part of lookup, smack_d_instantiate() is called, and it calls
* i_op->getxattr(). ouch.
......@@ -225,7 +225,8 @@ struct au_lgxattr {
} u;
};
static ssize_t au_lgxattr(struct dentry *dentry, struct au_lgxattr *arg)
static ssize_t au_lgxattr(struct dentry *dentry, struct inode *inode,
struct au_lgxattr *arg)
{
ssize_t err;
int reenter;
......@@ -239,7 +240,7 @@ static ssize_t au_lgxattr(struct dentry *dentry, struct au_lgxattr *arg)
if (unlikely(err))
goto out;
}
err = au_h_path_getattr(dentry, /*force*/1, &h_path, reenter);
err = au_h_path_getattr(dentry, inode, /*force*/1, &h_path, reenter);
if (unlikely(err))
goto out_si;
if (unlikely(!h_path.dentry))
......@@ -281,11 +282,10 @@ ssize_t aufs_listxattr(struct dentry *dentry, char *list, size_t size)
},
};
return au_lgxattr(dentry, &arg);
return au_lgxattr(dentry, /*inode*/NULL, &arg);
}
static ssize_t au_getxattr(struct dentry *dentry,
struct inode *inode __maybe_unused,
static ssize_t au_getxattr(struct dentry *dentry, struct inode *inode,
const char *name, void *value, size_t size)
{
struct au_lgxattr arg = {
......@@ -297,7 +297,7 @@ static ssize_t au_getxattr(struct dentry *dentry,
},
};
return au_lgxattr(dentry, &arg);
return au_lgxattr(dentry, inode, &arg);
}
static int au_setxattr(struct dentry *dentry, struct inode *inode,
......
......@@ -287,7 +287,7 @@ struct au_rdu_ent {
uint8_t type;
uint8_t nlen;
uint8_t wh;
char name[0];
char name[];
} __aligned(8);
static inline int au_rdu_len(int nlen)
......@@ -338,7 +338,7 @@ struct au_drinfo {
uint8_t oldnamelen;
uint64_t _padding;
};
uint8_t oldname[0];
uint8_t oldname[];
} __aligned(8);
struct au_drinfo_fdata {
......@@ -432,7 +432,7 @@ union aufs_brinfo {
struct {
int16_t id;
int perm;
char path[0];
char path[];
};
} __aligned(8);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment