2018-02-07 00:01:27

by Gustavo A. R. Silva

[permalink] [raw]
Subject: [PATCH] ACPI / CPPC: Use 64-bit arithmetic instead of 32-bit

Add suffix ULL to constant 500 in order to give the compiler complete
information about the proper arithmetic to use. Notice that this
constant is used in a context that expects an expression of type
u64 (64 bits, unsigned).

The expression NUM_RETRIES * cppc_ss->latency at line 578, which at
preprocessing time translates to 500 * cppc_ss->latency is currently
being evaluated using 32-bit arithmetic.

Addresses-Coverity-ID: 1382602
Signed-off-by: Gustavo A. R. Silva <[email protected]>
---
Notice that another option is to cast NUM_RETRIES to u64 at line 578,
but as there is only one instace in which this macro is being used I
think adding the ULL is just enough.

drivers/acpi/cppc_acpi.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
index 06ea474..0afbb26 100644
--- a/drivers/acpi/cppc_acpi.c
+++ b/drivers/acpi/cppc_acpi.c
@@ -119,7 +119,7 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);
* to PCC commands. Keeping it high enough to cover emulators where
* the processors run painfully slow.
*/
-#define NUM_RETRIES 500
+#define NUM_RETRIES 500ULL

struct cppc_attr {
struct attribute attr;
--
2.7.4



2018-02-08 09:52:30

by Rafael J. Wysocki

[permalink] [raw]
Subject: Re: [PATCH] ACPI / CPPC: Use 64-bit arithmetic instead of 32-bit

On Wednesday, February 7, 2018 12:36:17 AM CET Gustavo A. R. Silva wrote:
> Add suffix ULL to constant 500 in order to give the compiler complete
> information about the proper arithmetic to use. Notice that this
> constant is used in a context that expects an expression of type
> u64 (64 bits, unsigned).
>
> The expression NUM_RETRIES * cppc_ss->latency at line 578, which at
> preprocessing time translates to 500 * cppc_ss->latency is currently
> being evaluated using 32-bit arithmetic.
>
> Addresses-Coverity-ID: 1382602
> Signed-off-by: Gustavo A. R. Silva <[email protected]>
> ---
> Notice that another option is to cast NUM_RETRIES to u64 at line 578,
> but as there is only one instace in which this macro is being used I
> think adding the ULL is just enough.
>
> drivers/acpi/cppc_acpi.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
> index 06ea474..0afbb26 100644
> --- a/drivers/acpi/cppc_acpi.c
> +++ b/drivers/acpi/cppc_acpi.c
> @@ -119,7 +119,7 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);
> * to PCC commands. Keeping it high enough to cover emulators where
> * the processors run painfully slow.
> */
> -#define NUM_RETRIES 500
> +#define NUM_RETRIES 500ULL
>
> struct cppc_attr {
> struct attribute attr;
>

Applied, thanks!



2018-02-08 17:07:53

by Gustavo A. R. Silva

[permalink] [raw]
Subject: Re: [PATCH] ACPI / CPPC: Use 64-bit arithmetic instead of 32-bit



On 02/08/2018 03:49 AM, Rafael J. Wysocki wrote:
> On Wednesday, February 7, 2018 12:36:17 AM CET Gustavo A. R. Silva wrote:
>> Add suffix ULL to constant 500 in order to give the compiler complete
>> information about the proper arithmetic to use. Notice that this
>> constant is used in a context that expects an expression of type
>> u64 (64 bits, unsigned).
>>
>> The expression NUM_RETRIES * cppc_ss->latency at line 578, which at
>> preprocessing time translates to 500 * cppc_ss->latency is currently
>> being evaluated using 32-bit arithmetic.
>>
>> Addresses-Coverity-ID: 1382602
>> Signed-off-by: Gustavo A. R. Silva <[email protected]>
>> ---
>> Notice that another option is to cast NUM_RETRIES to u64 at line 578,
>> but as there is only one instace in which this macro is being used I
>> think adding the ULL is just enough.
>>
>> drivers/acpi/cppc_acpi.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/acpi/cppc_acpi.c b/drivers/acpi/cppc_acpi.c
>> index 06ea474..0afbb26 100644
>> --- a/drivers/acpi/cppc_acpi.c
>> +++ b/drivers/acpi/cppc_acpi.c
>> @@ -119,7 +119,7 @@ static DEFINE_PER_CPU(struct cpc_desc *, cpc_desc_ptr);
>> * to PCC commands. Keeping it high enough to cover emulators where
>> * the processors run painfully slow.
>> */
>> -#define NUM_RETRIES 500
>> +#define NUM_RETRIES 500ULL
>>
>> struct cppc_attr {
>> struct attribute attr;
>>
>
> Applied, thanks!
>
>

Thank you, Rafael.

--
Gustavo