Overview
About vulnerability
In the Linux kernel, the following vulnerability has been resolved:
EDAC/skx_common: Fix general protection fault
After loading i10nm_edac (which automatically loads skx_edac_common), if unload only i10nm_edac, then reload it and perform error injection testing, a general protection fault may occur:
mce: [Hardware Error]: Machine check events logged
Oops: general protection fault …
…
Workqueue: events mce_gen_pool_process
RIP: 0010:string+0x53/0xe0
…
Call Trace:
The issue arose was because the variable ‘adxl_component_count’ (inside skx_edac_common), which counts the ADXL components, was not reset. During the reloading of i10nm_edac, the count was incremented by the actual number of ADXL components again, resulting in a count that was double the real number of ADXL components. This led to an out-of-bounds reference to the ADXL component array, causing the general protection fault above.
Fix this issue by resetting the ‘adxl_component_count’ in adxl_put(), which is called during the unloading of {skx,i10nm}_edac.
Details
- Affected product:
- Oracle Linux 7 ELS
- Affected packages:
- kernel-uek @ 5.4.17
In the Linux kernel, the following vulnerability has been resolved:
EDAC/skx_common: Fix general protection fault
After loading i10nm_edac (which automatically loads skx_edac_common), if unload only i10nm_edac, then reload it and perform error injection testing, a general protection fault may occur:
mce: [Hardware Error]: Machine check events logged
Oops: general protection fault …
…
Workqueue: events mce_gen_pool_process
RIP: 0010:string+0x53/0xe0
…
Call Trace:
The issue arose was because the variable ‘adxl_component_count’ (inside skx_edac_common), which counts the ADXL components, was not reset. During the reloading of i10nm_edac, the count was incremented by the actual number of ADXL components again, resulting in a count that was double the real number of ADXL components. This led to an out-of-bounds reference to the ADXL component array, causing the general protection fault above.
Fix this issue by resetting the ‘adxl_component_count’ in adxl_put(), which is called during the unloading of {skx,i10nm}_edac.