[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