mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
misc cleanups (the part that hadn't been picked by individual fs trees)
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk> -----BEGIN PGP SIGNATURE----- iHUEABYIAB0WIQQqUNBr3gm4hGXdBJlZ7Krx/gZQ6wUCZZ/BCAAKCRBZ7Krx/gZQ 68qqAQD6LtfYLDJGdJM+lNpyiG4BA7coYpPlJtmH7mzL+MbFPgEAnM7XsK6zyvza 3+rEggLM0UFWjg9Ln7Nlq035TeYtFwo= =w1mD -----END PGP SIGNATURE----- Merge tag 'pull-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs Pull misc filesystem updates from Al Viro: "Misc cleanups (the part that hadn't been picked by individual fs trees)" * tag 'pull-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: apparmorfs: don't duplicate kfree_link() orangefs: saner arguments passing in readdir guts ocfs2_find_match(): there's no such thing as NULL or negative ->d_parent reiserfs_add_entry(): get rid of pointless namelen checks __ocfs2_add_entry(), ocfs2_prepare_dir_for_insert(): namelen checks ext4_add_entry(): ->d_name.len is never 0 befs: d_obtain_alias(ERR_PTR(...)) will do the right thing affs: d_obtain_alias(ERR_PTR(...)) will do the right thing /proc/sys: use d_splice_alias() calling conventions to simplify failure exits hostfs: use d_splice_alias() calling conventions to simplify failure exits udf_fiiter_add_entry(): check for zero ->d_name.len is bogus... udf: d_obtain_alias(ERR_PTR(...)) will do the right thing... udf: d_splice_alias() will do the right thing on ERR_PTR() inode nfsd: kill stale comment about simple_fill_super() requirements bfs_add_entry(): get rid of pointless ->d_name.len checks nilfs2: d_obtain_alias(ERR_PTR(...)) will do the right thing... zonefs: d_splice_alias() will do the right thing on ERR_PTR() inode
This commit is contained in:
commit
488926926a
@ -532,9 +532,6 @@ static struct dentry *affs_get_parent(struct dentry *child)
|
||||
parent = affs_iget(child->d_sb,
|
||||
be32_to_cpu(AFFS_TAIL(child->d_sb, bh)->parent));
|
||||
brelse(bh);
|
||||
if (IS_ERR(parent))
|
||||
return ERR_CAST(parent);
|
||||
|
||||
return d_obtain_alias(parent);
|
||||
}
|
||||
|
||||
|
@ -671,9 +671,6 @@ static struct dentry *befs_get_parent(struct dentry *child)
|
||||
|
||||
parent = befs_iget(child->d_sb,
|
||||
(unsigned long)befs_ino->i_parent.start);
|
||||
if (IS_ERR(parent))
|
||||
return ERR_CAST(parent);
|
||||
|
||||
return d_obtain_alias(parent);
|
||||
}
|
||||
|
||||
|
@ -275,11 +275,6 @@ static int bfs_add_entry(struct inode *dir, const struct qstr *child, int ino)
|
||||
|
||||
dprintf("name=%s, namelen=%d\n", name, namelen);
|
||||
|
||||
if (!namelen)
|
||||
return -ENOENT;
|
||||
if (namelen > BFS_NAMELEN)
|
||||
return -ENAMETOOLONG;
|
||||
|
||||
sblock = BFS_I(dir)->i_sblock;
|
||||
eblock = BFS_I(dir)->i_eblock;
|
||||
for (block = sblock; block <= eblock; block++) {
|
||||
|
@ -2388,8 +2388,6 @@ static int ext4_add_entry(handle_t *handle, struct dentry *dentry,
|
||||
|
||||
sb = dir->i_sb;
|
||||
blocksize = sb->s_blocksize;
|
||||
if (!dentry->d_name.len)
|
||||
return -EINVAL;
|
||||
|
||||
if (fscrypt_is_nokey_name(dentry))
|
||||
return -ENOKEY;
|
||||
|
@ -637,12 +637,8 @@ static struct dentry *hostfs_lookup(struct inode *ino, struct dentry *dentry,
|
||||
|
||||
inode = hostfs_iget(ino->i_sb, name);
|
||||
__putname(name);
|
||||
if (IS_ERR(inode)) {
|
||||
if (PTR_ERR(inode) == -ENOENT)
|
||||
inode = NULL;
|
||||
else
|
||||
return ERR_CAST(inode);
|
||||
}
|
||||
if (inode == ERR_PTR(-ENOENT))
|
||||
inode = NULL;
|
||||
|
||||
return d_splice_alias(inode, dentry);
|
||||
}
|
||||
|
@ -48,10 +48,6 @@ enum {
|
||||
NFSD_MaxBlkSize,
|
||||
NFSD_MaxConnections,
|
||||
NFSD_Filecache,
|
||||
/*
|
||||
* The below MUST come last. Otherwise we leave a hole in nfsd_files[]
|
||||
* with !CONFIG_NFSD_V4 and simple_fill_super() goes oops
|
||||
*/
|
||||
#ifdef CONFIG_NFSD_V4
|
||||
NFSD_Leasetime,
|
||||
NFSD_Gracetime,
|
||||
|
@ -441,7 +441,6 @@ static int nilfs_rename(struct mnt_idmap *idmap,
|
||||
static struct dentry *nilfs_get_parent(struct dentry *child)
|
||||
{
|
||||
unsigned long ino;
|
||||
struct inode *inode;
|
||||
struct nilfs_root *root;
|
||||
|
||||
ino = nilfs_inode_by_name(d_inode(child), &dotdot_name);
|
||||
@ -450,11 +449,7 @@ static struct dentry *nilfs_get_parent(struct dentry *child)
|
||||
|
||||
root = NILFS_I(d_inode(child))->i_root;
|
||||
|
||||
inode = nilfs_iget(child->d_sb, root, ino);
|
||||
if (IS_ERR(inode))
|
||||
return ERR_CAST(inode);
|
||||
|
||||
return d_obtain_alias(inode);
|
||||
return d_obtain_alias(nilfs_iget(child->d_sb, root, ino));
|
||||
}
|
||||
|
||||
static struct dentry *nilfs_get_dentry(struct super_block *sb, u64 cno,
|
||||
|
@ -124,17 +124,10 @@ static int ocfs2_match_dentry(struct dentry *dentry,
|
||||
if (!dentry->d_fsdata)
|
||||
return 0;
|
||||
|
||||
if (!dentry->d_parent)
|
||||
return 0;
|
||||
|
||||
if (skip_unhashed && d_unhashed(dentry))
|
||||
return 0;
|
||||
|
||||
parent = d_inode(dentry->d_parent);
|
||||
/* Negative parent dentry? */
|
||||
if (!parent)
|
||||
return 0;
|
||||
|
||||
/* Name is in a different directory. */
|
||||
if (OCFS2_I(parent)->ip_blkno != parent_blkno)
|
||||
return 0;
|
||||
|
@ -1593,9 +1593,6 @@ int __ocfs2_add_entry(handle_t *handle,
|
||||
struct buffer_head *insert_bh = lookup->dl_leaf_bh;
|
||||
char *data_start = insert_bh->b_data;
|
||||
|
||||
if (!namelen)
|
||||
return -EINVAL;
|
||||
|
||||
if (ocfs2_dir_indexed(dir)) {
|
||||
struct buffer_head *bh;
|
||||
|
||||
@ -4245,12 +4242,6 @@ int ocfs2_prepare_dir_for_insert(struct ocfs2_super *osb,
|
||||
trace_ocfs2_prepare_dir_for_insert(
|
||||
(unsigned long long)OCFS2_I(dir)->ip_blkno, namelen);
|
||||
|
||||
if (!namelen) {
|
||||
ret = -EINVAL;
|
||||
mlog_errno(ret);
|
||||
goto out;
|
||||
}
|
||||
|
||||
/*
|
||||
* Do this up front to reduce confusion.
|
||||
*
|
||||
|
@ -58,10 +58,10 @@ struct orangefs_dir {
|
||||
* first part of the part list.
|
||||
*/
|
||||
|
||||
static int do_readdir(struct orangefs_inode_s *oi,
|
||||
struct orangefs_dir *od, struct dentry *dentry,
|
||||
static int do_readdir(struct orangefs_dir *od, struct inode *inode,
|
||||
struct orangefs_kernel_op_s *op)
|
||||
{
|
||||
struct orangefs_inode_s *oi = ORANGEFS_I(inode);
|
||||
struct orangefs_readdir_response_s *resp;
|
||||
int bufi, r;
|
||||
|
||||
@ -87,7 +87,7 @@ static int do_readdir(struct orangefs_inode_s *oi,
|
||||
op->upcall.req.readdir.buf_index = bufi;
|
||||
|
||||
r = service_operation(op, "orangefs_readdir",
|
||||
get_interruptible_flag(dentry->d_inode));
|
||||
get_interruptible_flag(inode));
|
||||
|
||||
orangefs_readdir_index_put(bufi);
|
||||
|
||||
@ -158,8 +158,7 @@ static int parse_readdir(struct orangefs_dir *od,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int orangefs_dir_more(struct orangefs_inode_s *oi,
|
||||
struct orangefs_dir *od, struct dentry *dentry)
|
||||
static int orangefs_dir_more(struct orangefs_dir *od, struct inode *inode)
|
||||
{
|
||||
struct orangefs_kernel_op_s *op;
|
||||
int r;
|
||||
@ -169,7 +168,7 @@ static int orangefs_dir_more(struct orangefs_inode_s *oi,
|
||||
od->error = -ENOMEM;
|
||||
return -ENOMEM;
|
||||
}
|
||||
r = do_readdir(oi, od, dentry, op);
|
||||
r = do_readdir(od, inode, op);
|
||||
if (r) {
|
||||
od->error = r;
|
||||
goto out;
|
||||
@ -238,9 +237,7 @@ static int fill_from_part(struct orangefs_dir_part *part,
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int orangefs_dir_fill(struct orangefs_inode_s *oi,
|
||||
struct orangefs_dir *od, struct dentry *dentry,
|
||||
struct dir_context *ctx)
|
||||
static int orangefs_dir_fill(struct orangefs_dir *od, struct dir_context *ctx)
|
||||
{
|
||||
struct orangefs_dir_part *part;
|
||||
size_t count;
|
||||
@ -304,15 +301,10 @@ static loff_t orangefs_dir_llseek(struct file *file, loff_t offset,
|
||||
static int orangefs_dir_iterate(struct file *file,
|
||||
struct dir_context *ctx)
|
||||
{
|
||||
struct orangefs_inode_s *oi;
|
||||
struct orangefs_dir *od;
|
||||
struct dentry *dentry;
|
||||
struct orangefs_dir *od = file->private_data;
|
||||
struct inode *inode = file_inode(file);
|
||||
int r;
|
||||
|
||||
dentry = file->f_path.dentry;
|
||||
oi = ORANGEFS_I(dentry->d_inode);
|
||||
od = file->private_data;
|
||||
|
||||
if (od->error)
|
||||
return od->error;
|
||||
|
||||
@ -342,7 +334,7 @@ static int orangefs_dir_iterate(struct file *file,
|
||||
*/
|
||||
while (od->token != ORANGEFS_ITERATE_END &&
|
||||
ctx->pos > od->end) {
|
||||
r = orangefs_dir_more(oi, od, dentry);
|
||||
r = orangefs_dir_more(od, inode);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
@ -351,17 +343,17 @@ static int orangefs_dir_iterate(struct file *file,
|
||||
|
||||
/* Then try to fill if there's any left in the buffer. */
|
||||
if (ctx->pos < od->end) {
|
||||
r = orangefs_dir_fill(oi, od, dentry, ctx);
|
||||
r = orangefs_dir_fill(od, ctx);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
||||
/* Finally get some more and try to fill. */
|
||||
if (od->token != ORANGEFS_ITERATE_END) {
|
||||
r = orangefs_dir_more(oi, od, dentry);
|
||||
r = orangefs_dir_more(od, inode);
|
||||
if (r)
|
||||
return r;
|
||||
r = orangefs_dir_fill(oi, od, dentry, ctx);
|
||||
r = orangefs_dir_fill(od, ctx);
|
||||
}
|
||||
|
||||
return r;
|
||||
|
@ -534,13 +534,8 @@ static struct dentry *proc_sys_lookup(struct inode *dir, struct dentry *dentry,
|
||||
goto out;
|
||||
}
|
||||
|
||||
inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p);
|
||||
if (IS_ERR(inode)) {
|
||||
err = ERR_CAST(inode);
|
||||
goto out;
|
||||
}
|
||||
|
||||
d_set_d_op(dentry, &proc_sys_dentry_operations);
|
||||
inode = proc_sys_make_inode(dir->i_sb, h ? h : head, p);
|
||||
err = d_splice_alias(inode, dentry);
|
||||
|
||||
out:
|
||||
@ -698,13 +693,8 @@ static bool proc_sys_fill_cache(struct file *file,
|
||||
return false;
|
||||
if (d_in_lookup(child)) {
|
||||
struct dentry *res;
|
||||
inode = proc_sys_make_inode(dir->d_sb, head, table);
|
||||
if (IS_ERR(inode)) {
|
||||
d_lookup_done(child);
|
||||
dput(child);
|
||||
return false;
|
||||
}
|
||||
d_set_d_op(child, &proc_sys_dentry_operations);
|
||||
inode = proc_sys_make_inode(dir->d_sb, head, table);
|
||||
res = d_splice_alias(inode, child);
|
||||
d_lookup_done(child);
|
||||
if (unlikely(res)) {
|
||||
|
@ -451,13 +451,6 @@ static int reiserfs_add_entry(struct reiserfs_transaction_handle *th,
|
||||
|
||||
BUG_ON(!th->t_trans_id);
|
||||
|
||||
/* cannot allow items to be added into a busy deleted directory */
|
||||
if (!namelen)
|
||||
return -EINVAL;
|
||||
|
||||
if (namelen > REISERFS_MAX_NAME(dir->i_sb->s_blocksize))
|
||||
return -ENAMETOOLONG;
|
||||
|
||||
/* each entry has unique key. compose it */
|
||||
make_cpu_key(&entry_key, dir,
|
||||
get_third_component(dir->i_sb, name, namelen),
|
||||
|
@ -125,8 +125,6 @@ static struct dentry *udf_lookup(struct inode *dir, struct dentry *dentry,
|
||||
udf_fiiter_release(&iter);
|
||||
|
||||
inode = udf_iget(dir->i_sb, &loc);
|
||||
if (IS_ERR(inode))
|
||||
return ERR_CAST(inode);
|
||||
}
|
||||
|
||||
return d_splice_alias(inode, dentry);
|
||||
@ -230,8 +228,6 @@ static int udf_fiiter_add_entry(struct inode *dir, struct dentry *dentry,
|
||||
char name[UDF_NAME_LEN_CS0];
|
||||
|
||||
if (dentry) {
|
||||
if (!dentry->d_name.len)
|
||||
return -EINVAL;
|
||||
namelen = udf_put_filename(dir->i_sb, dentry->d_name.name,
|
||||
dentry->d_name.len,
|
||||
name, UDF_NAME_LEN_CS0);
|
||||
@ -904,7 +900,6 @@ static int udf_rename(struct mnt_idmap *idmap, struct inode *old_dir,
|
||||
static struct dentry *udf_get_parent(struct dentry *child)
|
||||
{
|
||||
struct kernel_lb_addr tloc;
|
||||
struct inode *inode = NULL;
|
||||
struct udf_fileident_iter iter;
|
||||
int err;
|
||||
|
||||
@ -914,11 +909,7 @@ static struct dentry *udf_get_parent(struct dentry *child)
|
||||
|
||||
tloc = lelb_to_cpu(iter.fi.icb.extLocation);
|
||||
udf_fiiter_release(&iter);
|
||||
inode = udf_iget(child->d_sb, &tloc);
|
||||
if (IS_ERR(inode))
|
||||
return ERR_CAST(inode);
|
||||
|
||||
return d_obtain_alias(inode);
|
||||
return d_obtain_alias(udf_iget(child->d_sb, &tloc));
|
||||
}
|
||||
|
||||
|
||||
|
@ -747,8 +747,6 @@ static struct dentry *zonefs_lookup(struct inode *dir, struct dentry *dentry,
|
||||
inode = zonefs_get_dir_inode(dir, dentry);
|
||||
else
|
||||
inode = zonefs_get_file_inode(dir, dentry);
|
||||
if (IS_ERR(inode))
|
||||
return ERR_CAST(inode);
|
||||
|
||||
return d_splice_alias(inode, dentry);
|
||||
}
|
||||
|
@ -1615,11 +1615,6 @@ static char *gen_symlink_name(int depth, const char *dirname, const char *fname)
|
||||
return buffer;
|
||||
}
|
||||
|
||||
static void rawdata_link_cb(void *arg)
|
||||
{
|
||||
kfree(arg);
|
||||
}
|
||||
|
||||
static const char *rawdata_get_link_base(struct dentry *dentry,
|
||||
struct inode *inode,
|
||||
struct delayed_call *done,
|
||||
@ -1643,7 +1638,7 @@ static const char *rawdata_get_link_base(struct dentry *dentry,
|
||||
if (IS_ERR(target))
|
||||
return target;
|
||||
|
||||
set_delayed_call(done, rawdata_link_cb, target);
|
||||
set_delayed_call(done, kfree_link, target);
|
||||
|
||||
return target;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user