On 1 May 2018 at 15:52, David Laight <David.Laight@xxxxxxxxxx> wrote: > From: Ard Biesheuvel >> Sent: 28 April 2018 07:41 >> On 27 April 2018 at 23:35, Hans de Goede <hdegoede@xxxxxxxxxx> 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. > 16 MB is the smallest number we can use that still guarantees that we will not misidentify a valid option ROM as bogus. But in reality, option ROMs are rarely that large. > I can't help feeling that some kind of caching would be more appropriate. > Could you elaborate? -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html