mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-16 10:17:32 +00:00
fsl/fman: Validate cell-index value obtained from Device Tree
Cell-index value is obtained from Device Tree and then used to calculate the index for accessing arrays port_mfl[], mac_mfl[] and intr_mng[]. In case of broken DT due to any error cell-index can contain any value and it is possible to go beyond the array boundaries which can lead at least to memory corruption. Validate cell-index value obtained from Device Tree. Found by Linux Verification Center (linuxtesting.org) with SVACE. Reviewed-by: Sean Anderson <sean.anderson@seco.com> Signed-off-by: Aleksandr Mishin <amishin@t-argos.ru> Link: https://patch.msgid.link/20241028065824.15452-1-amishin@t-argos.ru Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
d86c7a9162
commit
bd50c4125c
@ -24,7 +24,6 @@
|
||||
|
||||
/* General defines */
|
||||
#define FMAN_LIODN_TBL 64 /* size of LIODN table */
|
||||
#define MAX_NUM_OF_MACS 10
|
||||
#define FM_NUM_OF_FMAN_CTRL_EVENT_REGS 4
|
||||
#define BASE_RX_PORTID 0x08
|
||||
#define BASE_TX_PORTID 0x28
|
||||
|
@ -74,6 +74,9 @@
|
||||
#define BM_MAX_NUM_OF_POOLS 64 /* Buffers pools */
|
||||
#define FMAN_PORT_MAX_EXT_POOLS_NUM 8 /* External BM pools per Rx port */
|
||||
|
||||
/* General defines */
|
||||
#define MAX_NUM_OF_MACS 10
|
||||
|
||||
struct fman; /* FMan data */
|
||||
|
||||
/* Enum for defining port types */
|
||||
|
@ -217,6 +217,11 @@ static int mac_probe(struct platform_device *_of_dev)
|
||||
err = -EINVAL;
|
||||
goto _return_dev_put;
|
||||
}
|
||||
if (val >= MAX_NUM_OF_MACS) {
|
||||
dev_err(dev, "cell-index value is too big for %pOF\n", mac_node);
|
||||
err = -EINVAL;
|
||||
goto _return_dev_put;
|
||||
}
|
||||
priv->cell_index = (u8)val;
|
||||
|
||||
/* Get the MAC address */
|
||||
|
Loading…
x
Reference in New Issue
Block a user