Re: [PATCH v2] acpi: battery: Sanitise model_number by dropping unprintable characters

"Rafael J. Wysocki (Intel)" <[email protected]>
Newsgroups org.kernel.vger.linux-acpi,org.kernel.vger.linux-kernel
Message-ID <CAJZ5v0iKFu7S2cnEaxNnPM90MYeziec4Rkiywo6uSsTCTJPh-g@mail.gmail.com>
On Fri, Jul 10, 2026 at 5:36 PM Mark Pearson <[email protected]> wrote:
>
> On Fri, Jul 10, 2026, at 8:51 AM, Kate Hsuan wrote:
> > The battery Embedded Controller (EC) may return the model name with
> > trailing unprintable or non-ASCII characters. For example, on some systems:
> >
> > $ cat /sys/class/power_supply/BAT0/model_name
> > LNV-5B10W51864��
> >
> > If a non-ASCII or an unprintable character is found, it will be replaced
> > with '\0' to ensure the model_number is a valid string. If left intact,
> > the malformed string prevents udev rules and hwdb working correctly.
> >
> > Link: https://gitlab.freedesktop.org/upower/upower/-/work_items/345
> >
> > Signed-off-by: Kate Hsuan <[email protected]>
> > ---
> >  drivers/acpi/battery.c | 14 ++++++++++++++
> >  1 file changed, 14 insertions(+)
> >
> > diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
> > index f5e0eb299610..4409fb95b988 100644
> > --- a/drivers/acpi/battery.c
> > +++ b/drivers/acpi/battery.c
> > @@ -10,6 +10,7 @@
> >
> >  #define pr_fmt(fmt) "ACPI: battery: " fmt
> >
> > +#include <linux/ctype.h>
> >  #include <linux/delay.h>
> >  #include <linux/dmi.h>
> >  #include <linux/jiffies.h>
> > @@ -483,6 +484,15 @@ static int acpi_battery_get_status(struct
> > acpi_battery *battery)
> >       return 0;
> >  }
> >
> > +static void acpi_battery_clean_unprintable_chars(char *str, size_t length)
> > +{
> > +     for (unsigned int i = 0; i < length; i++) {
> > +             if (!isascii(str[i]) || !isprint(str[i])) {
> > +                     str[i] = '\0';
> > +                     break;
> > +             }
> > +     }
> > +}
> >
> >  static int extract_battery_info(const int use_bix,
> >                        struct acpi_battery *battery,
> > @@ -524,6 +534,10 @@ static int extract_battery_info(const int use_bix,
> >           battery->capacity_now > battery->full_charge_capacity)
> >               battery->capacity_now = battery->full_charge_capacity;
> >
> > +     if (!result)
> > +             acpi_battery_clean_unprintable_chars(battery->model_number,
> > +                                     ARRAY_SIZE(battery->model_number));
> > +
> >       return result;
> >  }
> >
> > --
> > 2.55.0
>
> Thanks Kate - I know this impacts a few of our platforms and it will be great to have this fix.
>
> Implementation looks good to me.
> Reviewed-by: Mark Pearson <[email protected]>

Applied as 7.3 material, thanks!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.