[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <38508cf1-7d44-4656-8060-973e820b2957@paulmck-laptop>
Date: Wed, 23 Oct 2024 15:26:57 -0700
From: "Paul E. McKenney" <paulmck@...nel.org>
To: kobak@...dia.com
Cc: mochs@...dia.com, rui.zhang@...el.com, ardb@...nel.org,
rafael.j.wysocki@...el.com, sfr@...b.auug.org.au,
linux-kernel@...r.kernel.org, linux-next@...r.kernel.org,
linux-toolchains@...r.kernel.org
Subject: [BUG] Argument-alignment build error with clang
Hello!
Running rcutorture on next-20241023 got me lots of these:
drivers/acpi/prmt.c:156:29: error: passing 1-byte aligned argument to 4-byte aligned parameter 1 of 'efi_pa_va_lookup' may result in an unaligned pointer access [-Werror,-Walign-mismatch]
156 | (void *)efi_pa_va_lookup(&th->guid, handler_info->handler_address);
This is built with CC=clang. I don't see this diagnostic with GCC.
But we are supposed to be able to build with clang, so...
The first argument is the address of one of these:
typedef struct {
__u8 b[UUID_SIZE];
} guid_t;
Where UUID_SIZE is as follows:
#define UUID_SIZE 16
But this guid_t is a member of one of these:
struct prm_handler_info {
guid_t guid;
efi_status_t (__efiapi *handler_addr)(u64, void *);
u64 static_data_buffer_addr;
u64 acpi_param_buffer_addr;
struct list_head handler_list;
};
One can argue that this structure must be 16-bit aligned on a
64-bit build. So maybe this is a bug in clang's diagnostics, hence
linux-toolchains on CC.
Thoughts?
Thanx, Paul
Powered by blists - more mailing lists