[PATCH 03/19] net: airoha: allocate string for GDM port name

Mikhail Kshevetskiy mikhail.kshevetskiy at iopsys.eu
Thu Dec 4 05:14:17 CET 2025


Allocate string for GDM port. This have following benefits:
 - avoid out of boundaries access to gdm_port_str[] array in
   airoha_alloc_gdm_port()
 - no entries for non-used GDM ports

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy at iopsys.eu>
---
 drivers/net/airoha_eth.c | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/drivers/net/airoha_eth.c b/drivers/net/airoha_eth.c
index 31937137d59..900cea46264 100644
--- a/drivers/net/airoha_eth.c
+++ b/drivers/net/airoha_eth.c
@@ -330,7 +330,6 @@ struct airoha_eth {
 	struct airoha_eth_soc_data *soc;
 
 	struct airoha_qdma qdma[AIROHA_MAX_NUM_QDMA];
-	char gdm_port_str[AIROHA_MAX_NUM_GDM_PORTS][AIROHA_GDM_PORT_STRING_LEN];
 };
 
 struct airoha_eth_soc_data {
@@ -791,12 +790,21 @@ static int airoha_alloc_gdm_port(struct udevice *dev, ofnode node)
 	if (id > AIROHA_MAX_NUM_GDM_PORTS)
 		return -EINVAL;
 
-	str = eth->gdm_port_str[id];
+	str = malloc(AIROHA_GDM_PORT_STRING_LEN);
+	if (!str)
+		return -ENOMEM;
+
 	snprintf(str, AIROHA_GDM_PORT_STRING_LEN,
 		 "airoha-gdm%d", id);
 
-	return device_bind_with_driver_data(dev, &airoha_eth_port, str,
-					    (ulong)eth, node, &gdm_dev);
+	ret = device_bind_with_driver_data(dev, &airoha_eth_port, str,
+					   (ulong)eth, node, &gdm_dev);
+	if (ret) {
+		free(str);
+		return ret;
+	}
+
+	return 0;
 }
 
 static int airoha_eth_probe(struct udevice *dev)
-- 
2.51.0



More information about the U-Boot mailing list