Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
From: Maciej S. Szmigiero
Date: Wed Mar 14 2018 - 19:46:15 EST
On 14.03.2018 18:58, Borislav Petkov wrote:
> On Tue, Mar 13, 2018 at 10:06:34PM +0100, Maciej S. Szmigiero wrote:
>> The maximum possible value returned by install_equiv_cpu_table() is
>> UINT_MAX + CONTAINER_HDR_SZ (on a 64-bit kernel).
>> This is more than (signed) int type currently returned by this function can
>> hold so this function will need to return a size_t instead.
>
> I'm trying to parse this but I'm not really sure.
>
> All I know is:
>
> unsigned int size = ibuf[2];
>
> and that is really a 4-byte unsigned quantity so anything less is an
> arbitrary limitation.
There is no limit on CPU equivalence table length in this patch series
like it was in the previous version.
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.
That's because this functions tells its caller how much bytes to skip
from the beginning of a microcode container file to the first patch
section contained in it.
Maciej