Re: [PATCH v3 2/2] net: pcs: rzn1-miic: Verify port number from dtb
From: Kyle Hendry
Date: Mon Sep 14 2026 - 13:15:51 EST
On 02-Sep-26 11:50, Andrew Lunn wrote:
On Wed, Sep 02, 2026 at 11:37:36AM -0700, Kyle Hendry via B4 Relay wrote:
From: Kyle Hendry <khendry@xxxxxxxxxxxxxxxxxxxx>
Add check to make sure port number is in range before writing
to dt_val array
Signed-off-by: Kyle Hendry <khendry@xxxxxxxxxxxxxxxxxxxx>
---
drivers/net/pcs/pcs-rzn1-miic.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/net/pcs/pcs-rzn1-miic.c b/drivers/net/pcs/pcs-rzn1-miic.c
index c50b65d064fa..3ee40eb9d545 100644
--- a/drivers/net/pcs/pcs-rzn1-miic.c
+++ b/drivers/net/pcs/pcs-rzn1-miic.c
@@ -692,6 +692,12 @@ static int miic_parse_dt(struct miic *miic, u32 *mode_cfg)
if (of_property_read_u32(conv, "reg", &port))
continue;
+ if (port < miic->of_data->miic_port_start || port > miic->of_data->miic_port_max) {
+ dev_err(miic->dev, "Port number out of range: %d\n", port);
+ kfree(dt_val);
+ return -EINVAL;
+ }
+
While reviewing this, i noticed:
/* Adjust for 0 based index */
dt_val[port + !miic->of_data->miic_port_start] = conf;
Is the ! correct?
Andrew
Yes, this is correct because dt_val[1] is where the port config entries start.
Depending on the SoC, the port numbering might be 0 or 1 based, so this
prevents the input config entry at dt_val[0] from being overwritten. The
logic works out to the same as:
index = port + 1 - miic->of_data->miic_port_start
-Kyle