From: Finn Thain <fthain@linux-m68k.org>
To: Nilesh Javali <njavali@marvell.com>
Cc: Arnd Bergmann <arnd@arndb.de>,
Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
oe-kbuild-all@lists.linux.dev, lkp@intel.com
Subject: Re: include/linux/compiler_types.h:631:38: error: call to '__compiletime_assert_431' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct qla_tgt_sess_op, atio) + sizeof(u->atio) != sizeof(*u)
Date: Tue, 3 Mar 2026 17:48:48 +1100 (AEDT) [thread overview]
Message-ID: <6bc11e2f-393d-16a2-9664-a20e2f1d3767@linux-m68k.org> (raw)
In-Reply-To: <202603030747.VX0v4otS-lkp@intel.com>
On Tue, 3 Mar 2026, kernel test robot wrote:
> tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head: af4e9ef3d78420feb8fe58cd9a1ab80c501b3c08
> commit: e428b013d9dff30f7a65509e33047ba975cce8ba atomic: specify alignment for atomic_t and atomic64_t
> date: 5 weeks ago
> config: m68k-randconfig-r133-20260303 (https://download.01.org/0day-ci/archive/20260303/202603030747.VX0v4otS-lkp@intel.com/config)
> compiler: m68k-linux-gcc (GCC) 8.5.0
> sparse: v0.6.5-rc1
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260303/202603030747.VX0v4otS-lkp@intel.com/reproduce)
This config is an unlikely one (fibre channel storage with a coldfire
processor) which is probably why 'make randconfig' was needed in order to
expose the problem. It's essentially a theoretical bug but I will try to
patch it anyway.
What's happening here is that the patch that naturally aligned atomic_t
caused some new padding to appear at the end of this struct:
--- a/pahole.out
+++ b/pahole.out
@@ -1,16 +1,18 @@
struct qla_tgt_sess_op {
struct scsi_qla_host * vha; /* 0 4 */
uint32_t chip_reset; /* 4 4 */
- struct work_struct work; /* 8 16 */
+ struct work_struct work __attribute__((__aligned__(4))); /* 8 16 */
struct list_head cmd_list; /* 24 8 */
bool aborted; /* 32 1 */
/* XXX 1 byte hole, try to pack */
struct rsp_que * rsp; /* 34 4 */
struct atio_from_isp atio; /* 38 64 */
- /* size: 102, cachelines: 2, members: 7 */
+ /* size: 104, cachelines: 2, members: 7 */
/* sum members: 101, holes: 1, sum holes: 1 */
- /* last cacheline: 38 bytes */
-};
+ /* padding: 2 */
+ /* forced alignments: 1 */
+ /* last cacheline: 40 bytes */
+} __attribute__((__aligned__(4)));
The BUILD_BUG_ON assertion checks the size of the struct, which doesn't
seem right, because any padding at the end of the struct does not
interfere with the subsequent kzalloc() and memcpy() in
qlt_queue_unknown_atio().
I suppose the assertion could be motivated by some code elsewhere but I
haven't yet found it. So perhaps the assertion can simply be removed. An
alternative solution could be to increase the 1 byte hole to 3 bytes, and
prevent tail padding that way.
But padding should be irrelevant to the real requirement --
struct qla_tgt_sess_op {
struct scsi_qla_host *vha;
uint32_t chip_reset;
struct work_struct work;
struct list_head cmd_list;
bool aborted;
struct rsp_que *rsp;
struct atio_from_isp atio;
/* DO NOT ADD ANYTHING ELSE HERE - atio must be last member */
};
And yet, there's already a precedent in this driver for padding a struct
in order to satisfy a BUILD_BUG_ON --
struct atio7_fcp_cmnd {
uint64_t lun;
uint8_t cmnd_ref;
uint8_t task_attr:3;
uint8_t reserved:5;
uint8_t task_mgmt_flags;
#define FCP_CMND_TASK_MGMT_CLEAR_ACA 6
#define FCP_CMND_TASK_MGMT_TARGET_RESET 5
#define FCP_CMND_TASK_MGMT_LU_RESET 4
#define FCP_CMND_TASK_MGMT_CLEAR_TASK_SET 2
#define FCP_CMND_TASK_MGMT_ABORT_TASK_SET 1
uint8_t wrdata:1;
uint8_t rddata:1;
uint8_t add_cdb_len:6;
uint8_t cdb[16];
/*
* add_cdb is optional and can absent from struct atio7_fcp_cmnd. Size 4
* only to make sizeof(struct atio7_fcp_cmnd) be as expected by
* BUILD_BUG_ON in qlt_init().
*/
uint8_t add_cdb[4];
/* __le32 data_length; */
} __packed;
So I'm undecided. Any thoughts, Nilesh?
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202603030747.VX0v4otS-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
> In file included from <command-line>:
> In function 'qlt_queue_unknown_atio',
> inlined from 'qlt_24xx_atio_pkt_all_vps' at drivers/scsi/qla2xxx/qla_target.c:331:4,
> inlined from 'qlt_24xx_process_atio_queue' at drivers/scsi/qla2xxx/qla_target.c:7903:4:
> >> include/linux/compiler_types.h:631:38: error: call to '__compiletime_assert_431' declared with attribute error: BUILD_BUG_ON failed: offsetof(struct qla_tgt_sess_op, atio) + sizeof(u->atio) != sizeof(*u)
> _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
> ^
> include/linux/compiler_types.h:612:4: note: in definition of macro '__compiletime_assert'
> prefix ## suffix(); \
> ^~~~~~
> include/linux/compiler_types.h:631:2: note: in expansion of macro '_compiletime_assert'
> _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
> ^~~~~~~~~~~~~~~~~~~
> include/linux/build_bug.h:39:37: note: in expansion of macro 'compiletime_assert'
> #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
> ^~~~~~~~~~~~~~~~~~
> include/linux/build_bug.h:50:2: note: in expansion of macro 'BUILD_BUG_ON_MSG'
> BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
> ^~~~~~~~~~~~~~~~
> drivers/scsi/qla2xxx/qla_target.c:216:2: note: in expansion of macro 'BUILD_BUG_ON'
> BUILD_BUG_ON(offsetof(struct qla_tgt_sess_op, atio) + sizeof(u->atio) != sizeof(*u));
> ^~~~~~~~~~~~
>
prev parent reply other threads:[~2026-03-03 6:47 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-02 23:58 kernel test robot
2026-03-03 6:48 ` Finn Thain [this message]
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=6bc11e2f-393d-16a2-9664-a20e2f1d3767@linux-m68k.org \
--to=fthain@linux-m68k.org \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=lkp@intel.com \
--cc=njavali@marvell.com \
--cc=oe-kbuild-all@lists.linux.dev \
/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