mirror of https://github.com/OpenIPC/firmware.git
49 lines
1.7 KiB
Diff
49 lines
1.7 KiB
Diff
diff -drupN a/ipc/mqueue.c b/ipc/mqueue.c
|
|
--- a/ipc/mqueue.c 2018-08-06 17:23:04.000000000 +0300
|
|
+++ b/ipc/mqueue.c 2022-06-12 05:28:14.000000000 +0300
|
|
@@ -745,7 +745,7 @@ static struct file *do_create(struct ipc
|
|
}
|
|
|
|
mode &= ~current_umask();
|
|
- ret = vfs_create(dir, path->dentry, mode, true);
|
|
+ ret = vfs_create2(path->mnt, dir, path->dentry, mode, true);
|
|
path->dentry->d_fsdata = NULL;
|
|
if (ret)
|
|
return ERR_PTR(ret);
|
|
@@ -761,7 +761,7 @@ static struct file *do_open(struct path
|
|
if ((oflag & O_ACCMODE) == (O_RDWR | O_WRONLY))
|
|
return ERR_PTR(-EINVAL);
|
|
acc = oflag2acc[oflag & O_ACCMODE];
|
|
- if (inode_permission(d_inode(path->dentry), acc))
|
|
+ if (inode_permission2(path->mnt, d_inode(path->dentry), acc))
|
|
return ERR_PTR(-EACCES);
|
|
return dentry_open(path, oflag, current_cred());
|
|
}
|
|
@@ -794,7 +794,7 @@ SYSCALL_DEFINE4(mq_open, const char __us
|
|
ro = mnt_want_write(mnt); /* we'll drop it in any case */
|
|
error = 0;
|
|
inode_lock(d_inode(root));
|
|
- path.dentry = lookup_one_len(name->name, root, strlen(name->name));
|
|
+ path.dentry = lookup_one_len2(name->name, mnt, root, strlen(name->name));
|
|
if (IS_ERR(path.dentry)) {
|
|
error = PTR_ERR(path.dentry);
|
|
goto out_putfd;
|
|
@@ -865,7 +865,7 @@ SYSCALL_DEFINE1(mq_unlink, const char __
|
|
if (err)
|
|
goto out_name;
|
|
inode_lock_nested(d_inode(mnt->mnt_root), I_MUTEX_PARENT);
|
|
- dentry = lookup_one_len(name->name, mnt->mnt_root,
|
|
+ dentry = lookup_one_len2(name->name, mnt, mnt->mnt_root,
|
|
strlen(name->name));
|
|
if (IS_ERR(dentry)) {
|
|
err = PTR_ERR(dentry);
|
|
@@ -877,7 +877,7 @@ SYSCALL_DEFINE1(mq_unlink, const char __
|
|
err = -ENOENT;
|
|
} else {
|
|
ihold(inode);
|
|
- err = vfs_unlink(d_inode(dentry->d_parent), dentry, NULL);
|
|
+ err = vfs_unlink2(mnt, d_inode(dentry->d_parent), dentry, NULL);
|
|
}
|
|
dput(dentry);
|
|
|