Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
On 15.03.2018 01:56, Borislav Petkov wrote: > On Thu, Mar 15, 2018 at 01:13:07AM +0100, Maciej S. Szmigiero wrote: >> 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. > > Sure, it leaves the function to deal with the equiv table length only > and the caller then adds the header length. Which is actually cleaner. > OK, will do then. Maciej
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
On 15.03.2018 01:56, Borislav Petkov wrote: > On Thu, Mar 15, 2018 at 01:13:07AM +0100, Maciej S. Szmigiero wrote: >> 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. > > Sure, it leaves the function to deal with the equiv table length only > and the caller then adds the header length. Which is actually cleaner. > OK, will do then. Maciej
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
On Thu, Mar 15, 2018 at 01:13:07AM +0100, Maciej S. Szmigiero wrote: > 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. Sure, it leaves the function to deal with the equiv table length only and the caller then adds the header length. Which is actually cleaner. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
On Thu, Mar 15, 2018 at 01:13:07AM +0100, Maciej S. Szmigiero wrote: > 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. Sure, it leaves the function to deal with the equiv table length only and the caller then adds the header length. Which is actually cleaner. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.
Re: [PATCH v3 3/9] x86/microcode/AMD: install_equiv_cpu_table() should not return (signed) int
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. -- Regards/Gruss, Boris. Good mailing practices for 400: avoid top-posting and trim the reply.