From: David Laight <david.laight.linux@gmail.com>
To: Julian Vetter <julian@outer-limits.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>, Arnd Bergmann <arnd@arndb.de>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Jiri Olsa <jolsa@kernel.org>, Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
James Clark <james.clark@linaro.org>,
linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 1/2] include/linux/unaligned.h: remove deprecated __get_unaligned_cpuX() helpers
Date: Thu, 29 Oct 2026 11:11:22 +0000 [thread overview]
Message-ID: <20261029111122.25d6fc3c@pumpkin> (raw)
In-Reply-To: <20261029091736.28742-2-julian@outer-limits.org>
On Thu, 29 Oct 2026 10:17:35 +0100
Julian Vetter <julian@outer-limits.org> wrote:
> The __get_unaligned_cpu16/32/64() and __put_unaligned_cpu16/32/64()
> helpers are deprecated and all users have been converted to the more
> generic get_unaligned() and put_unaligned().
Ugg...
get_unaligned() relies on you having a pointer that is misaligned for its
type.
IIUC that is UB and the compiler can (at least sometimes) remember the
alignment use memory accesses that fault.
In reality it is get_unaligned() that should be deprecated, leaving only
the 16/32/64 le/be/cpu functions that operate on a 'u8 *' parameter for
accessing generic buffers.
Every thing else should be using packed structures.
David
> So, remove
> linux/unaligned/packed_struct.h, and drop its inclusion from
> linux/unaligned.h.
>
> Signed-off-by: Julian Vetter <julian@outer-limits.org>
> ---
> include/linux/unaligned.h | 1 -
> include/linux/unaligned/packed_struct.h | 46 -------------------------
> 2 files changed, 47 deletions(-)
> delete mode 100644 include/linux/unaligned/packed_struct.h
>
> diff --git a/include/linux/unaligned.h b/include/linux/unaligned.h
> index 4a9651017e3c..18c4b0c00e2a 100644
> --- a/include/linux/unaligned.h
> +++ b/include/linux/unaligned.h
> @@ -6,7 +6,6 @@
> * This is the most generic implementation of unaligned accesses
> * and should work almost anywhere.
> */
> -#include <linux/unaligned/packed_struct.h>
> #include <asm/byteorder.h>
> #include <vdso/unaligned.h>
>
> diff --git a/include/linux/unaligned/packed_struct.h b/include/linux/unaligned/packed_struct.h
> deleted file mode 100644
> index f4c8eaf4d012..000000000000
> --- a/include/linux/unaligned/packed_struct.h
> +++ /dev/null
> @@ -1,46 +0,0 @@
> -#ifndef _LINUX_UNALIGNED_PACKED_STRUCT_H
> -#define _LINUX_UNALIGNED_PACKED_STRUCT_H
> -
> -#include <linux/types.h>
> -
> -struct __una_u16 { u16 x; } __packed;
> -struct __una_u32 { u32 x; } __packed;
> -struct __una_u64 { u64 x; } __packed;
> -
> -static inline u16 __get_unaligned_cpu16(const void *p)
> -{
> - const struct __una_u16 *ptr = (const struct __una_u16 *)p;
> - return ptr->x;
> -}
> -
> -static inline u32 __get_unaligned_cpu32(const void *p)
> -{
> - const struct __una_u32 *ptr = (const struct __una_u32 *)p;
> - return ptr->x;
> -}
> -
> -static inline u64 __get_unaligned_cpu64(const void *p)
> -{
> - const struct __una_u64 *ptr = (const struct __una_u64 *)p;
> - return ptr->x;
> -}
> -
> -static inline void __put_unaligned_cpu16(u16 val, void *p)
> -{
> - struct __una_u16 *ptr = (struct __una_u16 *)p;
> - ptr->x = val;
> -}
> -
> -static inline void __put_unaligned_cpu32(u32 val, void *p)
> -{
> - struct __una_u32 *ptr = (struct __una_u32 *)p;
> - ptr->x = val;
> -}
> -
> -static inline void __put_unaligned_cpu64(u64 val, void *p)
> -{
> - struct __una_u64 *ptr = (struct __una_u64 *)p;
> - ptr->x = val;
> -}
> -
> -#endif /* _LINUX_UNALIGNED_PACKED_STRUCT_H */
next prev parent reply other threads:[~2026-10-29 11:11 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 9:17 [PATCH v2 0/2] Remove remaining __get_unaligned_cpu32 Julian Vetter
2026-10-29 9:17 ` [PATCH v2 1/2] include/linux/unaligned.h: remove deprecated __get_unaligned_cpuX() helpers Julian Vetter
2026-10-29 9:23 ` sashiko-bot
2026-10-29 11:11 ` David Laight [this message]
2026-10-29 9:17 ` [PATCH v2 2/2] tools/include/linux/jhash.h: replace __get_unaligned_cpu32 in jhash function Julian Vetter
2026-10-29 9:22 ` sashiko-bot
2026-10-29 12:43 ` [PATCH v2 0/2] Remove remaining __get_unaligned_cpu32 Arnd Bergmann
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=20261029111122.25d6fc3c@pumpkin \
--to=david.laight.linux@gmail.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=alexander.shishkin@linux.intel.com \
--cc=arnd@arndb.de \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=jolsa@kernel.org \
--cc=julian@outer-limits.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox