public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros
@ 2024-08-18 21:01 Uros Bizjak
  2024-08-18 21:01 ` [PATCH v2 2/2] mm/kmemleak: Use IS_ERR_PCPU() for pointer in the percpu address space Uros Bizjak
  2024-08-22  8:35 ` [PATCH v2 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros Catalin Marinas
  0 siblings, 2 replies; 5+ messages in thread
From: Uros Bizjak @ 2024-08-18 21:01 UTC (permalink / raw)
  To: linux-mm, linux-kernel; +Cc: Uros Bizjak, Catalin Marinas, Andrew Morton

Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros that
operate on pointers in the percpu address space.

These macros remove the need for (__force void *) function
argument casts (to avoid sparse -Wcast-from-as warnings).

The patch will also avoid future build errors due to pointer address
space mismatch with enabled strict percpu address space checks.

Signed-off-by: Uros Bizjak <ubizjak@gmail.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Andrew Morton <akpm@linux-foundation.org>
---
v2: Implement as macros to avoid powerpc build failure
---
 include/linux/err.h | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/include/linux/err.h b/include/linux/err.h
index b5d9bb2a2349..a4dacd745fcf 100644
--- a/include/linux/err.h
+++ b/include/linux/err.h
@@ -41,6 +41,9 @@ static inline void * __must_check ERR_PTR(long error)
 	return (void *) error;
 }
 
+/* Return the pointer in the percpu address space. */
+#define ERR_PTR_PCPU(error) ((void __percpu *)(unsigned long)ERR_PTR(error))
+
 /**
  * PTR_ERR - Extract the error code from an error pointer.
  * @ptr: An error pointer.
@@ -51,6 +54,9 @@ static inline long __must_check PTR_ERR(__force const void *ptr)
 	return (long) ptr;
 }
 
+/* Read an error pointer from the percpu address space. */
+#define PTR_ERR_PCPU(ptr) (PTR_ERR((const void *)(__force const unsigned long)(ptr)))
+
 /**
  * IS_ERR - Detect an error pointer.
  * @ptr: The pointer to check.
@@ -61,6 +67,9 @@ static inline bool __must_check IS_ERR(__force const void *ptr)
 	return IS_ERR_VALUE((unsigned long)ptr);
 }
 
+/* Read an error pointer from the percpu address space. */
+#define IS_ERR_PCPU(ptr) (IS_ERR((const void *)(__force const unsigned long)(ptr)))
+
 /**
  * IS_ERR_OR_NULL - Detect an error pointer or a null pointer.
  * @ptr: The pointer to check.
-- 
2.42.0


^ permalink raw reply related	[flat|nested] 5+ messages in thread
* [PATCH v2 0/2] netfilter: nf_tables: Fix percpu address space issues in nf_tables_api.c
@ 2024-08-29 15:29 Uros Bizjak
  2024-08-29 15:29 ` [PATCH v2 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros Uros Bizjak
  0 siblings, 1 reply; 5+ messages in thread
From: Uros Bizjak @ 2024-08-29 15:29 UTC (permalink / raw)
  To: netfilter-devel, coreteam, netdev, linux-kernel
  Cc: Uros Bizjak, Pablo Neira Ayuso, Jozsef Kadlecsik, David S. Miller,
	Eric Dumazet, Jakub Kicinski, Paolo Abeni

Use {ERR_PTR,IS_ERR,PTR_ERR}_PCPU() macros when crossing between generic
and percpu address spaces and add __percpu annotation to *stats pointer
to fix percpu address space issues.

NOTE: The patch depends on a patch that introduces *_PCPU() macros [1]
that is on the way to mainline through the mm tree. For convience, the
patch is included in this patch series, so CI tester is able to test
the second patch without compile failures.

[1] https://lore.kernel.org/lkml/20240818210235.33481-1-ubizjak@gmail.com/

The netfilter patch obsoletes patch [2].

[2] https://patchwork.ozlabs.org/project/netfilter-devel/patch/20240806102808.804619-1-ubizjak@gmail.com/

Cc: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Jozsef Kadlecsik <kadlec@netfilter.org>
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Eric Dumazet <edumazet@google.com>
Cc: Jakub Kicinski <kuba@kernel.org>
Cc: Paolo Abeni <pabeni@redhat.com>

Uros Bizjak (2):
  err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros
  netfilter: nf_tables: Fix percpu address space issues in
    nf_tables_api.c

 include/linux/err.h           |  9 +++++++++
 net/netfilter/nf_tables_api.c | 16 ++++++++--------
 2 files changed, 17 insertions(+), 8 deletions(-)

-- 
2.42.0


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2024-08-29 15:48 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-18 21:01 [PATCH v2 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros Uros Bizjak
2024-08-18 21:01 ` [PATCH v2 2/2] mm/kmemleak: Use IS_ERR_PCPU() for pointer in the percpu address space Uros Bizjak
2024-08-22  8:35   ` Catalin Marinas
2024-08-22  8:35 ` [PATCH v2 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros Catalin Marinas
  -- strict thread matches above, loose matches on Subject: below --
2024-08-29 15:29 [PATCH v2 0/2] netfilter: nf_tables: Fix percpu address space issues in nf_tables_api.c Uros Bizjak
2024-08-29 15:29 ` [PATCH v2 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() macros Uros Bizjak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox