ec/google/chromeec: Fix Coverity Scan error (BAD_SHIFT)
A recent Coverity scan found an issue with the way the EC_HOST_EVENT_MASK macro was being used. It was being passed values between 0 and 63, but since it is doing basically (1ULL << (value - 1)), this caused a shift of -1 when `i` is 0 and also doesn't reach the 63rd bit of the mask. This is fixed by incrementing the start and end conditions of the loop by 1, so the event mask ranges from bits 0 to 63, instead of -1 to 62. Found-by: Coverity CID 1430218 Signed-off-by: Tim Wawrzynczak <twawrzynczak@chromium.org> Change-Id: I6a7cfa64545f3d313de24407f0a91b48368f2a8a Reviewed-on: https://review.coreboot.org/c/coreboot/+/43460 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Furquan Shaikh <furquan@google.com> Reviewed-by: Karthik Ramasubramanian <kramasub@google.com>
This commit is contained in:
parent
60c619f6a3
commit
7777e1c30b
|
@ -393,7 +393,14 @@ void google_chromeec_log_events(uint64_t mask)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
events = google_chromeec_get_events_b() & mask;
|
events = google_chromeec_get_events_b() & mask;
|
||||||
for (i = 0; i < sizeof(events) * 8; i++) {
|
|
||||||
|
/*
|
||||||
|
* This loop starts at 1 because the EC_HOST_EVENT_MASK macro subtracts
|
||||||
|
* 1 from its argument before applying the left-shift operator. This
|
||||||
|
* prevents a left-shift of -1 happening, and covers the entire 64-bit
|
||||||
|
* range of the event mask.
|
||||||
|
*/
|
||||||
|
for (i = 1; i <= sizeof(events) * 8; i++) {
|
||||||
if (EC_HOST_EVENT_MASK(i) & events)
|
if (EC_HOST_EVENT_MASK(i) & events)
|
||||||
elog_add_event_byte(ELOG_TYPE_EC_EVENT, i);
|
elog_add_event_byte(ELOG_TYPE_EC_EVENT, i);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue