2021-08-20 16:35:44

by Moger, Babu

[permalink] [raw]
Subject: [PATCH] x86/resctrl: Fix 'uninitialized symbol' build warning

The recent commit 064855a69003 ("x86/resctrl: Fix default monitoring
groups reporting"), caused a RHEL8.5 build failure with an uninitialized
variable warning treated as an error. The commit removed the default case
snippet. The RHEL8.5 Makefile uses '-Werror=maybe-uninitialized' to force
uninitialized variable warnings to be treated as errors. This is also
reported by kernel test robot. The error from the RHEL8.5 build is below:

arch/x86/kernel/cpu/resctrl/monitor.c: In function ‘__mon_event_count’:
arch/x86/kernel/cpu/resctrl/monitor.c:261:12: error: ‘m’ may be used
uninitialized in this function [-Werror=maybe-uninitialized]
m->chunks += chunks;
^~

The upstream Makefile does not build using '-Werror=maybe-uninitialized'.
So, the problem is not seen there. Fix the problem by putting back the
default case snippet.

Fixes: 064855a69003 ("x86/resctrl: Fix default monitoring groups reporting")
Cc: [email protected]
Reported-by: Terry Bowman <[email protected]>
Reported-by: kernel test robot <[email protected]>
Link: https://lore.kernel.org/lkml/6118d218.4ZZRXYKZCzQSq1Km%[email protected]/

Signed-off-by: Babu Moger <[email protected]>
---
arch/x86/kernel/cpu/resctrl/monitor.c | 6 ++++++
1 file changed, 6 insertions(+)

diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
index 57e4bb695ff9..8caf871b796f 100644
--- a/arch/x86/kernel/cpu/resctrl/monitor.c
+++ b/arch/x86/kernel/cpu/resctrl/monitor.c
@@ -304,6 +304,12 @@ static u64 __mon_event_count(u32 rmid, struct rmid_read *rr)
case QOS_L3_MBM_LOCAL_EVENT_ID:
m = &rr->d->mbm_local[rmid];
break;
+ default:
+ /*
+ * Code would never reach here because an invalid
+ * event id would fail the __rmid_read.
+ */
+ return RMID_VAL_ERROR;
}

if (rr->first) {


2021-08-20 16:43:13

by Reinette Chatre

[permalink] [raw]
Subject: Re: [PATCH] x86/resctrl: Fix 'uninitialized symbol' build warning


On 8/20/2021 9:33 AM, Babu Moger wrote:
> The recent commit 064855a69003 ("x86/resctrl: Fix default monitoring
> groups reporting"), caused a RHEL8.5 build failure with an uninitialized
> variable warning treated as an error. The commit removed the default case
> snippet. The RHEL8.5 Makefile uses '-Werror=maybe-uninitialized' to force
> uninitialized variable warnings to be treated as errors. This is also
> reported by kernel test robot. The error from the RHEL8.5 build is below:
>
> arch/x86/kernel/cpu/resctrl/monitor.c: In function ‘__mon_event_count’:
> arch/x86/kernel/cpu/resctrl/monitor.c:261:12: error: ‘m’ may be used
> uninitialized in this function [-Werror=maybe-uninitialized]
> m->chunks += chunks;
> ^~
>
> The upstream Makefile does not build using '-Werror=maybe-uninitialized'.
> So, the problem is not seen there. Fix the problem by putting back the
> default case snippet.
>
> Fixes: 064855a69003 ("x86/resctrl: Fix default monitoring groups reporting")
> Cc: [email protected]
> Reported-by: Terry Bowman <[email protected]>
> Reported-by: kernel test robot <[email protected]>
> Link: https://lore.kernel.org/lkml/6118d218.4ZZRXYKZCzQSq1Km%[email protected]/
>
> Signed-off-by: Babu Moger <[email protected]>
> ---
> arch/x86/kernel/cpu/resctrl/monitor.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
> index 57e4bb695ff9..8caf871b796f 100644
> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
> @@ -304,6 +304,12 @@ static u64 __mon_event_count(u32 rmid, struct rmid_read *rr)
> case QOS_L3_MBM_LOCAL_EVENT_ID:
> m = &rr->d->mbm_local[rmid];
> break;
> + default:
> + /*
> + * Code would never reach here because an invalid
> + * event id would fail the __rmid_read.
> + */
> + return RMID_VAL_ERROR;
> }
>
> if (rr->first) {
>

Thank you very much Babu.

Reviewed-by: Reinette Chatre <[email protected]>

Reinette

2021-08-20 16:44:53

by Wei Huang

[permalink] [raw]
Subject: Re: [PATCH] x86/resctrl: Fix 'uninitialized symbol' build warning



On 8/20/21 11:33 AM, Babu Moger wrote:
> The recent commit 064855a69003 ("x86/resctrl: Fix default monitoring
> groups reporting"), caused a RHEL8.5 build failure with an uninitialized

Don't mention RHEL in the commit message, just use "commercial Linux
distro".

> variable warning treated as an error. The commit removed the default case
> snippet. The RHEL8.5 Makefile uses '-Werror=maybe-uninitialized' to force

Ditto

> uninitialized variable warnings to be treated as errors. This is also
> reported by kernel test robot. The error from the RHEL8.5 build is below:
>
> arch/x86/kernel/cpu/resctrl/monitor.c: In function ‘__mon_event_count’:
> arch/x86/kernel/cpu/resctrl/monitor.c:261:12: error: ‘m’ may be used
> uninitialized in this function [-Werror=maybe-uninitialized]
> m->chunks += chunks;
> ^~
>
> The upstream Makefile does not build using '-Werror=maybe-uninitialized'.
> So, the problem is not seen there. Fix the problem by putting back the
> default case snippet.
>
> Fixes: 064855a69003 ("x86/resctrl: Fix default monitoring groups reporting")
> Cc: [email protected]
> Reported-by: Terry Bowman <[email protected]>
> Reported-by: kernel test robot <[email protected]>
> Link: https://lore.kernel.org/lkml/6118d218.4ZZRXYKZCzQSq1Km%[email protected]/
>
> Signed-off-by: Babu Moger <[email protected]>
> ---
> arch/x86/kernel/cpu/resctrl/monitor.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
> index 57e4bb695ff9..8caf871b796f 100644
> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
> @@ -304,6 +304,12 @@ static u64 __mon_event_count(u32 rmid, struct rmid_read *rr)
> case QOS_L3_MBM_LOCAL_EVENT_ID:
> m = &rr->d->mbm_local[rmid];
> break;
> + default:
> + /*
> + * Code would never reach here because an invalid
> + * event id would fail the __rmid_read.
> + */
> + return RMID_VAL_ERROR;
> }

It used to return -EINVAL, you might want to do the same?

>
> if (rr->first) {
>

2021-08-20 18:59:37

by Moger, Babu

[permalink] [raw]
Subject: Re: [PATCH] x86/resctrl: Fix 'uninitialized symbol' build warning



On 8/20/21 11:40 AM, Wei Huang wrote:
>
>
> On 8/20/21 11:33 AM, Babu Moger wrote:
>> The recent commit 064855a69003 ("x86/resctrl: Fix default monitoring
>> groups reporting"), caused a RHEL8.5 build failure with an uninitialized
>
> Don't mention RHEL in the commit message, just use "commercial Linux
> distro".

Talked to Wei on this. I will replace RHEL8.5 with just RHEL.
>
>> variable warning treated as an error. The commit removed the default case
>> snippet. The RHEL8.5 Makefile uses '-Werror=maybe-uninitialized' to force
>
> Ditto

Same as above.

>
>> uninitialized variable warnings to be treated as errors. This is also
>> reported by kernel test robot. The error from the RHEL8.5 build is below:
>>
>> arch/x86/kernel/cpu/resctrl/monitor.c: In function ‘__mon_event_count’:
>> arch/x86/kernel/cpu/resctrl/monitor.c:261:12: error: ‘m’ may be used
>> uninitialized in this function [-Werror=maybe-uninitialized]
>> m->chunks += chunks;
>> ^~
>>
>> The upstream Makefile does not build using '-Werror=maybe-uninitialized'.
>> So, the problem is not seen there. Fix the problem by putting back the
>> default case snippet.
>>
>> Fixes: 064855a69003 ("x86/resctrl: Fix default monitoring groups reporting")
>> Cc: [email protected]
>> Reported-by: Terry Bowman <[email protected]>
>> Reported-by: kernel test robot <[email protected]>
>> Link: https://lore.kernel.org/lkml/6118d218.4ZZRXYKZCzQSq1Km%[email protected]/
>>
>> Signed-off-by: Babu Moger <[email protected]>
>> ---
>> arch/x86/kernel/cpu/resctrl/monitor.c | 6 ++++++
>> 1 file changed, 6 insertions(+)
>>
>> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
>> index 57e4bb695ff9..8caf871b796f 100644
>> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
>> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
>> @@ -304,6 +304,12 @@ static u64 __mon_event_count(u32 rmid, struct rmid_read *rr)
>> case QOS_L3_MBM_LOCAL_EVENT_ID:
>> m = &rr->d->mbm_local[rmid];
>> break;
>> + default:
>> + /*
>> + * Code would never reach here because an invalid
>> + * event id would fail the __rmid_read.
>> + */
>> + return RMID_VAL_ERROR;
>> }
>
> It used to return -EINVAL, you might want to do the same?

No. The function prototype has changed a bit. We have to return
RMID_VAL_ERROR(u64).
Thanks
Babu
>
>>
>> if (rr->first) {
>>