Re: [PATCH 28/30] fbdev/core: Move file-I/O code into separate file

kernel test robot
2023-06-05T21:35:30Z

Hi Thomas,

kernel test robot noticed the following build warnings:

[auto build test WARNING on next-20230605]
[cannot apply to drm-misc/drm-misc-next lee-backlight/for-backlight-next staging/staging-testing staging/staging-next staging/staging-linus linus/master lee-backlight/for-backlight-fixes v6.4-rc5 v6.4-rc4 v6.4-rc3 v6.4-rc5]
[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/backlight-bd6107-Compare-against-struct-fb_info-device/20230605-225002
base: next-20230605
patch link: https://lore.kernel.org/r/20230605144812.15241-29-tzimmermann%40suse.de
patch subject: [PATCH 28/30] fbdev/core: Move file-I/O code into separate file
config: sparc-allyesconfig (https://download.01.org/0day-ci/archive/20230606/202306060527.syH2D4Is-lkp@intel.com/config)
compiler: sparc64-linux-gcc (GCC) 12.3.0
reproduce (this is a W=1 build):
mkdir -p ~/bin
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/intel-lab-lkp/linux/commit/34fb1357f6464f1173e12cd241310efa5577dd79
git remote add linux-review https://github.com/intel-lab-lkp/linux
git fetch --no-tags linux-review Thomas-Zimmermann/backlight-bd6107-Compare-against-struct-fb_info-device/20230605-225002
git checkout 34fb1357f6464f1173e12cd241310efa5577dd79
# save the config file
mkdir build_dir && cp config build_dir/.config
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/make.cross W=1 O=build_dir ARCH=sparc olddefconfig
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-12.3.0 ~/bin/make.cross W=1 O=build_dir ARCH=sparc SHELL=/bin/bash drivers/video/fbdev/core/

If you fix the issue, kindly add following tag where applicable
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202306060527.syH2D4Is-lkp@intel.com/

All warnings (new ones prefixed by >>):

drivers/video/fbdev/core/fb_devfs.c:174:9: error: unknown type name 'compat_caddr_t'
174 | compat_caddr_t smem_start;
| ^~~~~~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:183:9: error: unknown type name 'compat_caddr_t'
183 | compat_caddr_t mmio_start;
| ^~~~~~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:192:9: error: unknown type name 'compat_caddr_t'
192 | compat_caddr_t red;
| ^~~~~~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:193:9: error: unknown type name 'compat_caddr_t'
193 | compat_caddr_t green;
| ^~~~~~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:194:9: error: unknown type name 'compat_caddr_t'
194 | compat_caddr_t blue;
| ^~~~~~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:195:9: error: unknown type name 'compat_caddr_t'
195 | compat_caddr_t transp;
| ^~~~~~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c: In function 'fb_getput_cmap':
drivers/video/fbdev/core/fb_devfs.c:205:37: error: implicit declaration of function 'compat_ptr' [-Werror=implicit-function-declaration]
205 | if (copy_from_user(&cmap32, compat_ptr(arg), sizeof(cmap32)))
| ^~~~~~~~~~
>> drivers/video/fbdev/core/fb_devfs.c:205:37: warning: passing argument 2 of 'copy_from_user' makes pointer from integer without a cast [-Wint-conversion]
205 | if (copy_from_user(&cmap32, compat_ptr(arg), sizeof(cmap32)))
| ^~~~~~~~~~~~~~~
| |
| int
In file included from include/linux/sched/task.h:11,
from include/linux/sched/signal.h:9,
from include/linux/rcuwait.h:6,
from include/linux/percpu-rwsem.h:7,
from include/linux/fs.h:33,
from include/linux/huge_mm.h:8,
from include/linux/mm.h:989,
from include/linux/kallsyms.h:13,
from include/linux/ftrace.h:13,
from include/linux/kprobes.h:28,
from include/linux/kgdb.h:19,
from include/linux/fb.h:6,
from drivers/video/fbdev/core/fb_devfs.c:4:
include/linux/uaccess.h:180:45: note: expected 'const void *' but argument is of type 'int'
180 | copy_from_user(void *to, const void __user *from, unsigned long n)
| ~~~~~~~~~~~~~~~~~~~^~~~
>> drivers/video/fbdev/core/fb_devfs.c:211:27: warning: initialization of '__u16 *' {aka 'short unsigned int *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
211 | .red = compat_ptr(cmap32.red),
| ^~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:211:27: note: (near initialization for '(anonymous).red')
drivers/video/fbdev/core/fb_devfs.c:212:27: warning: initialization of '__u16 *' {aka 'short unsigned int *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
212 | .green = compat_ptr(cmap32.green),
| ^~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:212:27: note: (near initialization for '(anonymous).green')
drivers/video/fbdev/core/fb_devfs.c:213:27: warning: initialization of '__u16 *' {aka 'short unsigned int *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
213 | .blue = compat_ptr(cmap32.blue),
| ^~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:213:27: note: (near initialization for '(anonymous).blue')
drivers/video/fbdev/core/fb_devfs.c:214:27: warning: initialization of '__u16 *' {aka 'short unsigned int *'} from 'int' makes pointer from integer without a cast [-Wint-conversion]
214 | .transp = compat_ptr(cmap32.transp),
| ^~~~~~~~~~
drivers/video/fbdev/core/fb_devfs.c:214:27: note: (near initialization for '(anonymous).transp')
drivers/video/fbdev/core/fb_devfs.c: In function 'fb_get_fscreeninfo':
>> drivers/video/fbdev/core/fb_devfs.c:270:45: warning: passing argument 2 of 'do_fscreeninfo_to_user' makes pointer from integer without a cast [-Wint-conversion]
270 | return do_fscreeninfo_to_user(&fix, compat_ptr(arg));
| ^~~~~~~~~~~~~~~
| |
| int
drivers/video/fbdev/core/fb_devfs.c:228:70: note: expected 'struct fb_fix_screeninfo32 *' but argument is of type 'int'
228 | struct fb_fix_screeninfo32 __user *fix32)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~
cc1: some warnings being treated as errors

vim +/copy_from_user +205 drivers/video/fbdev/core/fb_devfs.c

197
198 static int fb_getput_cmap(struct fb_info *info, unsigned int cmd,
199 unsigned long arg)
200 {
201 struct fb_cmap32 cmap32;
202 struct fb_cmap cmap_from;
203 struct fb_cmap_user cmap;
204
> 205 if (copy_from_user(&cmap32, compat_ptr(arg), sizeof(cmap32)))
206 return -EFAULT;
207
208 cmap = (struct fb_cmap_user) {
209 .start = cmap32.start,
210 .len = cmap32.len,
> 211 .red = compat_ptr(cmap32.red),
212 .green = compat_ptr(cmap32.green),
213 .blue = compat_ptr(cmap32.blue),
214 .transp = compat_ptr(cmap32.transp),
215 };
216
217 if (cmd == FBIOPUTCMAP)
218 return fb_set_user_cmap(&cmap, info);
219
220 lock_fb_info(info);
221 cmap_from = info->cmap;
222 unlock_fb_info(info);
223
224 return fb_cmap_to_user(&cmap_from, &cmap);
225 }
226
227 static int do_fscreeninfo_to_user(struct fb_fix_screeninfo *fix,
228 struct fb_fix_screeninfo32 __user *fix32)
229 {
230 __u32 data;
231 int err;
232
233 err = copy_to_user(&fix32->id, &fix->id, sizeof(fix32->id));
234
235 data = (__u32) (unsigned long) fix->smem_start;
236 err |= put_user(data, &fix32->smem_start);
237
238 err |= put_user(fix->smem_len, &fix32->smem_len);
239 err |= put_user(fix->type, &fix32->type);
240 err |= put_user(fix->type_aux, &fix32->type_aux);
241 err |= put_user(fix->visual, &fix32->visual);
242 err |= put_user(fix->xpanstep, &fix32->xpanstep);
243 err |= put_user(fix->ypanstep, &fix32->ypanstep);
244 err |= put_user(fix->ywrapstep, &fix32->ywrapstep);
245 err |= put_user(fix->line_length, &fix32->line_length);
246
247 data = (__u32) (unsigned long) fix->mmio_start;
248 err |= put_user(data, &fix32->mmio_start);
249
250 err |= put_user(fix->mmio_len, &fix32->mmio_len);
251 err |= put_user(fix->accel, &fix32->accel);
252 err |= copy_to_user(fix32->reserved, fix->reserved,
253 sizeof(fix->reserved));
254
255 if (err)
256 return -EFAULT;
257 return 0;
258 }
259
260 static int fb_get_fscreeninfo(struct fb_info *info, unsigned int cmd,
261 unsigned long arg)
262 {
263 struct fb_fix_screeninfo fix;
264
265 lock_fb_info(info);
266 fix = info->fix;
267 if (info->flags & FBINFO_HIDE_SMEM_START)
268 fix.smem_start = 0;
269 unlock_fb_info(info);
> 270 return do_fscreeninfo_to_user(&fix, compat_ptr(arg));
271 }
272

--
0-DAY CI Kernel Test Service