]> git.hungrycats.org Git - linux/commitdiff
[PATCH] debug check in put_page_testzero()
authorAndrew Morton <akpm@zip.com.au>
Fri, 30 Aug 2002 08:49:04 +0000 (01:49 -0700)
committerLinus Torvalds <torvalds@home.transmeta.com>
Fri, 30 Aug 2002 08:49:04 +0000 (01:49 -0700)
As suggested by Daniel - it's a bug to run put_page_testzero
against a zero-ref page.

include/linux/mm.h

index 045a861e40244c480ee3df52099300c8fcb17db9..b31b3e3a5fc80a4e97d75d2e194fcc7b7fc62cfb 100644 (file)
@@ -195,7 +195,11 @@ struct page {
  */
 #define get_page(p)            atomic_inc(&(p)->count)
 #define __put_page(p)          atomic_dec(&(p)->count)
-#define put_page_testzero(p)   atomic_dec_and_test(&(p)->count)
+#define put_page_testzero(p)                           \
+       ({                                              \
+               BUG_ON(page_count(page) == 0);          \
+               atomic_dec_and_test(&(p)->count);       \
+       })
 #define page_count(p)          atomic_read(&(p)->count)
 #define set_page_count(p,v)    atomic_set(&(p)->count, v)
 extern void FASTCALL(__page_cache_release(struct page *));