[PATCH] net: sysfs: Fix weird usage of class's namespace relevant fields

Zijun Hu posted 1 patch 1 year, 3 months ago
net/core/net-sysfs.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
[PATCH] net: sysfs: Fix weird usage of class's namespace relevant fields
Posted by Zijun Hu 1 year, 3 months ago
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
---
 net/core/net-sysfs.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

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;

---
base-commit: 88fac17500f4ea49c7bac136cf1b27e7b9980075
change-id: 20240904-fix_class_ns-adf1ac05b6fc

Best regards,
-- 
Zijun Hu <quic_zijuhu@quicinc.com>
Re: [PATCH] net: sysfs: Fix weird usage of class's namespace relevant fields
Posted by Simon Horman 1 year, 3 months ago
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
Re: [PATCH] net: sysfs: Fix weird usage of class's namespace relevant fields
Posted by Zijun Hu 1 year, 3 months ago
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. (^^)