@@ -528,21 +528,18 @@ read_page_owner(struct file *file, char __user *buf, size_t count, loff_t *ppos)
528
528
529
529
static void init_pages_in_zone (pg_data_t * pgdat , struct zone * zone )
530
530
{
531
- struct page * page ;
532
- struct page_ext * page_ext ;
533
- unsigned long pfn = zone -> zone_start_pfn , block_end_pfn ;
534
- unsigned long end_pfn = pfn + zone -> spanned_pages ;
531
+ unsigned long pfn = zone -> zone_start_pfn ;
532
+ unsigned long end_pfn = zone_end_pfn (zone );
535
533
unsigned long count = 0 ;
536
534
537
- /* Scan block by block. First and last block may be incomplete */
538
- pfn = zone -> zone_start_pfn ;
539
-
540
535
/*
541
536
* Walk the zone in pageblock_nr_pages steps. If a page block spans
542
537
* a zone boundary, it will be double counted between zones. This does
543
538
* not matter as the mixed block count will still be correct
544
539
*/
545
540
for (; pfn < end_pfn ; ) {
541
+ unsigned long block_end_pfn ;
542
+
546
543
if (!pfn_valid (pfn )) {
547
544
pfn = ALIGN (pfn + 1 , MAX_ORDER_NR_PAGES );
548
545
continue ;
@@ -551,9 +548,10 @@ static void init_pages_in_zone(pg_data_t *pgdat, struct zone *zone)
551
548
block_end_pfn = ALIGN (pfn + 1 , pageblock_nr_pages );
552
549
block_end_pfn = min (block_end_pfn , end_pfn );
553
550
554
- page = pfn_to_page (pfn );
555
-
556
551
for (; pfn < block_end_pfn ; pfn ++ ) {
552
+ struct page * page ;
553
+ struct page_ext * page_ext ;
554
+
557
555
if (!pfn_valid_within (pfn ))
558
556
continue ;
559
557
0 commit comments