[PATCHv7 15/33] posix-timers: Make clock_nanosleep() time namespace aware

kbuild test robot lkp at intel.com
Mon Oct 14 04:10:26 UTC 2019


Hi Dmitry,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on linus/master]
[cannot apply to v5.4-rc2 next-20191011]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]

url:    https://github.com/0day-ci/linux/commits/Dmitry-Safonov/kernel-Introduce-Time-Namespace/20191014-075119
config: x86_64-randconfig-s1-201941 (attached as .config)
compiler: gcc-4.9 (Debian 4.9.2-10+deb8u1) 4.9.2
reproduce:
        # save the attached .config to linux build tree
        make ARCH=x86_64 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp at intel.com>

All errors (new ones prefixed by >>):

   kernel//time/posix-stubs.c: In function '__do_sys_clock_nanosleep':
>> kernel//time/posix-stubs.c:153:31: error: 'clockid' undeclared (first use in this function)
      texp = timens_ktime_to_host(clockid, texp);
                                  ^
   kernel//time/posix-stubs.c:153:31: note: each undeclared identifier is reported only once for each function it appears in
   kernel//time/posix-stubs.c: In function '__do_sys_clock_nanosleep_time32':
>> kernel//time/posix-stubs.c:222:2: error: unknown type name 'ktime'
     ktime texp;
     ^
   kernel//time/posix-stubs.c:243:31: error: 'clockid' undeclared (first use in this function)
      texp = timens_ktime_to_host(clockid, texp);
                                  ^

vim +/clockid +153 kernel//time/posix-stubs.c

   126	
   127	SYSCALL_DEFINE4(clock_nanosleep, const clockid_t, which_clock, int, flags,
   128			const struct __kernel_timespec __user *, rqtp,
   129			struct __kernel_timespec __user *, rmtp)
   130	{
   131		struct timespec64 t;
   132		ktime_t texp;
   133	
   134		switch (which_clock) {
   135		case CLOCK_REALTIME:
   136		case CLOCK_MONOTONIC:
   137		case CLOCK_BOOTTIME:
   138			break;
   139		default:
   140			return -EINVAL;
   141		}
   142	
   143		if (get_timespec64(&t, rqtp))
   144			return -EFAULT;
   145		if (!timespec64_valid(&t))
   146			return -EINVAL;
   147		if (flags & TIMER_ABSTIME)
   148			rmtp = NULL;
   149		current->restart_block.nanosleep.type = rmtp ? TT_NATIVE : TT_NONE;
   150		current->restart_block.nanosleep.rmtp = rmtp;
   151		texp = timespec64_to_ktime(t);
   152		if (flags & TIMER_ABSTIME)
 > 153			texp = timens_ktime_to_host(clockid, texp);
   154		return hrtimer_nanosleep(texp, flags & TIMER_ABSTIME ?
   155					 HRTIMER_MODE_ABS : HRTIMER_MODE_REL,
   156					 which_clock);
   157	}
   158	
   159	#ifdef CONFIG_COMPAT
   160	COMPAT_SYS_NI(timer_create);
   161	COMPAT_SYS_NI(getitimer);
   162	COMPAT_SYS_NI(setitimer);
   163	#endif
   164	
   165	#ifdef CONFIG_COMPAT_32BIT_TIME
   166	SYS_NI(timer_settime32);
   167	SYS_NI(timer_gettime32);
   168	
   169	SYSCALL_DEFINE2(clock_settime32, const clockid_t, which_clock,
   170			struct old_timespec32 __user *, tp)
   171	{
   172		struct timespec64 new_tp;
   173	
   174		if (which_clock != CLOCK_REALTIME)
   175			return -EINVAL;
   176		if (get_old_timespec32(&new_tp, tp))
   177			return -EFAULT;
   178	
   179		return do_sys_settimeofday64(&new_tp, NULL);
   180	}
   181	
   182	SYSCALL_DEFINE2(clock_gettime32, clockid_t, which_clock,
   183			struct old_timespec32 __user *, tp)
   184	{
   185		int ret;
   186		struct timespec64 kernel_tp;
   187	
   188		ret = do_clock_gettime(which_clock, &kernel_tp);
   189		if (ret)
   190			return ret;
   191	
   192		if (put_old_timespec32(&kernel_tp, tp))
   193			return -EFAULT;
   194		return 0;
   195	}
   196	
   197	SYSCALL_DEFINE2(clock_getres_time32, clockid_t, which_clock,
   198			struct old_timespec32 __user *, tp)
   199	{
   200		struct timespec64 rtn_tp = {
   201			.tv_sec = 0,
   202			.tv_nsec = hrtimer_resolution,
   203		};
   204	
   205		switch (which_clock) {
   206		case CLOCK_REALTIME:
   207		case CLOCK_MONOTONIC:
   208		case CLOCK_BOOTTIME:
   209			if (put_old_timespec32(&rtn_tp, tp))
   210				return -EFAULT;
   211			return 0;
   212		default:
   213			return -EINVAL;
   214		}
   215	}
   216	
   217	SYSCALL_DEFINE4(clock_nanosleep_time32, clockid_t, which_clock, int, flags,
   218			struct old_timespec32 __user *, rqtp,
   219			struct old_timespec32 __user *, rmtp)
   220	{
   221		struct timespec64 t;
 > 222		ktime texp;

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/gzip
Size: 30786 bytes
Desc: not available
URL: <http://lists.linuxfoundation.org/pipermail/containers/attachments/20191014/286c7b9e/attachment-0001.bin>


More information about the Containers mailing list