Fri, Jul 19, 2019 at 10:26:49PM CEST, step...@networkplumber.org wrote: >On Fri, 19 Jul 2019 21:17:40 +0200 >Jiri Pirko <j...@resnulli.us> wrote: > >> Fri, Jul 19, 2019 at 06:29:36PM CEST, step...@networkplumber.org wrote: >> >On Fri, 19 Jul 2019 13:00:24 +0200 >> >Jiri Pirko <j...@resnulli.us> wrote: >> > >> >> From: Jiri Pirko <j...@mellanox.com> >> >> >> >> Signed-off-by: Jiri Pirko <j...@mellanox.com> >> >> --- >> >> include/linux/netdevice.h | 10 +++- >> >> net/core/dev.c | 96 +++++++++++++++++++++++++++++++-------- >> >> 2 files changed, 86 insertions(+), 20 deletions(-) >> >> >> >> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h >> >> index 88292953aa6f..74f99f127b0e 100644 >> >> --- a/include/linux/netdevice.h >> >> +++ b/include/linux/netdevice.h >> >> @@ -918,6 +918,12 @@ struct dev_ifalias { >> >> struct devlink; >> >> struct tlsdev_ops; >> >> >> >> +struct netdev_name_node { >> >> + struct hlist_node hlist; >> >> + struct net_device *dev; >> >> + char *name >> > >> >You probably can make this const char * > >Don't bother, it looks ok as is. the problem is you would have >to cast it when calling free. > >> >Do you want to add __rcu to this list? >> >> Which list? >> > > struct netdev_name_node __rcu *name_node; > >You might also want to explictly init the hlist node rather >than relying on the fact that zero is an empty node ptr.
Okay. Will process this in. Thanks! > > > static struct netdev_name_node *netdev_name_node_alloc(struct net_device *dev, >- char *name) >+ const char *name) > { > struct netdev_name_node *name_node; > >- name_node = kzalloc(sizeof(*name_node), GFP_KERNEL); >+ name_node = kmalloc(sizeof(*name_node)); > if (!name_node) > return NULL; >+ >+ INIT_HLIST_NODE(&name_node->hlist); > name_node->dev = dev; > name_node->name = name; > return name_node; >