On 05.06.2018 10:55, Borislav Petkov wrote: > On Sun, May 20, 2018 at 12:07:22AM +0200, Maciej S. Szmigiero wrote: >> Currently, the code scanning a CPU equivalence table read from a microcode >> container file assumes that it actually contains a terminating zero entry, >> but if does not then the code will continue the scan past its valid data. >> >> For the late loader this can be improved by always appending a terminating >> zero entry to such table when loading it. >> This way we don't need an extra global variable for holding the table size >> and we don't have to reject such incomplete tables (for backward >> compatibility with the existing code which didn't do so). >> >> For the early loader, since we can't allocate memory and have to work >> in-place, let's pass an explicit size of this table to its scanning >> functions so they will know when to stop. > > I don't like the difference between early and late here. Just pass > explicit size to the late loader too.
That was the solution before this patch series version (6) - there was a variable holding the CPU equivalence table size for the late loader, but you didn't like it:> Instead of adding yet another global var which needs handling too, > and touching so many places, just do all checks and preparations in > install_equiv_cpu_table() so that the rest of the code can get what it > expects: terminating zero entry and proper size. And we would need to hold this explicit size somewhere since the table scanning function in the late loader is on a different call path than microcode file parsing. Maciej