From: kernel test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: arch/x86/kernel/cpu/sgx/virt.c:295:36: sparse: sparse: cast removes address space '__user' of expression
Date: Sun, 05 Dec 2021 08:50:47 +0800 [thread overview]
Message-ID: <202112050804.fLXTUZhm-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 4321 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bbef3c7a63d2a4cb0f3f839db9e767f168c5e348
commit: d155030b1e7c0e448aab22a803f7a71ea2e117d7 x86/sgx: Add helpers to expose ECREATE and EINIT to KVM
date: 8 months ago
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20211205/202112050804.fLXTUZhm-lkp(a)intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d155030b1e7c0e448aab22a803f7a71ea2e117d7
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout d155030b1e7c0e448aab22a803f7a71ea2e117d7
# save the config file to linux build tree
mkdir build_dir
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/hyperv/ arch/x86/kernel/cpu/sgx/ drivers/hv/
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 >>)
arch/x86/kernel/cpu/sgx/virt.c:59:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [assigned] ret @@ got restricted vm_fault_t @@
arch/x86/kernel/cpu/sgx/virt.c:59:13: sparse: expected int [assigned] ret
arch/x86/kernel/cpu/sgx/virt.c:59:13: sparse: got restricted vm_fault_t
arch/x86/kernel/cpu/sgx/virt.c:60:20: sparse: sparse: restricted vm_fault_t degrades to integer
arch/x86/kernel/cpu/sgx/virt.c:95:35: sparse: sparse: symbol 'sgx_vepc_vm_ops' was not declared. Should it be static?
>> arch/x86/kernel/cpu/sgx/virt.c:295:36: sparse: sparse: cast removes address space '__user' of expression
arch/x86/kernel/cpu/sgx/virt.c:326:24: sparse: sparse: cast removes address space '__user' of expression
arch/x86/kernel/cpu/sgx/virt.c:326:43: sparse: sparse: cast removes address space '__user' of expression
arch/x86/kernel/cpu/sgx/virt.c:326:58: sparse: sparse: cast removes address space '__user' of expression
vim +/__user +295 arch/x86/kernel/cpu/sgx/virt.c
260
261 /**
262 * sgx_virt_ecreate() - Run ECREATE on behalf of guest
263 * @pageinfo: Pointer to PAGEINFO structure
264 * @secs: Userspace pointer to SECS page
265 * @trapnr: trap number injected to guest in case of ECREATE error
266 *
267 * Run ECREATE on behalf of guest after KVM traps ECREATE for the purpose
268 * of enforcing policies of guest's enclaves, and return the trap number
269 * which should be injected to guest in case of any ECREATE error.
270 *
271 * Return:
272 * - 0: ECREATE was successful.
273 * - <0: on error.
274 */
275 int sgx_virt_ecreate(struct sgx_pageinfo *pageinfo, void __user *secs,
276 int *trapnr)
277 {
278 int ret;
279
280 /*
281 * @secs is an untrusted, userspace-provided address. It comes from
282 * KVM and is assumed to be a valid pointer which points somewhere in
283 * userspace. This can fault and call SGX or other fault handlers when
284 * userspace mapping @secs doesn't exist.
285 *
286 * Add a WARN() to make sure @secs is already valid userspace pointer
287 * from caller (KVM), who should already have handled invalid pointer
288 * case (for instance, made by malicious guest). All other checks,
289 * such as alignment of @secs, are deferred to ENCLS itself.
290 */
291 if (WARN_ON_ONCE(!access_ok(secs, PAGE_SIZE)))
292 return -EINVAL;
293
294 __uaccess_begin();
> 295 ret = __ecreate(pageinfo, (void *)secs);
296 __uaccess_end();
297
298 if (encls_faulted(ret)) {
299 *trapnr = ENCLS_TRAPNR(ret);
300 return -EFAULT;
301 }
302
303 /* ECREATE doesn't return an error code, it faults or succeeds. */
304 WARN_ON_ONCE(ret);
305 return 0;
306 }
307 EXPORT_SYMBOL_GPL(sgx_virt_ecreate);
308
---
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: Sean Christopherson <sean.j.christopherson@intel.com>
Cc: kbuild-all@lists.01.org, linux-kernel@vger.kernel.org,
Borislav Petkov <bp@suse.de>, Kai Huang <kai.huang@intel.com>
Subject: arch/x86/kernel/cpu/sgx/virt.c:295:36: sparse: sparse: cast removes address space '__user' of expression
Date: Sun, 5 Dec 2021 08:50:47 +0800 [thread overview]
Message-ID: <202112050804.fLXTUZhm-lkp@intel.com> (raw)
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bbef3c7a63d2a4cb0f3f839db9e767f168c5e348
commit: d155030b1e7c0e448aab22a803f7a71ea2e117d7 x86/sgx: Add helpers to expose ECREATE and EINIT to KVM
date: 8 months ago
config: x86_64-allyesconfig (https://download.01.org/0day-ci/archive/20211205/202112050804.fLXTUZhm-lkp@intel.com/config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce:
# apt-get install sparse
# sparse version: v0.6.4-dirty
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=d155030b1e7c0e448aab22a803f7a71ea2e117d7
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout d155030b1e7c0e448aab22a803f7a71ea2e117d7
# save the config file to linux build tree
mkdir build_dir
make W=1 C=1 CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=x86_64 SHELL=/bin/bash arch/x86/hyperv/ arch/x86/kernel/cpu/sgx/ drivers/hv/
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 >>)
arch/x86/kernel/cpu/sgx/virt.c:59:13: sparse: sparse: incorrect type in assignment (different base types) @@ expected int [assigned] ret @@ got restricted vm_fault_t @@
arch/x86/kernel/cpu/sgx/virt.c:59:13: sparse: expected int [assigned] ret
arch/x86/kernel/cpu/sgx/virt.c:59:13: sparse: got restricted vm_fault_t
arch/x86/kernel/cpu/sgx/virt.c:60:20: sparse: sparse: restricted vm_fault_t degrades to integer
arch/x86/kernel/cpu/sgx/virt.c:95:35: sparse: sparse: symbol 'sgx_vepc_vm_ops' was not declared. Should it be static?
>> arch/x86/kernel/cpu/sgx/virt.c:295:36: sparse: sparse: cast removes address space '__user' of expression
arch/x86/kernel/cpu/sgx/virt.c:326:24: sparse: sparse: cast removes address space '__user' of expression
arch/x86/kernel/cpu/sgx/virt.c:326:43: sparse: sparse: cast removes address space '__user' of expression
arch/x86/kernel/cpu/sgx/virt.c:326:58: sparse: sparse: cast removes address space '__user' of expression
vim +/__user +295 arch/x86/kernel/cpu/sgx/virt.c
260
261 /**
262 * sgx_virt_ecreate() - Run ECREATE on behalf of guest
263 * @pageinfo: Pointer to PAGEINFO structure
264 * @secs: Userspace pointer to SECS page
265 * @trapnr: trap number injected to guest in case of ECREATE error
266 *
267 * Run ECREATE on behalf of guest after KVM traps ECREATE for the purpose
268 * of enforcing policies of guest's enclaves, and return the trap number
269 * which should be injected to guest in case of any ECREATE error.
270 *
271 * Return:
272 * - 0: ECREATE was successful.
273 * - <0: on error.
274 */
275 int sgx_virt_ecreate(struct sgx_pageinfo *pageinfo, void __user *secs,
276 int *trapnr)
277 {
278 int ret;
279
280 /*
281 * @secs is an untrusted, userspace-provided address. It comes from
282 * KVM and is assumed to be a valid pointer which points somewhere in
283 * userspace. This can fault and call SGX or other fault handlers when
284 * userspace mapping @secs doesn't exist.
285 *
286 * Add a WARN() to make sure @secs is already valid userspace pointer
287 * from caller (KVM), who should already have handled invalid pointer
288 * case (for instance, made by malicious guest). All other checks,
289 * such as alignment of @secs, are deferred to ENCLS itself.
290 */
291 if (WARN_ON_ONCE(!access_ok(secs, PAGE_SIZE)))
292 return -EINVAL;
293
294 __uaccess_begin();
> 295 ret = __ecreate(pageinfo, (void *)secs);
296 __uaccess_end();
297
298 if (encls_faulted(ret)) {
299 *trapnr = ENCLS_TRAPNR(ret);
300 return -EFAULT;
301 }
302
303 /* ECREATE doesn't return an error code, it faults or succeeds. */
304 WARN_ON_ONCE(ret);
305 return 0;
306 }
307 EXPORT_SYMBOL_GPL(sgx_virt_ecreate);
308
---
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-05 0:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-05 0:50 kernel test robot [this message]
2021-12-05 0:50 ` arch/x86/kernel/cpu/sgx/virt.c:295:36: sparse: sparse: cast removes address space '__user' of expression kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-02-22 0:42 kernel test robot
2022-02-22 10:27 ` David Laight
2022-02-22 10:27 ` David Laight
2022-06-04 9:46 kernel test robot
2023-08-12 15:27 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=202112050804.fLXTUZhm-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.