mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net: phy: air_en8811h: refuse a firmware blob that is not a multiple of 4
The download loop streams the blob into the MCU as 32-bit words and reads the last word past the end of a blob whose size is not a multiple of four. The shipped blobs happen to be aligned, so the overread never showed; a truncated or foreign file would carry up to three bytes of whatever follows it into the MCU. Reject it before the first write instead. Cc: stable+noautosel@kernel.org # needs real net-admin (non-ns) Reviewed-by: Andrew Lunn <andrew@lunn.ch> Signed-off-by: Aleksei Sviridkin <f@lex.la> Link: https://patch.msgid.link/20260903123650.23855-1-f@lex.la Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
7f1de03e31
commit
daf0972d38
|
|
@ -312,6 +312,12 @@ static int air_write_buf(struct phy_device *phydev, u32 address,
|
|||
int saved_page;
|
||||
int ret = 0;
|
||||
|
||||
if (fw->size % 4) {
|
||||
phydev_err(phydev, "firmware size %zu is not a multiple of 4\n",
|
||||
fw->size);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
saved_page = phy_select_page(phydev, AIR_PHY_PAGE_EXTENDED_4);
|
||||
|
||||
if (saved_page >= 0) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user