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

Reply via email to