lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Sun, 15 Jan 2017 09:20:06 -0800 From: Florian Fainelli <f.fainelli@...il.com> To: Greg KH <gregkh@...uxfoundation.org> Cc: netdev@...r.kernel.org, Jason Cooper <jason@...edaemon.net>, Andrew Lunn <andrew@...n.ch>, Sebastian Hesselbarth <sebastian.hesselbarth@...il.com>, Gregory Clement <gregory.clement@...e-electrons.com>, Russell King <linux@...linux.org.uk>, Vivien Didelot <vivien.didelot@...oirfairelinux.com>, "David S. Miller" <davem@...emloft.net>, "moderated list:ARM SUB-ARCHITECTURES" <linux-arm-kernel@...ts.infradead.org>, open list <linux-kernel@...r.kernel.org> Subject: Re: [PATCH net-next v3 07/10] net: Relocate dev_to_net_device() into core On 01/15/2017 03:07 AM, Greg KH wrote: > On Sat, Jan 14, 2017 at 01:47:10PM -0800, Florian Fainelli wrote: >> dev_to_net_device() is moved from net/dsa/dsa.c to net/core/dev.c since >> it going to be used by net/dsa/dsa2.c and the namespace of the function >> justifies making it available to other users potentially. >> >> Signed-off-by: Florian Fainelli <f.fainelli@...il.com> >> --- >> include/linux/netdevice.h | 2 ++ >> net/core/dev.c | 19 +++++++++++++++++++ >> net/dsa/dsa.c | 18 ------------------ >> 3 files changed, 21 insertions(+), 18 deletions(-) >> >> diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h >> index 97ae0ac513ee..6d021c37b774 100644 >> --- a/include/linux/netdevice.h >> +++ b/include/linux/netdevice.h >> @@ -4390,4 +4390,6 @@ do { \ >> #define PTYPE_HASH_SIZE (16) >> #define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1) >> >> +struct net_device *dev_to_net_device(struct device *dev); >> + >> #endif /* _LINUX_NETDEVICE_H */ >> diff --git a/net/core/dev.c b/net/core/dev.c >> index ad5959e56116..7547e2ccc06b 100644 >> --- a/net/core/dev.c >> +++ b/net/core/dev.c >> @@ -8128,6 +8128,25 @@ const char *netdev_drivername(const struct net_device *dev) >> return empty; >> } >> >> +struct net_device *dev_to_net_device(struct device *dev) >> +{ >> + struct device *d; >> + >> + d = device_find_class(dev, "net"); >> + if (d) { >> + struct net_device *nd; >> + >> + nd = to_net_dev(d); >> + dev_hold(nd); >> + put_device(d); >> + >> + return nd; >> + } >> + >> + return NULL; >> +} >> +EXPORT_SYMBOL_GPL(dev_to_net_device); > > This really isn't just a "struct device to net device cast" type > function, (otherwise a simple container_of() would work). You are > walking the device tree and assuming it is in a specific order so that > this function works. You better document the hell out of this, > otherwise people are going to try to use this and get very confused, > very quickly... Fair enough. Does that make it clearer how the device_find_class() is used though? Maybe device_find_class() should be named device_find_by_class_name() instead? -- Florian
Powered by blists - more mailing lists