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
next 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.