mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
ixgbe: fix unaligned u32 access in ixgbe_update_flash_X550()
ixgbe_host_interface_command() treats its buffer as a u32 array. The local buffer we pass in was a union of byte-sized fields, which gives it 1-byte alignment on the stack. On strict-align architectures this can cause unaligned 32-bit accesses. Add a u32 member to union ixgbe_hic_hdr2 so the object is 4-byte aligned, and pass the u32 member when calling ixgbe_host_interface_command(). No functional change on x86; prevents unaligned accesses on architectures that enforce natural alignment. Fixes:49425dfc74("ixgbe: Add support for x550em_a 10G MAC type") Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Reviewed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de> Fixes:6a14ee0cfb("ixgbe: Add X550 support function pointers") Tested-by: Rinitha S <sx.rinitha@intel.com> Signed-off-by: Jacob Keller <jacob.e.keller@intel.com> Link: https://patch.msgid.link/20260430-jk-iwl-net-next-2026-04-30-v1-9-6f27ae1cd073@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
b61dbdeff3
commit
eae23ec14a
|
|
@ -2798,6 +2798,7 @@ struct ixgbe_hic_hdr2_rsp {
|
|||
};
|
||||
|
||||
union ixgbe_hic_hdr2 {
|
||||
u32 buf[1];
|
||||
struct ixgbe_hic_hdr2_req req;
|
||||
struct ixgbe_hic_hdr2_rsp rsp;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1228,7 +1228,7 @@ static int ixgbe_update_flash_X550(struct ixgbe_hw *hw)
|
|||
buffer.req.buf_lenl = FW_SHADOW_RAM_DUMP_LEN;
|
||||
buffer.req.checksum = FW_DEFAULT_CHECKSUM;
|
||||
|
||||
status = ixgbe_host_interface_command(hw, &buffer, sizeof(buffer),
|
||||
status = ixgbe_host_interface_command(hw, buffer.buf, sizeof(buffer),
|
||||
IXGBE_HI_COMMAND_TIMEOUT, false);
|
||||
return status;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user