mirror of
https://github.com/torvalds/linux.git
synced 2026-09-27 19:42:03 +02:00
wifi: mac80211: add __packed to union members of struct ieee80211_rx_status
The arm-linux-gnueabi-gcc compiler, align the field followed by union
members, causing size of struct ieee80211_rx_status over skb->cb
(48 bytes). By investigation, the union member starts at offset 32,
and the offset of next field rate_idx is 36 instead of expected 33, and
the total size is (unexpected) 52.
When compiling rtw88 driver, it throws:
In file included from /work/linux-src/linux-stable/include/linux/string.h:386,
from /work/linux-src/linux-stable/include/linux/bitmap.h:13,
from /work/linux-src/linux-stable/include/linux/cpumask.h:11,
from /work/linux-src/linux-stable/include/linux/smp.h:13,
from /work/linux-src/linux-stable/include/linux/lockdep.h:14,
from /work/linux-src/linux-stable/include/linux/mutex.h:17,
from /work/linux-src/linux-stable/include/linux/kernfs.h:11,
from /work/linux-src/linux-stable/include/linux/sysfs.h:16,
from /work/linux-src/linux-stable/include/linux/kobject.h:20,
from /work/linux-src/linux-stable/include/linux/dmi.h:6,
from pci.c:5:
In function 'fortify_memcpy_chk',
inlined from 'rtw_pci_rx_napi.constprop' at pci.c:1095:4:
/work/linux-src/linux-stable/include/linux/fortify-string.h:569:25: warning: call to '__write_overflow_field' declared with attribute warning: detected write beyond size of field (1st parameter); maybe use struct_group()? [-Wattribute-warning]
569 | __write_overflow_field(p_size_field, size);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
After this patch, the size of struct ieee80211_rx_status is 48.
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Link: https://patch.msgid.link/20260411072509.1556635-1-pkshih@realtek.com
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
37f3787636
commit
ed1e31d784
|
|
@ -1747,18 +1747,18 @@ struct ieee80211_rx_status {
|
|||
u8 he_ru:3;
|
||||
u8 he_gi:2;
|
||||
u8 he_dcm:1;
|
||||
};
|
||||
} __packed;
|
||||
struct {
|
||||
u8 ru:4;
|
||||
u8 gi:2;
|
||||
} eht;
|
||||
} __packed eht;
|
||||
struct {
|
||||
u8 ru:4;
|
||||
u8 gi:2;
|
||||
u8 elr:1;
|
||||
u8 im:1;
|
||||
} uhr;
|
||||
};
|
||||
} __packed uhr;
|
||||
} __packed;
|
||||
u8 rate_idx;
|
||||
u8 nss;
|
||||
u8 rx_flags;
|
||||
|
|
@ -1771,6 +1771,8 @@ struct ieee80211_rx_status {
|
|||
u8 link_valid:1, link_id:4;
|
||||
};
|
||||
|
||||
static_assert(sizeof(struct ieee80211_rx_status) <= sizeof_field(struct sk_buff, cb));
|
||||
|
||||
static inline u32
|
||||
ieee80211_rx_status_to_khz(struct ieee80211_rx_status *rx_status)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user