git: 046d8d89ed19 - main - LinuxKPI: fix WRITE_ONCE(), remove ACCESS_ONCE()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sun, 21 May 2023 23:14:27 UTC
The branch main has been updated by bz:
URL: https://cgit.FreeBSD.org/src/commit/?id=046d8d89ed1956944b12ec4f0580c30bc202bbfb
commit 046d8d89ed1956944b12ec4f0580c30bc202bbfb
Author: Bjoern A. Zeeb <bz@FreeBSD.org>
AuthorDate: 2023-05-13 15:17:47 +0000
Commit: Bjoern A. Zeeb <bz@FreeBSD.org>
CommitDate: 2023-05-21 23:14:05 +0000
LinuxKPI: fix WRITE_ONCE(), remove ACCESS_ONCE()
Fix a gcc warning: "to be safe all intermediate pointers in cast from
'...' to '...' must be 'const' qualified [-Wcast-qual]".
Doing what is essentially a __DECONST() adding the uintptr_t gets
rid of the massive amount of warnings we get in LinuxKPI and lets
us see the actual problems a lot better.
This is a follow-up to 74e908b3c63b28de1d590dc42502fbe959a6da2e which
fixed READ_ONCE().
ACCESS_ONCE() seems to be an obsolete KPI these days in Linux and
FreeBSD does not use it either directly so we can entirely remove
it now.
Sponsored by: The FreeBSD Foundation
Suggested by: jhb
Reviewed by: hselasky
MFC after: 10 days
Differential Revision: https://reviews.freebsd.org/D40084
---
sys/compat/linuxkpi/common/include/linux/compiler.h | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/sys/compat/linuxkpi/common/include/linux/compiler.h b/sys/compat/linuxkpi/common/include/linux/compiler.h
index b2c835ad808d..323a583860b4 100644
--- a/sys/compat/linuxkpi/common/include/linux/compiler.h
+++ b/sys/compat/linuxkpi/common/include/linux/compiler.h
@@ -88,11 +88,9 @@
#define ___PASTE(a,b) a##b
#define __PASTE(a,b) ___PASTE(a,b)
-#define ACCESS_ONCE(x) (*(volatile __typeof(x) *)&(x))
-
#define WRITE_ONCE(x,v) do { \
barrier(); \
- ACCESS_ONCE(x) = (v); \
+ (*(volatile __typeof(x) *)(uintptr_t)&(x)) = (v); \
barrier(); \
} while (0)