Mailing List Archive

[PATCH 2.6.21-rc1] ibmebus: Use of_device_uevent()
This patch replaces ibmebus_uevent() by Sylvain's generic function.


Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com>
---


ibmebus.c | 37 +++----------------------------------
1 file changed, 3 insertions(+), 34 deletions(-)


diff -urp a/arch/powerpc/kernel/ibmebus.c b/arch/powerpc/kernel/ibmebus.c
--- a/arch/powerpc/kernel/ibmebus.c 2007-02-17 03:25:53.403375784 +0100
+++ b/arch/powerpc/kernel/ibmebus.c 2007-02-17 03:27:28.230336112 +0100
@@ -372,41 +372,10 @@ static int ibmebus_bus_match(struct devi
return 0;
}

-static int ibmebus_uevent(struct device *dev, char **envp, int num_envp,
- char *buffer, int buffer_size)
-{
- const struct ibmebus_dev *ebus_dev = to_ibmebus_dev(dev);
- char *name, *cp, *loc_code;
- int length;
-
- if (!num_envp)
- return -ENOMEM;
-
- if (!ebus_dev->ofdev.node)
- return -ENODEV;
-
- name = (char *)get_property(ebus_dev->ofdev.node, "name", NULL);
- cp = (char *)get_property(ebus_dev->ofdev.node, "compatible", NULL);
- loc_code = (char *)get_property(ebus_dev->ofdev.node,
- "ibm,loc-code", NULL);
- if (!(name && cp && loc_code))
- return -ENODEV;
-
- envp[0] = buffer;
- length = scnprintf(buffer, buffer_size,
- "MODALIAS=ibmebus:T%s:S%s:L%s",
- name, cp, loc_code);
- if (buffer_size - length <= 0)
- return -ENOMEM;
- envp[1] = NULL;
-
- return 0;
-}
-
struct bus_type ibmebus_bus_type = {
- .name = "ibmebus",
- .uevent = ibmebus_uevent,
- .match = ibmebus_bus_match,
+ .name = "ibmebus",
+ .uevent = of_device_uevent,
+ .match = ibmebus_bus_match,
};
EXPORT_SYMBOL(ibmebus_bus_type);



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2.6.21-rc1] ibmebus: Use of_device_uevent() [ In reply to ]
Hoang-Nam Nguyen wrote:
> This patch replaces ibmebus_uevent() by Sylvain's generic function.
>
> struct bus_type ibmebus_bus_type = {
> - .name = "ibmebus",
> - .uevent = ibmebus_uevent,
> - .match = ibmebus_bus_match,
> + .name = "ibmebus",
> + .uevent = of_device_uevent,
> + .match = ibmebus_bus_match,
> };
> EXPORT_SYMBOL(ibmebus_bus_type);
>
Doesn't that oops when called with the fake parent device ?

Either you do a wrapper that test for it (that's what I did when I
posted the patch).
Or, an even better approach is to add this

+ if (!ebus_dev->ofdev.node)
+ return -ENODEV;

inside the code of of_device_uevent itself.


Sylvain



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Re: [PATCH 2.6.21-rc1] ibmebus: Use of_device_uevent() [ In reply to ]
Sylvain Munaut <tnt@246tNt.com> wrote on 17.02.2007 04:36:01:

> Doesn't that oops when called with the fake parent device ?

I should stop posting patches after 12 hours of work ,)

> Or, an even better approach is to add this
>
> + if (!ebus_dev->ofdev.node)
> + return -ENODEV;
>
> inside the code of of_device_uevent itself.

Nice! Patch will follow.

Thanks again,
Joachim

---
Joachim Fenkes -- eHCA Linux Driver Developer and Hardware Tamer
extraordinaire
IBM Deutschland Entwicklung GmbH -- Dept. 3627 (I/O Firmware Development
2)
Schoenaicher Strasse 220 -- 71032 Boeblingen -- Germany
eMail: fenkes@de.ibm.com -- Phone: +49 7031 16 1239

Vorsitzender des Aufsichtsrats: Johann Weihen -- Geschäftsführung:
Herbert Kircher
Sitz der Gesellschaft: Böblingen -- Registergericht: Amtsgericht
Stuttgart, HRB 243294


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/