apparmor: use get_unaligned() only for multi-byte words
authorArnd Bergmann <arnd@arndb.de>
Fri, 7 May 2021 22:07:54 +0000 (00:07 +0200)
committerArnd Bergmann <arnd@arndb.de>
Mon, 17 May 2021 11:30:29 +0000 (13:30 +0200)
Using get_unaligned() on a u8 pointer is pointless, and will
result in a compiler warning after a planned cleanup:

In file included from arch/x86/include/generated/asm/unaligned.h:1,
                 from security/apparmor/policy_unpack.c:16:
security/apparmor/policy_unpack.c: In function 'unpack_u8':
include/asm-generic/unaligned.h:13:15: error: 'packed' attribute ignored for field of type 'u8' {aka 'unsigned char'} [-Werror=attributes]
   13 |  const struct { type x __packed; } *__pptr = (typeof(__pptr))(ptr); \
      |               ^

Simply dereference this pointer directly.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: John Johansen <john.johansen@canonical.com>
security/apparmor/policy_unpack.c

index dc345ac..4e1f96b 100644 (file)
@@ -304,7 +304,7 @@ static bool unpack_u8(struct aa_ext *e, u8 *data, const char *name)
                if (!inbounds(e, sizeof(u8)))
                        goto fail;
                if (data)
-                       *data = get_unaligned((u8 *)e->pos);
+                       *data = *((u8 *)e->pos);
                e->pos += sizeof(u8);
                return true;
        }