[Pdbg] [PATCH] libpdbg: Fix rework target addressing

Alistair Popple alistair at popple.id.au
Mon Nov 12 17:57:24 AEDT 2018


Thanks Nick!

We actually posted a fix for that bug on Friday though - see http://
patchwork.ozlabs.org/patch/995275/. I should probably have just pushed it out 
then. I've taken that patch over yours because it adds a test to catch when we 
break it again :-)

- Alistair

On Saturday, 10 November 2018 8:05:26 PM AEDT Nicholas Piggin wrote:
> Commit 936dbdcedb27 ("libpdbg: Rework target addressing") introduced
> a bug in the target address calculation, using index 1 rather than the
> intended 0.
> 
> Fixes: 936dbdcedb27 ("libpdbg: Rework target addressing")
> Signed-off-by: Nicholas Piggin <npiggin at gmail.com>
> ---
>  libpdbg/device.c | 9 ++++-----
>  1 file changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/libpdbg/device.c b/libpdbg/device.c
> index 9557172..f81b1b5 100644
> --- a/libpdbg/device.c
> +++ b/libpdbg/device.c
> @@ -626,15 +626,14 @@ uint64_t pdbg_target_address(struct pdbg_target
> *target, uint64_t *out_size) const struct dt_property *p;
>  	u32 na = dt_n_address_cells(target);
>  	u32 ns = dt_n_size_cells(target);
> -	u32 pos, n;
> +	u32 n;
> 
>  	p = dt_require_property(target, "reg", -1);
>  	n = (na + ns) * sizeof(u32);
> -	pos = n;
> -	assert((pos + n) <= p->len);
> +	assert(n <= p->len);
>  	if (out_size)
> -		*out_size = dt_get_number(p->prop + pos + na * sizeof(u32), ns);
> -	return dt_get_number(p->prop + pos, na);
> +		*out_size = dt_get_number(p->prop + na * sizeof(u32), ns);
> +	return dt_get_number(p->prop, na);
>  }
> 
>  void pdbg_targets_init(void *fdt)




More information about the Pdbg mailing list