[patch] hwmon: fix unchecked returncodes in w83791d

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jim,

> > > @@ -1029,6 +1054,8 @@ static int w83791d_detach_client(struct 
> > >  	if (data)
> > >  		hwmon_device_unregister(data->class_dev);
> > >  
> > > +	sysfs_remove_group(&client->dev.kobj, &w83791d_group);
> > > +
> > >  	if ((err = i2c_detach_client(client)))
> > >  		return err;
> >
> > The "if (data)" is used to differenciate between the real client and
> > the subclients, exactly as is done in the w83781d driver. As subclients
> > have no files, the call to sysfs_remove_group() should be made
> > conditional as well. If not, it'll still work, but with a significant
> > performance drop.
>
> on this item, I actually checked :-)
> 
>  w83791d_detect will fail unless data is sucessfully allocated,
> so it must be there if detach_client is called.
> 
> but I suppose its safer (less action-at-a-distance) your way, esp wrt 
> any future changes.
> redo attached.

I'm sorry to insist, but you overlooked another function which also
attaches clients: w83791d_create_subclient(). And this one does _not_
associate data to the client. All three clients (one main and two
subclients) have the same driver, so w83791d_detach_client() is called
for all of them. The "if (data)" test is there exactly for this reason,
so this test is really needed.

The new patch looks OK to me, thanks.

-- 
Jean Delvare




[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux