On Thursday, April 18, 2013 3:37 AM, Ian Abbott wrote: > On 2013-04-17 19:16, H Hartley Sweeten wrote: >> This function is intended to be used by the comedi legacy (ISA) drivers >> either directly as the (*detach) function or as a helper in the drivers >> private (*detach) function. >> >> Modify the __comedi_request_region() helper so that it stores the first >> struct resource returned by request_region() in the comedi_device. >> >> The comedi_legacy_detach() function will then automatically release the >> region during the detach of the driver. >> >> Signed-off-by: H Hartley Sweeten <hsweeten@xxxxxxxxxxxxxxxxxxx> >> Cc: Ian Abbott <abbotti@xxxxxxxxx> >> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> <snip> > An alternative implementation would be to leave > __comedi_request_region() alone, but change comedi_request_region() to > record the length in a new member dev->iolen at the same time that it > records the start address in dev->iobase. Then your > comedi_legacy_detach() could do something like: > > if (dev->iolen) { > release_region(dev->iobase, dev->iolen); > dev->iolen = 0; > } > > I think it seems slightly simpler and shouldn't affect your other > patches. Any thoughts? I feel its cleaner to save the actual resource that was allocated by request_resource(), it's less error prone. But, I could change __comedi_request_region() so it returns the allocated resource instead of an errno. Then comedi_request_resource() can save it in the comedi_device. Any drivers that request additional resources could so the same and use the saved resource when detaching. Also, comedi_request_resource() could (should?) sanity check the saved resource to make sure a driver does not call it multiple times. I can either modify this series to work that way or submit a patch after this. Regards, Hartley _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/devel