Message ID | 20210613115820.1525478-2-code@reto-schneider.ch (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v1,1/2] dt-bindings: net: mediatek: Support custom ifname | expand |
Context | Check | Description |
---|---|---|
netdev/cover_letter | success | Link |
netdev/fixes_present | success | Link |
netdev/patch_count | success | Link |
netdev/tree_selection | success | Guessed tree name to be net-next |
netdev/subject_prefix | success | Link |
netdev/cc_maintainers | success | CCed 11 of 11 maintainers |
netdev/source_inline | success | Was 0 now: 0 |
netdev/verify_signedoff | success | Link |
netdev/module_param | success | Was 0 now: 0 |
netdev/build_32bit | success | Errors and warnings before: 0 this patch: 0 |
netdev/kdoc | success | Errors and warnings before: 0 this patch: 0 |
netdev/verify_fixes | success | Link |
netdev/checkpatch | success | total: 0 errors, 0 warnings, 0 checks, 16 lines checked |
netdev/build_allmodconfig_warn | success | Errors and warnings before: 0 this patch: 0 |
netdev/header_inline | success | Link |
On Sun, Jun 13, 2021 at 01:58:19PM +0200, Reto Schneider wrote: > diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c > index 64adfd24e134..8bb09801918f 100644 > --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c > +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c > @@ -2948,6 +2948,7 @@ static const struct net_device_ops mtk_netdev_ops = { > static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) > { > const __be32 *_id = of_get_property(np, "reg", NULL); > + const char *const name = of_get_property(np, "label", NULL); > phy_interface_t phy_mode; > struct phylink *phylink; > struct mtk_mac *mac; > @@ -3020,6 +3021,9 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) > > mac->phylink = phylink; > > + if (name) > + strncpy(eth->netdev[id]->name, name, IFNAMSIZ); Please don't use strncpy() - this is a good example why strncpy() is bad news. * strncpy - Copy a length-limited, C-string * @dest: Where to copy the string to * @src: Where to copy the string from * @count: The maximum number of bytes to copy * * The result is not %NUL-terminated if the source exceeds * @count bytes. Consequently, if "name" is IFNAMSIZ bytes or longer, eth->netdev[id]->name will not be NUL terminated, and subsequent use will run off the end of the string. strscpy() is safer to use here. Thanks.
Hi Russell, On 13.06.21 14:20, Russell King (Oracle) wrote: > Please don't use strncpy() - this is a good example why strncpy() is bad > news. > > * strncpy - Copy a length-limited, C-string > * @dest: Where to copy the string to > * @src: Where to copy the string from > * @count: The maximum number of bytes to copy > * > * The result is not %NUL-terminated if the source exceeds > * @count bytes. > > Consequently, if "name" is IFNAMSIZ bytes or longer, > eth->netdev[id]->name will not be NUL terminated, and subsequent use > will run off the end of the string. strscpy() is safer to use here. Thanks a lot for finding this (embarrassing mistake) and pointing me in the right direction (did dot know about strscpy). Will send v2 soon. Kind regards, Reto
From: Reto Schneider <code@reto-schneider.ch> Date: Sun, 13 Jun 2021 13:58:19 +0200 > From: Reto Schneider <reto.schneider@husqvarnagroup.com> > > Name the MAC interface name according to the label property. If the > property is missing, the default name (ethX) gets used. > > Signed-off-by: Reto Schneider <reto.schneider@husqvarnagroup.com> Please solve naming issues in userspace via udev, thank you.
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c index 64adfd24e134..8bb09801918f 100644 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c @@ -2948,6 +2948,7 @@ static const struct net_device_ops mtk_netdev_ops = { static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) { const __be32 *_id = of_get_property(np, "reg", NULL); + const char *const name = of_get_property(np, "label", NULL); phy_interface_t phy_mode; struct phylink *phylink; struct mtk_mac *mac; @@ -3020,6 +3021,9 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np) mac->phylink = phylink; + if (name) + strncpy(eth->netdev[id]->name, name, IFNAMSIZ); + SET_NETDEV_DEV(eth->netdev[id], eth->dev); eth->netdev[id]->watchdog_timeo = 5 * HZ; eth->netdev[id]->netdev_ops = &mtk_netdev_ops;