Re: [PATCH] ARM: Fix uvtop conversion on LPAE

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

 



在 2021年04月16日 08:35, HAGIO KAZUHITO(萩尾 一仁) 写道:
> Currently arm_uvtop() calls arm_lpae_vtop() with the LPAE and it uses
> LPAE_VTOP() also for a user virtual address, but it looks incorrect.
> Without this patch, commands that use uvtop conversion such as "ps -a",
> "gcore" fail as readmem() for a uvaddr returns a seek error:
> 
>   crash> ps -a 357
>   ...
>   ps: cannot access user stack address: bef2f97c
>   crash> gcore
>   gcore: seek error: physical address: 7ec56eab  type: "fill_psinfo: pr_psargs"
>   Failed.
> 
> Fixes: https://github.com/crash-utility/crash-extensions/issues/2

The discussion there should be clear. Acked-by: Lianbo Jiang <lijiang@xxxxxxxxxx>

> Signed-off-by: Kazuhito Hagio <k-hagio-ab@xxxxxxx>
> ---
>  arm.c | 19 ++++++++++---------
>  1 file changed, 10 insertions(+), 9 deletions(-)
> 
> diff --git a/arm.c b/arm.c
> index e52d29f04015..05324691da17 100644
> --- a/arm.c
> +++ b/arm.c
> @@ -1125,17 +1125,18 @@ arm_lpae_vtop(ulong vaddr, ulong *pgd, physaddr_t *paddr, int verbose)
>  	pmd_t pmd_pte;
>  	pte_t pte;
>  
> -	if (!vt->vmalloc_start) {
> -		*paddr = LPAE_VTOP(vaddr);
> -		return TRUE;
> -	}
> -
> -	if (!IS_VMALLOC_ADDR(vaddr)) {
> -		*paddr = LPAE_VTOP(vaddr);
> -		if (!verbose)
> +	if (IS_KVADDR(vaddr)) {
> +		if (!vt->vmalloc_start) {
> +			*paddr = LPAE_VTOP(vaddr);
>  			return TRUE;
> -	}
> +		}
>  
> +		if (!IS_VMALLOC_ADDR(vaddr)) {
> +			*paddr = LPAE_VTOP(vaddr);
> +			if (!verbose)
> +				return TRUE;
> +		}
> +	}
>  
>  	if (verbose)
>  		fprintf(fp, "PAGE DIRECTORY: %lx\n", (ulong)pgd);
> 

--
Crash-utility mailing list
Crash-utility@xxxxxxxxxx
https://listman.redhat.com/mailman/listinfo/crash-utility




[Index of Archives]     [Fedora Development]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [KDE Users]     [Fedora Tools]

 

Powered by Linux