Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1659524 > unrolled thread
| Started by | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| First post | 2017-06-07 10:50 +0200 |
| Last post | 2017-06-14 00:20 +0200 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
This discussion starts older than the indexed window; earlier articles aren't shown. The article labeled Started by
below is the oldest one visible, not the original post.
[PATCH 05/16] clock_nanosleep(): stash rmtp into restart_block Al Viro <viro@ZenIV.linux.org.uk> - 2017-06-07 10:50 +0200
[tip:timers/core] posix-timers: Store rmtp into restart_block in sys_clock_nanosleep() tip-bot for Al Viro <tipbot@zytor.com> - 2017-06-14 00:20 +0200
| From | Al Viro <viro@ZenIV.linux.org.uk> |
|---|---|
| Date | 2017-06-07 10:50 +0200 |
| Subject | [PATCH 05/16] clock_nanosleep(): stash rmtp into restart_block |
| Message-ID | <tPEP7-4gO-3@gated-at.bofh.it> |
From: Al Viro <viro@zeniv.linux.org.uk>
... instead of doing that in every ->nsleep() instance
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
---
kernel/time/alarmtimer.c | 8 +-------
kernel/time/posix-cpu-timers.c | 12 +++---------
kernel/time/posix-timers.c | 10 +++++-----
kernel/time/posix-timers.h | 2 +-
4 files changed, 10 insertions(+), 22 deletions(-)
diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
index ac6e9bc6cc59..d859a3601ddd 100644
--- a/kernel/time/alarmtimer.c
+++ b/kernel/time/alarmtimer.c
@@ -753,8 +753,7 @@ static long __sched alarm_timer_nsleep_restart(struct restart_block *restart)
* Handles clock_nanosleep calls against _ALARM clockids
*/
static int alarm_timer_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *tsreq,
- struct timespec __user *rmtp)
+ struct timespec64 *tsreq)
{
enum alarmtimer_type type = clock2alarm(which_clock);
struct restart_block *restart = ¤t->restart_block;
@@ -762,11 +761,6 @@ static int alarm_timer_nsleep(const clockid_t which_clock, int flags,
ktime_t exp;
int ret = 0;
- if (flags & TIMER_ABSTIME)
- rmtp = NULL;
-
- restart->nanosleep.rmtp = rmtp;
-
if (!alarmtimer_get_rtcdev())
return -ENOTSUPP;
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
index ef1f2bdc896e..f999b3ebba7e 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -1327,16 +1327,11 @@ static int do_cpu_nanosleep(const clockid_t which_clock, int flags,
static long posix_cpu_nsleep_restart(struct restart_block *restart_block);
static int posix_cpu_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *rqtp, struct timespec __user *rmtp)
+ struct timespec64 *rqtp)
{
struct restart_block *restart_block = ¤t->restart_block;
int error;
- if (flags & TIMER_ABSTIME)
- rmtp = NULL;
-
- restart_block->nanosleep.rmtp = rmtp;
-
/*
* Diagnose required errors first.
*/
@@ -1387,10 +1382,9 @@ static int process_cpu_timer_create(struct k_itimer *timer)
return posix_cpu_timer_create(timer);
}
static int process_cpu_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *rqtp,
- struct timespec __user *rmtp)
+ struct timespec64 *rqtp)
{
- return posix_cpu_nsleep(PROCESS_CLOCK, flags, rqtp, rmtp);
+ return posix_cpu_nsleep(PROCESS_CLOCK, flags, rqtp);
}
static long process_cpu_nsleep_restart(struct restart_block *restart_block)
{
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c
index 5108023a5f3b..f39ed4bdcc5a 100644
--- a/kernel/time/posix-timers.c
+++ b/kernel/time/posix-timers.c
@@ -1026,11 +1026,8 @@ SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock,
* nanosleep for monotonic and realtime clocks
*/
static int common_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *tsave, struct timespec __user *rmtp)
+ struct timespec64 *tsave)
{
- if (flags & TIMER_ABSTIME)
- rmtp = NULL;
- current->restart_block.nanosleep.rmtp = rmtp;
return hrtimer_nanosleep(tsave, flags & TIMER_ABSTIME ?
HRTIMER_MODE_ABS : HRTIMER_MODE_REL,
which_clock);
@@ -1055,8 +1052,11 @@ SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags,
t64 = timespec_to_timespec64(t);
if (!timespec64_valid(&t64))
return -EINVAL;
+ if (flags & TIMER_ABSTIME)
+ rmtp = NULL;
+ current->restart_block.nanosleep.rmtp = rmtp;
- return kc->nsleep(which_clock, flags, &t64, rmtp);
+ return kc->nsleep(which_clock, flags, &t64);
}
/*
diff --git a/kernel/time/posix-timers.h b/kernel/time/posix-timers.h
index b086f5ba2f5b..bfd9e15c6ce0 100644
--- a/kernel/time/posix-timers.h
+++ b/kernel/time/posix-timers.h
@@ -10,7 +10,7 @@ struct k_clock {
int (*clock_adj)(const clockid_t which_clock, struct timex *tx);
int (*timer_create)(struct k_itimer *timer);
int (*nsleep)(const clockid_t which_clock, int flags,
- struct timespec64 *, struct timespec __user *);
+ struct timespec64 *);
long (*nsleep_restart)(struct restart_block *restart_block);
int (*timer_set)(struct k_itimer *timr, int flags,
struct itimerspec64 *new_setting,
--
2.11.0
[toc] | [next] | [standalone]
| From | tip-bot for Al Viro <tipbot@zytor.com> |
|---|---|
| Date | 2017-06-14 00:20 +0200 |
| Subject | [tip:timers/core] posix-timers: Store rmtp into restart_block in sys_clock_nanosleep() |
| Message-ID | <tS2kj-5dw-39@gated-at.bofh.it> |
| In reply to | #1659524 |
Commit-ID: 99e6c0e6ec349575886ca7daffc9cb7ec583176f
Gitweb: http://git.kernel.org/tip/99e6c0e6ec349575886ca7daffc9cb7ec583176f
Author: Al Viro <viro@ZenIV.linux.org.uk>
AuthorDate: Wed, 7 Jun 2017 09:42:30 +0100
Committer: Thomas Gleixner <tglx@linutronix.de>
CommitDate: Wed, 14 Jun 2017 00:00:41 +0200
posix-timers: Store rmtp into restart_block in sys_clock_nanosleep()
... instead of doing that in every ->nsleep() instance
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: John Stultz <john.stultz@linaro.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Link: http://lkml.kernel.org/r/20170607084241.28657-5-viro@ZenIV.linux.org.uk
---
kernel/time/alarmtimer.c | 8 +-------
kernel/time/posix-cpu-timers.c | 12 +++---------
kernel/time/posix-timers.c | 10 +++++-----
kernel/time/posix-timers.h | 2 +-
4 files changed, 10 insertions(+), 22 deletions(-)
diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c
index ac6e9bc..d859a36 100644
--- a/kernel/time/alarmtimer.c
+++ b/kernel/time/alarmtimer.c
@@ -753,8 +753,7 @@ static long __sched alarm_timer_nsleep_restart(struct restart_block *restart)
* Handles clock_nanosleep calls against _ALARM clockids
*/
static int alarm_timer_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *tsreq,
- struct timespec __user *rmtp)
+ struct timespec64 *tsreq)
{
enum alarmtimer_type type = clock2alarm(which_clock);
struct restart_block *restart = ¤t->restart_block;
@@ -762,11 +761,6 @@ static int alarm_timer_nsleep(const clockid_t which_clock, int flags,
ktime_t exp;
int ret = 0;
- if (flags & TIMER_ABSTIME)
- rmtp = NULL;
-
- restart->nanosleep.rmtp = rmtp;
-
if (!alarmtimer_get_rtcdev())
return -ENOTSUPP;
diff --git a/kernel/time/posix-cpu-timers.c b/kernel/time/posix-cpu-timers.c
index 239fff9..ec6258c 100644
--- a/kernel/time/posix-cpu-timers.c
+++ b/kernel/time/posix-cpu-timers.c
@@ -1328,16 +1328,11 @@ static int do_cpu_nanosleep(const clockid_t which_clock, int flags,
static long posix_cpu_nsleep_restart(struct restart_block *restart_block);
static int posix_cpu_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *rqtp, struct timespec __user *rmtp)
+ struct timespec64 *rqtp)
{
struct restart_block *restart_block = ¤t->restart_block;
int error;
- if (flags & TIMER_ABSTIME)
- rmtp = NULL;
-
- restart_block->nanosleep.rmtp = rmtp;
-
/*
* Diagnose required errors first.
*/
@@ -1388,10 +1383,9 @@ static int process_cpu_timer_create(struct k_itimer *timer)
return posix_cpu_timer_create(timer);
}
static int process_cpu_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *rqtp,
- struct timespec __user *rmtp)
+ struct timespec64 *rqtp)
{
- return posix_cpu_nsleep(PROCESS_CLOCK, flags, rqtp, rmtp);
+ return posix_cpu_nsleep(PROCESS_CLOCK, flags, rqtp);
}
static long process_cpu_nsleep_restart(struct restart_block *restart_block)
{
diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c
index 1a9f59f..a3e5c01 100644
--- a/kernel/time/posix-timers.c
+++ b/kernel/time/posix-timers.c
@@ -1041,11 +1041,8 @@ SYSCALL_DEFINE2(clock_getres, const clockid_t, which_clock,
* nanosleep for monotonic and realtime clocks
*/
static int common_nsleep(const clockid_t which_clock, int flags,
- struct timespec64 *tsave, struct timespec __user *rmtp)
+ struct timespec64 *tsave)
{
- if (flags & TIMER_ABSTIME)
- rmtp = NULL;
- current->restart_block.nanosleep.rmtp = rmtp;
return hrtimer_nanosleep(tsave, flags & TIMER_ABSTIME ?
HRTIMER_MODE_ABS : HRTIMER_MODE_REL,
which_clock);
@@ -1070,8 +1067,11 @@ SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags,
t64 = timespec_to_timespec64(t);
if (!timespec64_valid(&t64))
return -EINVAL;
+ if (flags & TIMER_ABSTIME)
+ rmtp = NULL;
+ current->restart_block.nanosleep.rmtp = rmtp;
- return kc->nsleep(which_clock, flags, &t64, rmtp);
+ return kc->nsleep(which_clock, flags, &t64);
}
/*
diff --git a/kernel/time/posix-timers.h b/kernel/time/posix-timers.h
index b086f5b..bfd9e15 100644
--- a/kernel/time/posix-timers.h
+++ b/kernel/time/posix-timers.h
@@ -10,7 +10,7 @@ struct k_clock {
int (*clock_adj)(const clockid_t which_clock, struct timex *tx);
int (*timer_create)(struct k_itimer *timer);
int (*nsleep)(const clockid_t which_clock, int flags,
- struct timespec64 *, struct timespec __user *);
+ struct timespec64 *);
long (*nsleep_restart)(struct restart_block *restart_block);
int (*timer_set)(struct k_itimer *timr, int flags,
struct itimerspec64 *new_setting,
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web