2019-08-27 14:58:54

by Denis Efremov (Oracle)

[permalink] [raw]
Subject: [PATCH] scripts/dtc: Simplify condition in get_node_by_path

The strlen && strprefixeq check in get_node_by_path is
excessive, since strlen is checked in strprefixeq macro
internally. Thus, 'strlen(child->name) == p-path'
conjunct duplicates after macro expansion and could
be removed.

Signed-off-by: Denis Efremov <[email protected]>
---
scripts/dtc/livetree.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c
index 0c039993953a..032df5878ccc 100644
--- a/scripts/dtc/livetree.c
+++ b/scripts/dtc/livetree.c
@@ -526,8 +526,7 @@ struct node *get_node_by_path(struct node *tree, const char *path)
p = strchr(path, '/');

for_each_child(tree, child) {
- if (p && (strlen(child->name) == p-path) &&
- strprefixeq(path, p - path, child->name))
+ if (p && strprefixeq(path, p - path, child->name))
return get_node_by_path(child, p+1);
else if (!p && streq(path, child->name))
return child;
--
2.21.0


2019-08-27 18:47:48

by Frank Rowand

[permalink] [raw]
Subject: Re: [PATCH] scripts/dtc: Simplify condition in get_node_by_path

Hi Denis,

On 8/27/19 7:57 AM, Denis Efremov wrote:
> The strlen && strprefixeq check in get_node_by_path is
> excessive, since strlen is checked in strprefixeq macro
> internally. Thus, 'strlen(child->name) == p-path'
> conjunct duplicates after macro expansion and could
> be removed.
>
> Signed-off-by: Denis Efremov <[email protected]>
> ---
> scripts/dtc/livetree.c | 3 +--
> 1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/scripts/dtc/livetree.c b/scripts/dtc/livetree.c
> index 0c039993953a..032df5878ccc 100644
> --- a/scripts/dtc/livetree.c
> +++ b/scripts/dtc/livetree.c
> @@ -526,8 +526,7 @@ struct node *get_node_by_path(struct node *tree, const char *path)
> p = strchr(path, '/');
>
> for_each_child(tree, child) {
> - if (p && (strlen(child->name) == p-path) &&
> - strprefixeq(path, p - path, child->name))
> + if (p && strprefixeq(path, p - path, child->name))
> return get_node_by_path(child, p+1);
> else if (!p && streq(path, child->name))
> return child;
>

livetree.c is maintained in the upstream dtc project. We pull changes
from that project into the Linux kernel source tree.

Info on submitting patches is in the upstream file "Documentation/manual.txt":

1) Sources

Source code for the Device Tree Compiler can be found at git.kernel.org.

The upstream repository is here:

git://git.kernel.org/pub/scm/utils/dtc/dtc.git
https://git.kernel.org/pub/scm/utils/dtc/dtc.git

The gitweb interface for the upstream respository is:

https://git.kernel.org/cgit/utils/dtc/dtc.git/

1.1) Submitting Patches

Patches should be sent to the maintainers:
David Gibson <[email protected]>
Jon Loeliger <[email protected]>
and CCed to <[email protected]>.