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 00:46:05 +0100 |
| |
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
| |