Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more vfs stuff from Al Viro: "O_TMPFILE ABI changes, Oleg's fput() series, misc cleanups, including making simple_lookup() usable for filesystems with non-NULL s_d_op, which allows us to get rid of quite a bit of ugliness" * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: sunrpc: now we can just set ->s_d_op cgroup: we can use simple_lookup() now efivarfs: we can use simple_lookup() now make simple_lookup() usable for filesystems that set ->s_d_op configfs: don't open-code d_alloc_name() __rpc_lookup_create_exclusive: pass string instead of qstr rpc_create_*_dir: don't bother with qstr llist: llist_add() can use llist_add_batch() llist: fix/simplify llist_add() and llist_add_batch() fput: turn "list_head delayed_fput_list" into llist_head fs/file_table.c:fput(): add comment Safer ABI for O_TMPFILE
This commit is contained in:
@@ -128,9 +128,7 @@ static struct dentry *rpc_setup_pipedir_sb(struct super_block *sb,
|
||||
{
|
||||
static uint32_t clntid;
|
||||
char name[15];
|
||||
struct qstr q = { .name = name };
|
||||
struct dentry *dir, *dentry;
|
||||
int error;
|
||||
|
||||
dir = rpc_d_lookup_sb(sb, dir_name);
|
||||
if (dir == NULL) {
|
||||
@@ -138,19 +136,17 @@ static struct dentry *rpc_setup_pipedir_sb(struct super_block *sb,
|
||||
return dir;
|
||||
}
|
||||
for (;;) {
|
||||
q.len = snprintf(name, sizeof(name), "clnt%x", (unsigned int)clntid++);
|
||||
snprintf(name, sizeof(name), "clnt%x", (unsigned int)clntid++);
|
||||
name[sizeof(name) - 1] = '\0';
|
||||
q.hash = full_name_hash(q.name, q.len);
|
||||
dentry = rpc_create_client_dir(dir, &q, clnt);
|
||||
dentry = rpc_create_client_dir(dir, name, clnt);
|
||||
if (!IS_ERR(dentry))
|
||||
break;
|
||||
error = PTR_ERR(dentry);
|
||||
if (error != -EEXIST) {
|
||||
printk(KERN_INFO "RPC: Couldn't create pipefs entry"
|
||||
" %s/%s, error %d\n",
|
||||
dir_name, name, error);
|
||||
break;
|
||||
}
|
||||
if (dentry == ERR_PTR(-EEXIST))
|
||||
continue;
|
||||
printk(KERN_INFO "RPC: Couldn't create pipefs entry"
|
||||
" %s/%s, error %ld\n",
|
||||
dir_name, name, PTR_ERR(dentry));
|
||||
break;
|
||||
}
|
||||
dput(dir);
|
||||
return dentry;
|
||||
|
Reference in New Issue
Block a user