public inbox for linux-arch@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/6] Introduce struct __kernel_timex
@ 2018-07-03  5:44 Deepa Dinamani
  2018-07-03  5:44 ` Deepa Dinamani
  2018-07-03  5:44 ` [PATCH 3/6] timex: prepare compat helpers for y2038 changes Deepa Dinamani
  0 siblings, 2 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-03  5:44 UTC (permalink / raw)
  To: tglx, linux-kernel
  Cc: linux-arch, arnd, y2038, catalin.marinas, linux-alpha, netdev,
	linux-api, davem

The series introduces struct __kernel_timex as a substitute for
the non y2038 safe struct timex.

The series is based on the original series posted by Arnd Bergmann
in [1].

The overview of the series is as below:
1. Prepare for the compat timex interfaces to be used unconditionally.
2. Introduce struct __kernel_timex.
3. Use struct __kernel_timex in place of struct timex.
4. Switch syscalls to use struct __kernel_timex.

Deepa Dinamani (6):
  arm64: Make basic compat_* types always available
  sparc: Make thread_info.h available directly
  timex: prepare compat helpers for y2038 changes
  time: Add struct __kernel_timex
  timex: use __kernel_timex internally
  timex: change syscalls to use struct __kernel_timex

 arch/alpha/kernel/osf_sys.c     |  2 +-
 arch/arm64/include/asm/compat.h | 22 ++++-----
 arch/sparc/include/asm/compat.h |  2 +
 drivers/ptp/ptp_clock.c         |  2 +-
 include/asm-generic/compat.h    |  8 +++-
 include/linux/compat.h          | 33 --------------
 include/linux/compat_time.h     | 34 ++++++++++++++
 include/linux/posix-clock.h     |  2 +-
 include/linux/syscalls.h        |  5 +--
 include/linux/timex.h           |  9 +++-
 include/uapi/linux/timex.h      | 41 +++++++++++++++++
 kernel/compat.c                 | 63 --------------------------
 kernel/time/ntp.c               | 12 ++---
 kernel/time/ntp_internal.h      |  2 +-
 kernel/time/posix-clock.c       |  2 +-
 kernel/time/posix-timers.c      | 14 ++----
 kernel/time/posix-timers.h      |  2 +-
 kernel/time/time.c              | 80 ++++++++++++++++++++++++++++++---
 kernel/time/timekeeping.c       |  4 +-
 19 files changed, 198 insertions(+), 141 deletions(-)


base-commit: 69877f06915f1c7a9f1704442993bcc12c13ace2
-- 
2.17.1

Cc: catalin.marinas@arm.com
Cc: davem@davemloft.net
Cc: linux-alpha@vger.kernel.org
Cc: linux-api@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: netdev@vger.kernel.org
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 0/6] Introduce struct __kernel_timex
  2018-07-03  5:44 [PATCH 0/6] Introduce struct __kernel_timex Deepa Dinamani
@ 2018-07-03  5:44 ` Deepa Dinamani
  2018-07-03  5:44 ` [PATCH 3/6] timex: prepare compat helpers for y2038 changes Deepa Dinamani
  1 sibling, 0 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-03  5:44 UTC (permalink / raw)
  To: tglx, linux-kernel
  Cc: arnd, y2038, catalin.marinas, davem, linux-alpha, linux-api,
	linux-arch, netdev

The series introduces struct __kernel_timex as a substitute for
the non y2038 safe struct timex.

The series is based on the original series posted by Arnd Bergmann
in [1].

The overview of the series is as below:
1. Prepare for the compat timex interfaces to be used unconditionally.
2. Introduce struct __kernel_timex.
3. Use struct __kernel_timex in place of struct timex.
4. Switch syscalls to use struct __kernel_timex.

Deepa Dinamani (6):
  arm64: Make basic compat_* types always available
  sparc: Make thread_info.h available directly
  timex: prepare compat helpers for y2038 changes
  time: Add struct __kernel_timex
  timex: use __kernel_timex internally
  timex: change syscalls to use struct __kernel_timex

 arch/alpha/kernel/osf_sys.c     |  2 +-
 arch/arm64/include/asm/compat.h | 22 ++++-----
 arch/sparc/include/asm/compat.h |  2 +
 drivers/ptp/ptp_clock.c         |  2 +-
 include/asm-generic/compat.h    |  8 +++-
 include/linux/compat.h          | 33 --------------
 include/linux/compat_time.h     | 34 ++++++++++++++
 include/linux/posix-clock.h     |  2 +-
 include/linux/syscalls.h        |  5 +--
 include/linux/timex.h           |  9 +++-
 include/uapi/linux/timex.h      | 41 +++++++++++++++++
 kernel/compat.c                 | 63 --------------------------
 kernel/time/ntp.c               | 12 ++---
 kernel/time/ntp_internal.h      |  2 +-
 kernel/time/posix-clock.c       |  2 +-
 kernel/time/posix-timers.c      | 14 ++----
 kernel/time/posix-timers.h      |  2 +-
 kernel/time/time.c              | 80 ++++++++++++++++++++++++++++++---
 kernel/time/timekeeping.c       |  4 +-
 19 files changed, 198 insertions(+), 141 deletions(-)


base-commit: 69877f06915f1c7a9f1704442993bcc12c13ace2
-- 
2.17.1

Cc: catalin.marinas@arm.com
Cc: davem@davemloft.net
Cc: linux-alpha@vger.kernel.org
Cc: linux-api@vger.kernel.org
Cc: linux-arch@vger.kernel.org
Cc: netdev@vger.kernel.org

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-03  5:44 [PATCH 0/6] Introduce struct __kernel_timex Deepa Dinamani
  2018-07-03  5:44 ` Deepa Dinamani
@ 2018-07-03  5:44 ` Deepa Dinamani
  2018-07-03  5:44   ` Deepa Dinamani
  2018-07-05  7:06   ` kbuild test robot
  1 sibling, 2 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-03  5:44 UTC (permalink / raw)
  To: tglx, linux-kernel; +Cc: arnd, y2038, linux-arch

Move struct compat_timex to compat_time.h.
This is in line with other compat time structures that are planned
to be deprecated eventually.

Also enable compat_get/put_timex helpers unconditionally.

Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Cc: linux-arch@vger.kernel.org
---
 include/asm-generic/compat.h |  8 ++++-
 include/linux/compat.h       | 33 -------------------
 include/linux/compat_time.h  | 34 +++++++++++++++++++
 kernel/compat.c              | 63 ------------------------------------
 kernel/time/time.c           | 63 ++++++++++++++++++++++++++++++++++++
 5 files changed, 104 insertions(+), 97 deletions(-)

diff --git a/include/asm-generic/compat.h b/include/asm-generic/compat.h
index 28819451b6d1..d2876f43484f 100644
--- a/include/asm-generic/compat.h
+++ b/include/asm-generic/compat.h
@@ -1,3 +1,9 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-/* This is an empty stub for 32-bit-only architectures */
+/* This is a stub for 32-bit-only architectures */
+
+#include <linux/types.h>
+
+typedef s32		compat_int_t;
+typedef s32		compat_long_t;
+typedef u32		compat_uint_t;
diff --git a/include/linux/compat.h b/include/linux/compat.h
index df45ee8413d6..2ee58590aeae 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -19,8 +19,6 @@
 #include <linux/uaccess.h>
 #include <linux/unistd.h>
 
-#include <asm/compat.h>
-
 #ifdef CONFIG_COMPAT
 #include <asm/siginfo.h>
 #include <asm/signal.h>
@@ -136,37 +134,6 @@ struct compat_tms {
 	compat_clock_t		tms_cstime;
 };
 
-struct compat_timex {
-	compat_uint_t modes;
-	compat_long_t offset;
-	compat_long_t freq;
-	compat_long_t maxerror;
-	compat_long_t esterror;
-	compat_int_t status;
-	compat_long_t constant;
-	compat_long_t precision;
-	compat_long_t tolerance;
-	struct compat_timeval time;
-	compat_long_t tick;
-	compat_long_t ppsfreq;
-	compat_long_t jitter;
-	compat_int_t shift;
-	compat_long_t stabil;
-	compat_long_t jitcnt;
-	compat_long_t calcnt;
-	compat_long_t errcnt;
-	compat_long_t stbcnt;
-	compat_int_t tai;
-
-	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
-	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
-	compat_int_t:32; compat_int_t:32; compat_int_t:32;
-};
-
-struct timex;
-int compat_get_timex(struct timex *, const struct compat_timex __user *);
-int compat_put_timex(struct compat_timex __user *, const struct timex *);
-
 #define _COMPAT_NSIG_WORDS	(_COMPAT_NSIG / _COMPAT_NSIG_BPW)
 
 typedef struct {
diff --git a/include/linux/compat_time.h b/include/linux/compat_time.h
index e70bfd1d2c3f..f04454e1b863 100644
--- a/include/linux/compat_time.h
+++ b/include/linux/compat_time.h
@@ -7,6 +7,9 @@
 
 typedef s32		compat_time_t;
 
+/* TODO: Move to linux/compat.h when this file is deleted. */
+#include <asm/compat.h>
+
 struct compat_timespec {
 	compat_time_t	tv_sec;
 	s32		tv_nsec;
@@ -22,11 +25,42 @@ struct compat_itimerspec {
 	struct compat_timespec it_value;
 };
 
+struct compat_timex {
+	compat_uint_t modes;
+	compat_long_t offset;
+	compat_long_t freq;
+	compat_long_t maxerror;
+	compat_long_t esterror;
+	compat_int_t status;
+	compat_long_t constant;
+	compat_long_t precision;
+	compat_long_t tolerance;
+	struct compat_timeval time;
+	compat_long_t tick;
+	compat_long_t ppsfreq;
+	compat_long_t jitter;
+	compat_int_t shift;
+	compat_long_t stabil;
+	compat_long_t jitcnt;
+	compat_long_t calcnt;
+	compat_long_t errcnt;
+	compat_long_t stbcnt;
+	compat_int_t tai;
+
+	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
+	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
+	compat_int_t:32; compat_int_t:32; compat_int_t:32;
+};
+
+
 extern int compat_get_timespec64(struct timespec64 *, const void __user *);
 extern int compat_put_timespec64(const struct timespec64 *, void __user *);
 extern int get_compat_itimerspec64(struct itimerspec64 *its,
 			const struct compat_itimerspec __user *uits);
 extern int put_compat_itimerspec64(const struct itimerspec64 *its,
 			struct compat_itimerspec __user *uits);
+struct timex;
+int compat_get_timex(struct timex *, const struct compat_timex __user *);
+int compat_put_timex(struct compat_timex __user *, const struct timex *);
 
 #endif /* _LINUX_COMPAT_TIME_H */
diff --git a/kernel/compat.c b/kernel/compat.c
index 8e40efc2928a..e1de768e5607 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -30,69 +30,6 @@
 
 #include <linux/uaccess.h>
 
-int compat_get_timex(struct timex *txc, const struct compat_timex __user *utp)
-{
-	struct compat_timex tx32;
-
-	memset(txc, 0, sizeof(struct timex));
-	if (copy_from_user(&tx32, utp, sizeof(struct compat_timex)))
-		return -EFAULT;
-
-	txc->modes = tx32.modes;
-	txc->offset = tx32.offset;
-	txc->freq = tx32.freq;
-	txc->maxerror = tx32.maxerror;
-	txc->esterror = tx32.esterror;
-	txc->status = tx32.status;
-	txc->constant = tx32.constant;
-	txc->precision = tx32.precision;
-	txc->tolerance = tx32.tolerance;
-	txc->time.tv_sec = tx32.time.tv_sec;
-	txc->time.tv_usec = tx32.time.tv_usec;
-	txc->tick = tx32.tick;
-	txc->ppsfreq = tx32.ppsfreq;
-	txc->jitter = tx32.jitter;
-	txc->shift = tx32.shift;
-	txc->stabil = tx32.stabil;
-	txc->jitcnt = tx32.jitcnt;
-	txc->calcnt = tx32.calcnt;
-	txc->errcnt = tx32.errcnt;
-	txc->stbcnt = tx32.stbcnt;
-
-	return 0;
-}
-
-int compat_put_timex(struct compat_timex __user *utp, const struct timex *txc)
-{
-	struct compat_timex tx32;
-
-	memset(&tx32, 0, sizeof(struct compat_timex));
-	tx32.modes = txc->modes;
-	tx32.offset = txc->offset;
-	tx32.freq = txc->freq;
-	tx32.maxerror = txc->maxerror;
-	tx32.esterror = txc->esterror;
-	tx32.status = txc->status;
-	tx32.constant = txc->constant;
-	tx32.precision = txc->precision;
-	tx32.tolerance = txc->tolerance;
-	tx32.time.tv_sec = txc->time.tv_sec;
-	tx32.time.tv_usec = txc->time.tv_usec;
-	tx32.tick = txc->tick;
-	tx32.ppsfreq = txc->ppsfreq;
-	tx32.jitter = txc->jitter;
-	tx32.shift = txc->shift;
-	tx32.stabil = txc->stabil;
-	tx32.jitcnt = txc->jitcnt;
-	tx32.calcnt = txc->calcnt;
-	tx32.errcnt = txc->errcnt;
-	tx32.stbcnt = txc->stbcnt;
-	tx32.tai = txc->tai;
-	if (copy_to_user(utp, &tx32, sizeof(struct compat_timex)))
-		return -EFAULT;
-	return 0;
-}
-
 static int __compat_get_timeval(struct timeval *tv, const struct compat_timeval __user *ctv)
 {
 	return (!access_ok(VERIFY_READ, ctv, sizeof(*ctv)) ||
diff --git a/kernel/time/time.c b/kernel/time/time.c
index ccdb351277ee..c40cce820380 100644
--- a/kernel/time/time.c
+++ b/kernel/time/time.c
@@ -978,3 +978,66 @@ int put_compat_itimerspec64(const struct itimerspec64 *its,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(put_compat_itimerspec64);
+
+int compat_get_timex(struct timex *txc, const struct compat_timex __user *utp)
+{
+	struct compat_timex tx32;
+
+	memset(txc, 0, sizeof(struct timex));
+	if (copy_from_user(&tx32, utp, sizeof(struct compat_timex)))
+		return -EFAULT;
+
+	txc->modes = tx32.modes;
+	txc->offset = tx32.offset;
+	txc->freq = tx32.freq;
+	txc->maxerror = tx32.maxerror;
+	txc->esterror = tx32.esterror;
+	txc->status = tx32.status;
+	txc->constant = tx32.constant;
+	txc->precision = tx32.precision;
+	txc->tolerance = tx32.tolerance;
+	txc->time.tv_sec = tx32.time.tv_sec;
+	txc->time.tv_usec = tx32.time.tv_usec;
+	txc->tick = tx32.tick;
+	txc->ppsfreq = tx32.ppsfreq;
+	txc->jitter = tx32.jitter;
+	txc->shift = tx32.shift;
+	txc->stabil = tx32.stabil;
+	txc->jitcnt = tx32.jitcnt;
+	txc->calcnt = tx32.calcnt;
+	txc->errcnt = tx32.errcnt;
+	txc->stbcnt = tx32.stbcnt;
+
+	return 0;
+}
+
+int compat_put_timex(struct compat_timex __user *utp, const struct timex *txc)
+{
+	struct compat_timex tx32;
+
+	memset(&tx32, 0, sizeof(struct compat_timex));
+	tx32.modes = txc->modes;
+	tx32.offset = txc->offset;
+	tx32.freq = txc->freq;
+	tx32.maxerror = txc->maxerror;
+	tx32.esterror = txc->esterror;
+	tx32.status = txc->status;
+	tx32.constant = txc->constant;
+	tx32.precision = txc->precision;
+	tx32.tolerance = txc->tolerance;
+	tx32.time.tv_sec = txc->time.tv_sec;
+	tx32.time.tv_usec = txc->time.tv_usec;
+	tx32.tick = txc->tick;
+	tx32.ppsfreq = txc->ppsfreq;
+	tx32.jitter = txc->jitter;
+	tx32.shift = txc->shift;
+	tx32.stabil = txc->stabil;
+	tx32.jitcnt = txc->jitcnt;
+	tx32.calcnt = txc->calcnt;
+	tx32.errcnt = txc->errcnt;
+	tx32.stbcnt = txc->stbcnt;
+	tx32.tai = txc->tai;
+	if (copy_to_user(utp, &tx32, sizeof(struct compat_timex)))
+		return -EFAULT;
+	return 0;
+}
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-03  5:44 ` [PATCH 3/6] timex: prepare compat helpers for y2038 changes Deepa Dinamani
@ 2018-07-03  5:44   ` Deepa Dinamani
  2018-07-05  7:06   ` kbuild test robot
  1 sibling, 0 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-03  5:44 UTC (permalink / raw)
  To: tglx, linux-kernel; +Cc: arnd, y2038, linux-arch

Move struct compat_timex to compat_time.h.
This is in line with other compat time structures that are planned
to be deprecated eventually.

Also enable compat_get/put_timex helpers unconditionally.

Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
Cc: linux-arch@vger.kernel.org
---
 include/asm-generic/compat.h |  8 ++++-
 include/linux/compat.h       | 33 -------------------
 include/linux/compat_time.h  | 34 +++++++++++++++++++
 kernel/compat.c              | 63 ------------------------------------
 kernel/time/time.c           | 63 ++++++++++++++++++++++++++++++++++++
 5 files changed, 104 insertions(+), 97 deletions(-)

diff --git a/include/asm-generic/compat.h b/include/asm-generic/compat.h
index 28819451b6d1..d2876f43484f 100644
--- a/include/asm-generic/compat.h
+++ b/include/asm-generic/compat.h
@@ -1,3 +1,9 @@
 /* SPDX-License-Identifier: GPL-2.0 */
 
-/* This is an empty stub for 32-bit-only architectures */
+/* This is a stub for 32-bit-only architectures */
+
+#include <linux/types.h>
+
+typedef s32		compat_int_t;
+typedef s32		compat_long_t;
+typedef u32		compat_uint_t;
diff --git a/include/linux/compat.h b/include/linux/compat.h
index df45ee8413d6..2ee58590aeae 100644
--- a/include/linux/compat.h
+++ b/include/linux/compat.h
@@ -19,8 +19,6 @@
 #include <linux/uaccess.h>
 #include <linux/unistd.h>
 
-#include <asm/compat.h>
-
 #ifdef CONFIG_COMPAT
 #include <asm/siginfo.h>
 #include <asm/signal.h>
@@ -136,37 +134,6 @@ struct compat_tms {
 	compat_clock_t		tms_cstime;
 };
 
-struct compat_timex {
-	compat_uint_t modes;
-	compat_long_t offset;
-	compat_long_t freq;
-	compat_long_t maxerror;
-	compat_long_t esterror;
-	compat_int_t status;
-	compat_long_t constant;
-	compat_long_t precision;
-	compat_long_t tolerance;
-	struct compat_timeval time;
-	compat_long_t tick;
-	compat_long_t ppsfreq;
-	compat_long_t jitter;
-	compat_int_t shift;
-	compat_long_t stabil;
-	compat_long_t jitcnt;
-	compat_long_t calcnt;
-	compat_long_t errcnt;
-	compat_long_t stbcnt;
-	compat_int_t tai;
-
-	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
-	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
-	compat_int_t:32; compat_int_t:32; compat_int_t:32;
-};
-
-struct timex;
-int compat_get_timex(struct timex *, const struct compat_timex __user *);
-int compat_put_timex(struct compat_timex __user *, const struct timex *);
-
 #define _COMPAT_NSIG_WORDS	(_COMPAT_NSIG / _COMPAT_NSIG_BPW)
 
 typedef struct {
diff --git a/include/linux/compat_time.h b/include/linux/compat_time.h
index e70bfd1d2c3f..f04454e1b863 100644
--- a/include/linux/compat_time.h
+++ b/include/linux/compat_time.h
@@ -7,6 +7,9 @@
 
 typedef s32		compat_time_t;
 
+/* TODO: Move to linux/compat.h when this file is deleted. */
+#include <asm/compat.h>
+
 struct compat_timespec {
 	compat_time_t	tv_sec;
 	s32		tv_nsec;
@@ -22,11 +25,42 @@ struct compat_itimerspec {
 	struct compat_timespec it_value;
 };
 
+struct compat_timex {
+	compat_uint_t modes;
+	compat_long_t offset;
+	compat_long_t freq;
+	compat_long_t maxerror;
+	compat_long_t esterror;
+	compat_int_t status;
+	compat_long_t constant;
+	compat_long_t precision;
+	compat_long_t tolerance;
+	struct compat_timeval time;
+	compat_long_t tick;
+	compat_long_t ppsfreq;
+	compat_long_t jitter;
+	compat_int_t shift;
+	compat_long_t stabil;
+	compat_long_t jitcnt;
+	compat_long_t calcnt;
+	compat_long_t errcnt;
+	compat_long_t stbcnt;
+	compat_int_t tai;
+
+	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
+	compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
+	compat_int_t:32; compat_int_t:32; compat_int_t:32;
+};
+
+
 extern int compat_get_timespec64(struct timespec64 *, const void __user *);
 extern int compat_put_timespec64(const struct timespec64 *, void __user *);
 extern int get_compat_itimerspec64(struct itimerspec64 *its,
 			const struct compat_itimerspec __user *uits);
 extern int put_compat_itimerspec64(const struct itimerspec64 *its,
 			struct compat_itimerspec __user *uits);
+struct timex;
+int compat_get_timex(struct timex *, const struct compat_timex __user *);
+int compat_put_timex(struct compat_timex __user *, const struct timex *);
 
 #endif /* _LINUX_COMPAT_TIME_H */
diff --git a/kernel/compat.c b/kernel/compat.c
index 8e40efc2928a..e1de768e5607 100644
--- a/kernel/compat.c
+++ b/kernel/compat.c
@@ -30,69 +30,6 @@
 
 #include <linux/uaccess.h>
 
-int compat_get_timex(struct timex *txc, const struct compat_timex __user *utp)
-{
-	struct compat_timex tx32;
-
-	memset(txc, 0, sizeof(struct timex));
-	if (copy_from_user(&tx32, utp, sizeof(struct compat_timex)))
-		return -EFAULT;
-
-	txc->modes = tx32.modes;
-	txc->offset = tx32.offset;
-	txc->freq = tx32.freq;
-	txc->maxerror = tx32.maxerror;
-	txc->esterror = tx32.esterror;
-	txc->status = tx32.status;
-	txc->constant = tx32.constant;
-	txc->precision = tx32.precision;
-	txc->tolerance = tx32.tolerance;
-	txc->time.tv_sec = tx32.time.tv_sec;
-	txc->time.tv_usec = tx32.time.tv_usec;
-	txc->tick = tx32.tick;
-	txc->ppsfreq = tx32.ppsfreq;
-	txc->jitter = tx32.jitter;
-	txc->shift = tx32.shift;
-	txc->stabil = tx32.stabil;
-	txc->jitcnt = tx32.jitcnt;
-	txc->calcnt = tx32.calcnt;
-	txc->errcnt = tx32.errcnt;
-	txc->stbcnt = tx32.stbcnt;
-
-	return 0;
-}
-
-int compat_put_timex(struct compat_timex __user *utp, const struct timex *txc)
-{
-	struct compat_timex tx32;
-
-	memset(&tx32, 0, sizeof(struct compat_timex));
-	tx32.modes = txc->modes;
-	tx32.offset = txc->offset;
-	tx32.freq = txc->freq;
-	tx32.maxerror = txc->maxerror;
-	tx32.esterror = txc->esterror;
-	tx32.status = txc->status;
-	tx32.constant = txc->constant;
-	tx32.precision = txc->precision;
-	tx32.tolerance = txc->tolerance;
-	tx32.time.tv_sec = txc->time.tv_sec;
-	tx32.time.tv_usec = txc->time.tv_usec;
-	tx32.tick = txc->tick;
-	tx32.ppsfreq = txc->ppsfreq;
-	tx32.jitter = txc->jitter;
-	tx32.shift = txc->shift;
-	tx32.stabil = txc->stabil;
-	tx32.jitcnt = txc->jitcnt;
-	tx32.calcnt = txc->calcnt;
-	tx32.errcnt = txc->errcnt;
-	tx32.stbcnt = txc->stbcnt;
-	tx32.tai = txc->tai;
-	if (copy_to_user(utp, &tx32, sizeof(struct compat_timex)))
-		return -EFAULT;
-	return 0;
-}
-
 static int __compat_get_timeval(struct timeval *tv, const struct compat_timeval __user *ctv)
 {
 	return (!access_ok(VERIFY_READ, ctv, sizeof(*ctv)) ||
diff --git a/kernel/time/time.c b/kernel/time/time.c
index ccdb351277ee..c40cce820380 100644
--- a/kernel/time/time.c
+++ b/kernel/time/time.c
@@ -978,3 +978,66 @@ int put_compat_itimerspec64(const struct itimerspec64 *its,
 	return 0;
 }
 EXPORT_SYMBOL_GPL(put_compat_itimerspec64);
+
+int compat_get_timex(struct timex *txc, const struct compat_timex __user *utp)
+{
+	struct compat_timex tx32;
+
+	memset(txc, 0, sizeof(struct timex));
+	if (copy_from_user(&tx32, utp, sizeof(struct compat_timex)))
+		return -EFAULT;
+
+	txc->modes = tx32.modes;
+	txc->offset = tx32.offset;
+	txc->freq = tx32.freq;
+	txc->maxerror = tx32.maxerror;
+	txc->esterror = tx32.esterror;
+	txc->status = tx32.status;
+	txc->constant = tx32.constant;
+	txc->precision = tx32.precision;
+	txc->tolerance = tx32.tolerance;
+	txc->time.tv_sec = tx32.time.tv_sec;
+	txc->time.tv_usec = tx32.time.tv_usec;
+	txc->tick = tx32.tick;
+	txc->ppsfreq = tx32.ppsfreq;
+	txc->jitter = tx32.jitter;
+	txc->shift = tx32.shift;
+	txc->stabil = tx32.stabil;
+	txc->jitcnt = tx32.jitcnt;
+	txc->calcnt = tx32.calcnt;
+	txc->errcnt = tx32.errcnt;
+	txc->stbcnt = tx32.stbcnt;
+
+	return 0;
+}
+
+int compat_put_timex(struct compat_timex __user *utp, const struct timex *txc)
+{
+	struct compat_timex tx32;
+
+	memset(&tx32, 0, sizeof(struct compat_timex));
+	tx32.modes = txc->modes;
+	tx32.offset = txc->offset;
+	tx32.freq = txc->freq;
+	tx32.maxerror = txc->maxerror;
+	tx32.esterror = txc->esterror;
+	tx32.status = txc->status;
+	tx32.constant = txc->constant;
+	tx32.precision = txc->precision;
+	tx32.tolerance = txc->tolerance;
+	tx32.time.tv_sec = txc->time.tv_sec;
+	tx32.time.tv_usec = txc->time.tv_usec;
+	tx32.tick = txc->tick;
+	tx32.ppsfreq = txc->ppsfreq;
+	tx32.jitter = txc->jitter;
+	tx32.shift = txc->shift;
+	tx32.stabil = txc->stabil;
+	tx32.jitcnt = txc->jitcnt;
+	tx32.calcnt = txc->calcnt;
+	tx32.errcnt = txc->errcnt;
+	tx32.stbcnt = txc->stbcnt;
+	tx32.tai = txc->tai;
+	if (copy_to_user(utp, &tx32, sizeof(struct compat_timex)))
+		return -EFAULT;
+	return 0;
+}
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-03  5:44 ` [PATCH 3/6] timex: prepare compat helpers for y2038 changes Deepa Dinamani
  2018-07-03  5:44   ` Deepa Dinamani
@ 2018-07-05  7:06   ` kbuild test robot
  2018-07-05  7:06     ` kbuild test robot
  2018-07-05 20:06     ` Deepa Dinamani
  1 sibling, 2 replies; 14+ messages in thread
From: kbuild test robot @ 2018-07-05  7:06 UTC (permalink / raw)
  To: Deepa Dinamani; +Cc: kbuild-all, tglx, linux-kernel, arnd, y2038, linux-arch

[-- Attachment #1: Type: text/plain, Size: 4651 bytes --]

Hi Deepa,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on tip/timers/core]
[also build test ERROR on next-20180704]
[cannot apply to linus/master v4.18-rc3]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Deepa-Dinamani/arm64-Make-basic-compat_-types-always-available/20180703-151440
config: riscv-defconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 8.1.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=8.1.0 make.cross ARCH=riscv 

All errors (new ones prefixed by >>):

   In file included from include/linux/compat.h:10,
                    from include/linux/ethtool.h:17,
                    from include/linux/netdevice.h:41,
                    from drivers/net/mii.c:32:
>> include/linux/compat_time.h:29:2: error: unknown type name 'compat_uint_t'
     compat_uint_t modes;
     ^~~~~~~~~~~~~
>> include/linux/compat_time.h:30:2: error: unknown type name 'compat_long_t'
     compat_long_t offset;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:31:2: error: unknown type name 'compat_long_t'
     compat_long_t freq;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:32:2: error: unknown type name 'compat_long_t'
     compat_long_t maxerror;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:33:2: error: unknown type name 'compat_long_t'
     compat_long_t esterror;
     ^~~~~~~~~~~~~
>> include/linux/compat_time.h:34:2: error: unknown type name 'compat_int_t'
     compat_int_t status;
     ^~~~~~~~~~~~
   include/linux/compat_time.h:35:2: error: unknown type name 'compat_long_t'
     compat_long_t constant;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:36:2: error: unknown type name 'compat_long_t'
     compat_long_t precision;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:37:2: error: unknown type name 'compat_long_t'
     compat_long_t tolerance;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:39:2: error: unknown type name 'compat_long_t'
     compat_long_t tick;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:40:2: error: unknown type name 'compat_long_t'
     compat_long_t ppsfreq;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:41:2: error: unknown type name 'compat_long_t'
     compat_long_t jitter;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:42:2: error: unknown type name 'compat_int_t'
     compat_int_t shift;
     ^~~~~~~~~~~~
   include/linux/compat_time.h:43:2: error: unknown type name 'compat_long_t'
     compat_long_t stabil;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:44:2: error: unknown type name 'compat_long_t'
     compat_long_t jitcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:45:2: error: unknown type name 'compat_long_t'
     compat_long_t calcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:46:2: error: unknown type name 'compat_long_t'
     compat_long_t errcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:47:2: error: unknown type name 'compat_long_t'
     compat_long_t stbcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:48:2: error: unknown type name 'compat_int_t'
     compat_int_t tai;
     ^~~~~~~~~~~~
>> include/linux/compat_time.h:50:2: error: expected specifier-qualifier-list before 'compat_int_t'
     compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
     ^~~~~~~~~~~~

vim +/compat_uint_t +29 include/linux/compat_time.h

    27	
    28	struct compat_timex {
  > 29		compat_uint_t modes;
  > 30		compat_long_t offset;
  > 31		compat_long_t freq;
    32		compat_long_t maxerror;
    33		compat_long_t esterror;
  > 34		compat_int_t status;
    35		compat_long_t constant;
    36		compat_long_t precision;
    37		compat_long_t tolerance;
    38		struct compat_timeval time;
    39		compat_long_t tick;
    40		compat_long_t ppsfreq;
    41		compat_long_t jitter;
    42		compat_int_t shift;
    43		compat_long_t stabil;
    44		compat_long_t jitcnt;
    45		compat_long_t calcnt;
  > 46		compat_long_t errcnt;
    47		compat_long_t stbcnt;
    48		compat_int_t tai;
    49	
  > 50		compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
    51		compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
    52		compat_int_t:32; compat_int_t:32; compat_int_t:32;
    53	};
    54	
    55	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 16325 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05  7:06   ` kbuild test robot
@ 2018-07-05  7:06     ` kbuild test robot
  2018-07-05 20:06     ` Deepa Dinamani
  1 sibling, 0 replies; 14+ messages in thread
From: kbuild test robot @ 2018-07-05  7:06 UTC (permalink / raw)
  To: Deepa Dinamani; +Cc: kbuild-all, tglx, linux-kernel, arnd, y2038, linux-arch

[-- Attachment #1: Type: text/plain, Size: 4651 bytes --]

Hi Deepa,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on tip/timers/core]
[also build test ERROR on next-20180704]
[cannot apply to linus/master v4.18-rc3]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url:    https://github.com/0day-ci/linux/commits/Deepa-Dinamani/arm64-Make-basic-compat_-types-always-available/20180703-151440
config: riscv-defconfig (attached as .config)
compiler: riscv64-linux-gcc (GCC) 8.1.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # save the attached .config to linux build tree
        GCC_VERSION=8.1.0 make.cross ARCH=riscv 

All errors (new ones prefixed by >>):

   In file included from include/linux/compat.h:10,
                    from include/linux/ethtool.h:17,
                    from include/linux/netdevice.h:41,
                    from drivers/net/mii.c:32:
>> include/linux/compat_time.h:29:2: error: unknown type name 'compat_uint_t'
     compat_uint_t modes;
     ^~~~~~~~~~~~~
>> include/linux/compat_time.h:30:2: error: unknown type name 'compat_long_t'
     compat_long_t offset;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:31:2: error: unknown type name 'compat_long_t'
     compat_long_t freq;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:32:2: error: unknown type name 'compat_long_t'
     compat_long_t maxerror;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:33:2: error: unknown type name 'compat_long_t'
     compat_long_t esterror;
     ^~~~~~~~~~~~~
>> include/linux/compat_time.h:34:2: error: unknown type name 'compat_int_t'
     compat_int_t status;
     ^~~~~~~~~~~~
   include/linux/compat_time.h:35:2: error: unknown type name 'compat_long_t'
     compat_long_t constant;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:36:2: error: unknown type name 'compat_long_t'
     compat_long_t precision;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:37:2: error: unknown type name 'compat_long_t'
     compat_long_t tolerance;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:39:2: error: unknown type name 'compat_long_t'
     compat_long_t tick;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:40:2: error: unknown type name 'compat_long_t'
     compat_long_t ppsfreq;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:41:2: error: unknown type name 'compat_long_t'
     compat_long_t jitter;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:42:2: error: unknown type name 'compat_int_t'
     compat_int_t shift;
     ^~~~~~~~~~~~
   include/linux/compat_time.h:43:2: error: unknown type name 'compat_long_t'
     compat_long_t stabil;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:44:2: error: unknown type name 'compat_long_t'
     compat_long_t jitcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:45:2: error: unknown type name 'compat_long_t'
     compat_long_t calcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:46:2: error: unknown type name 'compat_long_t'
     compat_long_t errcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:47:2: error: unknown type name 'compat_long_t'
     compat_long_t stbcnt;
     ^~~~~~~~~~~~~
   include/linux/compat_time.h:48:2: error: unknown type name 'compat_int_t'
     compat_int_t tai;
     ^~~~~~~~~~~~
>> include/linux/compat_time.h:50:2: error: expected specifier-qualifier-list before 'compat_int_t'
     compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
     ^~~~~~~~~~~~

vim +/compat_uint_t +29 include/linux/compat_time.h

    27	
    28	struct compat_timex {
  > 29		compat_uint_t modes;
  > 30		compat_long_t offset;
  > 31		compat_long_t freq;
    32		compat_long_t maxerror;
    33		compat_long_t esterror;
  > 34		compat_int_t status;
    35		compat_long_t constant;
    36		compat_long_t precision;
    37		compat_long_t tolerance;
    38		struct compat_timeval time;
    39		compat_long_t tick;
    40		compat_long_t ppsfreq;
    41		compat_long_t jitter;
    42		compat_int_t shift;
    43		compat_long_t stabil;
    44		compat_long_t jitcnt;
    45		compat_long_t calcnt;
  > 46		compat_long_t errcnt;
    47		compat_long_t stbcnt;
    48		compat_int_t tai;
    49	
  > 50		compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
    51		compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
    52		compat_int_t:32; compat_int_t:32; compat_int_t:32;
    53	};
    54	
    55	

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 16325 bytes --]

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05  7:06   ` kbuild test robot
  2018-07-05  7:06     ` kbuild test robot
@ 2018-07-05 20:06     ` Deepa Dinamani
  2018-07-05 20:06       ` Deepa Dinamani
  2018-07-05 20:33       ` Thomas Gleixner
  1 sibling, 2 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-05 20:06 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Thomas Gleixner, Linux Kernel Mailing List,
	Arnd Bergmann, y2038 Mailman List, linux-arch, palmer,
	linux-riscv

The error is fixed with the following patch that goes in before patch
3/6 above in the series.
Let me know if I should post a v2 instead.

Thanks,
Deepa


commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
Author: Deepa Dinamani <deepa.kernel@gmail.com>
Date:   Thu Jul 5 11:47:25 2018 -0700

    riscv: Include asm-generic/compat.h

    riscv does not enable CONFIG_COMPAT in default configurations:
    defconfig, allmodconfig and nomodconfig.
    And hence does not inlude definitions for compat data types.

    Now that time syscalls are being reused in non CONFIG_COMPAT
    modes, include asm-generic definitions for riscv.

    Alternative would be to make compat_time.h to be conditional on
    CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
    asm/compat.h include the generic version instead.

    Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
    Cc: palmer@sifive.com
    Cc: linux-riscv@lists.infradead.org

diff --git a/arch/riscv/include/asm/compat.h b/arch/riscv/include/asm/compat.h
index 044aecff8854..e78c5054e178 100644
--- a/arch/riscv/include/asm/compat.h
+++ b/arch/riscv/include/asm/compat.h
@@ -15,6 +15,9 @@
  */
 #ifndef __ASM_COMPAT_H
 #define __ASM_COMPAT_H
+
+#include <asm-generic/compat.h>
+
 #ifdef CONFIG_COMPAT

 #if defined(CONFIG_64BIT)

On Thu, Jul 5, 2018 at 12:06 AM, kbuild test robot <lkp@intel.com> wrote:
> Hi Deepa,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on tip/timers/core]
> [also build test ERROR on next-20180704]
> [cannot apply to linus/master v4.18-rc3]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/Deepa-Dinamani/arm64-Make-basic-compat_-types-always-available/20180703-151440
> config: riscv-defconfig (attached as .config)
> compiler: riscv64-linux-gcc (GCC) 8.1.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         GCC_VERSION=8.1.0 make.cross ARCH=riscv
>
> All errors (new ones prefixed by >>):
>
>    In file included from include/linux/compat.h:10,
>                     from include/linux/ethtool.h:17,
>                     from include/linux/netdevice.h:41,
>                     from drivers/net/mii.c:32:
>>> include/linux/compat_time.h:29:2: error: unknown type name 'compat_uint_t'
>      compat_uint_t modes;
>      ^~~~~~~~~~~~~
>>> include/linux/compat_time.h:30:2: error: unknown type name 'compat_long_t'
>      compat_long_t offset;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:31:2: error: unknown type name 'compat_long_t'
>      compat_long_t freq;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:32:2: error: unknown type name 'compat_long_t'
>      compat_long_t maxerror;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:33:2: error: unknown type name 'compat_long_t'
>      compat_long_t esterror;
>      ^~~~~~~~~~~~~
>>> include/linux/compat_time.h:34:2: error: unknown type name 'compat_int_t'
>      compat_int_t status;
>      ^~~~~~~~~~~~
>    include/linux/compat_time.h:35:2: error: unknown type name 'compat_long_t'
>      compat_long_t constant;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:36:2: error: unknown type name 'compat_long_t'
>      compat_long_t precision;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:37:2: error: unknown type name 'compat_long_t'
>      compat_long_t tolerance;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:39:2: error: unknown type name 'compat_long_t'
>      compat_long_t tick;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:40:2: error: unknown type name 'compat_long_t'
>      compat_long_t ppsfreq;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:41:2: error: unknown type name 'compat_long_t'
>      compat_long_t jitter;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:42:2: error: unknown type name 'compat_int_t'
>      compat_int_t shift;
>      ^~~~~~~~~~~~
>    include/linux/compat_time.h:43:2: error: unknown type name 'compat_long_t'
>      compat_long_t stabil;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:44:2: error: unknown type name 'compat_long_t'
>      compat_long_t jitcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:45:2: error: unknown type name 'compat_long_t'
>      compat_long_t calcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:46:2: error: unknown type name 'compat_long_t'
>      compat_long_t errcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:47:2: error: unknown type name 'compat_long_t'
>      compat_long_t stbcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:48:2: error: unknown type name 'compat_int_t'
>      compat_int_t tai;
>      ^~~~~~~~~~~~
>>> include/linux/compat_time.h:50:2: error: expected specifier-qualifier-list before 'compat_int_t'
>      compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
>      ^~~~~~~~~~~~
>
> vim +/compat_uint_t +29 include/linux/compat_time.h
>
>     27
>     28  struct compat_timex {
>   > 29          compat_uint_t modes;
>   > 30          compat_long_t offset;
>   > 31          compat_long_t freq;
>     32          compat_long_t maxerror;
>     33          compat_long_t esterror;
>   > 34          compat_int_t status;
>     35          compat_long_t constant;
>     36          compat_long_t precision;
>     37          compat_long_t tolerance;
>     38          struct compat_timeval time;
>     39          compat_long_t tick;
>     40          compat_long_t ppsfreq;
>     41          compat_long_t jitter;
>     42          compat_int_t shift;
>     43          compat_long_t stabil;
>     44          compat_long_t jitcnt;
>     45          compat_long_t calcnt;
>   > 46          compat_long_t errcnt;
>     47          compat_long_t stbcnt;
>     48          compat_int_t tai;
>     49
>   > 50          compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
>     51          compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
>     52          compat_int_t:32; compat_int_t:32; compat_int_t:32;
>     53  };
>     54
>     55
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05 20:06     ` Deepa Dinamani
@ 2018-07-05 20:06       ` Deepa Dinamani
  2018-07-05 20:33       ` Thomas Gleixner
  1 sibling, 0 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-05 20:06 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Thomas Gleixner, Linux Kernel Mailing List,
	Arnd Bergmann, y2038 Mailman List, linux-arch, palmer,
	linux-riscv

The error is fixed with the following patch that goes in before patch
3/6 above in the series.
Let me know if I should post a v2 instead.

Thanks,
Deepa


commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
Author: Deepa Dinamani <deepa.kernel@gmail.com>
Date:   Thu Jul 5 11:47:25 2018 -0700

    riscv: Include asm-generic/compat.h

    riscv does not enable CONFIG_COMPAT in default configurations:
    defconfig, allmodconfig and nomodconfig.
    And hence does not inlude definitions for compat data types.

    Now that time syscalls are being reused in non CONFIG_COMPAT
    modes, include asm-generic definitions for riscv.

    Alternative would be to make compat_time.h to be conditional on
    CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
    asm/compat.h include the generic version instead.

    Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
    Cc: palmer@sifive.com
    Cc: linux-riscv@lists.infradead.org

diff --git a/arch/riscv/include/asm/compat.h b/arch/riscv/include/asm/compat.h
index 044aecff8854..e78c5054e178 100644
--- a/arch/riscv/include/asm/compat.h
+++ b/arch/riscv/include/asm/compat.h
@@ -15,6 +15,9 @@
  */
 #ifndef __ASM_COMPAT_H
 #define __ASM_COMPAT_H
+
+#include <asm-generic/compat.h>
+
 #ifdef CONFIG_COMPAT

 #if defined(CONFIG_64BIT)

On Thu, Jul 5, 2018 at 12:06 AM, kbuild test robot <lkp@intel.com> wrote:
> Hi Deepa,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on tip/timers/core]
> [also build test ERROR on next-20180704]
> [cannot apply to linus/master v4.18-rc3]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url:    https://github.com/0day-ci/linux/commits/Deepa-Dinamani/arm64-Make-basic-compat_-types-always-available/20180703-151440
> config: riscv-defconfig (attached as .config)
> compiler: riscv64-linux-gcc (GCC) 8.1.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         # save the attached .config to linux build tree
>         GCC_VERSION=8.1.0 make.cross ARCH=riscv
>
> All errors (new ones prefixed by >>):
>
>    In file included from include/linux/compat.h:10,
>                     from include/linux/ethtool.h:17,
>                     from include/linux/netdevice.h:41,
>                     from drivers/net/mii.c:32:
>>> include/linux/compat_time.h:29:2: error: unknown type name 'compat_uint_t'
>      compat_uint_t modes;
>      ^~~~~~~~~~~~~
>>> include/linux/compat_time.h:30:2: error: unknown type name 'compat_long_t'
>      compat_long_t offset;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:31:2: error: unknown type name 'compat_long_t'
>      compat_long_t freq;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:32:2: error: unknown type name 'compat_long_t'
>      compat_long_t maxerror;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:33:2: error: unknown type name 'compat_long_t'
>      compat_long_t esterror;
>      ^~~~~~~~~~~~~
>>> include/linux/compat_time.h:34:2: error: unknown type name 'compat_int_t'
>      compat_int_t status;
>      ^~~~~~~~~~~~
>    include/linux/compat_time.h:35:2: error: unknown type name 'compat_long_t'
>      compat_long_t constant;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:36:2: error: unknown type name 'compat_long_t'
>      compat_long_t precision;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:37:2: error: unknown type name 'compat_long_t'
>      compat_long_t tolerance;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:39:2: error: unknown type name 'compat_long_t'
>      compat_long_t tick;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:40:2: error: unknown type name 'compat_long_t'
>      compat_long_t ppsfreq;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:41:2: error: unknown type name 'compat_long_t'
>      compat_long_t jitter;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:42:2: error: unknown type name 'compat_int_t'
>      compat_int_t shift;
>      ^~~~~~~~~~~~
>    include/linux/compat_time.h:43:2: error: unknown type name 'compat_long_t'
>      compat_long_t stabil;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:44:2: error: unknown type name 'compat_long_t'
>      compat_long_t jitcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:45:2: error: unknown type name 'compat_long_t'
>      compat_long_t calcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:46:2: error: unknown type name 'compat_long_t'
>      compat_long_t errcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:47:2: error: unknown type name 'compat_long_t'
>      compat_long_t stbcnt;
>      ^~~~~~~~~~~~~
>    include/linux/compat_time.h:48:2: error: unknown type name 'compat_int_t'
>      compat_int_t tai;
>      ^~~~~~~~~~~~
>>> include/linux/compat_time.h:50:2: error: expected specifier-qualifier-list before 'compat_int_t'
>      compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
>      ^~~~~~~~~~~~
>
> vim +/compat_uint_t +29 include/linux/compat_time.h
>
>     27
>     28  struct compat_timex {
>   > 29          compat_uint_t modes;
>   > 30          compat_long_t offset;
>   > 31          compat_long_t freq;
>     32          compat_long_t maxerror;
>     33          compat_long_t esterror;
>   > 34          compat_int_t status;
>     35          compat_long_t constant;
>     36          compat_long_t precision;
>     37          compat_long_t tolerance;
>     38          struct compat_timeval time;
>     39          compat_long_t tick;
>     40          compat_long_t ppsfreq;
>     41          compat_long_t jitter;
>     42          compat_int_t shift;
>     43          compat_long_t stabil;
>     44          compat_long_t jitcnt;
>     45          compat_long_t calcnt;
>   > 46          compat_long_t errcnt;
>     47          compat_long_t stbcnt;
>     48          compat_int_t tai;
>     49
>   > 50          compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
>     51          compat_int_t:32; compat_int_t:32; compat_int_t:32; compat_int_t:32;
>     52          compat_int_t:32; compat_int_t:32; compat_int_t:32;
>     53  };
>     54
>     55
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05 20:06     ` Deepa Dinamani
  2018-07-05 20:06       ` Deepa Dinamani
@ 2018-07-05 20:33       ` Thomas Gleixner
  2018-07-05 20:33         ` Thomas Gleixner
  2018-07-05 21:45         ` Deepa Dinamani
  1 sibling, 2 replies; 14+ messages in thread
From: Thomas Gleixner @ 2018-07-05 20:33 UTC (permalink / raw)
  To: Deepa Dinamani
  Cc: linux-arch, kbuild test robot, Arnd Bergmann, y2038 Mailman List,
	palmer, Linux Kernel Mailing List, kbuild-all, linux-riscv

On Thu, 5 Jul 2018, Deepa Dinamani wrote:

> The error is fixed with the following patch that goes in before patch
> 3/6 above in the series.
> Let me know if I should post a v2 instead.
> 
> Thanks,
> Deepa
> 
> 
> commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
> Author: Deepa Dinamani <deepa.kernel@gmail.com>
> Date:   Thu Jul 5 11:47:25 2018 -0700
> 
>     riscv: Include asm-generic/compat.h
> 
>     riscv does not enable CONFIG_COMPAT in default configurations:
>     defconfig, allmodconfig and nomodconfig.
>     And hence does not inlude definitions for compat data types.
> 
>     Now that time syscalls are being reused in non CONFIG_COMPAT
>     modes, include asm-generic definitions for riscv.
> 
>     Alternative would be to make compat_time.h to be conditional on
>     CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
>     asm/compat.h include the generic version instead.
> 
>     Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
>     Cc: palmer@sifive.com
>     Cc: linux-riscv@lists.infradead.org

Post a real patch please instead of something which I have to cleanup
manually. A V2 of the series is probably the simplest way.

Thanks,

	tglx
_______________________________________________
Y2038 mailing list
Y2038@lists.linaro.org
https://lists.linaro.org/mailman/listinfo/y2038

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05 20:33       ` Thomas Gleixner
@ 2018-07-05 20:33         ` Thomas Gleixner
  2018-07-05 21:45         ` Deepa Dinamani
  1 sibling, 0 replies; 14+ messages in thread
From: Thomas Gleixner @ 2018-07-05 20:33 UTC (permalink / raw)
  To: Deepa Dinamani
  Cc: kbuild test robot, kbuild-all, Linux Kernel Mailing List,
	Arnd Bergmann, y2038 Mailman List, linux-arch, palmer,
	linux-riscv

On Thu, 5 Jul 2018, Deepa Dinamani wrote:

> The error is fixed with the following patch that goes in before patch
> 3/6 above in the series.
> Let me know if I should post a v2 instead.
> 
> Thanks,
> Deepa
> 
> 
> commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
> Author: Deepa Dinamani <deepa.kernel@gmail.com>
> Date:   Thu Jul 5 11:47:25 2018 -0700
> 
>     riscv: Include asm-generic/compat.h
> 
>     riscv does not enable CONFIG_COMPAT in default configurations:
>     defconfig, allmodconfig and nomodconfig.
>     And hence does not inlude definitions for compat data types.
> 
>     Now that time syscalls are being reused in non CONFIG_COMPAT
>     modes, include asm-generic definitions for riscv.
> 
>     Alternative would be to make compat_time.h to be conditional on
>     CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
>     asm/compat.h include the generic version instead.
> 
>     Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
>     Cc: palmer@sifive.com
>     Cc: linux-riscv@lists.infradead.org

Post a real patch please instead of something which I have to cleanup
manually. A V2 of the series is probably the simplest way.

Thanks,

	tglx

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05 20:33       ` Thomas Gleixner
  2018-07-05 20:33         ` Thomas Gleixner
@ 2018-07-05 21:45         ` Deepa Dinamani
  2018-07-05 21:45           ` Deepa Dinamani
  2018-07-06  0:41           ` [kbuild-all] " Philip Li
  1 sibling, 2 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-05 21:45 UTC (permalink / raw)
  To: Thomas Gleixner, kernel test robot
  Cc: kbuild test robot, kbuild-all, Linux Kernel Mailing List,
	Arnd Bergmann, y2038 Mailman List, linux-arch, palmer,
	linux-riscv

Posted v2 now.

Fengguang,

Also the make.cross script pointed to by the kernel test bot is broken
for riscv.

I applied the following fix to compile it.

Pull request: https://github.com/intel/lkp-tests/pull/11

Thanks,
Deepa

On Thu, Jul 5, 2018 at 1:33 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Thu, 5 Jul 2018, Deepa Dinamani wrote:
>
>> The error is fixed with the following patch that goes in before patch
>> 3/6 above in the series.
>> Let me know if I should post a v2 instead.
>>
>> Thanks,
>> Deepa
>>
>>
>> commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
>> Author: Deepa Dinamani <deepa.kernel@gmail.com>
>> Date:   Thu Jul 5 11:47:25 2018 -0700
>>
>>     riscv: Include asm-generic/compat.h
>>
>>     riscv does not enable CONFIG_COMPAT in default configurations:
>>     defconfig, allmodconfig and nomodconfig.
>>     And hence does not inlude definitions for compat data types.
>>
>>     Now that time syscalls are being reused in non CONFIG_COMPAT
>>     modes, include asm-generic definitions for riscv.
>>
>>     Alternative would be to make compat_time.h to be conditional on
>>     CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
>>     asm/compat.h include the generic version instead.
>>
>>     Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
>>     Cc: palmer@sifive.com
>>     Cc: linux-riscv@lists.infradead.org
>
> Post a real patch please instead of something which I have to cleanup
> manually. A V2 of the series is probably the simplest way.
>
> Thanks,
>
>         tglx

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05 21:45         ` Deepa Dinamani
@ 2018-07-05 21:45           ` Deepa Dinamani
  2018-07-06  0:41           ` [kbuild-all] " Philip Li
  1 sibling, 0 replies; 14+ messages in thread
From: Deepa Dinamani @ 2018-07-05 21:45 UTC (permalink / raw)
  To: Thomas Gleixner, kernel test robot
  Cc: kbuild test robot, kbuild-all, Linux Kernel Mailing List,
	Arnd Bergmann, y2038 Mailman List, linux-arch, palmer,
	linux-riscv

Posted v2 now.

Fengguang,

Also the make.cross script pointed to by the kernel test bot is broken
for riscv.

I applied the following fix to compile it.

Pull request: https://github.com/intel/lkp-tests/pull/11

Thanks,
Deepa

On Thu, Jul 5, 2018 at 1:33 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> On Thu, 5 Jul 2018, Deepa Dinamani wrote:
>
>> The error is fixed with the following patch that goes in before patch
>> 3/6 above in the series.
>> Let me know if I should post a v2 instead.
>>
>> Thanks,
>> Deepa
>>
>>
>> commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
>> Author: Deepa Dinamani <deepa.kernel@gmail.com>
>> Date:   Thu Jul 5 11:47:25 2018 -0700
>>
>>     riscv: Include asm-generic/compat.h
>>
>>     riscv does not enable CONFIG_COMPAT in default configurations:
>>     defconfig, allmodconfig and nomodconfig.
>>     And hence does not inlude definitions for compat data types.
>>
>>     Now that time syscalls are being reused in non CONFIG_COMPAT
>>     modes, include asm-generic definitions for riscv.
>>
>>     Alternative would be to make compat_time.h to be conditional on
>>     CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
>>     asm/compat.h include the generic version instead.
>>
>>     Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
>>     Cc: palmer@sifive.com
>>     Cc: linux-riscv@lists.infradead.org
>
> Post a real patch please instead of something which I have to cleanup
> manually. A V2 of the series is probably the simplest way.
>
> Thanks,
>
>         tglx

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [kbuild-all] [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-05 21:45         ` Deepa Dinamani
  2018-07-05 21:45           ` Deepa Dinamani
@ 2018-07-06  0:41           ` Philip Li
  2018-07-06  0:41             ` Philip Li
  1 sibling, 1 reply; 14+ messages in thread
From: Philip Li @ 2018-07-06  0:41 UTC (permalink / raw)
  To: Deepa Dinamani
  Cc: Thomas Gleixner, kernel test robot, linux-arch, kbuild test robot,
	Arnd Bergmann, y2038 Mailman List, palmer,
	Linux Kernel Mailing List, kbuild-all, linux-riscv

On Thu, Jul 05, 2018 at 02:45:05PM -0700, Deepa Dinamani wrote:
> Posted v2 now.
> 
> Fengguang,
> 
> Also the make.cross script pointed to by the kernel test bot is broken
> for riscv.
> 
> I applied the following fix to compile it.
> 
> Pull request: https://github.com/intel/lkp-tests/pull/11
thanks Deepa, i will follow up with the pull request to merge it.

> 
> Thanks,
> Deepa
> 
> On Thu, Jul 5, 2018 at 1:33 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> > On Thu, 5 Jul 2018, Deepa Dinamani wrote:
> >
> >> The error is fixed with the following patch that goes in before patch
> >> 3/6 above in the series.
> >> Let me know if I should post a v2 instead.
> >>
> >> Thanks,
> >> Deepa
> >>
> >>
> >> commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
> >> Author: Deepa Dinamani <deepa.kernel@gmail.com>
> >> Date:   Thu Jul 5 11:47:25 2018 -0700
> >>
> >>     riscv: Include asm-generic/compat.h
> >>
> >>     riscv does not enable CONFIG_COMPAT in default configurations:
> >>     defconfig, allmodconfig and nomodconfig.
> >>     And hence does not inlude definitions for compat data types.
> >>
> >>     Now that time syscalls are being reused in non CONFIG_COMPAT
> >>     modes, include asm-generic definitions for riscv.
> >>
> >>     Alternative would be to make compat_time.h to be conditional on
> >>     CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
> >>     asm/compat.h include the generic version instead.
> >>
> >>     Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
> >>     Cc: palmer@sifive.com
> >>     Cc: linux-riscv@lists.infradead.org
> >
> > Post a real patch please instead of something which I have to cleanup
> > manually. A V2 of the series is probably the simplest way.
> >
> > Thanks,
> >
> >         tglx
> _______________________________________________
> kbuild-all mailing list
> kbuild-all@lists.01.org
> https://lists.01.org/mailman/listinfo/kbuild-all

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [kbuild-all] [PATCH 3/6] timex: prepare compat helpers for y2038 changes
  2018-07-06  0:41           ` [kbuild-all] " Philip Li
@ 2018-07-06  0:41             ` Philip Li
  0 siblings, 0 replies; 14+ messages in thread
From: Philip Li @ 2018-07-06  0:41 UTC (permalink / raw)
  To: Deepa Dinamani
  Cc: Thomas Gleixner, kernel test robot, linux-arch, kbuild test robot,
	Arnd Bergmann, y2038 Mailman List, palmer,
	Linux Kernel Mailing List, kbuild-all, linux-riscv

On Thu, Jul 05, 2018 at 02:45:05PM -0700, Deepa Dinamani wrote:
> Posted v2 now.
> 
> Fengguang,
> 
> Also the make.cross script pointed to by the kernel test bot is broken
> for riscv.
> 
> I applied the following fix to compile it.
> 
> Pull request: https://github.com/intel/lkp-tests/pull/11
thanks Deepa, i will follow up with the pull request to merge it.

> 
> Thanks,
> Deepa
> 
> On Thu, Jul 5, 2018 at 1:33 PM, Thomas Gleixner <tglx@linutronix.de> wrote:
> > On Thu, 5 Jul 2018, Deepa Dinamani wrote:
> >
> >> The error is fixed with the following patch that goes in before patch
> >> 3/6 above in the series.
> >> Let me know if I should post a v2 instead.
> >>
> >> Thanks,
> >> Deepa
> >>
> >>
> >> commit bfe4b046ed7f01154aef44fcb77d3f172929ccc2
> >> Author: Deepa Dinamani <deepa.kernel@gmail.com>
> >> Date:   Thu Jul 5 11:47:25 2018 -0700
> >>
> >>     riscv: Include asm-generic/compat.h
> >>
> >>     riscv does not enable CONFIG_COMPAT in default configurations:
> >>     defconfig, allmodconfig and nomodconfig.
> >>     And hence does not inlude definitions for compat data types.
> >>
> >>     Now that time syscalls are being reused in non CONFIG_COMPAT
> >>     modes, include asm-generic definitions for riscv.
> >>
> >>     Alternative would be to make compat_time.h to be conditional on
> >>     CONFIG_COMPAT_32BIT_TIME. But, since riscv is already has an
> >>     asm/compat.h include the generic version instead.
> >>
> >>     Signed-off-by: Deepa Dinamani <deepa.kernel@gmail.com>
> >>     Cc: palmer@sifive.com
> >>     Cc: linux-riscv@lists.infradead.org
> >
> > Post a real patch please instead of something which I have to cleanup
> > manually. A V2 of the series is probably the simplest way.
> >
> > Thanks,
> >
> >         tglx
> _______________________________________________
> kbuild-all mailing list
> kbuild-all@lists.01.org
> https://lists.01.org/mailman/listinfo/kbuild-all

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2018-07-06  0:41 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-07-03  5:44 [PATCH 0/6] Introduce struct __kernel_timex Deepa Dinamani
2018-07-03  5:44 ` Deepa Dinamani
2018-07-03  5:44 ` [PATCH 3/6] timex: prepare compat helpers for y2038 changes Deepa Dinamani
2018-07-03  5:44   ` Deepa Dinamani
2018-07-05  7:06   ` kbuild test robot
2018-07-05  7:06     ` kbuild test robot
2018-07-05 20:06     ` Deepa Dinamani
2018-07-05 20:06       ` Deepa Dinamani
2018-07-05 20:33       ` Thomas Gleixner
2018-07-05 20:33         ` Thomas Gleixner
2018-07-05 21:45         ` Deepa Dinamani
2018-07-05 21:45           ` Deepa Dinamani
2018-07-06  0:41           ` [kbuild-all] " Philip Li
2018-07-06  0:41             ` Philip Li

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox