2023-03-28 03:31:55

by Jiangshan Yi

[permalink] [raw]
Subject: [PATCH] ACPI: thermal: replace ternary operator with min_t()

Fix the following coccicheck warning:

drivers/acpi/thermal.c:422: WARNING opportunity for min().

min_t() macro is defined in include/linux/minmax.h. It avoids multiple
evaluations of the arguments when non-constant and performs strict
type-checking.

Signed-off-by: Jiangshan Yi <[email protected]>
---
drivers/acpi/thermal.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 0b4b844f9d4c..179f41196a9d 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -419,10 +419,9 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
* the next higher trip point
*/
tz->trips.active[i-1].temperature =
- (tz->trips.active[i-2].temperature <
- celsius_to_deci_kelvin(act) ?
- tz->trips.active[i-2].temperature :
- celsius_to_deci_kelvin(act));
+ min_t(unsigned long,
+ tz->trips.active[i-2].temperature,
+ celsius_to_deci_kelvin(act));

break;
} else {
--
2.25.1


2023-03-30 17:21:30

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] ACPI: thermal: replace ternary operator with min_t()

On Tue, Mar 28, 2023 at 5:17 AM Jiangshan Yi <[email protected]> wrote:
>
> Fix the following coccicheck warning:

This is not a fix, because the current code is correct AFAICS.

It merely makes the code follow the coccicheck recommendation, which
is a cleanup (although arguably a good one).

But because the new code is way more readable, I've applied this as
6.4 material (with edits in the changelog).

Thanks!

> drivers/acpi/thermal.c:422: WARNING opportunity for min().
>
> min_t() macro is defined in include/linux/minmax.h. It avoids multiple
> evaluations of the arguments when non-constant and performs strict
> type-checking.
>
> Signed-off-by: Jiangshan Yi <[email protected]>
> ---
> drivers/acpi/thermal.c | 7 +++----
> 1 file changed, 3 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
> index 0b4b844f9d4c..179f41196a9d 100644
> --- a/drivers/acpi/thermal.c
> +++ b/drivers/acpi/thermal.c
> @@ -419,10 +419,9 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
> * the next higher trip point
> */
> tz->trips.active[i-1].temperature =
> - (tz->trips.active[i-2].temperature <
> - celsius_to_deci_kelvin(act) ?
> - tz->trips.active[i-2].temperature :
> - celsius_to_deci_kelvin(act));
> + min_t(unsigned long,
> + tz->trips.active[i-2].temperature,
> + celsius_to_deci_kelvin(act));
>
> break;
> } else {
> --
> 2.25.1
>

2023-03-31 09:02:30

by David Laight

[permalink] [raw]
Subject: RE: [PATCH] ACPI: thermal: replace ternary operator with min_t()

From: Rafael J. Wysocki
> Sent: 30 March 2023 18:12
>
> On Tue, Mar 28, 2023 at 5:17 AM Jiangshan Yi <[email protected]> wrote:
> >
> > Fix the following coccicheck warning:
>
> This is not a fix, because the current code is correct AFAICS.
>
> It merely makes the code follow the coccicheck recommendation, which
> is a cleanup (although arguably a good one).
>
> But because the new code is way more readable, I've applied this as
> 6.4 material (with edits in the changelog).

Also if you need to use min_t() there is really something wrong
with your types.

> > drivers/acpi/thermal.c:422: WARNING opportunity for min().
> >
> > min_t() macro is defined in include/linux/minmax.h. It avoids multiple
> > evaluations of the arguments when non-constant and performs strict
> > type-checking.

min_t() casts the arguments and performs absolutely no type-checking.
The casts can even mask off high bits that ought to be checked.

David

> >
> > Signed-off-by: Jiangshan Yi <[email protected]>
> > ---
> > drivers/acpi/thermal.c | 7 +++----
> > 1 file changed, 3 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
> > index 0b4b844f9d4c..179f41196a9d 100644
> > --- a/drivers/acpi/thermal.c
> > +++ b/drivers/acpi/thermal.c
> > @@ -419,10 +419,9 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
> > * the next higher trip point
> > */
> > tz->trips.active[i-1].temperature =
> > - (tz->trips.active[i-2].temperature <
> > - celsius_to_deci_kelvin(act) ?
> > - tz->trips.active[i-2].temperature :
> > - celsius_to_deci_kelvin(act));
> > + min_t(unsigned long,
> > + tz->trips.active[i-2].temperature,
> > + celsius_to_deci_kelvin(act));
> >
> > break;
> > } else {
> > --
> > 2.25.1
> >

-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)