diff --git a/target/linux/generic/files/drivers/net/phy/ar8327.c b/target/linux/generic/files/drivers/net/phy/ar8327.c index e071a67d70..bf7d7af5b7 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8327.c +++ b/target/linux/generic/files/drivers/net/phy/ar8327.c @@ -319,7 +319,7 @@ ar8327_led_create(struct ar8xxx_priv *priv, if (led_info->led_num >= AR8327_NUM_LEDS) return -EINVAL; - aled = kzalloc(sizeof(*aled) + strlen(led_info->name) + 1, + aled = kzalloc(struct_size(aled, name, strlen(led_info->name) + 1), GFP_KERNEL); if (!aled) return -ENOMEM; @@ -333,7 +333,6 @@ ar8327_led_create(struct ar8xxx_priv *priv, if (aled->mode == AR8327_LED_MODE_HW) aled->enable_hw_mode = true; - aled->name = (char *)(aled + 1); strcpy(aled->name, led_info->name); aled->cdev.name = aled->name; diff --git a/target/linux/generic/files/drivers/net/phy/ar8327.h b/target/linux/generic/files/drivers/net/phy/ar8327.h index 68bb883cfa..cc94139d9d 100644 --- a/target/linux/generic/files/drivers/net/phy/ar8327.h +++ b/target/linux/generic/files/drivers/net/phy/ar8327.h @@ -339,7 +339,6 @@ struct ar8327_led { struct led_classdev cdev; struct ar8xxx_priv *sw_priv; - char *name; bool active_low; u8 led_num; enum ar8327_led_mode mode; @@ -350,6 +349,7 @@ struct ar8327_led { bool enable_hw_mode; enum ar8327_led_pattern pattern; struct fwnode_handle *fwnode; + char name[]; }; struct ar8327_data {