)]}'
{
  "commit": "09e8a154084c57311463408e3f2e412c305a9638",
  "tree": "2347ba3264eceb391e0eb5c1f1c4ad4a582beb2e",
  "parents": [
    "bf25e23d07f16be62825650c0826c4eadf2699b6"
  ],
  "author": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Mar 15 16:20:16 2023 +0000"
  },
  "committer": {
    "name": "Michael Brown",
    "email": "mcb30@ipxe.org",
    "time": "Wed Mar 15 16:48:35 2023 +0000"
  },
  "message": "[efi] Claim fixed device paths by uninstalling device path protocol\n\nAs documented in commits 6a004be (\"[efi] Support the initrd\nautodetection mechanism in newer Linux kernels\") and 04e60a2 (\"[efi]\nOmit EFI_LOAD_FILE2_PROTOCOL for a zero-length initrd\"), the choice in\nLinux of using a fixed device path requires bootloaders to allow for\nthe fact that a previous bootloader may have already installed a\nhandle with the fixed device path.\n\nWe currently deal with this situation by reusing the existing handle,\nreplacing the EFI_LOAD_FILE2_PROTOCOL instance with our own.  Simplify\nthe code by instead uninstalling the EFI_DEVICE_PATH_PROTOCOL instance\nfrom the existing handle (if present), thereby allowing the creation\nof a new handle to succeed.\n\nCreate the new handle only if we have a non-empty initrd to provide.\nThis works around bugs in bootloaders such as the systemd EFI stub\nthat fail to allow for the existence of multiple-bootloader chains.\n(The workaround is not comprehensive: if the user has downloaded other\nimages in iPXE before invoking the systemd Unified Kernel Image (UKI),\nthen the systemd EFI stub will still crash and burn since it fails to\nallow for the fact that a previous bootloader has already installed a\nhandle with the fixed device path.)\n\nSigned-off-by: Michael Brown \u003cmcb30@ipxe.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a0bba1606277dcf80368a9edb062b66bef09f0ea",
      "old_mode": 33188,
      "old_path": "src/interface/efi/efi_file.c",
      "new_id": "b232591dc541a3ef1c8cb555dc39cf0a5eec5067",
      "new_mode": 33188,
      "new_path": "src/interface/efi/efi_file.c"
    }
  ]
}
