[Pdbg] [PATCH 12/13] libpdbg: Add a check if device tree is writeable
Alistair Popple
alistair at popple.id.au
Thu Jan 16 12:43:23 AEDT 2020
Reviewed-by: Alistair Popple <alistair at popple.id.au>
On Wednesday, 15 January 2020 4:19:00 PM AEDT Amitay Isaacs wrote:
> Signed-off-by: Amitay Isaacs <amitay at ozlabs.org>
> ---
> libpdbg/device.c | 3 +++
> libpdbg/dtb.c | 20 ++++++++++++++++++++
> libpdbg/target.h | 1 +
> 3 files changed, 24 insertions(+)
>
> diff --git a/libpdbg/device.c b/libpdbg/device.c
> index 6c11836..f1c1f6b 100644
> --- a/libpdbg/device.c
> +++ b/libpdbg/device.c
> @@ -327,6 +327,9 @@ bool pdbg_target_set_property(struct pdbg_target
> *target, const char *name, cons size_t len;
> int ret;
>
> + if (!target->fdt || !pdbg_fdt_is_writeable(target->fdt))
> + return false;
> +
> p = pdbg_target_property(target, name, &len);
> if (!p)
> return false;
> diff --git a/libpdbg/dtb.c b/libpdbg/dtb.c
> index 6fdce00..6e05663 100644
> --- a/libpdbg/dtb.c
> +++ b/libpdbg/dtb.c
> @@ -411,6 +411,26 @@ void *pdbg_system_fdt(void)
> return pdbg_dtb.system.fdt;
> }
>
> +static bool is_fdt_mapped(void *fdt, struct pdbg_mfile *mfile)
> +{
> + if (mfile->fdt == fdt && mfile->fd != -1 && mfile->len != -1) {
> + return true;
> + }
> +
> + return false;
> +}
> +
> +bool pdbg_fdt_is_writeable(void *fdt)
> +{
> + bool ok;
> +
> + ok = is_fdt_mapped(fdt, &pdbg_dtb.system);
> + if (!ok)
> + ok = is_fdt_mapped(fdt, &pdbg_dtb.backend);
> +
> + return ok;
> +}
> +
> static void close_dtb(struct pdbg_mfile *mfile)
> {
> if (mfile->fd != -1 && mfile->len != -1 && mfile->fdt) {
> diff --git a/libpdbg/target.h b/libpdbg/target.h
> index 1c08363..2ecdfce 100644
> --- a/libpdbg/target.h
> +++ b/libpdbg/target.h
> @@ -79,6 +79,7 @@ extern struct list_head target_classes;
>
> struct pdbg_dtb *pdbg_default_dtb(void *system_fdt);
> const char *pdbg_get_backend_option(void);
> +bool pdbg_fdt_is_writeable(void *fdt);
>
> struct chipop *pib_to_chipop(struct pdbg_target *target);
> bool target_is_virtual(struct pdbg_target *target);
More information about the Pdbg
mailing list