Re: [PATCH v4 4/9] platform/x86: hp-bioscfg: allow clearing current_password

From: Ilpo Järvinen

Date: Mon Oct 05 2026 - 09:19:25 EST


On Sat, 3 Oct 2026, Muhammad Bilal wrote:

> The ABI documents echo "" > current_password as the way to end a
> session, but validate_password_input() rejects an empty string when
> min_password_length is nonzero. The password stays cached, and since
> the previous patch the write also fails with -E2BIG.

After I apply a patch, it's no longer a "patch", so the wording should
anticipate that.

> Skip the length check for an empty current_password so the write
> clears it.
>
> Before the previous patch the write returned 1 on an HP EliteBook 840
> G2 (min_password_length is 8) but cleared nothing.
>
> Compile tested only.
>
> Fixes: 8646a3b5ee3a ("platform/x86: hp-bioscfg: passwdobj-attributes")
> Cc: stable@xxxxxxxxxxxxxxx
> Signed-off-by: Muhammad Bilal <meatuni001@xxxxxxxxx>
> ---
> Changes in v4:
> - New patch
>
> .../platform/x86/hp/hp-bioscfg/passwdobj-attributes.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/platform/x86/hp/hp-bioscfg/passwdobj-attributes.c b/drivers/platform/x86/hp/hp-bioscfg/passwdobj-attributes.c
> index 3f4c45d9b..f0551b455 100644
> --- a/drivers/platform/x86/hp/hp-bioscfg/passwdobj-attributes.c
> +++ b/drivers/platform/x86/hp/hp-bioscfg/passwdobj-attributes.c
> @@ -60,7 +60,8 @@ int hp_get_password_instance_for_type(const char *name)
> return -EINVAL;
> }
>
> -static int validate_password_input(int instance_id, const char *buf)
> +static int validate_password_input(int instance_id, const char *buf,
> + bool is_current)
> {
> int length;
> struct password_data *password_data = &bioscfg_drv.password_data[instance_id];
> @@ -69,6 +70,10 @@ static int validate_password_input(int instance_id, const char *buf)
> if (length > 0 && buf[length - 1] == '\n')
> length--;
>
> + /* An empty current_password clears the session password */
> + if (is_current && !length)
> + return 0;
> +
> if (length > MAX_PASSWD_SIZE)
> return -E2BIG;
>
> @@ -97,7 +102,7 @@ static int store_password_instance(struct kobject *kobj, const char *buf,
> id = get_password_instance_id(kobj);
>
> if (id >= 0)
> - ret = validate_password_input(id, buf_cp);
> + ret = validate_password_input(id, buf_cp, is_current);
> }
>
> if (!ret) {
>

--
i.