linux-spi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 0/4] module autoloading fixes
@ 2014-01-14  8:46 Zhang Rui
  2014-01-14  8:46 ` [PATCH 1/4] ACPI: fix create_modalias() return value handling Zhang Rui
                   ` (3 more replies)
  0 siblings, 4 replies; 24+ messages in thread
From: Zhang Rui @ 2014-01-14  8:46 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-acpi-u79uwXL29TY76Z2rM5mHXA,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-spi-u79uwXL29TY76Z2rM5mHXA
  Cc: wsa-z923LK4zBo2bacvFa/9K2g, broonie-QSEj5FYQhm4dnm+yROfE0A,
	gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r,
	rafael.j.wysocki-ral2JQCrhuEAvxtiuMwx3w,
	grant.likely-QSEj5FYQhm4dnm+yROfE0A,
	rob.herring-bsGFqQB8/DxBDgjK7y7TUQ,
	jarkko.nikula-VuQAYsv1563Yd54FQh9/CA,
	mika.westerberg-VuQAYsv1563Yd54FQh9/CA, Zhang Rui

Hi, all,

This patch set fixes a couple of module autoloading problem.

Patch 1/4 fixes a bug in ACPI device 'modalias' and 'uevent' attributes,
          although the bug can rarely be reproduced (only if there is an
          output error of snprintf, or the ids are longer than 1024 bytes)
Patch 2/4 introduces two new APIs for exporting ACPI style 'modalias' and
          'uevent' attributes in other buses.
Patch 3/4 introduce support for ACPI style 'modalias' and 'uevent'
          attributes in platform, I2C and SPI bus.
Patch 4/4 add OF style 'modalias' support for platform bus.

I did some tests and can confirm that the code for ACPI enumerated platform
bus device works well.
I tried with a patch with convert ACPI Fan device/driver to platform bus,
and can confirm that the code for ACPI enumerated platform device works well,
both the platform Fan driver and device show their modalias as "acpi:PNP0C0B".

thanks,
rui

----------------------------------------------------------------
Zhang Rui (4):
      ACPI: fix create_modalias() return value handling
      ACPI: add module autoloading support for ACPI enumerated devices
      fix module autoloading for ACPI enumerated devices
      OF: introduce OF style 'modalias' support for platform bus.

 drivers/acpi/scan.c       |   73 +++++++++++++++++++++++++++++++++++++++++----
 drivers/base/platform.c   |   16 +++++++++-
 drivers/i2c/i2c-core.c    |   11 +++++++
 drivers/of/device.c       |    3 ++
 drivers/spi/spi.c         |   10 +++++++
 include/linux/acpi.h      |   15 ++++++++++
 include/linux/of_device.h |    6 ++++
 7 files changed, 127 insertions(+), 7 deletions(-)

^ permalink raw reply	[flat|nested] 24+ messages in thread
* [PATCH 1/4] ACPI: fix create_modalias() return value handling
@ 2014-01-13 13:48 Zhang Rui
  0 siblings, 0 replies; 24+ messages in thread
From: Zhang Rui @ 2014-01-13 13:48 UTC (permalink / raw)
  To: linux-kernel-u79uwXL29TY76Z2rM5mHXA,
	linux-i2c-u79uwXL29TY76Z2rM5mHXA,
	linux-spi-u79uwXL29TY76Z2rM5mHXA
  Cc: rjw-LthD3rsA81gm4RdzfppkhA, grant.likely-s3s/WqlpOiPyB63q8FvJNQ,
	jarkko.nikula-VuQAYsv1563Yd54FQh9/CA,
	mika.westerberg-VuQAYsv1563Yd54FQh9/CA, Zhang Rui

Currently, create_modalias() handles the output truncated case in
an improper way (return -EINVAL).
Plus, acpi_device_uevent() and acpi_device_modalias_show() do
improper check for the create_modalias() return value as well.

This patch fixes create_modalias() to
return -EINVAL if there is an output error,
return -ENOMEM if the output is truncated,
and also fixes both acpi_device_uevent() and acpi_device_modalias_show()
to do proper return value check.

Signed-off-by: Zhang Rui <rui.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 drivers/acpi/scan.c |   16 ++++++++++------
 1 file changed, 10 insertions(+), 6 deletions(-)

diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index fd39459..c925321 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -85,6 +85,9 @@ int acpi_scan_add_handler_with_hotplug(struct acpi_scan_handler *handler,
  * Creates hid/cid(s) string needed for modalias and uevent
  * e.g. on a device with hid:IBM0001 and cid:ACPI0001 you get:
  * char *modalias: "acpi:IBM0001:ACPI0001"
+ * Return: 0: no _HID and no _CID
+ *         -EINVAL: output error
+ *         -ENOMEM: output is truncated
 */
 static int create_modalias(struct acpi_device *acpi_dev, char *modalias,
 			   int size)
@@ -101,8 +104,10 @@ static int create_modalias(struct acpi_device *acpi_dev, char *modalias,
 
 	list_for_each_entry(id, &acpi_dev->pnp.ids, list) {
 		count = snprintf(&modalias[len], size, "%s:", id->id);
-		if (count < 0 || count >= size)
-			return -EINVAL;
+		if (count < 0)
+			return EINVAL;
+		if (count >= size)
+			return -ENOMEM;
 		len += count;
 		size -= count;
 	}
@@ -116,10 +121,9 @@ acpi_device_modalias_show(struct device *dev, struct device_attribute *attr, cha
 	struct acpi_device *acpi_dev = to_acpi_device(dev);
 	int len;
 
-	/* Device has no HID and no CID or string is >1024 */
 	len = create_modalias(acpi_dev, buf, 1024);
 	if (len <= 0)
-		return 0;
+		return len;
 	buf[len++] = '\n';
 	return len;
 }
@@ -782,8 +786,8 @@ static int acpi_device_uevent(struct device *dev, struct kobj_uevent_env *env)
 		return -ENOMEM;
 	len = create_modalias(acpi_dev, &env->buf[env->buflen - 1],
 			      sizeof(env->buf) - env->buflen);
-	if (len >= (sizeof(env->buf) - env->buflen))
-		return -ENOMEM;
+	if (len <= 0)
+		return len;
 	env->buflen += len;
 	return 0;
 }
-- 
1.7.9.5

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

end of thread, other threads:[~2014-01-20  7:10 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-14  8:46 [PATCH 0/4] module autoloading fixes Zhang Rui
2014-01-14  8:46 ` [PATCH 1/4] ACPI: fix create_modalias() return value handling Zhang Rui
     [not found]   ` <1389689198-2641-2-git-send-email-rui.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-01-15 15:02     ` Mika Westerberg
2014-01-14  8:46 ` [PATCH 2/4] ACPI: add module autoloading support for ACPI enumerated devices Zhang Rui
     [not found] ` <1389689198-2641-1-git-send-email-rui.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-01-14  8:46   ` [PATCH 3/4] fix module autoloading " Zhang Rui
2014-01-15 15:08     ` Mika Westerberg
     [not found]       ` <20140115150834.GX2494-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-01-16  8:04         ` Zhang Rui
2014-01-17  1:28           ` Rafael J. Wysocki
     [not found]             ` <3559262.qTvGllE4Ix-sKB8Sp2ER+y1GS7QM15AGw@public.gmane.org>
2014-01-17  1:56               ` Zhang Rui
2014-01-16 12:27     ` Wolfram Sang
2014-01-16 13:05       ` Zhang Rui
2014-01-16 19:46         ` Mark Brown
2014-01-17  7:37           ` Jarkko Nikula
     [not found]             ` <52D8DDD4.10704-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>
2014-01-17 15:57               ` Mark Brown
2014-01-20  7:10                 ` Jarkko Nikula
     [not found]     ` <1389689198-2641-4-git-send-email-rui.zhang-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2014-01-16 12:28       ` Mark Brown
     [not found]         ` <20140116122819.GO15567-GFdadSzt00ze9xe1eoZjHA@public.gmane.org>
2014-01-16 12:51           ` Zhang Rui
2014-01-16 19:24           ` Wolfram Sang
2014-01-14  8:46 ` [PATCH 4/4] OF: introduce OF style 'modalias' support for platform bus Zhang Rui
2014-01-15 13:45   ` Rob Herring
     [not found]     ` <CAL_JsqJFRQ+27N_9AwZXpx4V=g8HKn84WdVKtQ_Br_8SQTXY7g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-16  1:09       ` Rafael J. Wysocki
2014-01-16  7:04     ` Zhang, Rui
2014-01-16 21:21       ` Rob Herring
  -- strict thread matches above, loose matches on Subject: below --
2014-01-13 13:48 [PATCH 1/4] ACPI: fix create_modalias() return value handling Zhang Rui

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).