From: Rob Herring <robherring2-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Stephen Warren <swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
Cc: devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Subject: Re: [PATCH] dtc: fix for_each_*() to skip first object if deleted
Date: Mon, 08 Oct 2012 22:13:23 -0500 [thread overview]
Message-ID: <50739653.7060009@gmail.com> (raw)
In-Reply-To: <1349734526-29792-1-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
On 10/08/2012 05:15 PM, Stephen Warren wrote:
> From: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
>
> The previous definition of for_each_*() would always include the very
> first object within the list, irrespective of whether it was marked
> deleted, since the deleted flag was not checked on the first object,
> but only on any "next" object.
>
> Fix for_each_*() to check the deleted flag in the loop body every
> iteration to correct this.
>
> (upstream dtc commit 1762ab42ef77db7ab2776d0d6cba3515150f518a)
>
> Signed-off-by: Stephen Warren <swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
Applied.
Thanks for sending this before I got around to asking you to since a
script to do this is not yet in place. :)
Rob
> ---
> scripts/dtc/dtc.h | 44 ++++++++++----------------------------------
> 1 files changed, 10 insertions(+), 34 deletions(-)
>
> diff --git a/scripts/dtc/dtc.h b/scripts/dtc/dtc.h
> index d501c86..3e42a07 100644
> --- a/scripts/dtc/dtc.h
> +++ b/scripts/dtc/dtc.h
> @@ -161,51 +161,27 @@ struct node {
> struct label *labels;
> };
>
> -static inline struct label *for_each_label_next(struct label *l)
> -{
> - do {
> - l = l->next;
> - } while (l && l->deleted);
> -
> - return l;
> -}
> -
> -#define for_each_label(l0, l) \
> - for ((l) = (l0); (l); (l) = for_each_label_next(l))
> -
> #define for_each_label_withdel(l0, l) \
> for ((l) = (l0); (l); (l) = (l)->next)
>
> -static inline struct property *for_each_property_next(struct property *p)
> -{
> - do {
> - p = p->next;
> - } while (p && p->deleted);
> -
> - return p;
> -}
> -
> -#define for_each_property(n, p) \
> - for ((p) = (n)->proplist; (p); (p) = for_each_property_next(p))
> +#define for_each_label(l0, l) \
> + for_each_label_withdel(l0, l) \
> + if (!(l)->deleted)
>
> #define for_each_property_withdel(n, p) \
> for ((p) = (n)->proplist; (p); (p) = (p)->next)
>
> -static inline struct node *for_each_child_next(struct node *c)
> -{
> - do {
> - c = c->next_sibling;
> - } while (c && c->deleted);
> -
> - return c;
> -}
> -
> -#define for_each_child(n, c) \
> - for ((c) = (n)->children; (c); (c) = for_each_child_next(c))
> +#define for_each_property(n, p) \
> + for_each_property_withdel(n, p) \
> + if (!(p)->deleted)
>
> #define for_each_child_withdel(n, c) \
> for ((c) = (n)->children; (c); (c) = (c)->next_sibling)
>
> +#define for_each_child(n, c) \
> + for_each_child_withdel(n, c) \
> + if (!(c)->deleted)
> +
> void add_label(struct label **labels, char *label);
> void delete_labels(struct label **labels);
>
>
next prev parent reply other threads:[~2012-10-09 3:13 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-10-08 22:15 [PATCH] dtc: fix for_each_*() to skip first object if deleted Stephen Warren
[not found] ` <1349734526-29792-1-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-09 3:13 ` Rob Herring [this message]
-- strict thread matches above, loose matches on Subject: below --
2012-10-03 22:32 Stephen Warren
[not found] ` <1349303574-4635-1-git-send-email-swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2012-10-03 23:42 ` Rob Herring
[not found] ` <506CCD68.4030000-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
2012-10-04 18:05 ` Stephen Warren
2012-10-04 5:00 ` David Gibson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50739653.7060009@gmail.com \
--to=robherring2-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=devicetree-discuss-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=swarren-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org \
--cc=swarren-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.