[PATCH 5/6] fbdev: Move CFB read and write code into helper functions
kernel test robot
lkp at intel.com
Wed Apr 26 05:16:10 UTC 2023
Hi Thomas,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master next-20230425]
[cannot apply to v6.3]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Thomas-Zimmermann/fbdev-Return-number-of-bytes-read-or-written/20230425-223011
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20230425142846.730-6-tzimmermann%40suse.de
patch subject: [PATCH 5/6] fbdev: Move CFB read and write code into helper functions
config: riscv-randconfig-s033-20230423 (https://download.01.org/0day-ci/archive/20230426/202304261317.QAEwArcB-lkp@intel.com/config)
compiler: riscv64-linux-gcc (GCC) 12.1.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-39-gce1a6720-dirty
# https://github.com/intel-lab-lkp/linux/commit/d4a150f3dfa8e73f2e92f1c7efc9271e17632cc2
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Thomas-Zimmermann/fbdev-Return-number-of-bytes-read-or-written/20230425-223011
git checkout d4a150f3dfa8e73f2e92f1c7efc9271e17632cc2
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=riscv olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.1.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=riscv SHELL=/bin/bash drivers/video/fbdev/core/
If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp at intel.com>
| Link: https://lore.kernel.org/oe-kbuild-all/202304261317.QAEwArcB-lkp@intel.com/
sparse warnings: (new ones prefixed by >>)
WARNING: invalid argument to '-march': '_zihintpause'
>> drivers/video/fbdev/core/fb_cfb_fops.c:44:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const * @@ got unsigned char [noderef] [usertype] __iomem *[assigned] src @@
drivers/video/fbdev/core/fb_cfb_fops.c:44:39: sparse: expected void const *
drivers/video/fbdev/core/fb_cfb_fops.c:44:39: sparse: got unsigned char [noderef] [usertype] __iomem *[assigned] src
>> drivers/video/fbdev/core/fb_cfb_fops.c:113:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void * @@ got unsigned char [noderef] [usertype] __iomem *[assigned] dst @@
drivers/video/fbdev/core/fb_cfb_fops.c:113:32: sparse: expected void *
drivers/video/fbdev/core/fb_cfb_fops.c:113:32: sparse: got unsigned char [noderef] [usertype] __iomem *[assigned] dst
vim +44 drivers/video/fbdev/core/fb_cfb_fops.c
6
7 ssize_t fb_cfb_read(struct fb_info *info, char __user *buf, size_t count, loff_t *ppos)
8 {
9 unsigned long p = *ppos;
10 u8 *buffer, *dst;
11 u8 __iomem *src;
12 int c, cnt = 0, err = 0;
13 unsigned long total_size;
14
15 if (!info->screen_base)
16 return -ENODEV;
17
18 total_size = info->screen_size;
19
20 if (total_size == 0)
21 total_size = info->fix.smem_len;
22
23 if (p >= total_size)
24 return 0;
25
26 if (count >= total_size)
27 count = total_size;
28
29 if (count + p > total_size)
30 count = total_size - p;
31
32 buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
33 if (!buffer)
34 return -ENOMEM;
35
36 src = (u8 __iomem *)(info->screen_base + p);
37
38 if (info->fbops->fb_sync)
39 info->fbops->fb_sync(info);
40
41 while (count) {
42 c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
43 dst = buffer;
> 44 fb_memcpy_fromfb(dst, src, c);
45 dst += c;
46 src += c;
47
48 if (copy_to_user(buf, buffer, c)) {
49 err = -EFAULT;
50 break;
51 }
52 *ppos += c;
53 buf += c;
54 cnt += c;
55 count -= c;
56 }
57
58 kfree(buffer);
59
60 return cnt ? cnt : err;
61 }
62 EXPORT_SYMBOL(fb_cfb_read);
63
64 ssize_t fb_cfb_write(struct fb_info *info, const char __user *buf, size_t count, loff_t *ppos)
65 {
66 unsigned long p = *ppos;
67 u8 *buffer, *src;
68 u8 __iomem *dst;
69 int c, cnt = 0, err = 0;
70 unsigned long total_size;
71
72 if (!info->screen_base)
73 return -ENODEV;
74
75 total_size = info->screen_size;
76
77 if (total_size == 0)
78 total_size = info->fix.smem_len;
79
80 if (p > total_size)
81 return -EFBIG;
82
83 if (count > total_size) {
84 err = -EFBIG;
85 count = total_size;
86 }
87
88 if (count + p > total_size) {
89 if (!err)
90 err = -ENOSPC;
91
92 count = total_size - p;
93 }
94
95 buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count, GFP_KERNEL);
96 if (!buffer)
97 return -ENOMEM;
98
99 dst = (u8 __iomem *)(info->screen_base + p);
100
101 if (info->fbops->fb_sync)
102 info->fbops->fb_sync(info);
103
104 while (count) {
105 c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
106 src = buffer;
107
108 if (copy_from_user(src, buf, c)) {
109 err = -EFAULT;
110 break;
111 }
112
> 113 fb_memcpy_tofb(dst, src, c);
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests
More information about the dri-devel
mailing list