Messages in this thread | | | From | Rob Herring <> | Date | Wed, 15 Jun 2022 10:26:16 -0600 | Subject | Re: [PATCH] arch: x86: kernel: Add missing of_node_put() in devicetree.c |
| |
On Wed, Jun 15, 2022 at 9:03 AM Liang He <windhl@126.com> wrote: > > In dtb_setup_hpet(), of_find_compatible_node() will return a node > pointer with refcount incremented. We should use of_node_put() when it > is not used anymore. > > Signed-off-by: Liang He <windhl@126.com> > --- > arch/x86/kernel/devicetree.c | 3 +++ > 1 file changed, 3 insertions(+) > > diff --git a/arch/x86/kernel/devicetree.c b/arch/x86/kernel/devicetree.c > index 5cd51f25f446..6a386424ddf7 100644 > --- a/arch/x86/kernel/devicetree.c > +++ b/arch/x86/kernel/devicetree.c > @@ -120,6 +120,9 @@ static void __init dtb_setup_hpet(void) > if (!dn) > return; > ret = of_address_to_resource(dn, 0, &r); > + > + of_node_put(dn); > +
You don't want a put on success. If you are using the device, then you want to hold a reference to it.
I would guess that if you have an error here and don't have your timer, you're not going to finish booting anyways.
Finally, wouldn't dtb_lapic_setup() and dtb_add_ioapic() also need a similar change? But again, if those aren't initialized, you probably aren't getting very far.
> if (ret) { > WARN_ON(1); > return; > -- > 2.25.1 >
| |