All of lore.kernel.org
 help / color / mirror / Atom feed
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

             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.