kboot: kbootfdt: fix error handling

If we are able to open /sys/firmware/fdt, but aren't able to read it,
fall back to /proc/device-tree. Remove comment that's not really true,
it turns out.

Sponsored by:		Netflix
This commit is contained in:
Warner Losh 2024-03-11 14:15:44 -06:00
parent d75524b3fe
commit 462af7676b

View File

@ -91,22 +91,21 @@ fdt_platform_load_dtb(void)
{
void *buffer;
size_t buflen = 409600;
int fd;
int fd, err = 0;
/*
* Should load /sys/firmware/fdt if it exists, otherwise we walk the
* tree from /proc/device-tree. The former is much easier than the
* latter and also the newer interface. But as long as we support the
* PS3 boot, we'll need the latter due to that kernel's age. It likely
* would be better to script the decision between the two, but that
* turns out to be tricky...
* PS3 boot, we'll need the latter due to that kernel's age.
*/
buffer = malloc(buflen);
fd = host_open("/sys/firmware/fdt", O_RDONLY, 0);
if (fd != -1) {
buflen = host_read(fd, buffer, buflen);
if (fd >= 0) {
err = host_read(fd, buffer, buflen);
close(fd);
} else {
}
if (fd < 0 || err < 0) {
fdt_create_empty_tree(buffer, buflen);
add_node_to_fdt(buffer, "/proc/device-tree",
fdt_path_offset(buffer, "/"));