[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.15] x86/ucode/amd: Handle length sanity check failures more gracefully
On 10/02/2021 10:55, Jan Beulich wrote: > On 09.02.2021 22:49, Andrew Cooper wrote: >> Currently, a failure of verify_patch_size() causes an early abort of the >> microcode blob loop, which in turn causes a second go around the main >> container loop, ultimately failing the UCODE_MAGIC check. >> >> First, check for errors after the blob loop. An error here is unrecoverable, >> so avoid going around the container loop again and printing an >> unhelpful-at-best error concerning bad UCODE_MAGIC. >> >> Second, split the verify_patch_size() check out of the microcode blob header >> check. In the case that the sanity check fails, we can still use the >> known-to-be-plausible header length to continue walking the container to >> potentially find other applicable microcode blobs. > Since the code comment you add further clarifies this, if my > understanding here is correct that you don't think we should > mistrust the entire container in such a case ... > >> Before: >> (XEN) microcode: Bad microcode data >> (XEN) microcode: Wrong microcode patch file magic >> (XEN) Parsing microcode blob error -22 >> >> After: >> (XEN) microcode: Bad microcode length 0x000015c0 for cpu 0xa000 >> (XEN) microcode: Bad microcode length 0x000015c0 for cpu 0xa010 >> (XEN) microcode: Bad microcode length 0x000015c0 for cpu 0xa011 >> (XEN) microcode: Bad microcode length 0x000015c0 for cpu 0xa200 >> (XEN) microcode: Bad microcode length 0x000015c0 for cpu 0xa210 >> (XEN) microcode: Bad microcode length 0x000015c0 for cpu 0xa500 >> (XEN) microcode: couldn't find any matching ucode in the provided blob! >> >> Fixes: 4de936a38a ("x86/ucode/amd: Rework parsing logic in >> cpu_request_microcode()") >> Signed-off-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx> > Reviewed-by: Jan Beulich <jbeulich@xxxxxxxx> Thanks. > > After all we're trying to balance between detecting broken > containers and having wrong constants ourselves. Personally > I'd be more inclined to err on the safe side and avoid > further loading attempts, but I can see the alternative > perspective also being a reasonable one. The more I learn, the more I'm starting to mistrust the containers. But as we don't know whether it is us or the container at fault - and have an example where we are at fault - I don't think blocking loading is an appropriate thing to do. (Amongst other things, it totally kills any ability to test this interface.) ~Andrew
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |