All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: [arnd-playground:randconfig-5.17-next 133/205] drivers/video/fbdev/core/fb_device.c:88:17: sparse: sparse: incorrect type in argument 2 (different address spaces)
Date: Wed, 08 Dec 2021 20:16:40 +0800	[thread overview]
Message-ID: <202112082006.su7StCAb-lkp@intel.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 6053 bytes --]

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git randconfig-5.17-next
head:   fdcc9acc26de65e7b1b8cebc3089b7666be25681
commit: f63b31214860be43eb1b2aa8052b066c6497484f [133/205] fbdev: move chrdev code into fb_device.c
config: s390-randconfig-s032-20211207 (https://download.01.org/0day-ci/archive/20211208/202112082006.su7StCAb-lkp(a)intel.com/config)
compiler: s390-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=f63b31214860be43eb1b2aa8052b066c6497484f
        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.17-next
        git checkout f63b31214860be43eb1b2aa8052b066c6497484f
        # 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=s390 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:17: 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_device.c:88:17: sparse:     expected void const *src
   drivers/video/fbdev/core/fb_device.c:88:17: sparse:     got unsigned char [noderef] [usertype] __iomem *[assigned] src
>> drivers/video/fbdev/core/fb_device.c:165:17: 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_device.c:165:17: sparse:     expected void *dest
   drivers/video/fbdev/core/fb_device.c:165:17: 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(a)lists.01.org

WARNING: multiple messages have this Message-ID (diff)
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.17-next 133/205] drivers/video/fbdev/core/fb_device.c:88:17: sparse: sparse: incorrect type in argument 2 (different address spaces)
Date: Wed, 8 Dec 2021 20:16:40 +0800	[thread overview]
Message-ID: <202112082006.su7StCAb-lkp@intel.com> (raw)

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/arnd/playground.git randconfig-5.17-next
head:   fdcc9acc26de65e7b1b8cebc3089b7666be25681
commit: f63b31214860be43eb1b2aa8052b066c6497484f [133/205] fbdev: move chrdev code into fb_device.c
config: s390-randconfig-s032-20211207 (https://download.01.org/0day-ci/archive/20211208/202112082006.su7StCAb-lkp@intel.com/config)
compiler: s390-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=f63b31214860be43eb1b2aa8052b066c6497484f
        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.17-next
        git checkout f63b31214860be43eb1b2aa8052b066c6497484f
        # 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=s390 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:17: 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_device.c:88:17: sparse:     expected void const *src
   drivers/video/fbdev/core/fb_device.c:88:17: sparse:     got unsigned char [noderef] [usertype] __iomem *[assigned] src
>> drivers/video/fbdev/core/fb_device.c:165:17: 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_device.c:165:17: sparse:     expected void *dest
   drivers/video/fbdev/core/fb_device.c:165:17: 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-08 12:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-08 12:16 kernel test robot [this message]
2021-12-08 12:16 ` [arnd-playground:randconfig-5.17-next 133/205] drivers/video/fbdev/core/fb_device.c:88:17: sparse: sparse: incorrect type in argument 2 (different address spaces) kernel test robot

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=202112082006.su7StCAb-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=kbuild-all@lists.01.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.