From: kernel test robot <lkp@intel.com>
To: Arnd Bergmann <arnd@arndb.de>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org
Subject: [arnd-playground:randconfig-5.16-min 150/191] drivers/video/fbdev/core/fb_device.c:88:39: sparse: sparse: incorrect type in argument 2 (different address spaces)
Date: Sat, 4 Dec 2021 14:57:02 +0800 [thread overview]
Message-ID: <202112041429.98MqQ9EC-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git randconfig-5.16-min
head: 7a16665b8fd19f170c0c15f1432c90e4750183f2
commit: afe2d6eb5b95934595688e04a31c657cce11c01b [150/191] fbdev: move chrdev code into fb_device.c
config: nios2-randconfig-s032-20211203 (https://download.01.org/0day-ci/archive/20211204/202112041429.98MqQ9EC-lkp@intel.com/config)
compiler: nios2-linux-gcc (GCC) 11.2.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-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git/commit/?id=afe2d6eb5b95934595688e04a31c657cce11c01b
git remote add arnd-playground https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git
git fetch --no-tags arnd-playground randconfig-5.16-min
git checkout afe2d6eb5b95934595688e04a31c657cce11c01b
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=nios2 SHELL=/bin/bash drivers/video/fbdev/core/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
sparse warnings: (new ones prefixed by >>)
>> drivers/video/fbdev/core/fb_device.c:88:39: sparse: sparse: incorrect type in argument 2 (different address spaces) @@ expected void const *s @@ got unsigned char [noderef] [usertype] __iomem *[assigned] src @@
drivers/video/fbdev/core/fb_device.c:88:39: sparse: expected void const *s
drivers/video/fbdev/core/fb_device.c:88:39: sparse: got unsigned char [noderef] [usertype] __iomem *[assigned] src
>> drivers/video/fbdev/core/fb_device.c:165:32: sparse: sparse: incorrect type in argument 1 (different address spaces) @@ expected void *d @@ got unsigned char [noderef] [usertype] __iomem *[assigned] dst @@
drivers/video/fbdev/core/fb_device.c:165:32: sparse: expected void *d
drivers/video/fbdev/core/fb_device.c:165:32: sparse: got unsigned char [noderef] [usertype] __iomem *[assigned] dst
vim +88 drivers/video/fbdev/core/fb_device.c
41
42 static ssize_t
43 fb_read(struct file *file, char __user *buf, size_t count, loff_t *ppos)
44 {
45 unsigned long p = *ppos;
46 struct fb_info *info = file_fb_info(file);
47 u8 *buffer, *dst;
48 u8 __iomem *src;
49 int c, cnt = 0, err = 0;
50 unsigned long total_size;
51
52 if (!info || ! info->screen_base)
53 return -ENODEV;
54
55 if (info->state != FBINFO_STATE_RUNNING)
56 return -EPERM;
57
58 if (info->fbops->fb_read)
59 return info->fbops->fb_read(info, buf, count, ppos);
60
61 total_size = info->screen_size;
62
63 if (total_size == 0)
64 total_size = info->fix.smem_len;
65
66 if (p >= total_size)
67 return 0;
68
69 if (count >= total_size)
70 count = total_size;
71
72 if (count + p > total_size)
73 count = total_size - p;
74
75 buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count,
76 GFP_KERNEL);
77 if (!buffer)
78 return -ENOMEM;
79
80 src = (u8 __iomem *) (info->screen_base + p);
81
82 if (info->fbops->fb_sync)
83 info->fbops->fb_sync(info);
84
85 while (count) {
86 c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
87 dst = buffer;
> 88 fb_memcpy_fromfb(dst, src, c);
89 dst += c;
90 src += c;
91
92 if (copy_to_user(buf, buffer, c)) {
93 err = -EFAULT;
94 break;
95 }
96 *ppos += c;
97 buf += c;
98 cnt += c;
99 count -= c;
100 }
101
102 kfree(buffer);
103
104 return (err) ? err : cnt;
105 }
106
107 static ssize_t
108 fb_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
109 {
110 unsigned long p = *ppos;
111 struct fb_info *info = file_fb_info(file);
112 u8 *buffer, *src;
113 u8 __iomem *dst;
114 int c, cnt = 0, err = 0;
115 unsigned long total_size;
116
117 if (!info || !info->screen_base)
118 return -ENODEV;
119
120 if (info->state != FBINFO_STATE_RUNNING)
121 return -EPERM;
122
123 if (info->fbops->fb_write)
124 return info->fbops->fb_write(info, buf, count, ppos);
125
126 total_size = info->screen_size;
127
128 if (total_size == 0)
129 total_size = info->fix.smem_len;
130
131 if (p > total_size)
132 return -EFBIG;
133
134 if (count > total_size) {
135 err = -EFBIG;
136 count = total_size;
137 }
138
139 if (count + p > total_size) {
140 if (!err)
141 err = -ENOSPC;
142
143 count = total_size - p;
144 }
145
146 buffer = kmalloc((count > PAGE_SIZE) ? PAGE_SIZE : count,
147 GFP_KERNEL);
148 if (!buffer)
149 return -ENOMEM;
150
151 dst = (u8 __iomem *) (info->screen_base + p);
152
153 if (info->fbops->fb_sync)
154 info->fbops->fb_sync(info);
155
156 while (count) {
157 c = (count > PAGE_SIZE) ? PAGE_SIZE : count;
158 src = buffer;
159
160 if (copy_from_user(src, buf, c)) {
161 err = -EFAULT;
162 break;
163 }
164
> 165 fb_memcpy_tofb(dst, src, c);
166 dst += c;
167 src += c;
168 *ppos += c;
169 buf += c;
170 cnt += c;
171 count -= c;
172 }
173
174 kfree(buffer);
175
176 return (cnt) ? cnt : err;
177 }
178
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
reply other threads:[~2021-12-04 6:57 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202112041429.98MqQ9EC-lkp@intel.com \
--to=lkp@intel.com \
--cc=arnd@arndb.de \
--cc=kbuild-all@lists.01.org \
--cc=linux-kernel@vger.kernel.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox