All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
To: kirill@shutemov.name
Cc: dave.hansen@intel.com, dave.hansen@linux.intel.com,
	jejb@linux.ibm.com, kirill.shutemov@linux.intel.com,
	linux-kernel@vger.kernel.org, lkp@intel.com,
	martin.petersen@oracle.com, oe-kbuild-all@lists.linux.dev,
	x86@kernel.org
Subject: [PATCH 2/2] x86/mm: Fix sparse warnings in untagged_ptr()
Date: Wed, 16 Nov 2022 03:43:53 +0300	[thread overview]
Message-ID: <20221116004353.15052-3-kirill.shutemov@linux.intel.com> (raw)
In-Reply-To: <20221116004353.15052-1-kirill.shutemov@linux.intel.com>

Linear Address Masking patchset triggered a lot of sparse warnings.

The root cause is that casting pointer to '__typeof__(*(ptr)) *' will
strip all sparse tags. The type has to be defined based on the pointer
type, not based on what the pointer points to.

Fix cast in untagged_ptr() and avoid __typeof__() usage in
get/put_user().

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Reported-by: kernel test robot <lkp@intel.com>
---
 arch/x86/include/asm/uaccess.h | 10 +++-------
 1 file changed, 3 insertions(+), 7 deletions(-)

diff --git a/arch/x86/include/asm/uaccess.h b/arch/x86/include/asm/uaccess.h
index 1d2c79246681..bd92e1ee1c1a 100644
--- a/arch/x86/include/asm/uaccess.h
+++ b/arch/x86/include/asm/uaccess.h
@@ -43,7 +43,7 @@ DECLARE_STATIC_KEY_FALSE(tagged_addr_key);
 #define untagged_ptr(mm, ptr)	({					\
 	u64 __ptrval = (__force u64)(ptr);				\
 	__ptrval = untagged_addr(mm, __ptrval);				\
-	(__force __typeof__(*(ptr)) *)__ptrval;				\
+	(__force __typeof__(ptr))__ptrval;				\
 })
 #else
 #define untagged_addr(mm, addr)	(addr)
@@ -158,10 +158,8 @@ extern int __get_user_bad(void);
  */
 #define get_user(x,ptr)							\
 ({									\
-	__typeof__(*(ptr)) __user *__ptr_clean;				\
-	__ptr_clean = untagged_ptr(current->mm, ptr);			\
 	might_fault();							\
-	do_get_user_call(get_user,x,__ptr_clean);			\
+	do_get_user_call(get_user,x,untagged_ptr(current->mm, ptr));	\
 })
 
 /**
@@ -263,10 +261,8 @@ extern void __put_user_nocheck_8(void);
  * Return: zero on success, or -EFAULT on error.
  */
 #define put_user(x, ptr) ({						\
-	__typeof__(*(ptr)) __user *__ptr_clean;				\
-	__ptr_clean = untagged_ptr(current->mm, ptr);			\
 	might_fault();							\
-	do_put_user_call(put_user,x,__ptr_clean);			\
+	do_put_user_call(put_user,x,untagged_ptr(current->mm, ptr));	\
 })
 
 /**
-- 
2.38.0


  parent reply	other threads:[~2022-11-16  0:44 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-14 21:41 [tip:x86/mm 5/16] sound/core/hwdep.c:243:24: sparse: sparse: incorrect type in assignment (different address spaces) kernel test robot
2022-11-14 22:55 ` Dave Hansen
2022-11-15  3:40   ` Kirill A. Shutemov
2022-11-15 15:58     ` Kirill A. Shutemov
2022-11-16  0:43       ` [PATCH 0/2] x86/mm: Fix sparse warning due to LAM patchset Kirill A. Shutemov
2022-11-16  0:43         ` [PATCH 1/2] scsi: Fix get_user() in call sg_scsi_ioctl() Kirill A. Shutemov
2022-11-16  0:48           ` Dave Hansen
2022-11-16  0:55             ` kirill
2022-11-16 22:40           ` David Laight
2022-11-17  0:03             ` kirill
2022-11-16  0:43         ` Kirill A. Shutemov [this message]
2022-11-24 19:36           ` [PATCH 2/2] x86/mm: Fix sparse warnings in untagged_ptr() Andy Shevchenko

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=20221116004353.15052-3-kirill.shutemov@linux.intel.com \
    --to=kirill.shutemov@linux.intel.com \
    --cc=dave.hansen@intel.com \
    --cc=dave.hansen@linux.intel.com \
    --cc=jejb@linux.ibm.com \
    --cc=kirill@shutemov.name \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=martin.petersen@oracle.com \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=x86@kernel.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.