From: Michael Ellerman <mpe@ellerman•id.au>
To: Andrew Donnellan <andrew.donnellan@au1•ibm.com>,
linuxppc-dev@lists•ozlabs.org
Cc: clombard@linux•vnet.ibm.com, kernel-janitors@vger•kernel.org,
linux-kernel@vger•kernel.org, fbarrat@linux•vnet.ibm.com,
julia.lawall@lip6•fr, imunsie@au1•ibm.com,
elfring@users•sourceforge.net
Subject: Re: [PATCH] cxl: replace loop with for_each_child_of_node(), remove unneeded of_node_put()
Date: Fri, 29 Jul 2016 21:38:48 +1000 [thread overview]
Message-ID: <87fuqsllmf.fsf@concordia.ellerman.id.au> (raw)
In-Reply-To: <1469764534-26948-1-git-send-email-andrew.donnellan@au1.ibm.com>
Andrew Donnellan <andrew.donnellan@au1•ibm.com> writes:
> Rewrite the cxl_guest_init_afu() loop in cxl_of_probe() to use
> for_each_child_of_node() rather than a hand-coded for loop.
>
> Remove the useless of_node_put(afu_np) call after the loop, where it's
> guaranteed that afu_np == NULL.
>
> Reported-by: SF Markus Elfring <elfring@users•sourceforge.net>
> Reported-by: Julia Lawall <julia.lawall@lip6•fr>
> Signed-off-by: Andrew Donnellan <andrew.donnellan@au1•ibm.com>
>
> ---
>
> Checked the of_node_put() with Fred, he thinks it was probably just left
> over from an earlier private version of the code and we can just get rid of
> it.
But who does keep a reference on the device_node? I can't see it anywhere. Which
means in theory the device_node can be freed out from under you.
You have a reference for afu_np as part of for_each_child_of_node(), but it's
dropped as soon as you go around the loop.
The typical pattern would be that cxl_guest_init_afu() takes an additional
reference once it's done all its setup and can't fail.
That way at the end of the loop when the loop construct has dropped all
references, the nodes you actually init'ed have their reference count
incremented by 1.
cheers
next prev parent reply other threads:[~2016-07-29 11:38 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <5307CAA2.8060406@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402212321410.2043@localhost6.localdomain6>
[not found] ` <530A086E.8010901@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402231635510.1985@localhost6.localdomain6>
[not found] ` <530A72AA.3000601@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402240658210.2090@localhost6.localdomain6>
[not found] ` <530B5FB6.6010207@users.sourceforge.net>
[not found] ` <alpine.DEB.2.10.1402241710370.2074@hadrien>
[not found] ` <530C5E18.1020800@users.sourceforge.net>
[not found] ` <alpine.DEB.2.10.1402251014170.2080@hadrien>
[not found] ` <530CD2C4.4050903@users.sourceforge.net>
[not found] ` <alpine.DEB.2.10.1402251840450.7035@hadrien>
[not found] ` <530CF8FF.8080600@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402252117150.2047@localhost6.localdomain6>
[not found] ` <530DD06F.4090703@users.sourceforge.net>
[not found] ` <alpine.DEB.2.02.1402262129250.2221@localhost6.localdomain6>
[not found] ` <5317A59D.4@users.sourceforge.net>
2014-11-21 11:45 ` [PATCH 1/1] tty-hvsi_lib: Deletion of an unnecessary check before the function call "tty_kref_put" SF Markus Elfring
2014-11-22 15:26 ` [PATCH 1/1] PowerPC-83xx: Deletion of an unnecessary check before the function call "of_node_put" SF Markus Elfring
2014-12-02 21:55 ` [PATCH] ALSA: i2sbus: Deletion of unnecessary checks before the function call "release_and_free_resource" SF Markus Elfring
2014-12-03 6:59 ` Takashi Iwai
[not found] ` <54A9355F.4050102@users.sourceforge.net>
2015-01-04 13:21 ` [PATCH 9/13] ALSA: i2sbus: Delete an unnecessary check before the function call "snd_pcm_suspend_all" SF Markus Elfring
2015-01-04 13:36 ` [PATCH 11/13] ALSA: Deletion of checks before the function call "iounmap" SF Markus Elfring
2015-01-05 13:58 ` Dan Carpenter
2016-10-26 12:26 ` Dan Carpenter
2016-10-26 12:28 ` Johannes Berg
2016-10-26 12:42 ` Dan Carpenter
2015-02-03 13:00 ` [PATCH] PowerPC-PCI: Delete unnecessary checks before the function call "kfree" SF Markus Elfring
2015-02-03 13:38 ` [PATCH] PowerPC-rheap: Delete an unnecessary check " SF Markus Elfring
2015-02-04 20:36 ` [PATCH] macintosh: Delete an unnecessary check before the function call "of_node_put" SF Markus Elfring
2015-06-30 8:13 ` SF Markus Elfring
2015-11-06 10:05 ` [PATCH] cxl: Delete an unnecessary check before the function call "kfree" SF Markus Elfring
2015-11-08 22:56 ` Andrew Donnellan
2015-11-09 2:09 ` Ian Munsie
2016-04-13 13:33 ` Michael Ellerman
2016-07-20 13:20 ` [PATCH] cxl: Delete an unnecessary check before the function call "of_node_put" SF Markus Elfring
2016-07-20 13:38 ` Julia Lawall
2016-07-27 8:57 ` Andrew Donnellan
2016-07-29 3:55 ` [PATCH] cxl: replace loop with for_each_child_of_node(), remove unneeded of_node_put() Andrew Donnellan
2016-07-29 7:43 ` Frederic Barrat
2016-07-29 8:46 ` walter harms
2016-07-29 8:49 ` Julia Lawall
2016-07-29 11:38 ` Michael Ellerman [this message]
2016-08-01 13:34 ` Frederic Barrat
2016-10-05 2:36 ` Michael Ellerman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87fuqsllmf.fsf@concordia.ellerman.id.au \
--to=mpe@ellerman$(echo .)id.au \
--cc=andrew.donnellan@au1$(echo .)ibm.com \
--cc=clombard@linux$(echo .)vnet.ibm.com \
--cc=elfring@users$(echo .)sourceforge.net \
--cc=fbarrat@linux$(echo .)vnet.ibm.com \
--cc=imunsie@au1$(echo .)ibm.com \
--cc=julia.lawall@lip6$(echo .)fr \
--cc=kernel-janitors@vger$(echo .)kernel.org \
--cc=linux-kernel@vger$(echo .)kernel.org \
--cc=linuxppc-dev@lists$(echo .)ozlabs.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox