Re: [tip:x86/urgent] BUILD SUCCESS WITH WARNING 064855a69003c24bd6b473b367d364e418c57625

From: Reinette Chatre
Date: Fri Aug 20 2021 - 10:42:30 EST


Hi Babu,

On 8/20/2021 7:16 AM, Babu Moger wrote:


On 8/19/21 4:05 PM, Borislav Petkov wrote:
On Thu, Aug 19, 2021 at 01:39:46PM -0700, Reinette Chatre wrote:
I can confirm that the removed comment explains why m would be initialized
when used in the code that follows.

How would you prefer to address this? We could add just the comment back in
support of future reports or perhaps by adding the default case back with
the same error that would be returned earlier when there is an invalid
EVENT_ID. Something like:

---8<---
diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c
b/arch/x86/kernel/cpu/resctrl/monitor.c
index 57e4bb695ff9..05b99e4d621c 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) {

Right, I would normally not take a patch just to fix a tool because it
cannot see it correctly.

But Babu has another use case which breaks the build so I guess that's
serious enough to make an exception.

Babu, can you please explain?

Details:

The patch applies cleanly to RHEL8.5 tree but the build fails with an
uninitialized variable warning treated as an error. The RHEL8.5 Makefile
uses '-Werror=maybe-uninitialized' to force uninitialized variable
warnings to be treated as errors. The build error was found while using
the redhat/configs/kernel-x86_64.config kernel config. BTW, the 5.14-rc6
build passes and it does not build using '-Werror=maybe-uninitialized'.
The error from the 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 following patch fixes the problem.

diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c
b/arch/x86/kernel/cpu/resctrl/monitor.c
index 57e4bb695ff9..553cc6410442 100644
--- a/arch/x86/kernel/cpu/resctrl/monitor.c
+++ b/arch/x86/kernel/cpu/resctrl/monitor.c
@@ -304,6 +304,8 @@ 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:
+ return RMID_VAL_ERROR;
}

if (rr->first) {


Reinette,
Are you going to send the official patch or let me know I will send. You
can add signoff from me after adding above details. We probably need Fixes
and Cc: stable@xxxxxxxxxxxxxxx.


Could you please go ahead and send a patch with these details you collected?

Thank you very much

Reinette