Re: [Bug 203715] New: BUG: unable to handle kernel NULL pointer dereference under stress (possibly related to https://lkml.org/lkml/2019/5/24/292 ?)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jun 06, 2019 at 03:20:49PM +0200, balducci@xxxxxxxx wrote:
> > Can you try the following compile-tested only patch please?
> >
> > diff --git a/mm/compaction.c b/mm/compaction.c
> > index 9e1b9acb116b..b3f18084866c 100644
> > --- a/mm/compaction.c
> > +++ b/mm/compaction.c
> > @@ -277,8 +277,7 @@ __reset_isolation_pfn(struct zone *zone, unsigned long pf
> > n, bool check_source,
> >  	}
> >  
> >  	/* Ensure the end of the pageblock or zone is online and valid */
> > -	block_pfn += pageblock_nr_pages;
> > -	block_pfn = min(block_pfn, zone_end_pfn(zone) - 1);
> > +	block_pfn = min(pageblock_end_pfn(block_pfn), zone_end_pfn(zone) - 1);
> >  	end_page = pfn_to_online_page(block_pfn);
> >  	if (!end_page)
> >  		return false;
> >
> 
> Unfortunately it doesn't help: the test firefox build very soon crashed
> as before; this time the machine froze completely (had to hardware
> reboot) and I couldn't find any kernel log in the log files (however the
> screen of the frozen console looked pretty the same as the previous
> times)
> 

Thanks.

> (I applied the patch on top of e577c8b64d58fe307ea4d5149d31615df2d90861,
> right?)

Please try the following on top of 5.2-rc3

diff --git a/mm/compaction.c b/mm/compaction.c
index 9e1b9acb116b..69f4ddfddfa4 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -277,8 +277,7 @@ __reset_isolation_pfn(struct zone *zone, unsigned long pfn, bool check_source,
 	}
 
 	/* Ensure the end of the pageblock or zone is online and valid */
-	block_pfn += pageblock_nr_pages;
-	block_pfn = min(block_pfn, zone_end_pfn(zone) - 1);
+	block_pfn = min(pageblock_end_pfn(block_pfn), zone_end_pfn(zone) - 1);
 	end_page = pfn_to_online_page(block_pfn);
 	if (!end_page)
 		return false;
@@ -289,7 +288,7 @@ __reset_isolation_pfn(struct zone *zone, unsigned long pfn, bool check_source,
 	 * is necessary for the block to be a migration source/target.
 	 */
 	do {
-		if (pfn_valid_within(pfn)) {
+		if (pfn_valid(pfn)) {
 			if (check_source && PageLRU(page)) {
 				clear_pageblock_skip(page);
 				return true;




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux