Messages in this thread |  | | From | David Laight <> | Subject | RE: [PATCH v2] efi: Ignore unrealistically large option roms | Date | Tue, 1 May 2018 13:52:55 +0000 |
| |
From: Ard Biesheuvel > Sent: 28 April 2018 07:41 > On 27 April 2018 at 23:35, Hans de Goede <hdegoede@redhat.com> wrote: > > setup_efi_pci() tries to save a copy of each PCI option ROM as this may > > be necessary for the device driver for the PCI device to have access too. > > > > On some systems the efi_pci_io_protocol_64's romimage and romsize fields > > contain invalid data, which looks a bit like pointers pointing back into > > other EFI code or data. Interpreting these pointers as romsize leads to > > a very large value and if we then try to alloc this amount of memory to > > save a copy the alloc call fails. > > > > This leads to a "Failed to alloc mem for rom" error being printed on the > > EFI console for each PCI device. > > > > This commit avoids the printing of these errors, by checking romsize > > before doing the alloc and if it is larger then 256M silently ignore the > > ROM fields instead of trying to alloc mem and fail. > > > > The UEFI spec limits the size of option ROMs to 16 MiB, so I'd prefer > we use that as the upper bound instead.
Copying even 16MB of rom data into physical memory on the 'off chance' that the kernel might need it seems a waste of memory.
I can't help feeling that some kind of caching would be more appropriate.
David
|  |