diff options
Diffstat (limited to '')
| -rw-r--r-- | mm/memory-failure.c | 10 | 
1 files changed, 10 insertions, 0 deletions
| diff --git a/mm/memory-failure.c b/mm/memory-failure.c index a013bc94ebbe..44c6bd201d3a 100644 --- a/mm/memory-failure.c +++ b/mm/memory-failure.c @@ -1173,6 +1173,16 @@ int memory_failure(unsigned long pfn, int trapno, int flags)  	lock_page(hpage);  	/* +	 * The page could have changed compound pages during the locking. +	 * If this happens just bail out. +	 */ +	if (compound_head(p) != hpage) { +		action_result(pfn, "different compound page after locking", IGNORED); +		res = -EBUSY; +		goto out; +	} + +	/*  	 * We use page flags to determine what action should be taken, but  	 * the flags can be modified by the error containment action.  One  	 * example is an mlocked page, where PG_mlocked is cleared by | 
