Messages in this thread | | | Subject | Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int | From | "Maciej S. Szmigiero" <> | Date | Thu, 15 Mar 2018 01:13:07 +0100 |
| |
On 15.03.2018 00:58, Borislav Petkov wrote: > On Thu, Mar 15, 2018 at 12:46:05AM +0100, Maciej S. Szmigiero wrote: >> The maximum possible value returned by install_equiv_cpu_table() of >> UINT_MAX + CONTAINER_HDR_SZ comes from the maximum value of this 'size' >> variable (that is UINT_MAX) plus the header length of CONTAINER_HDR_SZ. >> This won't fit in 'int' type, hence this patch. > > So make it fit by returning an unsigned int. >
This can be done if this function is modified to return only the CPU equivalence table length (without the container header length), leaving its single caller the job of adding the container header length to skip to the fist patch section.
Otherwise we introduce a equivalence table length limit of UINT_MAX - CONTAINER_HDR_SZ, as anything more will overflow an unsigned int variable on a 64-bit kernel (on 32-bit this will be caught by the equivalence table truncation check).
Maciej
| |