netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH -next] net: dsa:  Simplify with scoped for each OF child loop
@ 2024-08-20  6:58 Jinjie Ruan
  2024-08-22  0:18 ` Jakub Kicinski
  0 siblings, 1 reply; 11+ messages in thread
From: Jinjie Ruan @ 2024-08-20  6:58 UTC (permalink / raw)
  To: andrew, f.fainelli, olteanv, davem, edumazet, kuba, pabeni,
	netdev, linux-kernel
  Cc: ruanjinjie

Use scoped for_each_available_child_of_node_scoped() when iterating over
device nodes to make code a bit simpler.

Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
---
 net/dsa/dsa.c | 13 ++++---------
 1 file changed, 4 insertions(+), 9 deletions(-)

diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
index 668c729946ea..77d91cbb0686 100644
--- a/net/dsa/dsa.c
+++ b/net/dsa/dsa.c
@@ -1264,7 +1264,7 @@ static int dsa_port_parse_of(struct dsa_port *dp, struct device_node *dn)
 static int dsa_switch_parse_ports_of(struct dsa_switch *ds,
 				     struct device_node *dn)
 {
-	struct device_node *ports, *port;
+	struct device_node *ports;
 	struct dsa_port *dp;
 	int err = 0;
 	u32 reg;
@@ -1279,17 +1279,14 @@ static int dsa_switch_parse_ports_of(struct dsa_switch *ds,
 		}
 	}
 
-	for_each_available_child_of_node(ports, port) {
+	for_each_available_child_of_node_scoped(ports, port) {
 		err = of_property_read_u32(port, "reg", &reg);
-		if (err) {
-			of_node_put(port);
+		if (err)
 			goto out_put_node;
-		}
 
 		if (reg >= ds->num_ports) {
 			dev_err(ds->dev, "port %pOF index %u exceeds num_ports (%u)\n",
 				port, reg, ds->num_ports);
-			of_node_put(port);
 			err = -EINVAL;
 			goto out_put_node;
 		}
@@ -1297,10 +1294,8 @@ static int dsa_switch_parse_ports_of(struct dsa_switch *ds,
 		dp = dsa_to_port(ds, reg);
 
 		err = dsa_port_parse_of(dp, port);
-		if (err) {
-			of_node_put(port);
+		if (err)
 			goto out_put_node;
-		}
 	}
 
 out_put_node:
-- 
2.34.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa:  Simplify with scoped for each OF child loop
  2024-08-20  6:58 [PATCH -next] net: dsa: Simplify with scoped for each OF child loop Jinjie Ruan
@ 2024-08-22  0:18 ` Jakub Kicinski
  2024-08-22  2:07   ` Jinjie Ruan
  0 siblings, 1 reply; 11+ messages in thread
From: Jakub Kicinski @ 2024-08-22  0:18 UTC (permalink / raw)
  To: Jinjie Ruan
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel

On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:
> Use scoped for_each_available_child_of_node_scoped() when iterating over
> device nodes to make code a bit simpler.

Could you add more info here that confirms this works with gotos?
I don't recall the details but I thought sometimes the scoped
constructs don't do well with gotos. I checked 5 random uses
of this loop and 4 of them didn't have gotos.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22  0:18 ` Jakub Kicinski
@ 2024-08-22  2:07   ` Jinjie Ruan
  2024-08-22 14:39     ` Krzysztof Kozlowski
  2024-08-22 14:51     ` Jakub Kicinski
  0 siblings, 2 replies; 11+ messages in thread
From: Jinjie Ruan @ 2024-08-22  2:07 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel



On 2024/8/22 8:18, Jakub Kicinski wrote:
> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:
>> Use scoped for_each_available_child_of_node_scoped() when iterating over
>> device nodes to make code a bit simpler.
> 
> Could you add more info here that confirms this works with gotos?
> I don't recall the details but I thought sometimes the scoped
> constructs don't do well with gotos. I checked 5 random uses
> of this loop and 4 of them didn't have gotos.

Hi, Jakub

From what I understand, for_each_available_child_of_node_scoped() is not
related to gotos, it only let the iterating child node self-declared and
automatic release, so the of_node_put(iterating_child_node) can be removed.

For example, the following use case has goto and use this macro:

Link:
https://lore.kernel.org/all/20240813-b4-cleanup-h-of-node-put-other-v1-6-cfb67323a95c@linaro.org/


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22  2:07   ` Jinjie Ruan
@ 2024-08-22 14:39     ` Krzysztof Kozlowski
  2024-08-22 15:05       ` Jakub Kicinski
  2024-08-23  2:20       ` Jinjie Ruan
  2024-08-22 14:51     ` Jakub Kicinski
  1 sibling, 2 replies; 11+ messages in thread
From: Krzysztof Kozlowski @ 2024-08-22 14:39 UTC (permalink / raw)
  To: Jinjie Ruan, Jakub Kicinski
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel

On 22/08/2024 04:07, Jinjie Ruan wrote:
> 
> 
> On 2024/8/22 8:18, Jakub Kicinski wrote:
>> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:
>>> Use scoped for_each_available_child_of_node_scoped() when iterating over
>>> device nodes to make code a bit simpler.
>>
>> Could you add more info here that confirms this works with gotos?
>> I don't recall the details but I thought sometimes the scoped
>> constructs don't do well with gotos. I checked 5 random uses
>> of this loop and 4 of them didn't have gotos.
> 
> Hi, Jakub
> 
>>From what I understand, for_each_available_child_of_node_scoped() is not
> related to gotos, it only let the iterating child node self-declared and
> automatic release, so the of_node_put(iterating_child_node) can be removed.
> 
> For example, the following use case has goto and use this macro:
> 
> Link:
> https://lore.kernel.org/all/20240813-b4-cleanup-h-of-node-put-other-v1-6-cfb67323a95c@linaro.org/

Jinjie,
You started this after me, shortly after my series, taking the commit
msgs and subjects, and even using my work as reference or explanation of
your patches. Basically you just copy-paste. That's ok, thouogh, but you
could at least Cc me to tell me that you are doing it to avoid
duplication. That would be nice... And you could *try to* understand
what you are doing, so you can answer to such concerns as Jakub raised.
Otherwise how can we know that your code is correct?

Jakub,
Scoped uses in-place variable declarations, thus earlier jumps over it
are not allowed. The code I was converting did not have such jumps, so
was fine. Not sure if this is the case here, because Jinjie Ruan should
have checked it and explained that it is safe.

Best regards,
Krzysztof


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22  2:07   ` Jinjie Ruan
  2024-08-22 14:39     ` Krzysztof Kozlowski
@ 2024-08-22 14:51     ` Jakub Kicinski
  2024-08-23  2:22       ` Jinjie Ruan
  2024-08-23  6:35       ` Jinjie Ruan
  1 sibling, 2 replies; 11+ messages in thread
From: Jakub Kicinski @ 2024-08-22 14:51 UTC (permalink / raw)
  To: Jinjie Ruan
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel

On Thu, 22 Aug 2024 10:07:25 +0800 Jinjie Ruan wrote:
> On 2024/8/22 8:18, Jakub Kicinski wrote:
> > On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:  
> >> Use scoped for_each_available_child_of_node_scoped() when iterating over
> >> device nodes to make code a bit simpler.  
> > 
> > Could you add more info here that confirms this works with gotos?
> > I don't recall the details but I thought sometimes the scoped
> > constructs don't do well with gotos. I checked 5 random uses
> > of this loop and 4 of them didn't have gotos.  
> 
> Hi, Jakub
> 
> From what I understand, for_each_available_child_of_node_scoped() is not
> related to gotos, it only let the iterating child node self-declared and
> automatic release, so the of_node_put(iterating_child_node) can be removed.

Could you either test it or disasm the code to double check, please?

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22 14:39     ` Krzysztof Kozlowski
@ 2024-08-22 15:05       ` Jakub Kicinski
  2024-08-23  2:20       ` Jinjie Ruan
  1 sibling, 0 replies; 11+ messages in thread
From: Jakub Kicinski @ 2024-08-22 15:05 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Jinjie Ruan
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel

On Thu, 22 Aug 2024 16:39:38 +0200 Krzysztof Kozlowski wrote:
> Jakub,
> Scoped uses in-place variable declarations, thus earlier jumps over it
> are not allowed. The code I was converting did not have such jumps, so
> was fine. Not sure if this is the case here, because Jinjie Ruan should
> have checked it and explained that it is safe.

I see, thank you!

Jinjie Ruan please repost crediting Krzysztof more.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22 14:39     ` Krzysztof Kozlowski
  2024-08-22 15:05       ` Jakub Kicinski
@ 2024-08-23  2:20       ` Jinjie Ruan
  1 sibling, 0 replies; 11+ messages in thread
From: Jinjie Ruan @ 2024-08-23  2:20 UTC (permalink / raw)
  To: Krzysztof Kozlowski, Jakub Kicinski
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel



On 2024/8/22 22:39, Krzysztof Kozlowski wrote:
> On 22/08/2024 04:07, Jinjie Ruan wrote:
>>
>>
>> On 2024/8/22 8:18, Jakub Kicinski wrote:
>>> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:
>>>> Use scoped for_each_available_child_of_node_scoped() when iterating over
>>>> device nodes to make code a bit simpler.
>>>
>>> Could you add more info here that confirms this works with gotos?
>>> I don't recall the details but I thought sometimes the scoped
>>> constructs don't do well with gotos. I checked 5 random uses
>>> of this loop and 4 of them didn't have gotos.
>>
>> Hi, Jakub
>>
>> >From what I understand, for_each_available_child_of_node_scoped() is not
>> related to gotos, it only let the iterating child node self-declared and
>> automatic release, so the of_node_put(iterating_child_node) can be removed.
>>
>> For example, the following use case has goto and use this macro:
>>
>> Link:
>> https://lore.kernel.org/all/20240813-b4-cleanup-h-of-node-put-other-v1-6-cfb67323a95c@linaro.org/
> 
> Jinjie,
> You started this after me, shortly after my series, taking the commit
> msgs and subjects, and even using my work as reference or explanation of
> your patches. Basically you just copy-paste. That's ok, thouogh, but you
> could at least Cc me to tell me that you are doing it to avoid
> duplication. That would be nice... And you could *try to* understand
> what you are doing, so you can answer to such concerns as Jakub raised.
> Otherwise how can we know that your code is correct?

Thank you very much, I'll Cc you for other patches.

> 
> Jakub,
> Scoped uses in-place variable declarations, thus earlier jumps over it
> are not allowed. The code I was converting did not have such jumps, so
> was fine. Not sure if this is the case here, because Jinjie Ruan should
> have checked it and explained that it is safe.
> 
> Best regards,
> Krzysztof
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22 14:51     ` Jakub Kicinski
@ 2024-08-23  2:22       ` Jinjie Ruan
  2024-08-23  6:35       ` Jinjie Ruan
  1 sibling, 0 replies; 11+ messages in thread
From: Jinjie Ruan @ 2024-08-23  2:22 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel



On 2024/8/22 22:51, Jakub Kicinski wrote:
> On Thu, 22 Aug 2024 10:07:25 +0800 Jinjie Ruan wrote:
>> On 2024/8/22 8:18, Jakub Kicinski wrote:
>>> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:  
>>>> Use scoped for_each_available_child_of_node_scoped() when iterating over
>>>> device nodes to make code a bit simpler.  
>>>
>>> Could you add more info here that confirms this works with gotos?
>>> I don't recall the details but I thought sometimes the scoped
>>> constructs don't do well with gotos. I checked 5 random uses
>>> of this loop and 4 of them didn't have gotos.  
>>
>> Hi, Jakub
>>
>> From what I understand, for_each_available_child_of_node_scoped() is not
>> related to gotos, it only let the iterating child node self-declared and
>> automatic release, so the of_node_put(iterating_child_node) can be removed.
> 
> Could you either test it or disasm the code to double check, please?

Thank you! I'll try to test it and double check it.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-22 14:51     ` Jakub Kicinski
  2024-08-23  2:22       ` Jinjie Ruan
@ 2024-08-23  6:35       ` Jinjie Ruan
  2024-08-25 23:28         ` Andrew Lunn
  1 sibling, 1 reply; 11+ messages in thread
From: Jinjie Ruan @ 2024-08-23  6:35 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: andrew, f.fainelli, olteanv, davem, edumazet, pabeni, netdev,
	linux-kernel



On 2024/8/22 22:51, Jakub Kicinski wrote:
> On Thu, 22 Aug 2024 10:07:25 +0800 Jinjie Ruan wrote:
>> On 2024/8/22 8:18, Jakub Kicinski wrote:
>>> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:  
>>>> Use scoped for_each_available_child_of_node_scoped() when iterating over
>>>> device nodes to make code a bit simpler.  
>>>
>>> Could you add more info here that confirms this works with gotos?
>>> I don't recall the details but I thought sometimes the scoped
>>> constructs don't do well with gotos. I checked 5 random uses
>>> of this loop and 4 of them didn't have gotos.  
>>
>> Hi, Jakub
>>
>> From what I understand, for_each_available_child_of_node_scoped() is not
>> related to gotos, it only let the iterating child node self-declared and
>> automatic release, so the of_node_put(iterating_child_node) can be removed.
> 
> Could you either test it or disasm the code to double check, please?

Hi, Jakub, I test it with a fake device node on QEMU with a simple
example using for_each_available_child_of_node_scoped() and goto out of
the scope of for_each_available_child_of_node_scoped(), the
of_node_put(child) has been called successfully.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-23  6:35       ` Jinjie Ruan
@ 2024-08-25 23:28         ` Andrew Lunn
  2024-08-26  3:52           ` Jinjie Ruan
  0 siblings, 1 reply; 11+ messages in thread
From: Andrew Lunn @ 2024-08-25 23:28 UTC (permalink / raw)
  To: Jinjie Ruan
  Cc: Jakub Kicinski, f.fainelli, olteanv, davem, edumazet, pabeni,
	netdev, linux-kernel

On Fri, Aug 23, 2024 at 02:35:04PM +0800, Jinjie Ruan wrote:
> 
> 
> On 2024/8/22 22:51, Jakub Kicinski wrote:
> > On Thu, 22 Aug 2024 10:07:25 +0800 Jinjie Ruan wrote:
> >> On 2024/8/22 8:18, Jakub Kicinski wrote:
> >>> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:  
> >>>> Use scoped for_each_available_child_of_node_scoped() when iterating over
> >>>> device nodes to make code a bit simpler.  
> >>>
> >>> Could you add more info here that confirms this works with gotos?
> >>> I don't recall the details but I thought sometimes the scoped
> >>> constructs don't do well with gotos. I checked 5 random uses
> >>> of this loop and 4 of them didn't have gotos.  
> >>
> >> Hi, Jakub
> >>
> >> From what I understand, for_each_available_child_of_node_scoped() is not
> >> related to gotos, it only let the iterating child node self-declared and
> >> automatic release, so the of_node_put(iterating_child_node) can be removed.
> > 
> > Could you either test it or disasm the code to double check, please?
> 
> Hi, Jakub, I test it with a fake device node on QEMU with a simple
> example using for_each_available_child_of_node_scoped() and goto out of
> the scope of for_each_available_child_of_node_scoped(), the
> of_node_put(child) has been called successfully.

What compiler version?

Please test with 5.1

https://www.kernel.org/doc/html/next/process/changes.html

	Andrew

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH -next] net: dsa: Simplify with scoped for each OF child loop
  2024-08-25 23:28         ` Andrew Lunn
@ 2024-08-26  3:52           ` Jinjie Ruan
  0 siblings, 0 replies; 11+ messages in thread
From: Jinjie Ruan @ 2024-08-26  3:52 UTC (permalink / raw)
  To: Andrew Lunn
  Cc: Jakub Kicinski, f.fainelli, olteanv, davem, edumazet, pabeni,
	netdev, linux-kernel



On 2024/8/26 7:28, Andrew Lunn wrote:
> On Fri, Aug 23, 2024 at 02:35:04PM +0800, Jinjie Ruan wrote:
>>
>>
>> On 2024/8/22 22:51, Jakub Kicinski wrote:
>>> On Thu, 22 Aug 2024 10:07:25 +0800 Jinjie Ruan wrote:
>>>> On 2024/8/22 8:18, Jakub Kicinski wrote:
>>>>> On Tue, 20 Aug 2024 14:58:04 +0800 Jinjie Ruan wrote:  
>>>>>> Use scoped for_each_available_child_of_node_scoped() when iterating over
>>>>>> device nodes to make code a bit simpler.  
>>>>>
>>>>> Could you add more info here that confirms this works with gotos?
>>>>> I don't recall the details but I thought sometimes the scoped
>>>>> constructs don't do well with gotos. I checked 5 random uses
>>>>> of this loop and 4 of them didn't have gotos.  
>>>>
>>>> Hi, Jakub
>>>>
>>>> From what I understand, for_each_available_child_of_node_scoped() is not
>>>> related to gotos, it only let the iterating child node self-declared and
>>>> automatic release, so the of_node_put(iterating_child_node) can be removed.
>>>
>>> Could you either test it or disasm the code to double check, please?
>>
>> Hi, Jakub, I test it with a fake device node on QEMU with a simple
>> example using for_each_available_child_of_node_scoped() and goto out of
>> the scope of for_each_available_child_of_node_scoped(), the
>> of_node_put(child) has been called successfully.
> 
> What compiler version?
> 
> Please test with 5.1

with 5.1, the result is same and of_node_put(child) has been called
successfully.

The test patch and test result is below (with CONFIG_OF_DYNAMIC=y)

trace event string verifier disabled
rcu: Hierarchical RCU implementation.
rcu:    RCU event tracing is enabled.
rcu:    RCU restricting CPUs from NR_CPUS=8 to nr_cpu_ids=4.
rcu: RCU calculated value of scheduler-enlistment delay is 10 jiffies.
rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
NR_IRQS: 16, nr_irqs: 16, preallocated irqs: 16
get ppi-partitions ok!
OF: ====================================== of_node_put interrupt-partition-0
of_get_child_count parts_node 2!
OF: ====================================== of_node_put interrupt-partition-0
OF: of_irq_init: Failed to init /interrupt-controller@1e001000
((ptrval)), parent 00000000



diff --git a/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dts
b/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dts
index 43a5a4ab6ff0..79715727ea03 100644
--- a/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dts
+++ b/arch/arm/boot/dts/arm/vexpress-v2p-ca9.dts
@@ -161,6 +161,16 @@ gic: interrupt-controller@1e001000 {
                interrupt-controller;
                reg = <0x1e001000 0x1000>,
                      <0x1e000100 0x100>;
+
+               ppi-partitions {
+                       ppi_cluster0: interrupt-partition-0 {
+                               affinity = <&A9_0 &A9_1>;
+                       };
+
+                       ppi_cluster1: interrupt-partition-1 {
+                               affinity = <&A9_2 &A9_3>;
+                       };
+               };
        };

        L2: cache-controller@1e00a000 {
diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
index 3be7bd8cd8cd..35e1387453f5 100644
--- a/drivers/irqchip/irq-gic.c
+++ b/drivers/irqchip/irq-gic.c
@@ -1468,10 +1468,39 @@ gic_of_init(struct device_node *node, struct
device_node *parent)
 {
        struct gic_chip_data *gic;
        int irq, ret;
+       struct device_node *parts_node;
+       int nr_parts;

        if (WARN_ON(!node))
                return -ENODEV;

+       parts_node = of_get_child_by_name(node, "ppi-partitions");
+       if (!parts_node)
+               return -1;
+
+       pr_err("get ppi-partitions ok!\n");
+
+       nr_parts = of_get_child_count(parts_node);
+
+       if (!nr_parts) {
+               pr_err("of_get_child_count parts_node error!\n");
+               return -1;
+       }
+
+       pr_err("of_get_child_count parts_node %d!\n", nr_parts);
+
+       /*for_each_child_of_node(parts_node, child_node) {
+               if (true) {
+                       pr_err("of_node_put child_node
%s\n",child_node->name);
+                       of_node_put(child_node);
+                       return -1;
+               }
+       }*/
+       for_each_available_child_of_node_scoped(parts_node, child_node) {
+               if (true)
+                       goto exit;
+       }
+
        if (WARN_ON(gic_cnt >= CONFIG_ARM_GIC_MAX_NR))
                return -EINVAL;

@@ -1509,6 +1538,9 @@ gic_of_init(struct device_node *node, struct
device_node *parent)

        gic_cnt++;
        return 0;
+
+exit:
+       return -EINVAL;
 }
 IRQCHIP_DECLARE(gic_400, "arm,gic-400", gic_of_init);
 IRQCHIP_DECLARE(arm11mp_gic, "arm,arm11mp-gic", gic_of_init);
diff --git a/drivers/of/dynamic.c b/drivers/of/dynamic.c
index 110104a936d9..d9ccf3117dff 100644
--- a/drivers/of/dynamic.c
+++ b/drivers/of/dynamic.c
@@ -46,8 +46,11 @@ EXPORT_SYMBOL(of_node_get);
  */
 void of_node_put(struct device_node *node)
 {
-       if (node)
+       if (node) {
+               if (!strcmp(node->name, "interrupt-partition-0"))
+                       pr_err("======================================
of_node_put interrupt-partition-0\n");
                kobject_put(&node->kobj);
+       }
 }
 EXPORT_SYMBOL(of_node_put);



> 
> https://www.kernel.org/doc/html/next/process/changes.html
> 
> 	Andrew

^ permalink raw reply related	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-08-26  3:52 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-08-20  6:58 [PATCH -next] net: dsa: Simplify with scoped for each OF child loop Jinjie Ruan
2024-08-22  0:18 ` Jakub Kicinski
2024-08-22  2:07   ` Jinjie Ruan
2024-08-22 14:39     ` Krzysztof Kozlowski
2024-08-22 15:05       ` Jakub Kicinski
2024-08-23  2:20       ` Jinjie Ruan
2024-08-22 14:51     ` Jakub Kicinski
2024-08-23  2:22       ` Jinjie Ruan
2024-08-23  6:35       ` Jinjie Ruan
2024-08-25 23:28         ` Andrew Lunn
2024-08-26  3:52           ` Jinjie Ruan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).