[PATCH] Fix kfree usage in various mtd map remove functions
MikeW
mw_phil at yahoo.co.uk
Wed May 23 04:01:02 EDT 2007
Phil Endecott <spam_from_linux_mtd <at> chezphil.org> writes:
>
> The other issue that I noticed was the use of release_resource()
> instead of release_mem_region(). I'm not at all sure what should be
> going on here, but as far as I can see from kernel/resource.c these
> functions are not equivalent, and the "Linux Device Drivers" book shows
> release_mem_region() used to reverse the effect of
> request_mem_region(). I think that release_resource() should be called
> when (for example) a hotpluggable device is unplugged and the resource
> goes away, whereas release_mem_region() should be called when a driver
> no longer needs use of that area of memory. It's complex to understand
> the source because the same 'struct resource' is used to describe a
> physical resource and also a reservation/allocation of a portion of a
> physical resource to a driver.
>
> I could submit a patch that replaces the release_resource() calls with
> release_mem_region(), but I would not be happy doing so unless someone
> with a bit more of a clue than me said it was the right thing to do.
>
> Does anyone know of any documentation for any of these 'resource' functions?
>
> See for example:
> drivers/mtd/maps/ixp4xx.c function int ixp4xx_flash_remove
>
> Phil.
The API manages device registers in I/O space or I/O memory space.
The driver allocations show up in e.g. /proc/iomem and prevent
drivers from trying to control the same physical device hardware.
If your 'resource' request fails then the driver load fails -
or your driver has to try an alternative address.
The pairings are:
request_region/request_mem_region,
release_region/release_mem_region
but release_resource is generic so can be used as release.. or release_mem..
The existing calls you describe above sound OK but perhaps the author
should have commented more clearly.
Best regards,
MikeW
More information about the linux-mtd
mailing list