Message ID | 20240905-fix_class_ns-v1-1-88ecccc3517c@quicinc.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 8f088541991bc1716a5ed570456d218241303851 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: sysfs: Fix weird usage of class's namespace relevant fields | expand |
On Thu, Sep 05, 2024 at 07:35:38AM +0800, Zijun Hu wrote: > From: Zijun Hu <quic_zijuhu@quicinc.com> > > Device class has two namespace relevant fields which are associated by > the following usage: > > struct class { > ... > const struct kobj_ns_type_operations *ns_type; > const void *(*namespace)(const struct device *dev); > ... > } > if (dev->class && dev->class->ns_type) > dev->class->namespace(dev); > > The usage looks weird since it checks @ns_type but calls namespace() > it is found for all existing class definitions that the other filed is > also assigned once one is assigned in current kernel tree, so fix this > weird usage by checking @namespace to call namespace(). > > Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com> > --- > driver-core tree has similar fix as shown below: > https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?h=driver-core-next&id=a169a663bfa8198f33a5c1002634cc89e5128025 Thanks, I agree that this change is consistent with the one at the link above. And that, given your explanation there and here, this change makes sense. Reviewed-by: Simon Horman <horms@kernel.org> I don't think there is a need to repost because of this, but for future reference, please keep in mind that patches like this - non bug fixes for Networking code - should, in general, be targeted at net-next. Subject: [PATCH net-next] ... See: https://docs.kernel.org/process/maintainer-netdev.html
On 2024/9/6 18:21, Simon Horman wrote: > On Thu, Sep 05, 2024 at 07:35:38AM +0800, Zijun Hu wrote: >> From: Zijun Hu <quic_zijuhu@quicinc.com> >> >> Device class has two namespace relevant fields which are associated by >> the following usage: >> >> struct class { >> ... >> const struct kobj_ns_type_operations *ns_type; >> const void *(*namespace)(const struct device *dev); >> ... >> } >> if (dev->class && dev->class->ns_type) >> dev->class->namespace(dev); >> >> The usage looks weird since it checks @ns_type but calls namespace() >> it is found for all existing class definitions that the other filed is >> also assigned once one is assigned in current kernel tree, so fix this >> weird usage by checking @namespace to call namespace(). >> >> Signed-off-by: Zijun Hu <quic_zijuhu@quicinc.com> >> --- >> driver-core tree has similar fix as shown below: >> https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git/commit/?h=driver-core-next&id=a169a663bfa8198f33a5c1002634cc89e5128025 > > Thanks, > > I agree that this change is consistent with the one at the link above. > And that, given your explanation there and here, this change > makes sense. > > Reviewed-by: Simon Horman <horms@kernel.org> > > I don't think there is a need to repost because of this, but for future > reference, please keep in mind that patches like this - non bug fixes for > Networking code - should, in general, be targeted at net-next. > > Subject: [PATCH net-next] ... > > See: https://docs.kernel.org/process/maintainer-netdev.html thank you very much for such important reminder i will follow this guidance for further net patches. (^^)
Hello: This patch was applied to netdev/net-next.git (main) by David S. Miller <davem@davemloft.net>: On Thu, 05 Sep 2024 07:35:38 +0800 you wrote: > From: Zijun Hu <quic_zijuhu@quicinc.com> > > Device class has two namespace relevant fields which are associated by > the following usage: > > struct class { > ... > const struct kobj_ns_type_operations *ns_type; > const void *(*namespace)(const struct device *dev); > ... > } > if (dev->class && dev->class->ns_type) > dev->class->namespace(dev); > > [...] Here is the summary with links: - net: sysfs: Fix weird usage of class's namespace relevant fields https://git.kernel.org/netdev/net-next/c/8f088541991b You are awesome, thank you!
diff --git a/net/core/net-sysfs.c b/net/core/net-sysfs.c index 444f23e74f8e..d10c88f569b0 100644 --- a/net/core/net-sysfs.c +++ b/net/core/net-sysfs.c @@ -1056,7 +1056,7 @@ static const void *rx_queue_namespace(const struct kobject *kobj) struct device *dev = &queue->dev->dev; const void *ns = NULL; - if (dev->class && dev->class->ns_type) + if (dev->class && dev->class->namespace) ns = dev->class->namespace(dev); return ns; @@ -1740,7 +1740,7 @@ static const void *netdev_queue_namespace(const struct kobject *kobj) struct device *dev = &queue->dev->dev; const void *ns = NULL; - if (dev->class && dev->class->ns_type) + if (dev->class && dev->class->namespace) ns = dev->class->namespace(dev); return ns;