lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220425150046.e23a0198e0076221549eb7cf@linux-foundation.org>
Date:   Mon, 25 Apr 2022 15:00:46 -0700
From:   Andrew Morton <akpm@...ux-foundation.org>
To:     Jagdish Gediya <jvgediya@...ux.ibm.com>
Cc:     andy@...nel.org, linux-kernel@...r.kernel.org, linux-mm@...ck.org,
        minchan@...nel.org, ying.huang@...el.com, dave.hansen@...el.com
Subject: Re: [RESEND PATCH] string_helpers: sysfs: Add helper to get bool
 from string

On Mon, 25 Apr 2022 14:22:33 +0530 Jagdish Gediya <jvgediya@...ux.ibm.com> wrote:

> At many places in kernel, It is necessary to convert sysfs input
> to corrosponding bool value e.g. "false" or "0" need to be converted
> to bool false, "true" or "1" need to be converted to bool true,
> places where such conversion is needed currently check the input
> string manually. Also, such conversions compare sysfs input using
> strncmp functions so even if certain number of character match in the
> beginning, they assume the string as valid bool, which is not the
> right semantic e.g. false is bool but falseX is not.
> 
> Introduce new string helper function to convert sysfs input to
> corrosponding bool value. Modify existing such conversions to use
> this new function.
> 
> logs,
> $ cat /sys/kernel/mm/numa/demotion_enabled
> false
> $ echo true > /sys/kernel/mm/numa/demotion_enabled
> $ cat demotion_enabled
> true
> $ echo truex > /sys/kernel/mm/numa/demotion_enabled
> -bash: echo: write error: Invalid argument
> $ echo 10 > /sys/kernel/mm/numa/demotion_enabled
> -bash: echo: write error: Invalid argument
> $ echo false > /sys/kernel/mm/numa/demotion_enabled
> $ cat demotion_enabled
> false
> $ echo falseabc > /sys/kernel/mm/numa/demotion_enabled
> -bash: echo: write error: Invalid argument
> $ echo 1 > /sys/kernel/mm/numa/demotion_enabled
> $ cat demotion_enabled
> true
> $ echo 0 > /sys/kernel/mm/numa/demotion_enabled
> $ cat demotion_enabled
> false
> 
> This patch doesn't have any functionality change.
> 
> ...
>
> --- a/lib/string_helpers.c
> +++ b/lib/string_helpers.c
> @@ -967,6 +967,26 @@ void memcpy_and_pad(void *dest, size_t dest_len, const void *src, size_t count,
>  }
>  EXPORT_SYMBOL(memcpy_and_pad);
>  
> +/**
> + * sysfs_strbool - Get bool value corrosponding to string
> + * @s: The string to operate on.
> + * @output: Pointer to fill resulting bool value
> + *
> + * Returns 1 if string represents bool value, 0 otherwise
> + */
> +int sysfs_strbool(const char *s, bool *output)
> +{
> +	if (sysfs_streq(s, "1") || sysfs_streq(s, "true"))
> +		*output = true;
> +	else if (sysfs_streq(s, "0") || sysfs_streq(s, "false"))
> +		*output = false;
> +	else
> +		return 0;
> +
> +	return 1;
> +}
> +EXPORT_SYMBOL(sysfs_strbool);
> +

Can we teach kstrtobool() about "true" and "false" then use that?

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ