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: openrisc-randconfig-s052-20230423 
(https://download.01.org/0day-ci/archive/20230426/202304261419.lvfw9hta-...@intel.com/config)
compiler: or1k-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=openrisc 
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=openrisc 
SHELL=/bin/bash drivers/video/fbdev/core/

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

sparse warnings: (new ones prefixed by >>)
>> drivers/video/fbdev/core/fb_cfb_fops.c:44:39: sparse: sparse: incorrect type 
>> in argument 2 (different address spaces) @@     expected void const *src @@  
>>    got unsigned char [noderef] [usertype] __iomem *[assigned] src @@
   drivers/video/fbdev/core/fb_cfb_fops.c:44:39: sparse:     expected void 
const *src
   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 *dest @@  
>>    got unsigned char [noderef] [usertype] __iomem *[assigned] dst @@
   drivers/video/fbdev/core/fb_cfb_fops.c:113:32: sparse:     expected void 
*dest
   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

Reply via email to