projects
/
linux-2.6-microblaze.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Linux 6.9-rc1
[linux-2.6-microblaze.git]
/
ipc
/
mqueue.c
diff --git
a/ipc/mqueue.c
b/ipc/mqueue.c
index
12ad786
..
5eea4dc
100644
(file)
--- a/
ipc/mqueue.c
+++ b/
ipc/mqueue.c
@@
-302,7
+302,7
@@
static struct inode *mqueue_get_inode(struct super_block *sb,
inode->i_mode = mode;
inode->i_uid = current_fsuid();
inode->i_gid = current_fsgid();
inode->i_mode = mode;
inode->i_uid = current_fsuid();
inode->i_gid = current_fsgid();
-
inode->i_mtime = inode->i_ctime = inode->i_atime = current_time
(inode);
+
simple_inode_init_ts
(inode);
if (S_ISREG(mode)) {
struct mqueue_inode_info *info;
if (S_ISREG(mode)) {
struct mqueue_inode_info *info;
@@
-489,7
+489,7
@@
static struct vfsmount *mq_create_mount(struct ipc_namespace *ns)
static void init_once(void *foo)
{
static void init_once(void *foo)
{
- struct mqueue_inode_info *p =
(struct mqueue_inode_info *)
foo;
+ struct mqueue_inode_info *p = foo;
inode_init_once(&p->vfs_inode);
}
inode_init_once(&p->vfs_inode);
}
@@
-596,7
+596,7
@@
static int mqueue_create_attr(struct dentry *dentry, umode_t mode, void *arg)
put_ipc_ns(ipc_ns);
dir->i_size += DIRENT_SIZE;
put_ipc_ns(ipc_ns);
dir->i_size += DIRENT_SIZE;
-
dir->i_ctime = dir->i_mtime = dir->i_atime = current_time
(dir);
+
simple_inode_init_ts
(dir);
d_instantiate(dentry, inode);
dget(dentry);
d_instantiate(dentry, inode);
dget(dentry);
@@
-608,7
+608,7
@@
out_unlock:
return error;
}
return error;
}
-static int mqueue_create(struct
user_namespace *mnt_userns
, struct inode *dir,
+static int mqueue_create(struct
mnt_idmap *idmap
, struct inode *dir,
struct dentry *dentry, umode_t mode, bool excl)
{
return mqueue_create_attr(dentry, mode, NULL);
struct dentry *dentry, umode_t mode, bool excl)
{
return mqueue_create_attr(dentry, mode, NULL);
@@
-618,7
+618,7
@@
static int mqueue_unlink(struct inode *dir, struct dentry *dentry)
{
struct inode *inode = d_inode(dentry);
{
struct inode *inode = d_inode(dentry);
-
dir->i_ctime = dir->i_mtime = dir->i_atime = current_time
(dir);
+
simple_inode_init_ts
(dir);
dir->i_size -= DIRENT_SIZE;
drop_nlink(inode);
dput(dentry);
dir->i_size -= DIRENT_SIZE;
drop_nlink(inode);
dput(dentry);
@@
-635,7
+635,8
@@
static int mqueue_unlink(struct inode *dir, struct dentry *dentry)
static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,
size_t count, loff_t *off)
{
static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,
size_t count, loff_t *off)
{
- struct mqueue_inode_info *info = MQUEUE_I(file_inode(filp));
+ struct inode *inode = file_inode(filp);
+ struct mqueue_inode_info *info = MQUEUE_I(inode);
char buffer[FILENT_SIZE];
ssize_t ret;
char buffer[FILENT_SIZE];
ssize_t ret;
@@
-656,7
+657,7
@@
static ssize_t mqueue_read_file(struct file *filp, char __user *u_data,
if (ret <= 0)
return ret;
if (ret <= 0)
return ret;
-
file_inode(filp)->i_atime = file_inode(filp)->i_ctime = current_time(file_inode(filp
));
+
inode_set_atime_to_ts(inode, inode_set_ctime_current(inode
));
return ret;
}
return ret;
}
@@
-887,7
+888,7
@@
static int prepare_open(struct dentry *dentry, int oflag, int ro,
if ((oflag & O_ACCMODE) == (O_RDWR | O_WRONLY))
return -EINVAL;
acc = oflag2acc[oflag & O_ACCMODE];
if ((oflag & O_ACCMODE) == (O_RDWR | O_WRONLY))
return -EINVAL;
acc = oflag2acc[oflag & O_ACCMODE];
- return inode_permission(&
init_user_ns
, d_inode(dentry), acc);
+ return inode_permission(&
nop_mnt_idmap
, d_inode(dentry), acc);
}
static int do_mq_open(const char __user *u_name, int oflag, umode_t mode,
}
static int do_mq_open(const char __user *u_name, int oflag, umode_t mode,
@@
-979,15
+980,14
@@
SYSCALL_DEFINE1(mq_unlink, const char __user *, u_name)
err = -ENOENT;
} else {
ihold(inode);
err = -ENOENT;
} else {
ihold(inode);
- err = vfs_unlink(&
init_user_ns
, d_inode(dentry->d_parent),
+ err = vfs_unlink(&
nop_mnt_idmap
, d_inode(dentry->d_parent),
dentry, NULL);
}
dput(dentry);
out_unlock:
inode_unlock(d_inode(mnt->mnt_root));
dentry, NULL);
}
dput(dentry);
out_unlock:
inode_unlock(d_inode(mnt->mnt_root));
- if (inode)
- iput(inode);
+ iput(inode);
mnt_drop_write(mnt);
out_name:
putname(name);
mnt_drop_write(mnt);
out_name:
putname(name);
@@
-1163,8
+1163,7
@@
static int do_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr,
goto out_unlock;
__do_notify(info);
}
goto out_unlock;
__do_notify(info);
}
- inode->i_atime = inode->i_mtime = inode->i_ctime =
- current_time(inode);
+ simple_inode_init_ts(inode);
}
out_unlock:
spin_unlock(&info->lock);
}
out_unlock:
spin_unlock(&info->lock);
@@
-1258,8
+1257,7
@@
static int do_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr,
msg_ptr = msg_get(info);
msg_ptr = msg_get(info);
- inode->i_atime = inode->i_mtime = inode->i_ctime =
- current_time(inode);
+ simple_inode_init_ts(inode);
/* There is now free space in queue. */
pipelined_receive(&wake_q, info);
/* There is now free space in queue. */
pipelined_receive(&wake_q, info);
@@
-1397,7
+1395,8
@@
retry:
if (notification == NULL) {
if (info->notify_owner == task_tgid(current)) {
remove_notification(info);
if (notification == NULL) {
if (info->notify_owner == task_tgid(current)) {
remove_notification(info);
- inode->i_atime = inode->i_ctime = current_time(inode);
+ inode_set_atime_to_ts(inode,
+ inode_set_ctime_current(inode));
}
} else if (info->notify_owner != NULL) {
ret = -EBUSY;
}
} else if (info->notify_owner != NULL) {
ret = -EBUSY;
@@
-1423,7
+1422,7
@@
retry:
info->notify_owner = get_pid(task_tgid(current));
info->notify_user_ns = get_user_ns(current_user_ns());
info->notify_owner = get_pid(task_tgid(current));
info->notify_user_ns = get_user_ns(current_user_ns());
- inode
->i_atime = inode->i_ctime = current_time(inode
);
+ inode
_set_atime_to_ts(inode, inode_set_ctime_current(inode)
);
}
spin_unlock(&info->lock);
out_fput:
}
spin_unlock(&info->lock);
out_fput:
@@
-1486,7
+1485,7
@@
static int do_mq_getsetattr(int mqdes, struct mq_attr *new, struct mq_attr *old)
f.file->f_flags &= ~O_NONBLOCK;
spin_unlock(&f.file->f_lock);
f.file->f_flags &= ~O_NONBLOCK;
spin_unlock(&f.file->f_lock);
- inode
->i_atime = inode->i_ctime = current_time(inode
);
+ inode
_set_atime_to_ts(inode, inode_set_ctime_current(inode)
);
}
spin_unlock(&info->lock);
}
spin_unlock(&info->lock);
@@
-1710,11
+1709,6
@@
void mq_clear_sbinfo(struct ipc_namespace *ns)
ns->mq_mnt->mnt_sb->s_fs_info = NULL;
}
ns->mq_mnt->mnt_sb->s_fs_info = NULL;
}
-void mq_put_mnt(struct ipc_namespace *ns)
-{
- kern_unmount(ns->mq_mnt);
-}
-
static int __init init_mqueue_fs(void)
{
int error;
static int __init init_mqueue_fs(void)
{
int error;
@@
-1727,7
+1721,8
@@
static int __init init_mqueue_fs(void)
if (!setup_mq_sysctls(&init_ipc_ns)) {
pr_warn("sysctl registration failed\n");
if (!setup_mq_sysctls(&init_ipc_ns)) {
pr_warn("sysctl registration failed\n");
- return -ENOMEM;
+ error = -ENOMEM;
+ goto out_kmem;
}
error = register_filesystem(&mqueue_fs_type);
}
error = register_filesystem(&mqueue_fs_type);
@@
-1745,6
+1740,8
@@
static int __init init_mqueue_fs(void)
out_filesystem:
unregister_filesystem(&mqueue_fs_type);
out_sysctl:
out_filesystem:
unregister_filesystem(&mqueue_fs_type);
out_sysctl:
+ retire_mq_sysctls(&init_ipc_ns);
+out_kmem:
kmem_cache_destroy(mqueue_inode_cachep);
return error;
}
kmem_cache_destroy(mqueue_inode_cachep);
return error;
}