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: <CAJZ5v0j9TAcr0=vpjTqBSFtpTKAttoOnaDOncL6y=VUgyiJHkA@mail.gmail.com>
Date: Thu, 10 Apr 2025 12:09:48 +0200
From: "Rafael J. Wysocki" <rafael@...nel.org>
To: Hsin-Te Yuan <yuanhsinte@...omium.org>
Cc: "Rafael J. Wysocki" <rafael@...nel.org>, Daniel Lezcano <daniel.lezcano@...aro.org>, 
	Zhang Rui <rui.zhang@...el.com>, Lukasz Luba <lukasz.luba@....com>, linux-pm@...r.kernel.org, 
	linux-kernel@...r.kernel.org
Subject: Re: [PATCH] thermal: sysfs: Return ENODATA instead of EAGAIN for reads

On Thu, Apr 10, 2025 at 11:59 AM Hsin-Te Yuan <yuanhsinte@...omium.org> wrote:
>
> On Thu, Apr 10, 2025 at 1:31 AM Rafael J. Wysocki <rafael@...nel.org> wrote:
> >
> > On Wed, Apr 9, 2025 at 11:13 AM Hsin-Te Yuan <yuanhsinte@...omium.org> wrote:
> > >
> > > When userspace nonblocking reads temperature via sysfs, EAGAIN error
> > > returned by thermal driver will confuse user from the usual meaning of
> > > EAGAIN, the read would block.
> >
> > Why would it block?
>
> I mean EAGAIN returned by nonblocking read implies the read would
> block (source: manpage of read)
> >
> > > Change to throw ENODATA instead of EAGAIN to userspace.
> >
> > Casting error codes tends to be confusing.
> >
> > > Also, ENODATA more accurately reflects that data is not currently available.
> >
> > It means something else, "try again" vs "no data available (possibly at all)".
> >
> > The error code comes from the thermal driver and if it wants to say
> > "try again" then this is what it wants to say.
>
> Yes, but EAGAIN has special meaning when returned by nonblocking read.
> Hence, we need to avoid returning EAGAIN to userspace and ENODATA is
> the most suitable alternative in my opinion.

So any sysfs interface returning an error code would be affected by
this, wouldn't it?

Why do you want to change this particular one?

> >
> > > Signed-off-by: Hsin-Te Yuan <yuanhsinte@...omium.org>
> > > ---
> > >  drivers/thermal/thermal_sysfs.c | 5 ++++-
> > >  1 file changed, 4 insertions(+), 1 deletion(-)
> > >
> > > diff --git a/drivers/thermal/thermal_sysfs.c b/drivers/thermal/thermal_sysfs.c
> > > index 24b9055a0b6c515b865e0d7e2db1d0de176ff767..3d1713e053dfb867933d95131f1f2491d2ecd07e 100644
> > > --- a/drivers/thermal/thermal_sysfs.c
> > > +++ b/drivers/thermal/thermal_sysfs.c
> > > @@ -40,8 +40,11 @@ temp_show(struct device *dev, struct device_attribute *attr, char *buf)
> > >
> > >         ret = thermal_zone_get_temp(tz, &temperature);
> > >
> > > -       if (ret)
> > > +       if (ret) {
> > > +               if (ret == -EAGAIN)
> > > +                       return -ENODATA;
> > >                 return ret;
> > > +       }
> > >
> > >         return sprintf(buf, "%d\n", temperature);
> > >  }
> > >
> > > ---
> > > base-commit: a24588245776dafc227243a01bfbeb8a59bafba9
> > > change-id: 20250409-temp-6ebd13ad0dbd
> > >
> > > Best regards,
> > > --
> > > Hsin-Te Yuan <yuanhsinte@...omium.org>
> > >
> > >

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ