All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org, jejb@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	Chuck Ebbert <cebbert@redhat.com>,
	Domenico Andreoli <cavokz@gmail.com>, Willy Tarreau <w@1wt.eu>,
	Rodrigo Rubira Branco <rbranco@la.checkpoint.com>,
	Jake Edge <jake@lwn.net>, Eugene Teo <eteo@redhat.com>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk,
	Cornelia Huck <cornelia.huck@de.ibm.com>
Subject: [patch 04/17] Driver core: Clarify device cleanup.
Date: Sat, 18 Oct 2008 11:34:04 -0700	[thread overview]
Message-ID: <20081018183404.GE14035@suse.de> (raw)
In-Reply-To: <20081018183334.GA14035@suse.de>

[-- Attachment #1: driver-core-clarify-device-cleanup.patch --]
[-- Type: text/plain, Size: 2682 bytes --]

2.6.27-stable review patch.  If anyone has any objections, please let us
know.

------------------
From: Cornelia Huck <cornelia.huck@de.ibm.com>

commit 5739411acbaa63a6c22c91e340fdcdbcc7d82a51 upstream

Make the comments on how to use device_initialize(), device_add()
and device_register() a bit clearer - in particular, explicitly
note that put_device() must be used once we tried to add the device
to the hierarchy.

Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 drivers/base/core.c |   23 ++++++++++++++++++-----
 1 file changed, 18 insertions(+), 5 deletions(-)

--- a/drivers/base/core.c
+++ b/drivers/base/core.c
@@ -523,11 +523,16 @@ static void klist_children_put(struct kl
  * device_initialize - init device structure.
  * @dev: device.
  *
- * This prepares the device for use by other layers,
- * including adding it to the device hierarchy.
+ * This prepares the device for use by other layers by initializing
+ * its fields.
  * It is the first half of device_register(), if called by
- * that, though it can also be called separately, so one
- * may use @dev's fields (e.g. the refcount).
+ * that function, though it can also be called separately, so one
+ * may use @dev's fields. In particular, get_device()/put_device()
+ * may be used for reference counting of @dev after calling this
+ * function.
+ *
+ * NOTE: Use put_device() to give up your reference instead of freeing
+ * @dev directly once you have called this function.
  */
 void device_initialize(struct device *dev)
 {
@@ -836,9 +841,13 @@ static void device_remove_sys_dev_entry(
  * This is part 2 of device_register(), though may be called
  * separately _iff_ device_initialize() has been called separately.
  *
- * This adds it to the kobject hierarchy via kobject_add(), adds it
+ * This adds @dev to the kobject hierarchy via kobject_add(), adds it
  * to the global and sibling lists for the device, then
  * adds it to the other relevant subsystems of the driver model.
+ *
+ * NOTE: _Never_ directly free @dev after calling this function, even
+ * if it returned an error! Always use put_device() to give up your
+ * reference instead.
  */
 int device_add(struct device *dev)
 {
@@ -965,6 +974,10 @@ done:
  * I.e. you should only call the two helpers separately if
  * have a clearly defined need to use and refcount the device
  * before it is added to the hierarchy.
+ *
+ * NOTE: _Never_ directly free @dev after calling this function, even
+ * if it returned an error! Always use put_device() to give up the
+ * reference initialized in this function instead.
  */
 int device_register(struct device *dev)
 {

-- 

  parent reply	other threads:[~2008-10-18 19:04 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20081018182721.521723254@mini.kroah.org>
2008-10-18 18:33 ` [patch 00/17] 2.6.27-stable review Greg KH
2008-10-18 18:33   ` [patch 01/17] fbcon_set_all_vcs: fix kernel crash when switching the rotated consoles Greg KH
2008-10-18 18:33   ` [patch 02/17] modules: fix module "notes" kobject leak Greg KH
2008-10-18 18:34   ` [patch 03/17] Driver core: Fix cleanup in device_create_vargs() Greg KH
2008-10-18 18:34   ` Greg KH [this message]
2008-10-18 18:34   ` [patch 05/17] ath9k/mac80211: disallow fragmentation in ath9k, report to userspace Greg KH
2008-10-18 18:34   ` [patch 06/17] md: Fix rdev_size_store with size == 0 Greg KH
2008-10-18 18:34   ` [patch 07/17] xfs: fix remount rw with unrecognized options Greg KH
2008-10-18 18:34   ` [patch 08/17] ath9k: fix oops on trying to hold the wrong spinlock Greg KH
2008-10-18 18:34   ` [patch 09/17] OHCI: Allow broken controllers to auto-stop Greg KH
2008-10-18 18:34   ` [patch 10/17] USB: OHCI: fix endless polling behavior Greg KH
2008-10-18 18:34   ` [patch 11/17] USB: Fix s3c2410_udc usb speed handling Greg KH
2008-10-18 18:34   ` [patch 12/17] USB: EHCI: log a warning if ehci-hcd is not loaded first Greg KH
2008-10-18 18:34   ` [patch 13/17] usb gadget: cdc ethernet notification bugfix Greg KH
2008-10-18 18:34   ` [patch 14/17] usb: musb_hdrc build fixes Greg KH
2008-10-18 18:34   ` [patch 15/17] drm/i915: fix ioremap of a user address for non-root (CVE-2008-3831) Greg KH
2008-10-18 18:34   ` [patch 16/17] DVB: au0828: add support for another USB id for Hauppauge HVR950Q Greg KH
2008-10-18 18:34   ` [patch 17/17] DVB: sms1xxx: support two new revisions of the Hauppauge WinTV MiniStick Greg KH
2008-10-18 18:36   ` [patch 00/17] 2.6.27-stable review Greg KH
2008-10-23  1:01   ` Josh Boyer
2008-10-23  4:53     ` [stable] " Greg KH
2008-10-23 10:33       ` Josh Boyer
2008-10-23 15:33         ` Greg KH
2008-10-23 15:47           ` Josh Boyer
2008-10-23 15:51             ` Greg KH
2008-10-23  5:06     ` Willy Tarreau

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=20081018183404.GE14035@suse.de \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=cavokz@gmail.com \
    --cc=cebbert@redhat.com \
    --cc=chuckw@quantumlinux.com \
    --cc=cornelia.huck@de.ibm.com \
    --cc=davej@redhat.com \
    --cc=eteo@redhat.com \
    --cc=jake@lwn.net \
    --cc=jejb@kernel.org \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mkrufky@linuxtv.org \
    --cc=rbranco@la.checkpoint.com \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=w@1wt.eu \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.