{
  "id": 1253743,
  "title": "Linux 7.3 binfmt_misc To Allow BPF Programs To Dynamically Choose Execution Environments",
  "url": "https://urgent.news/2026/08/16/linux-7-3-binfmt-misc-to-allow-bpf-programs-to-dynamically-choose",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-08-16T10:37:13.000Z",
  "source": {
    "name": "Phoronix",
    "slug": "phoronix",
    "url": "https://www.phoronix.com/news/Linux-7.3-binfmt-misc"
  },
  "original_language": "en",
  "account": "Linux 7.3 introduces a new feature called binfmt_misc, which allows BPF programs to dynamically choose execution environments. This modification fixes several old bugs, reworks the locking mechanism, and extends the format registry. The format registry now enables binary types to be matched programmatically, and their interpreters are computed per exec instead of being fixed strings recorded at registration time.\n\nThis new capability facilitates the creation of relocatable binaries, where the interpreter/dynamic loader can be determined programmatically, such as being found relative to the binary. The mechanism is flexible and can accommodate other policies.\n\nAdditionally, the update enables attaching BPF programs to binfmt_misc entries, allowing for dynamic selection of the execution environment (e.g., loader or interpreter) on a per-binary basis. Prior to this update, the chosen interpreter owned the entire process identity, including argv[0], /proc/pid/cmdline, and /proc/self/exe. However, relocatable binaries would need to find the dynamic linker, and binaries passed to execveat() as inaccessible O_CLOEXEC file descriptors could not run at all. Furthermore, gdb would trip because AT_ENTRY and AT_PHDR did not match the exe file, rendering PIE symbols unrelocated.\n\nThe latest addition to binfmt_misc is transparent dispatch, which allows the interpreter to load the binary through AT_EXECFD. The argument vector remains exactly as the caller built it, and the mm-exe_file and comm labels are assigned to the binary. Moreover, the AT_FLAGS_TRANSPARENT_INTERP aux vector bit is raised. The interpreter retains control of mapping the binary.\n\nIn parallel, there is a second mode called loader substitution. This mode enables a binary to be executed natively, with only the interpreter being altered. Michael Larabel, the principal author of Phoronix.com and founder of the site in 2004, has authored over 20,000 articles covering Linux hardware support, performance, graphics drivers, and various topics. He also serves as the lead developer of the Phoronix Test Suite, Phoromatic, and OpenBenchmarking.org automated benchmarking software.",
  "summary": "The Linux kernel's binfmt_misc functionality allows non-native/custom files to ne run directly such as for Windows EXE files to be handled by Wine or JAR files to be handled by the Java runtime. For the upcoming Linux 7.3 merge window, the miscellaneous binary formats support is being extended so a binary type can be matched programmatically and the interpreter determined on a per-exec basis. BPF…",
  "key_points": [
    "Linux 7.3 introduces binfmtmisc for dynamic BPF program execution environments",
    "Binfmtmisc enables programmable binary type matching and interpreter computation per exec",
    "Transparent dispatch allows interpreter to load binary through ATEXECFD"
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}