diff options
| author | Nick Piggin <npiggin@suse.de> | 2006-03-22 03:08:40 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-03-22 10:54:02 -0500 |
| commit | 7835e98b2e3c66dba79cb0ff8ebb90a2fe030c29 (patch) | |
| tree | 405a96eade34845dabe2f125b6c5eb095846869d /include | |
| parent | 70dc991d66cac40fdb07346dba2b5d862d732c34 (diff) | |
[PATCH] remove set_page_count() outside mm/
set_page_count usage outside mm/ is limited to setting the refcount to 1.
Remove set_page_count from outside mm/, and replace those users with
init_page_count() and set_page_refcounted().
This allows more debug checking, and tighter control on how code is allowed
to play around with page->_count.
Signed-off-by: Nick Piggin <npiggin@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mm.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 3d84b7a35e0d..7d8c127daad7 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -307,8 +307,6 @@ static inline int get_page_unless_zero(struct page *page) | |||
| 307 | return atomic_inc_not_zero(&page->_count); | 307 | return atomic_inc_not_zero(&page->_count); |
| 308 | } | 308 | } |
| 309 | 309 | ||
| 310 | #define set_page_count(p,v) atomic_set(&(p)->_count, (v)) | ||
| 311 | |||
| 312 | extern void FASTCALL(__page_cache_release(struct page *)); | 310 | extern void FASTCALL(__page_cache_release(struct page *)); |
| 313 | 311 | ||
| 314 | static inline int page_count(struct page *page) | 312 | static inline int page_count(struct page *page) |
| @@ -325,6 +323,15 @@ static inline void get_page(struct page *page) | |||
| 325 | atomic_inc(&page->_count); | 323 | atomic_inc(&page->_count); |
| 326 | } | 324 | } |
| 327 | 325 | ||
| 326 | /* | ||
| 327 | * Setup the page count before being freed into the page allocator for | ||
| 328 | * the first time (boot or memory hotplug) | ||
| 329 | */ | ||
| 330 | static inline void init_page_count(struct page *page) | ||
| 331 | { | ||
| 332 | atomic_set(&page->_count, 1); | ||
| 333 | } | ||
| 334 | |||
| 328 | void put_page(struct page *page); | 335 | void put_page(struct page *page); |
| 329 | 336 | ||
| 330 | void split_page(struct page *page, unsigned int order); | 337 | void split_page(struct page *page, unsigned int order); |
