svn commit: r365932 - head/sys/sys
Jessica Clarke
jrtc27 at FreeBSD.org
Sun Sep 20 23:20:19 UTC 2020
Author: jrtc27
Date: Sun Sep 20 23:20:18 2020
New Revision: 365932
URL: https://svnweb.freebsd.org/changeset/base/365932
Log:
atomic_common.h: Fix the volatile qualifier placement in atomic_load_ptr
This was broken in r357940 which introduced the __typeof use. We need
the volatile qualifier to be on the pointee not the pointer otherwise it
does nothing. This was found by mhorne in D26498, noticing there was a
problem (a spin loop condition was hoisted for RISC-V boot code) but not
the root cause of it.
Reported by: mhorne
Reviewed by: mhorne, mjg
Approved by: mhorne, mjg
Differential Revision: https://reviews.freebsd.org/D26500
Modified:
head/sys/sys/atomic_common.h
Modified: head/sys/sys/atomic_common.h
==============================================================================
--- head/sys/sys/atomic_common.h Sun Sep 20 22:16:24 2020 (r365931)
+++ head/sys/sys/atomic_common.h Sun Sep 20 23:20:18 2020 (r365932)
@@ -41,7 +41,7 @@
#define atomic_load_short(p) (*(volatile u_short *)(p))
#define atomic_load_int(p) (*(volatile u_int *)(p))
#define atomic_load_long(p) (*(volatile u_long *)(p))
-#define atomic_load_ptr(p) (*(volatile __typeof(p))(p))
+#define atomic_load_ptr(p) (*(volatile __typeof(*p) *)(p))
#define atomic_load_8(p) (*(volatile uint8_t *)(p))
#define atomic_load_16(p) (*(volatile uint16_t *)(p))
#define atomic_load_32(p) (*(volatile uint32_t *)(p))
More information about the svn-src-head
mailing list