sparc: _sparc_find_resource() should check for exact matches
The address that's passed to _sparc_find_resource() should always be the start address of a resource: - iounmap() passes a page-aligned virtual address, while the original address was created by adding the in-page offset to the resource's start address, - sbus_free_coherent() and pci32_free_coherent() should be passed an address obtained from sbus_alloc_coherent() resp. pci32_alloc_coherent(), which is always a resource's start address. Hence replace the range check by a check for an exact match. Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org> Acked-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1dad6c7bd7
commit
88efd0bbc0
|
@ -723,12 +723,12 @@ static const struct file_operations sparc_io_proc_fops = {
|
|||
* This probably warrants some sort of hashing.
|
||||
*/
|
||||
static struct resource *_sparc_find_resource(struct resource *root,
|
||||
unsigned long hit)
|
||||
unsigned long start)
|
||||
{
|
||||
struct resource *tmp;
|
||||
|
||||
for (tmp = root->child; tmp != 0; tmp = tmp->sibling) {
|
||||
if (tmp->start <= hit && tmp->end >= hit)
|
||||
if (tmp->start == start)
|
||||
return tmp;
|
||||
}
|
||||
return NULL;
|
||||
|
|
Loading…
Reference in New Issue