Skip to content

Commit

Permalink
m68k/amiga: Chip RAM - Change chipavail to an atomic_t
Browse files Browse the repository at this point in the history
While the core resource handling code is safe, our global counter must
still be protected against concurrent modifications.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
  • Loading branch information
Geert Uytterhoeven committed Jul 30, 2011
1 parent 3a17bfa commit cab49bc
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions arch/m68k/amiga/chipram.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include <linux/string.h>
#include <linux/module.h>

#include <asm/atomic.h>
#include <asm/page.h>
#include <asm/amigahw.h>

Expand All @@ -25,7 +26,7 @@ EXPORT_SYMBOL(amiga_chip_size);
static struct resource chipram_res = {
.name = "Chip RAM", .start = CHIP_PHYSADDR
};
static unsigned long chipavail;
static atomic_t chipavail;


void __init amiga_chip_init(void)
Expand All @@ -36,7 +37,7 @@ void __init amiga_chip_init(void)
chipram_res.end = amiga_chip_size-1;
request_resource(&iomem_resource, &chipram_res);

chipavail = amiga_chip_size;
atomic_set(&chipavail, amiga_chip_size);
}


Expand Down Expand Up @@ -84,7 +85,7 @@ void *amiga_chip_alloc_res(unsigned long size, struct resource *res)
return NULL;
}

chipavail -= size;
atomic_sub(size, &chipavail);
pr_debug("amiga_chip_alloc_res: returning %pR\n", res);
return (void *)ZTWO_VADDR(res->start);
}
Expand All @@ -101,7 +102,7 @@ void amiga_chip_free(void *ptr)
*p = res->sibling;
size = res->end-start;
pr_debug("amiga_chip_free: free %lu bytes at %p\n", size, ptr);
chipavail += size;
atomic_add(size, &chipavail);
kfree(res);
return;
}
Expand All @@ -113,8 +114,10 @@ EXPORT_SYMBOL(amiga_chip_free);

unsigned long amiga_chip_avail(void)
{
pr_debug("amiga_chip_avail : %lu bytes\n", chipavail);
return chipavail;
unsigned long n = atomic_read(&chipavail);

pr_debug("amiga_chip_avail : %lu bytes\n", n);
return n;
}
EXPORT_SYMBOL(amiga_chip_avail);

0 comments on commit cab49bc

Please sign in to comment.