tree:
https://github.com/0day-ci/linux/commits/UPDATE-20200501-062253/Chris-Wil...
head: e14b572311dd64ebaee8f6f0d57b68ba60c2b92e
commit: e14b572311dd64ebaee8f6f0d57b68ba60c2b92e [1/1] drm/i915: Implement
vm_ops->access for gdb access into mmaps
config: i386-allyesconfig (attached as .config)
compiler: gcc-7 (Ubuntu 7.5.0-6ubuntu2) 7.5.0
reproduce:
git checkout e14b572311dd64ebaee8f6f0d57b68ba60c2b92e
# save the attached .config to linux build tree
make ARCH=i386
If you fix the issue, kindly add following tag as appropriate
Reported-by: kbuild test robot <lkp(a)intel.com>
All warnings (new ones prefixed by >>):
In file included from include/asm-generic/bug.h:5:0,
from arch/x86/include/asm/bug.h:83,
from include/linux/bug.h:5,
from include/linux/mmdebug.h:5,
from include/linux/mm.h:9,
from include/linux/mman.h:5,
from drivers/gpu/drm/i915/gem/i915_gem_mman.c:8:
drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c: In function
'__igt_mmap_access':
> include/linux/err.h:22:49: warning: cast to pointer from integer
of different size [-Wint-to-pointer-cast]
#define IS_ERR_VALUE(x)
unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
^
include/linux/compiler.h:78:42: note: in definition of macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
> drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c:996:6: note:
in expansion of macro 'IS_ERR_VALUE'
if (IS_ERR_VALUE(addr))
^~~~~~~~~~~~
vim +/IS_ERR_VALUE +996 drivers/gpu/drm/i915/gem/selftests/i915_gem_mman.c
973
974 static int __igt_mmap_access(struct drm_i915_private *i915,
975 struct drm_i915_gem_object *obj,
976 enum i915_mmap_type type)
977 {
978 struct i915_mmap_offset *mmo;
979 unsigned long __user *ptr;
980 unsigned long A, B;
981 unsigned long x, y;
982 u64 addr;
983 int err;
984
985 memset(&A, 0xAA, sizeof(A));
986 memset(&B, 0xBB, sizeof(B));
987
988 if (!can_mmap(obj, type) || !can_access(obj))
989 return 0;
990
991 mmo = mmap_offset_attach(obj, type, NULL);
992 if (IS_ERR(mmo))
993 return PTR_ERR(mmo);
994
995 addr = igt_mmap_node(i915, &mmo->vma_node, 0, PROT_WRITE, MAP_SHARED);
996 if (IS_ERR_VALUE(addr))
997 return addr;
998 ptr = u64_to_user_ptr(addr);
999
1000 err = __put_user(A, ptr);
1001 if (err) {
1002 pr_err("%s(%s): failed to write into user mmap\n",
1003 obj->mm.region->name, repr_mmap_type(type));
1004 goto out_unmap;
1005 }
1006
1007 err = access_process_vm(current, addr, &x, sizeof(x), 0);
1008 if (err != sizeof(x)) {
1009 pr_err("%s(%s): access_process_vm() read failed\n",
1010 obj->mm.region->name, repr_mmap_type(type));
1011 goto out_unmap;
1012 }
1013
1014 err = access_process_vm(current, addr, &B, sizeof(B), FOLL_WRITE);
1015 if (err != sizeof(B)) {
1016 pr_err("%s(%s): access_process_vm() write failed\n",
1017 obj->mm.region->name, repr_mmap_type(type));
1018 goto out_unmap;
1019 }
1020
1021 err = __get_user(y, ptr);
1022 if (err) {
1023 pr_err("%s(%s): failed to read from user mmap\n",
1024 obj->mm.region->name, repr_mmap_type(type));
1025 goto out_unmap;
1026 }
1027
1028 if (x != A || y != B) {
1029 pr_err("%s(%s): failed to read/write values, found (%lx, %lx)\n",
1030 obj->mm.region->name, repr_mmap_type(type),
1031 x, y);
1032 err = -EINVAL;
1033 goto out_unmap;
1034 }
1035
1036 out_unmap:
1037 vm_munmap(addr, obj->base.size);
1038 return err;
1039 }
1040
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org