On Tuesday 30 September 2008, Jean Delvare wrote:
> > --- a/drivers/i2c/i2c-core.c
> > +++ b/drivers/i2c/i2c-core.c
> > @@ -443,6 +443,12 @@ static int i2c_register_adapter(struct i
> >
> > mutex_lock(&core_lock);
> >
> > + /* can't register until after driver model init */
> > + if (WARN_ON(!i2c_bus_type.p)) {
> > + res = -ENOENT;
> > + goto out_list;
> > + }
> > +
>
> Why don't you test before acquiring core_lock? Or even, before doing
> anything else, as you do in i2c_register_driver. That's more consistent
> and makes the error path lighter.
One or the other was an afterthought. I don't recall which one. ;)
> So, I would apply the following patch if that's OK with you:
Sure ... I'll be happy to have such issues be more diagnosable.
- Dave
> drivers/i2c/i2c-core.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> --- linux-2.6.27-rc8.orig/drivers/i2c/i2c-core.c 2008-09-30
> 10:14:21.000000000 +0200
> +++ linux-2.6.27-rc8/drivers/i2c/i2c-core.c 2008-09-30 11:19:30.000000000
> +0200
> @@ -437,6 +437,10 @@ static int i2c_register_adapter(struct i
> {
> int res = 0, dummy;
>
> + /* Can't register until after driver model init */
> + if (WARN_ON(!i2c_bus_type.p))
> + return -EAGAIN;
> +
> mutex_init(&adap->bus_lock);
> mutex_init(&adap->clist_lock);
> INIT_LIST_HEAD(&adap->clients);
> @@ -696,6 +700,10 @@ int i2c_register_driver(struct module *o
> {
> int res;
>
> + /* Can't register until after driver model init */
> + if (WARN_ON(!i2c_bus_type.p))
> + return -EAGAIN;
> +
> /* new style driver methods can't mix with legacy ones */
> if (is_newstyle_driver(driver)) {
> if (driver->attach_adapter || driver->detach_adapter
>
>
_______________________________________________
i2c mailing list
[email protected]
http://lists.lm-sensors.org/mailman/listinfo/i2c