From: Jean Delvare <jdelvare@suse.de>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: [PATCH 1/5] driver core: Move driver_data back to struct device
Date: Mon, 14 Apr 2014 12:54:47 +0200 [thread overview]
Message-ID: <20140414125447.168b3837@endymion.delvare> (raw)
In-Reply-To: <20140414124802.2859439e@endymion.delvare>
Having to allocate memory as part of dev_set_drvdata() is a problem
because that memory may never get freed if the device itself is not
created. So move driver_data back to struct device.
This is a partial revert of commit b4028437.
Signed-off-by: Jean Delvare <jdelvare@suse.de>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
drivers/base/base.h | 3 ---
drivers/base/dd.c | 13 +++----------
include/linux/device.h | 3 +++
3 files changed, 6 insertions(+), 13 deletions(-)
--- linux-3.15-rc1.orig/drivers/base/base.h 2014-04-14 09:28:47.122857147 +0200
+++ linux-3.15-rc1/drivers/base/base.h 2014-04-14 09:42:50.026552544 +0200
@@ -63,8 +63,6 @@ struct driver_private {
* binding of drivers which were unable to get all the resources needed by
* the device; typically because it depends on another driver getting
* probed first.
- * @driver_data - private pointer for driver specific info. Will turn into a
- * list soon.
* @device - pointer back to the struct class that this structure is
* associated with.
*
@@ -76,7 +74,6 @@ struct device_private {
struct klist_node knode_driver;
struct klist_node knode_bus;
struct list_head deferred_probe;
- void *driver_data;
struct device *device;
};
#define to_device_private_parent(obj) \
--- linux-3.15-rc1.orig/drivers/base/dd.c 2014-04-14 09:28:47.122857147 +0200
+++ linux-3.15-rc1/drivers/base/dd.c 2014-04-14 12:52:52.957743343 +0200
@@ -577,22 +577,15 @@ void driver_detach(struct device_driver
*/
void *dev_get_drvdata(const struct device *dev)
{
- if (dev && dev->p)
- return dev->p->driver_data;
+ if (dev)
+ return dev->driver_data;
return NULL;
}
EXPORT_SYMBOL(dev_get_drvdata);
int dev_set_drvdata(struct device *dev, void *data)
{
- int error;
-
- if (!dev->p) {
- error = device_private_init(dev);
- if (error)
- return error;
- }
- dev->p->driver_data = data;
+ dev->driver_data = data;
return 0;
}
EXPORT_SYMBOL(dev_set_drvdata);
--- linux-3.15-rc1.orig/include/linux/device.h 2014-04-14 09:42:31.772119674 +0200
+++ linux-3.15-rc1/include/linux/device.h 2014-04-14 12:53:10.284166917 +0200
@@ -679,6 +679,7 @@ struct acpi_dev_node {
* variants, which GPIO pins act in what additional roles, and so
* on. This shrinks the "Board Support Packages" (BSPs) and
* minimizes board-specific #ifdefs in drivers.
+ * @driver_data: Private pointer for driver specific info.
* @power: For device power management.
* See Documentation/power/devices.txt for details.
* @pm_domain: Provide callbacks that are executed during system suspend,
@@ -740,6 +741,8 @@ struct device {
device */
void *platform_data; /* Platform specific data, device
core doesn't touch it */
+ void *driver_data; /* Driver data, set and get with
+ dev_set/get_drvdata */
struct dev_pm_info power;
struct dev_pm_domain *pm_domain;
--
Jean Delvare
SUSE L3 Support
next prev parent reply other threads:[~2014-04-14 10:55 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-04-14 10:48 [PATCH 0/5] driver core: Clean up dev_get/set_drvdata Jean Delvare
2014-04-14 10:54 ` Jean Delvare [this message]
2014-04-14 10:55 ` [PATCH 2/5] driver core: dev_set_drvdata can no longer fail Jean Delvare
2014-04-14 10:56 ` [PATCH 3/5] driver core: dev_set_drvdata returns void Jean Delvare
2014-04-14 10:57 ` [PATCH 4/5] driver core: dev_get_drvdata: Don't check for NULL dev Jean Delvare
2014-04-14 10:58 ` [PATCH 5/5] driver core: Inline dev_set/get_drvdata Jean Delvare
2014-04-14 11:50 ` [PATCH 0/5] driver core: Clean up dev_get/set_drvdata Greg KH
2014-05-27 20:50 ` Greg KH
2014-05-27 20:57 ` Jean Delvare
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=20140414125447.168b3837@endymion.delvare \
--to=jdelvare@suse.de \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®