On Wed, Apr 17, 2013 at 11:17:42AM -0700, H Hartley Sweeten wrote: > Use the new comedi_legacy_detach() helper in the (*detach) to release > the first I/O region requested by this driver. > > An additional I/O region is requested for some of the boards this driver > supports. Save the iobase for that region in the private data so that > the (*detach) knows it needs to be released. > > Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> > Cc: Ian Abbott <abbotti@xxxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > --- > drivers/staging/comedi/drivers/das16.c | 22 ++++++++-------------- > 1 file changed, 8 insertions(+), 14 deletions(-) > > diff --git a/drivers/staging/comedi/drivers/das16.c b/drivers/staging/comedi/drivers/das16.c > index c2b5015..b2826710 100644 > --- a/drivers/staging/comedi/drivers/das16.c > +++ b/drivers/staging/comedi/drivers/das16.c > @@ -393,6 +393,8 @@ struct das16_private_struct { > struct timer_list timer; /* for timed interrupt */ > volatile short timer_running; > volatile short timer_mode; /* true if using timer mode */ > + > + unsigned long extra_iobase; > }; > > static int das16_cmd_test(struct comedi_device *dev, struct comedi_subdevice *s, > @@ -1122,11 +1124,9 @@ static int das16_attach(struct comedi_device *dev, struct comedi_devconfig *it) > /* Request an additional region for the 8255 */ > ret = __comedi_request_region(dev, dev->iobase + 0x400, > board->size & 0x3ff); > - if (ret) { > - release_region(dev->iobase, 0x10); > - dev->iobase = 0; > - return -EIO; > - } > + if (ret) > + return ret; > + devpriv->extra_iobase = dev->iobase + 0x400; > } > > /* probe id bits to make sure they are consistent */ I understand that we clean up later but can the board work if the second request region fails? That's why we don't return an error here any more? regards, dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel