All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: arch/arm/kernel/sys_oabi-compat.c:257:6: error: implicit declaration of function 'ep_op_has_event'
Date: Thu, 18 Feb 2021 13:26:38 +0800	[thread overview]
Message-ID: <202102181333.BEPRdHZT-lkp@intel.com> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f40ddce88593482919761f74910f42f4b84c004b
commit: c281634c865202e2776b0250678ff93c771947ff ARM: compat: remove KERNEL_DS usage in sys_oabi_epoll_ctl()
date:   10 months ago
config: arm-randconfig-m031-20210218 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c281634c865202e2776b0250678ff93c771947ff
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout c281634c865202e2776b0250678ff93c771947ff
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   arch/arm/kernel/sys_oabi-compat.c:142:17: warning: no previous prototype for 'sys_oabi_stat64' [-Wmissing-prototypes]
     142 | asmlinkage long sys_oabi_stat64(const char __user * filename,
         |                 ^~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:152:17: warning: no previous prototype for 'sys_oabi_lstat64' [-Wmissing-prototypes]
     152 | asmlinkage long sys_oabi_lstat64(const char __user * filename,
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:162:17: warning: no previous prototype for 'sys_oabi_fstat64' [-Wmissing-prototypes]
     162 | asmlinkage long sys_oabi_fstat64(unsigned long fd,
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:172:17: warning: no previous prototype for 'sys_oabi_fstatat64' [-Wmissing-prototypes]
     172 | asmlinkage long sys_oabi_fstatat64(int dfd,
         |                 ^~~~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:229:17: warning: no previous prototype for 'sys_oabi_fcntl64' [-Wmissing-prototypes]
     229 | asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd,
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:251:17: warning: no previous prototype for 'sys_oabi_epoll_ctl' [-Wmissing-prototypes]
     251 | asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,
         |                 ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/wait.h:7,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from include/uapi/linux/aio_abi.h:31,
                    from include/linux/syscalls.h:74,
                    from arch/arm/kernel/sys_oabi-compat.c:73:
   arch/arm/kernel/sys_oabi-compat.c: In function 'sys_oabi_epoll_ctl':
>> arch/arm/kernel/sys_oabi-compat.c:257:6: error: implicit declaration of function 'ep_op_has_event' [-Werror=implicit-function-declaration]
     257 |  if (ep_op_has_event(op) &&
         |      ^~~~~~~~~~~~~~~
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                    ^~~~
   arch/arm/kernel/sys_oabi-compat.c:257:2: note: in expansion of macro 'if'
     257 |  if (ep_op_has_event(op) &&
         |  ^~
>> arch/arm/kernel/sys_oabi-compat.c:264:9: error: implicit declaration of function 'do_epoll_ctl'; did you mean 'sys_epoll_ctl'? [-Werror=implicit-function-declaration]
     264 |  return do_epoll_ctl(epfd, op, fd, &kernel, false);
         |         ^~~~~~~~~~~~
         |         sys_epoll_ctl
   arch/arm/kernel/sys_oabi-compat.c: At top level:
   arch/arm/kernel/sys_oabi-compat.c:267:17: warning: no previous prototype for 'sys_oabi_epoll_wait' [-Wmissing-prototypes]
     267 | asmlinkage long sys_oabi_epoll_wait(int epfd,
         |                 ^~~~~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:309:17: warning: no previous prototype for 'sys_oabi_semtimedop' [-Wmissing-prototypes]
     309 | asmlinkage long sys_oabi_semtimedop(int semid,
         |                 ^~~~~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:352:17: warning: no previous prototype for 'sys_oabi_semop' [-Wmissing-prototypes]
     352 | asmlinkage long sys_oabi_semop(int semid, struct oabi_sembuf __user *tsops,
         |                 ^~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:358:16: warning: no previous prototype for 'sys_oabi_ipc' [-Wmissing-prototypes]
     358 | asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
         |                ^~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:376:17: warning: no previous prototype for 'sys_oabi_bind' [-Wmissing-prototypes]
     376 | asmlinkage long sys_oabi_bind(int fd, struct sockaddr __user *addr, int addrlen)
         |                 ^~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:386:17: warning: no previous prototype for 'sys_oabi_connect' [-Wmissing-prototypes]
     386 | asmlinkage long sys_oabi_connect(int fd, struct sockaddr __user *addr, int addrlen)
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:396:17: warning: no previous prototype for 'sys_oabi_sendto' [-Wmissing-prototypes]
     396 | asmlinkage long sys_oabi_sendto(int fd, void __user *buff,
         |                 ^~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:409:17: warning: no previous prototype for 'sys_oabi_sendmsg' [-Wmissing-prototypes]
     409 | asmlinkage long sys_oabi_sendmsg(int fd, struct user_msghdr __user *msg, unsigned flags)
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:435:17: warning: no previous prototype for 'sys_oabi_socketcall' [-Wmissing-prototypes]
     435 | asmlinkage long sys_oabi_socketcall(int call, unsigned long __user *args)
         |                 ^~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/ep_op_has_event +257 arch/arm/kernel/sys_oabi-compat.c

  > 73	#include <linux/syscalls.h>
    74	#include <linux/errno.h>
    75	#include <linux/fs.h>
    76	#include <linux/cred.h>
    77	#include <linux/fcntl.h>
    78	#include <linux/eventpoll.h>
    79	#include <linux/sem.h>
    80	#include <linux/socket.h>
    81	#include <linux/net.h>
    82	#include <linux/ipc.h>
    83	#include <linux/uaccess.h>
    84	#include <linux/slab.h>
    85	
    86	struct oldabi_stat64 {
    87		unsigned long long st_dev;
    88		unsigned int	__pad1;
    89		unsigned long	__st_ino;
    90		unsigned int	st_mode;
    91		unsigned int	st_nlink;
    92	
    93		unsigned long	st_uid;
    94		unsigned long	st_gid;
    95	
    96		unsigned long long st_rdev;
    97		unsigned int	__pad2;
    98	
    99		long long	st_size;
   100		unsigned long	st_blksize;
   101		unsigned long long st_blocks;
   102	
   103		unsigned long	st_atime;
   104		unsigned long	st_atime_nsec;
   105	
   106		unsigned long	st_mtime;
   107		unsigned long	st_mtime_nsec;
   108	
   109		unsigned long	st_ctime;
   110		unsigned long	st_ctime_nsec;
   111	
   112		unsigned long long st_ino;
   113	} __attribute__ ((packed,aligned(4)));
   114	
   115	static long cp_oldabi_stat64(struct kstat *stat,
   116				     struct oldabi_stat64 __user *statbuf)
   117	{
   118		struct oldabi_stat64 tmp;
   119	
   120		tmp.st_dev = huge_encode_dev(stat->dev);
   121		tmp.__pad1 = 0;
   122		tmp.__st_ino = stat->ino;
   123		tmp.st_mode = stat->mode;
   124		tmp.st_nlink = stat->nlink;
   125		tmp.st_uid = from_kuid_munged(current_user_ns(), stat->uid);
   126		tmp.st_gid = from_kgid_munged(current_user_ns(), stat->gid);
   127		tmp.st_rdev = huge_encode_dev(stat->rdev);
   128		tmp.st_size = stat->size;
   129		tmp.st_blocks = stat->blocks;
   130		tmp.__pad2 = 0;
   131		tmp.st_blksize = stat->blksize;
   132		tmp.st_atime = stat->atime.tv_sec;
   133		tmp.st_atime_nsec = stat->atime.tv_nsec;
   134		tmp.st_mtime = stat->mtime.tv_sec;
   135		tmp.st_mtime_nsec = stat->mtime.tv_nsec;
   136		tmp.st_ctime = stat->ctime.tv_sec;
   137		tmp.st_ctime_nsec = stat->ctime.tv_nsec;
   138		tmp.st_ino = stat->ino;
   139		return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
   140	}
   141	
   142	asmlinkage long sys_oabi_stat64(const char __user * filename,
   143					struct oldabi_stat64 __user * statbuf)
   144	{
   145		struct kstat stat;
   146		int error = vfs_stat(filename, &stat);
   147		if (!error)
   148			error = cp_oldabi_stat64(&stat, statbuf);
   149		return error;
   150	}
   151	
   152	asmlinkage long sys_oabi_lstat64(const char __user * filename,
   153					 struct oldabi_stat64 __user * statbuf)
   154	{
   155		struct kstat stat;
   156		int error = vfs_lstat(filename, &stat);
   157		if (!error)
   158			error = cp_oldabi_stat64(&stat, statbuf);
   159		return error;
   160	}
   161	
   162	asmlinkage long sys_oabi_fstat64(unsigned long fd,
   163					 struct oldabi_stat64 __user * statbuf)
   164	{
   165		struct kstat stat;
   166		int error = vfs_fstat(fd, &stat);
   167		if (!error)
   168			error = cp_oldabi_stat64(&stat, statbuf);
   169		return error;
   170	}
   171	
   172	asmlinkage long sys_oabi_fstatat64(int dfd,
   173					   const char __user *filename,
   174					   struct oldabi_stat64  __user *statbuf,
   175					   int flag)
   176	{
   177		struct kstat stat;
   178		int error;
   179	
   180		error = vfs_fstatat(dfd, filename, &stat, flag);
   181		if (error)
   182			return error;
   183		return cp_oldabi_stat64(&stat, statbuf);
   184	}
   185	
   186	struct oabi_flock64 {
   187		short	l_type;
   188		short	l_whence;
   189		loff_t	l_start;
   190		loff_t	l_len;
   191		pid_t	l_pid;
   192	} __attribute__ ((packed,aligned(4)));
   193	
   194	static long do_locks(unsigned int fd, unsigned int cmd,
   195					 unsigned long arg)
   196	{
   197		struct flock64 kernel;
   198		struct oabi_flock64 user;
   199		mm_segment_t fs;
   200		long ret;
   201	
   202		if (copy_from_user(&user, (struct oabi_flock64 __user *)arg,
   203				   sizeof(user)))
   204			return -EFAULT;
   205		kernel.l_type	= user.l_type;
   206		kernel.l_whence	= user.l_whence;
   207		kernel.l_start	= user.l_start;
   208		kernel.l_len	= user.l_len;
   209		kernel.l_pid	= user.l_pid;
   210	
   211		fs = get_fs();
   212		set_fs(KERNEL_DS);
   213		ret = sys_fcntl64(fd, cmd, (unsigned long)&kernel);
   214		set_fs(fs);
   215	
   216		if (!ret && (cmd == F_GETLK64 || cmd == F_OFD_GETLK)) {
   217			user.l_type	= kernel.l_type;
   218			user.l_whence	= kernel.l_whence;
   219			user.l_start	= kernel.l_start;
   220			user.l_len	= kernel.l_len;
   221			user.l_pid	= kernel.l_pid;
   222			if (copy_to_user((struct oabi_flock64 __user *)arg,
   223					 &user, sizeof(user)))
   224				ret = -EFAULT;
   225		}
   226		return ret;
   227	}
   228	
   229	asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd,
   230					 unsigned long arg)
   231	{
   232		switch (cmd) {
   233		case F_OFD_GETLK:
   234		case F_OFD_SETLK:
   235		case F_OFD_SETLKW:
   236		case F_GETLK64:
   237		case F_SETLK64:
   238		case F_SETLKW64:
   239			return do_locks(fd, cmd, arg);
   240	
   241		default:
   242			return sys_fcntl64(fd, cmd, arg);
   243		}
   244	}
   245	
   246	struct oabi_epoll_event {
   247		__u32 events;
   248		__u64 data;
   249	} __attribute__ ((packed,aligned(4)));
   250	
   251	asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,
   252					   struct oabi_epoll_event __user *event)
   253	{
   254		struct oabi_epoll_event user;
   255		struct epoll_event kernel;
   256	
 > 257		if (ep_op_has_event(op) &&
   258		    copy_from_user(&user, event, sizeof(user)))
   259			return -EFAULT;
   260	
   261		kernel.events = user.events;
   262		kernel.data   = user.data;
   263	
 > 264		return do_epoll_ctl(epfd, op, fd, &kernel, false);
   265	}
   266	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

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

WARNING: multiple messages have this Message-ID (diff)
From: kernel test robot <lkp@intel.com>
To: Russell King <rmk+kernel@armlinux.org.uk>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
	Christoph Hellwig <hch@lst.de>
Subject: arch/arm/kernel/sys_oabi-compat.c:257:6: error: implicit declaration of function 'ep_op_has_event'
Date: Thu, 18 Feb 2021 13:26:38 +0800	[thread overview]
Message-ID: <202102181333.BEPRdHZT-lkp@intel.com> (raw)

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   f40ddce88593482919761f74910f42f4b84c004b
commit: c281634c865202e2776b0250678ff93c771947ff ARM: compat: remove KERNEL_DS usage in sys_oabi_epoll_ctl()
date:   10 months ago
config: arm-randconfig-m031-20210218 (attached as .config)
compiler: arm-linux-gnueabi-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c281634c865202e2776b0250678ff93c771947ff
        git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout c281634c865202e2776b0250678ff93c771947ff
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=arm 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   arch/arm/kernel/sys_oabi-compat.c:142:17: warning: no previous prototype for 'sys_oabi_stat64' [-Wmissing-prototypes]
     142 | asmlinkage long sys_oabi_stat64(const char __user * filename,
         |                 ^~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:152:17: warning: no previous prototype for 'sys_oabi_lstat64' [-Wmissing-prototypes]
     152 | asmlinkage long sys_oabi_lstat64(const char __user * filename,
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:162:17: warning: no previous prototype for 'sys_oabi_fstat64' [-Wmissing-prototypes]
     162 | asmlinkage long sys_oabi_fstat64(unsigned long fd,
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:172:17: warning: no previous prototype for 'sys_oabi_fstatat64' [-Wmissing-prototypes]
     172 | asmlinkage long sys_oabi_fstatat64(int dfd,
         |                 ^~~~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:229:17: warning: no previous prototype for 'sys_oabi_fcntl64' [-Wmissing-prototypes]
     229 | asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd,
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:251:17: warning: no previous prototype for 'sys_oabi_epoll_ctl' [-Wmissing-prototypes]
     251 | asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,
         |                 ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/wait.h:7,
                    from include/linux/wait_bit.h:8,
                    from include/linux/fs.h:6,
                    from include/uapi/linux/aio_abi.h:31,
                    from include/linux/syscalls.h:74,
                    from arch/arm/kernel/sys_oabi-compat.c:73:
   arch/arm/kernel/sys_oabi-compat.c: In function 'sys_oabi_epoll_ctl':
>> arch/arm/kernel/sys_oabi-compat.c:257:6: error: implicit declaration of function 'ep_op_has_event' [-Werror=implicit-function-declaration]
     257 |  if (ep_op_has_event(op) &&
         |      ^~~~~~~~~~~~~~~
   include/linux/compiler.h:58:52: note: in definition of macro '__trace_if_var'
      58 | #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
         |                                                    ^~~~
   arch/arm/kernel/sys_oabi-compat.c:257:2: note: in expansion of macro 'if'
     257 |  if (ep_op_has_event(op) &&
         |  ^~
>> arch/arm/kernel/sys_oabi-compat.c:264:9: error: implicit declaration of function 'do_epoll_ctl'; did you mean 'sys_epoll_ctl'? [-Werror=implicit-function-declaration]
     264 |  return do_epoll_ctl(epfd, op, fd, &kernel, false);
         |         ^~~~~~~~~~~~
         |         sys_epoll_ctl
   arch/arm/kernel/sys_oabi-compat.c: At top level:
   arch/arm/kernel/sys_oabi-compat.c:267:17: warning: no previous prototype for 'sys_oabi_epoll_wait' [-Wmissing-prototypes]
     267 | asmlinkage long sys_oabi_epoll_wait(int epfd,
         |                 ^~~~~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:309:17: warning: no previous prototype for 'sys_oabi_semtimedop' [-Wmissing-prototypes]
     309 | asmlinkage long sys_oabi_semtimedop(int semid,
         |                 ^~~~~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:352:17: warning: no previous prototype for 'sys_oabi_semop' [-Wmissing-prototypes]
     352 | asmlinkage long sys_oabi_semop(int semid, struct oabi_sembuf __user *tsops,
         |                 ^~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:358:16: warning: no previous prototype for 'sys_oabi_ipc' [-Wmissing-prototypes]
     358 | asmlinkage int sys_oabi_ipc(uint call, int first, int second, int third,
         |                ^~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:376:17: warning: no previous prototype for 'sys_oabi_bind' [-Wmissing-prototypes]
     376 | asmlinkage long sys_oabi_bind(int fd, struct sockaddr __user *addr, int addrlen)
         |                 ^~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:386:17: warning: no previous prototype for 'sys_oabi_connect' [-Wmissing-prototypes]
     386 | asmlinkage long sys_oabi_connect(int fd, struct sockaddr __user *addr, int addrlen)
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:396:17: warning: no previous prototype for 'sys_oabi_sendto' [-Wmissing-prototypes]
     396 | asmlinkage long sys_oabi_sendto(int fd, void __user *buff,
         |                 ^~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:409:17: warning: no previous prototype for 'sys_oabi_sendmsg' [-Wmissing-prototypes]
     409 | asmlinkage long sys_oabi_sendmsg(int fd, struct user_msghdr __user *msg, unsigned flags)
         |                 ^~~~~~~~~~~~~~~~
   arch/arm/kernel/sys_oabi-compat.c:435:17: warning: no previous prototype for 'sys_oabi_socketcall' [-Wmissing-prototypes]
     435 | asmlinkage long sys_oabi_socketcall(int call, unsigned long __user *args)
         |                 ^~~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors


vim +/ep_op_has_event +257 arch/arm/kernel/sys_oabi-compat.c

  > 73	#include <linux/syscalls.h>
    74	#include <linux/errno.h>
    75	#include <linux/fs.h>
    76	#include <linux/cred.h>
    77	#include <linux/fcntl.h>
    78	#include <linux/eventpoll.h>
    79	#include <linux/sem.h>
    80	#include <linux/socket.h>
    81	#include <linux/net.h>
    82	#include <linux/ipc.h>
    83	#include <linux/uaccess.h>
    84	#include <linux/slab.h>
    85	
    86	struct oldabi_stat64 {
    87		unsigned long long st_dev;
    88		unsigned int	__pad1;
    89		unsigned long	__st_ino;
    90		unsigned int	st_mode;
    91		unsigned int	st_nlink;
    92	
    93		unsigned long	st_uid;
    94		unsigned long	st_gid;
    95	
    96		unsigned long long st_rdev;
    97		unsigned int	__pad2;
    98	
    99		long long	st_size;
   100		unsigned long	st_blksize;
   101		unsigned long long st_blocks;
   102	
   103		unsigned long	st_atime;
   104		unsigned long	st_atime_nsec;
   105	
   106		unsigned long	st_mtime;
   107		unsigned long	st_mtime_nsec;
   108	
   109		unsigned long	st_ctime;
   110		unsigned long	st_ctime_nsec;
   111	
   112		unsigned long long st_ino;
   113	} __attribute__ ((packed,aligned(4)));
   114	
   115	static long cp_oldabi_stat64(struct kstat *stat,
   116				     struct oldabi_stat64 __user *statbuf)
   117	{
   118		struct oldabi_stat64 tmp;
   119	
   120		tmp.st_dev = huge_encode_dev(stat->dev);
   121		tmp.__pad1 = 0;
   122		tmp.__st_ino = stat->ino;
   123		tmp.st_mode = stat->mode;
   124		tmp.st_nlink = stat->nlink;
   125		tmp.st_uid = from_kuid_munged(current_user_ns(), stat->uid);
   126		tmp.st_gid = from_kgid_munged(current_user_ns(), stat->gid);
   127		tmp.st_rdev = huge_encode_dev(stat->rdev);
   128		tmp.st_size = stat->size;
   129		tmp.st_blocks = stat->blocks;
   130		tmp.__pad2 = 0;
   131		tmp.st_blksize = stat->blksize;
   132		tmp.st_atime = stat->atime.tv_sec;
   133		tmp.st_atime_nsec = stat->atime.tv_nsec;
   134		tmp.st_mtime = stat->mtime.tv_sec;
   135		tmp.st_mtime_nsec = stat->mtime.tv_nsec;
   136		tmp.st_ctime = stat->ctime.tv_sec;
   137		tmp.st_ctime_nsec = stat->ctime.tv_nsec;
   138		tmp.st_ino = stat->ino;
   139		return copy_to_user(statbuf,&tmp,sizeof(tmp)) ? -EFAULT : 0;
   140	}
   141	
   142	asmlinkage long sys_oabi_stat64(const char __user * filename,
   143					struct oldabi_stat64 __user * statbuf)
   144	{
   145		struct kstat stat;
   146		int error = vfs_stat(filename, &stat);
   147		if (!error)
   148			error = cp_oldabi_stat64(&stat, statbuf);
   149		return error;
   150	}
   151	
   152	asmlinkage long sys_oabi_lstat64(const char __user * filename,
   153					 struct oldabi_stat64 __user * statbuf)
   154	{
   155		struct kstat stat;
   156		int error = vfs_lstat(filename, &stat);
   157		if (!error)
   158			error = cp_oldabi_stat64(&stat, statbuf);
   159		return error;
   160	}
   161	
   162	asmlinkage long sys_oabi_fstat64(unsigned long fd,
   163					 struct oldabi_stat64 __user * statbuf)
   164	{
   165		struct kstat stat;
   166		int error = vfs_fstat(fd, &stat);
   167		if (!error)
   168			error = cp_oldabi_stat64(&stat, statbuf);
   169		return error;
   170	}
   171	
   172	asmlinkage long sys_oabi_fstatat64(int dfd,
   173					   const char __user *filename,
   174					   struct oldabi_stat64  __user *statbuf,
   175					   int flag)
   176	{
   177		struct kstat stat;
   178		int error;
   179	
   180		error = vfs_fstatat(dfd, filename, &stat, flag);
   181		if (error)
   182			return error;
   183		return cp_oldabi_stat64(&stat, statbuf);
   184	}
   185	
   186	struct oabi_flock64 {
   187		short	l_type;
   188		short	l_whence;
   189		loff_t	l_start;
   190		loff_t	l_len;
   191		pid_t	l_pid;
   192	} __attribute__ ((packed,aligned(4)));
   193	
   194	static long do_locks(unsigned int fd, unsigned int cmd,
   195					 unsigned long arg)
   196	{
   197		struct flock64 kernel;
   198		struct oabi_flock64 user;
   199		mm_segment_t fs;
   200		long ret;
   201	
   202		if (copy_from_user(&user, (struct oabi_flock64 __user *)arg,
   203				   sizeof(user)))
   204			return -EFAULT;
   205		kernel.l_type	= user.l_type;
   206		kernel.l_whence	= user.l_whence;
   207		kernel.l_start	= user.l_start;
   208		kernel.l_len	= user.l_len;
   209		kernel.l_pid	= user.l_pid;
   210	
   211		fs = get_fs();
   212		set_fs(KERNEL_DS);
   213		ret = sys_fcntl64(fd, cmd, (unsigned long)&kernel);
   214		set_fs(fs);
   215	
   216		if (!ret && (cmd == F_GETLK64 || cmd == F_OFD_GETLK)) {
   217			user.l_type	= kernel.l_type;
   218			user.l_whence	= kernel.l_whence;
   219			user.l_start	= kernel.l_start;
   220			user.l_len	= kernel.l_len;
   221			user.l_pid	= kernel.l_pid;
   222			if (copy_to_user((struct oabi_flock64 __user *)arg,
   223					 &user, sizeof(user)))
   224				ret = -EFAULT;
   225		}
   226		return ret;
   227	}
   228	
   229	asmlinkage long sys_oabi_fcntl64(unsigned int fd, unsigned int cmd,
   230					 unsigned long arg)
   231	{
   232		switch (cmd) {
   233		case F_OFD_GETLK:
   234		case F_OFD_SETLK:
   235		case F_OFD_SETLKW:
   236		case F_GETLK64:
   237		case F_SETLK64:
   238		case F_SETLKW64:
   239			return do_locks(fd, cmd, arg);
   240	
   241		default:
   242			return sys_fcntl64(fd, cmd, arg);
   243		}
   244	}
   245	
   246	struct oabi_epoll_event {
   247		__u32 events;
   248		__u64 data;
   249	} __attribute__ ((packed,aligned(4)));
   250	
   251	asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,
   252					   struct oabi_epoll_event __user *event)
   253	{
   254		struct oabi_epoll_event user;
   255		struct epoll_event kernel;
   256	
 > 257		if (ep_op_has_event(op) &&
   258		    copy_from_user(&user, event, sizeof(user)))
   259			return -EFAULT;
   260	
   261		kernel.events = user.events;
   262		kernel.data   = user.data;
   263	
 > 264		return do_epoll_ctl(epfd, op, fd, &kernel, false);
   265	}
   266	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

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

             reply	other threads:[~2021-02-18  5:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-18  5:26 kernel test robot [this message]
2021-02-18  5:26 ` arch/arm/kernel/sys_oabi-compat.c:257:6: error: implicit declaration of function 'ep_op_has_event' kernel test robot
2021-02-18  5:56 ` Randy Dunlap
2021-02-18  5:56   ` Randy Dunlap
2021-02-18 10:16   ` Russell King - ARM Linux admin
2021-02-18 10:16     ` Russell King - ARM Linux admin
  -- strict thread matches above, loose matches on Subject: below --
2021-02-20  5:09 kernel test robot
2021-02-20  5:09 ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202102181333.BEPRdHZT-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.