Re: [PATCH v4 14/14] of: Improve __of_add_property_sysfs() readability

From: Rob Herring
Date: Mon Jan 13 2025 - 18:46:57 EST


On Mon, Jan 13, 2025 at 11:00:12PM +0800, Zijun Hu wrote:
> On 2025/1/11 04:41, Rob Herring wrote:
> >> From: Zijun Hu <quic_zijuhu@xxxxxxxxxxx>
> >>
> >> __of_add_property_sysfs() hard codes string "security-" length as 9, but
> >> that is not obvious for readers.
> >>
> >> Improve its readability by using strlen().
> > Does the compiler optimize the strlen call away? Maybe, maybe not. If
> > not, that's N calls to strlen() where N is the number of properties in
> > your DT. That's in the 1000s easily.
> >
> > Do you really want to go test enough compiler versions we support to
> > feel confident this is optimized away. I don't.
>
> i understand your concern about performance.
>
> what about below solution ?

See 72921427d46b ("string.h: Add str_has_prefix() helper function").

Though we already had strstarts(), but that lacks __always_inline which
seems is important for eliminating the strlen(). Also, since that
commit, clang has become more common and need to make sure the same
optimization happens on it.

>
> int __of_add_property_sysfs(struct device_node *np, struct property *pp)
> {
> +#define SECURITY_PREFIX "security-"
> int rc;
>
> /* Important: Don't leak passwords */
> - bool secure = strncmp(pp->name, "security-", 9) == 0;
> + bool secure = strncmp(pp->name, SECURITY_PREFIX,
> sizeof(SECURITY_PREFIX) - 1) == 0;
>
> if (!IS_ENABLED(CONFIG_SYSFS))
> return 0;
>
>
>