Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1618095
| From | Akinobu Mita <akinobu.mita@gmail.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | [PATCH -mm 4/5] fault-inject: simplify access check for fail-nth |
| Date | 2017-04-06 17:00 +0200 |
| Message-ID | <tth3c-1Ia-15@gated-at.bofh.it> (permalink) |
| References | <tth3c-1Ia-5@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
The fail-nth file is created with 0666 and the access is permitted if
and only if the task is current.
This file is owned by the currnet user. So we can create it with 0644
and allow the owner to write it. This enables to watch the status of
task->fail_nth from another processes.
Cc: Dmitry Vyukov <dvyukov@google.com>
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
---
fs/proc/base.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/fs/proc/base.c b/fs/proc/base.c
index 9d14215..14e7b73 100644
--- a/fs/proc/base.c
+++ b/fs/proc/base.c
@@ -1366,16 +1366,16 @@ static ssize_t proc_fail_nth_write(struct file *file, const char __user *buf,
int err;
unsigned int n;
+ err = kstrtoint_from_user(buf, count, 0, &n);
+ if (err)
+ return err;
+
task = get_proc_task(file_inode(file));
if (!task)
return -ESRCH;
+ task->fail_nth = n;
put_task_struct(task);
- if (task != current)
- return -EPERM;
- err = kstrtouint_from_user(buf, count, 0, &n);
- if (err)
- return err;
- current->fail_nth = n;
+
return count;
}
@@ -1389,11 +1389,9 @@ static ssize_t proc_fail_nth_read(struct file *file, char __user *buf,
task = get_proc_task(file_inode(file));
if (!task)
return -ESRCH;
- put_task_struct(task);
- if (task != current)
- return -EPERM;
len = snprintf(numbuf, sizeof(numbuf), "%u\n", task->fail_nth);
len = simple_read_from_buffer(buf, count, ppos, numbuf, len);
+ put_task_struct(task);
return len;
}
@@ -3358,11 +3356,7 @@ static const struct pid_entry tid_base_stuff[] = {
#endif
#ifdef CONFIG_FAULT_INJECTION
REG("make-it-fail", S_IRUGO|S_IWUSR, proc_fault_inject_operations),
- /*
- * Operations on the file check that the task is current,
- * so we create it with 0666 to support testing under unprivileged user.
- */
- REG("fail-nth", 0666, proc_fail_nth_operations),
+ REG("fail-nth", 0644, proc_fail_nth_operations),
#endif
#ifdef CONFIG_TASK_IO_ACCOUNTING
ONE("io", S_IRUSR, proc_tid_io_accounting),
--
2.7.4
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
[PATCH -mm 0/5] fault-inject: improve fail-nth interface Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-06 17:00 +0200
[PATCH -mm 4/5] fault-inject: simplify access check for fail-nth Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-06 17:00 +0200
Re: [PATCH -mm 4/5] fault-inject: simplify access check for fail-nth Dmitry Vyukov <dvyukov@google.com> - 2017-04-07 22:30 +0200
Re: [PATCH -mm 4/5] fault-inject: simplify access check for fail-nth Dmitry Vyukov <dvyukov@google.com> - 2017-04-07 22:50 +0200
Re: [PATCH -mm 4/5] fault-inject: simplify access check for fail-nth Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-08 10:30 +0200
Re: [PATCH -mm 4/5] fault-inject: simplify access check for fail-nth Dmitry Vyukov <dvyukov@google.com> - 2017-04-08 19:40 +0200
[PATCH -mm 3/5] fault-inject: make fail-nth read/write interface symmetric Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-06 17:00 +0200
Re: [PATCH -mm 3/5] fault-inject: make fail-nth read/write interface symmetric Dmitry Vyukov <dvyukov@google.com> - 2017-04-07 22:40 +0200
[PATCH -mm 2/5] fault-inject: parse as natural 1-based value for fail-nth write interface Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-06 17:00 +0200
[PATCH -mm 5/5] fault-inject: add /proc/<pid>/fail-nth Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-06 17:00 +0200
[PATCH -mm 1/5] fault-inject: automatically detect the number base for fail-nth write interface Akinobu Mita <akinobu.mita@gmail.com> - 2017-04-06 17:00 +0200
csiph-web