fs/binfmt: Convert obsolete cputime type to nsecs
authorFrederic Weisbecker <fweisbec@gmail.com>
Tue, 31 Jan 2017 03:09:27 +0000 (04:09 +0100)
committerIngo Molnar <mingo@kernel.org>
Wed, 1 Feb 2017 08:13:51 +0000 (09:13 +0100)
Use the new nsec based cputime accessors as part of the whole cputime
conversion from cputime_t to nsecs.

Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Fenghua Yu <fenghua.yu@intel.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Michael Ellerman <mpe@ellerman.id.au>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Rik van Riel <riel@redhat.com>
Cc: Stanislaw Gruszka <sgruszka@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Tony Luck <tony.luck@intel.com>
Cc: Wanpeng Li <wanpeng.li@hotmail.com>
Link: http://lkml.kernel.org/r/1485832191-26889-12-git-send-email-fweisbec@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/mips/kernel/binfmt_elfn32.c
arch/mips/kernel/binfmt_elfo32.c
arch/parisc/kernel/binfmt_elf32.c
fs/binfmt_elf.c
fs/binfmt_elf_fdpic.c
fs/compat_binfmt_elf.c
include/linux/compat.h

index 9c7f3e136d50da8874df0af6749aa2dfe358d61c..4a2ff3953b99ce44b1b78958ed6a8ad5743ba129 100644 (file)
@@ -99,15 +99,7 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
 #undef TASK_SIZE
 #define TASK_SIZE TASK_SIZE32
 
-#undef cputime_to_timeval
-#define cputime_to_timeval cputime_to_compat_timeval
-static __inline__ void
-cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
-{
-       unsigned long jiffies = cputime_to_jiffies(cputime);
-
-       value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
-       value->tv_sec = jiffies / HZ;
-}
+#undef ns_to_timeval
+#define ns_to_timeval ns_to_compat_timeval
 
 #include "../../../fs/binfmt_elf.c"
index 1ab34322dd977cdc898475573f26dfb19b326c59..3916404e7fd102eb19b42a1d142fdd2c0aaf3354 100644 (file)
@@ -102,15 +102,7 @@ jiffies_to_compat_timeval(unsigned long jiffies, struct compat_timeval *value)
 #undef TASK_SIZE
 #define TASK_SIZE TASK_SIZE32
 
-#undef cputime_to_timeval
-#define cputime_to_timeval cputime_to_compat_timeval
-static __inline__ void
-cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
-{
-       unsigned long jiffies = cputime_to_jiffies(cputime);
-
-       value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
-       value->tv_sec = jiffies / HZ;
-}
+#undef ns_to_timeval
+#define ns_to_timeval ns_to_compat_timeval
 
 #include "../../../fs/binfmt_elf.c"
index 00dc66f9c2ba0a41fd6774fc709d9b62152e4e5f..f2adcf33f8f2218761b19e9414cbbf8e0c4085b8 100644 (file)
@@ -91,14 +91,7 @@ struct elf_prpsinfo32
        current->thread.map_base = DEFAULT_MAP_BASE32; \
        current->thread.task_size = DEFAULT_TASK_SIZE32 \
 
-#undef cputime_to_timeval
-#define cputime_to_timeval cputime_to_compat_timeval
-static __inline__ void
-cputime_to_compat_timeval(const cputime_t cputime, struct compat_timeval *value)
-{
-       unsigned long jiffies = cputime_to_jiffies(cputime);
-       value->tv_usec = (jiffies % HZ) * (1000000L / HZ);
-       value->tv_sec = jiffies / HZ;
-}
+#undef ns_to_timeval
+#define ns_to_timeval ns_to_compat_timeval
 
 #include "../../../fs/binfmt_elf.c"
index 6d451936a858b8c349a7c972a685ba7f11c5b4f6..e7bf01373bc4c63b4ab6d27f4a9b2f9b8f7fed02 100644 (file)
@@ -1411,8 +1411,6 @@ static void fill_note(struct memelfnote *note, const char *name, int type,
 static void fill_prstatus(struct elf_prstatus *prstatus,
                struct task_struct *p, long signr)
 {
-       struct timeval tv;
-
        prstatus->pr_info.si_signo = prstatus->pr_cursig = signr;
        prstatus->pr_sigpend = p->pending.signal.sig[0];
        prstatus->pr_sighold = p->blocked.sig[0];
@@ -1423,29 +1421,25 @@ static void fill_prstatus(struct elf_prstatus *prstatus,
        prstatus->pr_pgrp = task_pgrp_vnr(p);
        prstatus->pr_sid = task_session_vnr(p);
        if (thread_group_leader(p)) {
-               struct task_cputime_t cputime;
+               struct task_cputime cputime;
 
                /*
                 * This is the record for the group leader.  It shows the
                 * group-wide total, not its individual thread total.
                 */
-               thread_group_cputime_t(p, &cputime);
-               cputime_to_timeval(cputime.utime, &prstatus->pr_utime);
-               cputime_to_timeval(cputime.stime, &prstatus->pr_stime);
+               thread_group_cputime(p, &cputime);
+               prstatus->pr_utime = ns_to_timeval(cputime.utime);
+               prstatus->pr_stime = ns_to_timeval(cputime.stime);
        } else {
-               cputime_t utime, stime;
+               u64 utime, stime;
 
-               task_cputime_t(p, &utime, &stime);
-               cputime_to_timeval(utime, &prstatus->pr_utime);
-               cputime_to_timeval(stime, &prstatus->pr_stime);
+               task_cputime(p, &utime, &stime);
+               prstatus->pr_utime = ns_to_timeval(utime);
+               prstatus->pr_stime = ns_to_timeval(stime);
        }
-       tv = ns_to_timeval(p->signal->cutime);
-       prstatus->pr_cutime.tv_sec = tv.tv_sec;
-       prstatus->pr_cutime.tv_usec = tv.tv_usec;
 
-       tv = ns_to_timeval(p->signal->cstime);
-       prstatus->pr_cstime.tv_sec = tv.tv_sec;
-       prstatus->pr_cstime.tv_usec = tv.tv_usec;
+       prstatus->pr_cutime = ns_to_timeval(p->signal->cutime);
+       prstatus->pr_cstime = ns_to_timeval(p->signal->cstime);
 }
 
 static int fill_psinfo(struct elf_prpsinfo *psinfo, struct task_struct *p,
index e1f37346025770c8c31edda3bf95f0eea7d4eb06..ffca4bbc3d63a197a043dba1d391864a8a926b08 100644 (file)
@@ -1342,21 +1342,21 @@ static void fill_prstatus(struct elf_prstatus *prstatus,
        prstatus->pr_pgrp = task_pgrp_vnr(p);
        prstatus->pr_sid = task_session_vnr(p);
        if (thread_group_leader(p)) {
-               struct task_cputime_t cputime;
+               struct task_cputime cputime;
 
                /*
                 * This is the record for the group leader.  It shows the
                 * group-wide total, not its individual thread total.
                 */
-               thread_group_cputime_t(p, &cputime);
-               cputime_to_timeval(cputime.utime, &prstatus->pr_utime);
-               cputime_to_timeval(cputime.stime, &prstatus->pr_stime);
+               thread_group_cputime(p, &cputime);
+               prstatus->pr_utime = ns_to_timeval(cputime.utime);
+               prstatus->pr_stime = ns_to_timeval(cputime.stime);
        } else {
-               cputime_t utime, stime;
+               u64 utime, stime;
 
-               task_cputime_t(p, &utime, &stime);
-               cputime_to_timeval(utime, &prstatus->pr_utime);
-               cputime_to_timeval(stime, &prstatus->pr_stime);
+               task_cputime(p, &utime, &stime);
+               prstatus->pr_utime = ns_to_timeval(utime);
+               prstatus->pr_stime = ns_to_timeval(stime);
        }
        prstatus->pr_cutime = ns_to_timeval(p->signal->cutime);
        prstatus->pr_cstime = ns_to_timeval(p->signal->cstime);
index 4d24d17bcfc1dc3ecd917f12f2a889da1a506e24..504b3c3539dceb07ddb0845b88905048fd3f23d7 100644 (file)
 #define elf_prstatus   compat_elf_prstatus
 #define elf_prpsinfo   compat_elf_prpsinfo
 
-/*
- * Compat version of cputime_to_compat_timeval, perhaps this
- * should be an inline in <linux/compat.h>.
- */
-static void cputime_to_compat_timeval(const cputime_t cputime,
-                                     struct compat_timeval *value)
-{
-       struct timeval tv;
-       cputime_to_timeval(cputime, &tv);
-       value->tv_sec = tv.tv_sec;
-       value->tv_usec = tv.tv_usec;
-}
-
-#undef cputime_to_timeval
-#define cputime_to_timeval cputime_to_compat_timeval
-
+#undef ns_to_timeval
+#define ns_to_timeval ns_to_compat_timeval
 
 /*
  * To use this file, asm/elf.h must define compat_elf_check_arch.
index 63609398ef9f21bca890619d29be4329df4c079e..9e40be522793eb3d8f533cb3e2d7cccc0b3ceabf 100644 (file)
@@ -731,7 +731,25 @@ asmlinkage long compat_sys_fanotify_mark(int, unsigned int, __u32, __u32,
 static inline bool in_compat_syscall(void) { return is_compat_task(); }
 #endif
 
-#else
+/**
+ * ns_to_compat_timeval - Compat version of ns_to_timeval
+ * @nsec:      the nanoseconds value to be converted
+ *
+ * Returns the compat_timeval representation of the nsec parameter.
+ */
+static inline struct compat_timeval ns_to_compat_timeval(s64 nsec)
+{
+       struct timeval tv;
+       struct compat_timeval ctv;
+
+       tv = ns_to_timeval(nsec);
+       ctv.tv_sec = tv.tv_sec;
+       ctv.tv_usec = tv.tv_usec;
+
+       return ctv;
+}
+
+#else /* !CONFIG_COMPAT */
 
 #define is_compat_task() (0)
 static inline bool in_compat_syscall(void) { return false; }