From: Nick Piggin This bitop does not need to be atomic because it is performed when there will be no references to the page (ie. the page is being freed). Signed-off-by: Nick Piggin Signed-off-by: Andrew Morton --- include/linux/page-flags.h | 1 + mm/page_alloc.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff -puN include/linux/page-flags.h~mm-remove-atomic include/linux/page-flags.h --- 25/include/linux/page-flags.h~mm-remove-atomic Tue Jul 26 13:29:23 2005 +++ 25-akpm/include/linux/page-flags.h Tue Jul 26 13:29:23 2005 @@ -194,6 +194,7 @@ extern void __mod_page_state(unsigned lo #define SetPageDirty(page) set_bit(PG_dirty, &(page)->flags) #define TestSetPageDirty(page) test_and_set_bit(PG_dirty, &(page)->flags) #define ClearPageDirty(page) clear_bit(PG_dirty, &(page)->flags) +#define __ClearPageDirty(page) __clear_bit(PG_dirty, &(page)->flags) #define TestClearPageDirty(page) test_and_clear_bit(PG_dirty, &(page)->flags) #define SetPageLRU(page) set_bit(PG_lru, &(page)->flags) diff -puN mm/page_alloc.c~mm-remove-atomic mm/page_alloc.c --- 25/mm/page_alloc.c~mm-remove-atomic Tue Jul 26 13:29:23 2005 +++ 25-akpm/mm/page_alloc.c Tue Jul 26 13:29:23 2005 @@ -329,7 +329,7 @@ static inline void free_pages_check(cons 1 << PG_writeback ))) bad_page(function, page); if (PageDirty(page)) - ClearPageDirty(page); + __ClearPageDirty(page); } /* _