[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CAK8P3a2CmQpKynwGbtdWH+1L4=SkX2y4XKggT=8DrnsjxU4hSw@mail.gmail.com>
Date: Tue, 30 Mar 2021 09:34:00 +0200
From: Arnd Bergmann <arnd@...nel.org>
To: Sergei Trofimovich <slyfox@...too.org>
Cc: "Martin K. Petersen" <martin.petersen@...cle.com>,
John Paul Adrian Glaubitz <glaubitz@...sik.fu-berlin.de>,
Don Brace <don.brace@...rochip.com>,
linux-ia64@...r.kernel.org, storagedev@...rochip.com,
linux-scsi <linux-scsi@...r.kernel.org>, jszczype@...hat.com,
Scott Benesh <scott.benesh@...rochip.com>,
Scott Teel <scott.teel@...rochip.com>, thenzl@...hat.com,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v2 3/3] hpsa: add an assert to prevent from __packed reintroduction
On Tue, Mar 30, 2021 at 9:23 AM Sergei Trofimovich <slyfox@...too.org> wrote:
> +/*
> + * Make sure our embedded atomic variable is aligned. Otherwise we break atomic
> + * operations on architectures that don't support unaligned atomics like IA64.
> + *
> + * The assert guards against reintroductin against unwanted __packed to
> + * the struct CommandList.
> + */
> +static_assert(offsetof(struct CommandList, refcount) % __alignof__(atomic_t) == 0);
> +
There are a few other members that need to be aligned: the work_struct
has another
atomic_t inside it, and there are a few pointers that might rely on
being written to
atomically.
While you could add a static_assert for each member, the easier solution is to
just not ask for the members to be misaligned in the first place.
Arnd
Powered by blists - more mailing lists