Created attachment 115490 [details] systemd-stable/v208 udev net_id PCIe config read patch Due to fread() buffering when fetching the PCIe config space, some rare PCIe hardware will generate a PCIe Completion Timeout when unknown PCIe config space values are read, causing a kernel panic on Dell r720/r730 and other systems which have AEPI/GHES reporting enabled in the Linux kernel and motherboard BIOS. The original code in src/udev/udev-builtin-net_id.c used fread(), which on some libc implementations (ie glibc 2.17) would pre-read a full 4K (PAGE_SIZE) of the PCI config space, when only 64 bytes were requested. I have recently come across PCIe hardware which responds with Completion Timeouts when accesses above 256 bytes are attempted. This can cause server systems - such as the Dell r720/r730 - that have GHES/AEPI support to cause an immediate kernel panic due to the failed PCI transaction. Attached are patches against systemd-stable/v208 (the version that I originally found the issue in) and systemd/master (head of line) which correct this issue by using read() instead of fread().
Created attachment 115491 [details] [review] systemd/master udev net_id PCIe config read patch
Kay, any idea when these patches can be integrated into the systemd mainline?
Hi Jason, Thanks for the patch. I now pushed this upstream. Cheers, Tom
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.