From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
To: Helge Deller <deller@kernel.org>,
John Johansen <john.johansen@canonical.com>
Cc: david laight <david.laight@runbox.com>,
Helge Deller <deller@gmx.de>,
linux-kernel@vger.kernel.org, apparmor@lists.ubuntu.com,
linux-security-module@vger.kernel.org,
linux-parisc@vger.kernel.org
Subject: Re: [PATCH 0/2] apparmor unaligned memory fixes
Date: Thu, 27 Nov 2025 10:43:45 +0100 [thread overview]
Message-ID: <d5c3d7329b6727bae537b118449ca2d5ad70e50e.camel@physik.fu-berlin.de> (raw)
In-Reply-To: <6d80f9bc5fd6d91ed2451d140227b866d6273af4.camel@physik.fu-berlin.de>
Hi Helge,
On Thu, 2025-11-27 at 10:25 +0100, John Paul Adrian Glaubitz wrote:
> Hi Helge,
>
> On Wed, 2025-11-26 at 21:15 +0100, Helge Deller wrote:
> > So, here is a (untested) v3:
> >
> >
> > [PATCH v3] apparmor: Optimize table creation from possibly unaligned memory
> >
> > Source blob may come from userspace and might be unaligned.
> > Try to optize the copying process by avoiding unaligned memory accesses.
> >
> > Signed-off-by: Helge Deller <deller@gmx.de>
> >
> > diff --git a/security/apparmor/include/match.h b/security/apparmor/include/match.h
> > index 1fbe82f5021b..19e72b3e8f49 100644
> > --- a/security/apparmor/include/match.h
> > +++ b/security/apparmor/include/match.h
> > @@ -104,16 +104,18 @@ struct aa_dfa {
> > struct table_header *tables[YYTD_ID_TSIZE];
> > };
> >
> > -#define byte_to_byte(X) (X)
> > -
> > #define UNPACK_ARRAY(TABLE, BLOB, LEN, TTYPE, BTYPE, NTOHX) \
> > do { \
> > typeof(LEN) __i; \
> > TTYPE *__t = (TTYPE *) TABLE; \
> > BTYPE *__b = (BTYPE *) BLOB; \
> > - for (__i = 0; __i < LEN; __i++) { \
> > - __t[__i] = NTOHX(__b[__i]); \
> > - } \
> > + BUILD_BUG_ON(sizeof(TTYPE) != sizeof(BTYPE)); \
> > + if (IS_ENABLED(CONFIG_CPU_BIG_ENDIAN)) \
> > + memcpy(__t, __b, (LEN) * sizeof(BTYPE)); \
> > + else /* copy & convert convert from big-endian */ \
> > + for (__i = 0; __i < LEN; __i++) { \
> > + __t[__i] = NTOHX(&__b[__i]); \
> > + } \
> > } while (0)
> >
> > static inline size_t table_size(size_t len, size_t el_size)
> > diff --git a/security/apparmor/match.c b/security/apparmor/match.c
> > index c5a91600842a..1e32c8ba14ae 100644
> > --- a/security/apparmor/match.c
> > +++ b/security/apparmor/match.c
> > @@ -15,6 +15,7 @@
> > #include <linux/vmalloc.h>
> > #include <linux/err.h>
> > #include <linux/kref.h>
> > +#include <linux/unaligned.h>
> >
> > #include "include/lib.h"
> > #include "include/match.h"
> > @@ -66,14 +67,13 @@ static struct table_header *unpack_table(char *blob, size_t bsize)
> > table->td_flags = th.td_flags;
> > table->td_lolen = th.td_lolen;
> > if (th.td_flags == YYTD_DATA8)
> > - UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
> > - u8, u8, byte_to_byte);
> > + memcpy(table->td_data, blob, th.td_lolen);
> > else if (th.td_flags == YYTD_DATA16)
> > UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
> > - u16, __be16, be16_to_cpu);
> > + u16, __be16, get_unaligned_be16);
> > else if (th.td_flags == YYTD_DATA32)
> > UNPACK_ARRAY(table->td_data, blob, th.td_lolen,
> > - u32, __be32, be32_to_cpu);
> > + u32, __be32, get_unaligned_be32);
> > else
> > goto fail;
> > /* if table was vmalloced make sure the page tables are synced
>
> This one does not apply:
>
> glaubitz@node54:/data/home/glaubitz/linux> git am ../20251125_app_armor_unalign_2nd.mbx
> Applying: apparmor unaligned memory fixes
> error: patch failed: security/apparmor/match.c:15
> error: security/apparmor/match.c: patch does not apply
> Patch failed at 0001 apparmor unaligned memory fixes
> hint: Use 'git am --show-current-patch=diff' to see the failed patch
> hint: When you have resolved this problem, run "git am --continue".
> hint: If you prefer to skip this patch, run "git am --skip" instead.
> hint: To restore the original branch and stop patching, run "git am --abort".
> hint: Disable this message with "git config set advice.mergeConflict false"
> glaubitz@node54:/data/home/glaubitz/linux>
The patch alone applies, i.e without your previous patch, but it does not fix the problem:
[ 73.961582] Kernel unaligned access at TPC[8dabdc] aa_dfa_unpack+0x3c/0x6e0
[ 74.053195] Kernel unaligned access at TPC[8dabec] aa_dfa_unpack+0x4c/0x6e0
[ 74.144814] Kernel unaligned access at TPC[8dacd0] aa_dfa_unpack+0x130/0x6e0
[ 74.237538] Kernel unaligned access at TPC[8dacd0] aa_dfa_unpack+0x130/0x6e0
[ 74.330296] Kernel unaligned access at TPC[8dacd0] aa_dfa_unpack+0x130/0x6e0
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer
`. `' Physicist
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
next prev parent reply other threads:[~2025-11-27 9:43 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-31 15:08 [PATCH 0/2] apparmor unaligned memory fixes deller
2025-05-31 15:08 ` [PATCH 1/2] apparmor: Fix 8-byte alignment for initial dfa blob streams deller
2025-05-31 15:08 ` [PATCH 2/2] apparmor: Fix unaligned memory accesses in KUnit test deller
2025-11-18 9:04 ` [PATCH 0/2] apparmor unaligned memory fixes John Paul Adrian Glaubitz
2025-11-18 11:09 ` Helge Deller
2025-11-18 11:43 ` John Paul Adrian Glaubitz
2025-11-18 12:49 ` Helge Deller
2025-11-23 2:08 ` John Johansen
2025-11-25 15:11 ` Helge Deller
2025-11-25 19:20 ` John Johansen
2025-11-25 21:13 ` Helge Deller
2025-11-26 9:11 ` John Johansen
2025-11-26 10:44 ` david laight
2025-11-26 11:03 ` Helge Deller
2025-11-26 11:31 ` Helge Deller
2025-11-26 16:16 ` John Paul Adrian Glaubitz
2025-11-26 16:58 ` Helge Deller
2025-11-26 17:26 ` John Paul Adrian Glaubitz
2025-11-26 14:22 ` david laight
2025-11-26 15:12 ` Helge Deller
2025-11-26 19:33 ` John Johansen
2025-11-26 20:15 ` Helge Deller
2025-11-26 21:10 ` John Johansen
2025-11-27 9:25 ` John Paul Adrian Glaubitz
2025-11-27 9:43 ` John Paul Adrian Glaubitz [this message]
2025-11-28 9:54 ` John Paul Adrian Glaubitz
2025-11-26 21:23 ` david laight
2025-11-26 22:18 ` John Johansen
2025-11-26 19:22 ` John Johansen
2025-11-26 7:27 ` John Paul Adrian Glaubitz
2025-11-26 7:52 ` John Paul Adrian Glaubitz
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=d5c3d7329b6727bae537b118449ca2d5ad70e50e.camel@physik.fu-berlin.de \
--to=glaubitz@physik.fu-berlin.de \
--cc=apparmor@lists.ubuntu.com \
--cc=david.laight@runbox.com \
--cc=deller@gmx.de \
--cc=deller@kernel.org \
--cc=john.johansen@canonical.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-parisc@vger.kernel.org \
--cc=linux-security-module@vger.kernel.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