* [zen-kernel-zen-kernel:5.12/futex2 3/16] kernel/futex2.c:714:28: error: variable has incomplete type 'struct compat_futex_waitv'
@ 2021-06-16 1:58 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2021-06-16 1:58 UTC (permalink / raw)
To: kbuild-all
[-- Attachment #1: Type: text/plain, Size: 9217 bytes --]
tree: https://github.com/zen-kernel/zen-kernel 5.12/futex2
head: 81255c11c48cc2302883425c87318f9cad37e7e6
commit: 04a97ad2406166e12a13f09c9981f18e6487f530 [3/16] futex2: Implement vectorized wait
config: powerpc-randconfig-r013-20210615 (attached as .config)
compiler: clang version 13.0.0 (https://github.com/llvm/llvm-project 64720f57bea6a6bf033feef4a5751ab9c0c3b401)
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
# install powerpc cross compiling tool for clang build
# apt-get install binutils-powerpc-linux-gnu
# https://github.com/zen-kernel/zen-kernel/commit/04a97ad2406166e12a13f09c9981f18e6487f530
git remote add zen-kernel-zen-kernel https://github.com/zen-kernel/zen-kernel
git fetch --no-tags zen-kernel-zen-kernel 5.12/futex2
git checkout 04a97ad2406166e12a13f09c9981f18e6487f530
# save the attached .config to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=powerpc
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
All error/warnings (new ones prefixed by >>):
In file included from kernel/futex2.c:16:
In file included from include/linux/freezer.h:7:
In file included from include/linux/debug_locks.h:5:
In file included from include/linux/atomic.h:7:
In file included from arch/powerpc/include/asm/atomic.h:11:
In file included from arch/powerpc/include/asm/cmpxchg.h:8:
In file included from include/linux/bug.h:5:
In file included from arch/powerpc/include/asm/bug.h:109:
In file included from include/asm-generic/bug.h:20:
In file included from include/linux/kernel.h:11:
In file included from include/linux/bitops.h:32:
In file included from arch/powerpc/include/asm/bitops.h:62:
arch/powerpc/include/asm/barrier.h:49:9: warning: '__lwsync' macro redefined [-Wmacro-redefined]
#define __lwsync() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory")
^
<built-in>:309:9: note: previous definition is here
#define __lwsync __builtin_ppc_lwsync
^
>> kernel/futex2.c:711:16: warning: declaration of 'struct compat_futex_waitv' will not be visible outside of this function [-Wvisibility]
struct compat_futex_waitv __user *uwaitv,
^
>> kernel/futex2.c:714:28: error: variable has incomplete type 'struct compat_futex_waitv'
struct compat_futex_waitv waitv;
^
kernel/futex2.c:711:16: note: forward declaration of 'struct compat_futex_waitv'
struct compat_futex_waitv __user *uwaitv,
^
>> kernel/futex2.c:719:37: error: subscript of pointer to incomplete type 'struct compat_futex_waitv'
if (copy_from_user(&waitv, &uwaitv[i], sizeof(waitv)))
~~~~~~^
kernel/futex2.c:711:16: note: forward declaration of 'struct compat_futex_waitv'
struct compat_futex_waitv __user *uwaitv,
^
>> kernel/futex2.c:728:31: error: implicit declaration of function 'compat_ptr' [-Werror,-Wimplicit-function-declaration]
futexv->objects[i].uaddr = compat_ptr(waitv.uaddr);
^
>> kernel/futex2.c:747:37: error: expected identifier
COMPAT_SYSCALL_DEFINE4(futex_waitv, struct compat_futex_waitv __user *, waiters,
^
>> kernel/futex2.c:754:6: error: use of undeclared identifier 'flags'
if (flags & ~FUTEXV_MASK)
^
>> kernel/futex2.c:757:7: error: use of undeclared identifier 'nr_futexes'
if (!nr_futexes || nr_futexes > FUTEX_WAITV_MAX || !waiters)
^
kernel/futex2.c:757:21: error: use of undeclared identifier 'nr_futexes'
if (!nr_futexes || nr_futexes > FUTEX_WAITV_MAX || !waiters)
^
>> kernel/futex2.c:757:54: error: use of undeclared identifier 'waiters'
if (!nr_futexes || nr_futexes > FUTEX_WAITV_MAX || !waiters)
^
kernel/futex2.c:760:50: error: use of undeclared identifier 'nr_futexes'
futexv = kmalloc((sizeof(struct futex_waiter) * nr_futexes) +
^
kernel/futex2.c:768:41: error: use of undeclared identifier 'waiters'
ret = compat_futex_parse_waitv(futexv, waiters, nr_futexes);
^
kernel/futex2.c:768:50: error: use of undeclared identifier 'nr_futexes'
ret = compat_futex_parse_waitv(futexv, waiters, nr_futexes);
^
kernel/futex2.c:771:31: error: use of undeclared identifier 'nr_futexes'
ret = __futex_waitv(futexv, nr_futexes, timo, flags);
^
>> kernel/futex2.c:771:43: error: use of undeclared identifier 'timo'
ret = __futex_waitv(futexv, nr_futexes, timo, flags);
^
kernel/futex2.c:771:49: error: use of undeclared identifier 'flags'
ret = __futex_waitv(futexv, nr_futexes, timo, flags);
^
>> kernel/futex2.c:747:1: warning: no previous prototype for function 'COMPAT_SYSCALL_DEFINE4' [-Wmissing-prototypes]
COMPAT_SYSCALL_DEFINE4(futex_waitv, struct compat_futex_waitv __user *, waiters,
^
kernel/futex2.c:747:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
COMPAT_SYSCALL_DEFINE4(futex_waitv, struct compat_futex_waitv __user *, waiters,
^
static
>> kernel/futex2.c:747:23: error: this old-style function definition is not preceded by a prototype [-Werror,-Wstrict-prototypes]
COMPAT_SYSCALL_DEFINE4(futex_waitv, struct compat_futex_waitv __user *, waiters,
^
3 warnings and 15 errors generated.
vim +714 kernel/futex2.c
700
701 #ifdef CONFIG_COMPAT
702 /**
703 * compat_futex_parse_waitv - Parse a waitv array from userspace
704 * @futexv: Kernel side list of waiters to be filled
705 * @uwaitv: Userspace list to be parsed
706 * @nr_futexes: Length of futexv
707 *
708 * Return: Error code on failure, pointer to a prepared futexv otherwise
709 */
710 static int compat_futex_parse_waitv(struct futex_waiter_head *futexv,
> 711 struct compat_futex_waitv __user *uwaitv,
712 unsigned int nr_futexes)
713 {
> 714 struct compat_futex_waitv waitv;
715 struct futex_bucket *bucket;
716 unsigned int i;
717
718 for (i = 0; i < nr_futexes; i++) {
> 719 if (copy_from_user(&waitv, &uwaitv[i], sizeof(waitv)))
720 return -EFAULT;
721
722 if ((waitv.flags & ~FUTEXV_WAITER_MASK) ||
723 (waitv.flags & FUTEX_SIZE_MASK) != FUTEX_32)
724 return -EINVAL;
725
726 futexv->objects[i].key.pointer = 0;
727 futexv->objects[i].flags = waitv.flags;
> 728 futexv->objects[i].uaddr = compat_ptr(waitv.uaddr);
729 futexv->objects[i].val = waitv.val;
730 futexv->objects[i].index = i;
731
732 bucket = futex_get_bucket(compat_ptr(waitv.uaddr),
733 &futexv->objects[i].key,
734 is_object_shared);
735
736 if (IS_ERR(bucket))
737 return PTR_ERR(bucket);
738
739 futexv->objects[i].bucket = bucket;
740
741 INIT_LIST_HEAD(&futexv->objects[i].list);
742 }
743
744 return 0;
745 }
746
> 747 COMPAT_SYSCALL_DEFINE4(futex_waitv, struct compat_futex_waitv __user *, waiters,
748 unsigned int, nr_futexes, unsigned int, flags,
749 struct __kernel_timespec __user *, timo)
750 {
751 struct futex_waiter_head *futexv;
752 int ret;
753
> 754 if (flags & ~FUTEXV_MASK)
755 return -EINVAL;
756
> 757 if (!nr_futexes || nr_futexes > FUTEX_WAITV_MAX || !waiters)
758 return -EINVAL;
759
760 futexv = kmalloc((sizeof(struct futex_waiter) * nr_futexes) +
761 sizeof(*futexv), GFP_KERNEL);
762 if (!futexv)
763 return -ENOMEM;
764
765 futexv->hint = false;
766 futexv->task = current;
767
768 ret = compat_futex_parse_waitv(futexv, waiters, nr_futexes);
769
770 if (!ret)
> 771 ret = __futex_waitv(futexv, nr_futexes, timo, flags);
772
773 kfree(futexv);
774
775 return ret;
776 }
777 #endif
778
---
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: 27474 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-06-16 1:58 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-16 1:58 [zen-kernel-zen-kernel:5.12/futex2 3/16] kernel/futex2.c:714:28: error: variable has incomplete type 'struct compat_futex_waitv' kernel test robot
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.