History

mqueue: switch to vfs_mkobj(), quit abusing ->d_fsdata

Al Viro committed 8 years ago

Commit eecec191 parent a4a06831 file · +11 −8Browse files

Unified · Split

ipc/mqueue.c+11−8
@@ -416,11 +416,11 @@ static void mqueue_evict_inode(struct inode *inode) · 415 unmodified lines
416416 put_ipc_ns(ipc_ns);
417417 }
418418
419−static int mqueue_create(struct inode *dir, struct dentry *dentry,
420− umode_t mode, bool excl)
419+static int mqueue_create_attr(struct dentry *dentry, umode_t mode, void *arg)
421420 {
421+ struct inode *dir = dentry->d_parent->d_inode;
422422 struct inode *inode;
423− struct mq_attr *attr = dentry->d_fsdata;
423+ struct mq_attr *attr = arg;
424424 int error;
425425 struct ipc_namespace *ipc_ns;
426426
@@ -461,6 +461,12 @@ out_unlock: · 34 unmodified lines
461461 return error;
462462 }
463463
464+static int mqueue_create(struct inode *dir, struct dentry *dentry,
465+ umode_t mode, bool excl)
466+{
467+ return mqueue_create_attr(dentry, mode, NULL);
468+}
469+
464470 static int mqueue_unlink(struct inode *dir, struct dentry *dentry)
465471 {
466472 struct inode *inode = d_inode(dentry);
@@ -732,8 +738,6 @@ static struct file *do_create(struct ipc_namespace *ipc_ns, struct inode *dir, · 265 unmodified lines
732738 ret = mq_attr_ok(ipc_ns, attr);
733739 if (ret)
734740 return ERR_PTR(ret);
735− /* store for use during create */
736− path->dentry->d_fsdata = attr;
737741 } else {
738742 struct mq_attr def_attr;
739743
@@ -746,9 +750,8 @@ static struct file *do_create(struct ipc_namespace *ipc_ns, struct inode *dir, · 6 unmodified lines
746750 return ERR_PTR(ret);
747751 }
748752
749− mode &= ~current_umask();
750− ret = vfs_create(dir, path->dentry, mode, true);
751− path->dentry->d_fsdata = NULL;
753+ ret = vfs_mkobj(path->dentry, mode & ~current_umask(),
754+ mqueue_create_attr, attr);
752755 if (ret)
753756 return ERR_PTR(ret);
754757 return dentry_open(path, oflag, cred);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t