From: Uros Bizjak <ubizjak@gmail.com>
To: linux-mm@kvack.org, linux-kernel@vger.kernel.org
Cc: Uros Bizjak <ubizjak@gmail.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Andrew Morton <akpm@linux-foundation.org>
Subject: [PATCH 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() functions
Date: Tue, 13 Aug 2024 19:25:10 +0200 [thread overview]
Message-ID: <20240813172543.38411-1-ubizjak@gmail.com> (raw)
Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() functions that
operate on pointers in the percpu address space.
These functions 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>
---
include/linux/err.h | 38 ++++++++++++++++++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git a/include/linux/err.h b/include/linux/err.h
index b5d9bb2a2349..997fd6fe1d0c 100644
--- a/include/linux/err.h
+++ b/include/linux/err.h
@@ -6,6 +6,7 @@
#include <linux/types.h>
#include <asm/errno.h>
+#include <asm/percpu.h>
/*
* Kernel pointers have redundant information, so we can use a
@@ -41,6 +42,22 @@ static inline void * __must_check ERR_PTR(long error)
return (void *) error;
}
+/**
+ * ERR_PTR_PCPU - Create an error pointer in the percpu address space.
+ * @error: A negative error code.
+ *
+ * Encodes @error into a pointer value in the percpu address space.
+ * Users should consider the result opaque and not assume anything
+ * about how the error is encoded.
+ *
+ * Return: A pointer in the percpu address space with @error encoded
+ * within its value.
+ */
+static inline void __percpu * __must_check ERR_PTR_PCPU(long error)
+{
+ return (void __percpu *) error;
+}
+
/**
* PTR_ERR - Extract the error code from an error pointer.
* @ptr: An error pointer.
@@ -51,6 +68,17 @@ static inline long __must_check PTR_ERR(__force const void *ptr)
return (long) ptr;
}
+/**
+ * PTR_ERR_PCPU - Extract the error code from an error pointer in the
+ * percpu address space.
+ * @ptr: An error pointer in the percpu address space.
+ * Return: The error code within @ptr.
+ */
+static inline long __must_check PTR_ERR_PCPU(const void __percpu *ptr)
+{
+ return (__force long) ptr;
+}
+
/**
* IS_ERR - Detect an error pointer.
* @ptr: The pointer to check.
@@ -61,6 +89,16 @@ static inline bool __must_check IS_ERR(__force const void *ptr)
return IS_ERR_VALUE((unsigned long)ptr);
}
+/**
+ * IS_ERR_PCPU - Detect an error pointer in the percpu address space.
+ * @ptr: The pointer in the percpu address space to check.
+ * Return: true if @ptr is an error pointer, false otherwise.
+ */
+static inline bool __must_check IS_ERR_PCPU(const void __percpu *ptr)
+{
+ return IS_ERR_VALUE((__force unsigned long)ptr);
+}
+
/**
* IS_ERR_OR_NULL - Detect an error pointer or a null pointer.
* @ptr: The pointer to check.
--
2.42.0
next reply other threads:[~2024-08-13 17:25 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-13 17:25 Uros Bizjak [this message]
2024-08-13 17:25 ` [PATCH 2/2] mm/kmemleak: Use IS_ERR_PCPU() for pointer in the percpu address space Uros Bizjak
2024-08-14 12:15 ` Catalin Marinas
2024-08-14 12:15 ` [PATCH 1/2] err.h: Add ERR_PTR_PCPU(), PTR_ERR_PCPU() and IS_ERR_PCPU() functions Catalin Marinas
2024-08-15 1:52 ` kernel test robot
2024-08-15 4:29 ` 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=20240813172543.38411-1-ubizjak@gmail.com \
--to=ubizjak@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=catalin.marinas@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.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.