convert page_alloc.c bugchecks to BUG_ON()
Subsystems (2)
Given the BUG_ON() framework it is possible to reduce the number of lines of code within page_alloc.c by converting many of its integrity checks to use the BUG_ON() macro. This patch does so.
Against 2.5.19.
Cheers,
Bill
===== mm/page_alloc.c 1.68 vs edited =====
mm/page_alloc.c +26 -53
@@ -85,18 +85,12 @@struct page *base;zone_t *zone; -if (PagePrivate (page)) -BUG (); -if (page->mapping) -BUG (); -if (PageLocked (page)) -BUG (); -if (PageLRU (page)) -BUG (); -if (PageActive (page)) -BUG (); -if (PageWriteback (page)) -BUG (); +BUG_ON (PagePrivate (page)); +BUG_ON (page->mapping); +BUG_ON (PageLocked (page)); +BUG_ON (PageLRU (page)); +BUG_ON (PageActive (page)); +BUG_ON (PageWriteback (page));ClearPageDirty (page); page->flags &= ~(1 <<PG_referenced);
@@ -109,8 +103,7 @@ mask = (~0UL ) << order; base = zone->zone_mem_map; page_idx = page - base; -if (page_idx & ~mask) -BUG (); +BUG_ON (page_idx & ~mask); index = page_idx >> (1 + order); area = zone->free_area + order;
@@ -122,8 +115,7 @@while (mask + (1 << (MAX_ORDER -1 ))) {struct page *buddy1, *buddy2; -if (area >= zone->free_area +MAX_ORDER ) -BUG (); +BUG_ON (area >= zone->free_area +MAX_ORDER );if (!__test_and_change_bit (index, area->map))/* * the buddy page is still allocated.
@@ -136,10 +128,8 @@*/ buddy1 = base + (page_idx ^ -mask); buddy2 = base + page_idx; -if (BAD_RANGE (zone,buddy1)) -BUG (); -if (BAD_RANGE (zone,buddy2)) -BUG (); +BUG_ON (BAD_RANGE (zone,buddy1)); +BUG_ON (BAD_RANGE (zone,buddy2));list_del (&buddy1->list); mask <<=1 ;
@@ -172,8 +162,7 @@unsigned long size =1 << high;while (high > low) { -if (BAD_RANGE (zone,page)) -BUG (); +BUG_ON (BAD_RANGE (zone,page)); area--; high--; size >>=1 ;
@@ -182,8 +171,7 @@ index += size; page += size; } -if (BAD_RANGE (zone,page)) -BUG (); +BUG_ON (BAD_RANGE (zone,page));return page; }
@@ -205,8 +193,7 @@unsigned int index; page = list_entry(curr, struct page, list); -if (BAD_RANGE (zone,page)) -BUG (); +BUG_ON (BAD_RANGE (zone,page));list_del (curr); index = page - zone->zone_mem_map;if (curr_order !=MAX_ORDER -1 )
@@ -217,12 +204,9 @@spin_unlock_irqrestore (&zone->lock, flags);set_page_count (page,1 ); -if (BAD_RANGE (zone,page)) -BUG (); -if (PageLRU (page)) -BUG (); -if (PageActive (page)) -BUG (); +BUG_ON (BAD_RANGE (zone,page)); +BUG_ON (PageLRU (page)); +BUG_ON (PageActive (page));return page; } curr_order++;
@@ -273,8 +257,7 @@if (!(gfp_mask & __GFP_WAIT)) goto out; -if (in_interrupt ()) -BUG (); +BUG_ON (in_interrupt ()); current->allocation_order = order; current->flags |=PF_MEMALLOC |PF_FREE_PAGES ;
@@ -301,21 +284,13 @@set_page_count (tmp,1 ); page = tmp; -if (PagePrivate (page)) -BUG (); -if (page->mapping) -BUG (); -if (PageLocked (page)) -BUG (); -if (PageLRU (page)) -BUG (); -if (PageActive (page)) -BUG (); -if (PageDirty (page)) -BUG (); -if (PageWriteback (page)) -BUG (); - +BUG_ON (PagePrivate (page)); +BUG_ON (page->mapping); +BUG_ON (PageLocked (page)); +BUG_ON (PageLRU (page)); +BUG_ON (PageActive (page)); +BUG_ON (PageDirty (page)); +BUG_ON (PageWriteback (page));break ; } }while ((entry = entry->next) != local_pages);
@@ -327,8 +302,7 @@list_del (entry); tmp = list_entry(entry, struct page, list);__free_pages_ok (tmp, tmp->index); -if (!nr_pages--) -BUG (); +BUG_ON (!nr_pages--); } current->nr_local_pages =0 ; }
@@ -799,8 +773,7 @@unsigned long totalpages, offset, realtotalpages;const unsigned long zone_required_alignment =1UL << (MAX_ORDER -1 ); -if (zone_start_paddr & ~PAGE_MASK ) -BUG (); +BUG_ON (zone_start_paddr & ~PAGE_MASK ); totalpages =0 ;for (i =0 ; i <MAX_NR_ZONES ; i++) {