[CRIU] [PATCH] s390: Fix off-by-one error for task size detection

Andrei Vagin avagin at virtuozzo.com
Tue Aug 8 04:22:21 MSK 2017


Applied, thanks!

On Mon, Aug 07, 2017 at 02:56:52PM +0200, Michael Holzheu wrote:
> The entries in /proc/<pid>/maps look like the following:
> 
>   3fffffdf000-40000000000 rw-p 00000000 00:00 0
> 
> The upper address is the first address that is *not* included in the
> address range.
> 
> Our function max_mapped_addr() should return the last valid address
> for a process, but currently returns the first invalid address.
> 
> This can lead to the following error message on kernel that have
> kernel commit ee71d16d22bb:
> 
>  Error (criu/proc_parse.c:694): Can't dump high memory region
>  1ffffffffff000-20000000000000 of task 24 because kernel commit ee71d16d22bb
>  is missing
> 
> Fix this and make max_mapped_addr() the last valid address (first invalid
> address - 1).
> 
> Reported-by: Adrian Reber <areber at redhat.com>
> Signed-off-by: Michael Holzheu <holzheu at linux.vnet.ibm.com>
> ---
>  compel/arch/s390/src/lib/infect.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/compel/arch/s390/src/lib/infect.c b/compel/arch/s390/src/lib/infect.c
> index fcad338..1614fa6 100644
> --- a/compel/arch/s390/src/lib/infect.c
> +++ b/compel/arch/s390/src/lib/infect.c
> @@ -393,7 +393,7 @@ static unsigned long max_mapped_addr(void)
>  	}
>  	fclose(fp);
>  out:
> -	return addr_max;
> +	return addr_max - 1;
>  }
>  
>  /*
> @@ -454,7 +454,7 @@ static enum kernel_ts_level get_kernel_ts_level(void)
>  	unsigned long criu_end_addr = max_mapped_addr();
>  
>  	/* Check for 5 levels */
> -	if (criu_end_addr > TASK_SIZE_LEVEL_4)
> +	if (criu_end_addr >= TASK_SIZE_LEVEL_4)
>  		return KERNEL_TS_LEVEL_5;
>  	else if (munmap((void *) TASK_SIZE_LEVEL_4, 0x1000) == 0)
>  		return KERNEL_TS_LEVEL_5;
> -- 
> 2.7.4
> 
> _______________________________________________
> CRIU mailing list
> CRIU at openvz.org
> https://lists.openvz.org/mailman/listinfo/criu


More information about the CRIU mailing list