{"id":544713,"date":"2026-07-26T11:38:10","date_gmt":"2026-07-26T11:38:10","guid":{"rendered":"https:\/\/www.newsbeep.com\/nz\/544713\/"},"modified":"2026-07-26T11:38:10","modified_gmt":"2026-07-26T11:38:10","slug":"linux-7-2-rc5-fixing-longstanding-bug-in-ipv4-networking-over-firewire","status":"publish","type":"post","link":"https:\/\/www.newsbeep.com\/nz\/544713\/","title":{"rendered":"Linux 7.2-rc5 Fixing Longstanding Bug In IPv4 Networking Over Firewire"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" alt=\"LINUX NETWORKING\" src=\"https:\/\/www.phoronix.com\/assets\/categories\/linuxnetworking.webp\" width=\"100\" height=\"100\"\/><br \/>\n<a href=\"https:\/\/www.phoronix.com\/search\/Firewire\" rel=\"nofollow noopener\" target=\"_blank\">Firewire<\/a> still isn&#8217;t dead yet on Linux. Current plans call for <a href=\"https:\/\/www.phoronix.com\/news\/Linux-Firewire-New-Maintainer\" rel=\"nofollow noopener\" target=\"_blank\">maintaining IEEE-1394 Firewire on Linux at least through 2029<\/a> and with today&#8217;s Linux 7.2-rc5 kernel release is a fix for those wanting to leverage IPv4 networking over Firewire.<\/p>\n<p>RFC 2734 is the nearly thirty year old standard for IPv4 datagrams over IEEE-1394 Firewire. Mainlined since 2009 for their modern (at the time) IEEE-1394 driver stack has been the &#8220;fw-ipv4&#8221; driver to provide this IPv4 support. But it turns out that since then there has been a notable bug in this driver.&#13;<\/p>\n<p>Seventeen years after this IPv4 Firewire driver was upstreamed, it was realized the driver fails to properly reassemble a complete datagram if it&#8217;s stored across multiple buffer ranges in the list. Open-source developer Ruoyu Wang realized this notable bug in the Firewire networking code that has existed the entire time of this IPv4 Firewire support. Explaining in <a href=\"https:\/\/lore.kernel.org\/all\/20260707150454.2265951-1-ruoyuw560@gmail.com\/\" rel=\"nofollow noopener\" target=\"_blank\">the patch<\/a> to fix it:&#13;<\/p>\n<p>&#8220;Those neighbor lookups currently assume that the current fragment always has a real next or previous fragment. At a list edge, the next or previous entry is the list head, not a struct fwnet_fragment_info.&#13;<\/p>\n<p>The gap checks also compare against the old edge of the current fragment instead of the edge after adding the new fragment. As a result, a fragment that bridges two existing ranges may leave two adjacent ranges unmerged, so fwnet_pd_is_complete() can miss a complete datagram.&#13;<\/p>\n<p>Check for the list head before looking up the neighboring fragment, and compare the neighbor against the new fragment&#8217;s far edge when deciding whether to merge all three ranges.&#8221;<\/p>\n<p>While Ruoyu Wang discovered this issue and patched this long-standing bug in the IPv4 Firewire driver to ensure proper datagram reassembly, it doesn&#8217;t appear he is using IPv4 Firewire support at all. Rather he originally hit this bug via a static analysis checker and confirmed the behavior with code review.<\/p>\n<p align=\"center\"><a href=\"https:\/\/www.phoronix.com\/image-viewer.php?id=2026&amp;image=firewire_networking_lrg\" target=\"_blank\" rel=\"nofollow noopener\"><img decoding=\"async\" src=\"https:\/\/www.newsbeep.com\/nz\/wp-content\/uploads\/2026\/07\/1785065890_574_image.webp\" alt=\"Firewire cable in front of network switch\"\/><\/a><\/p>\n<p>Should anyone actually be using IPv4 Firewire in 2026+, the fix was merged this weekend via <a href=\"https:\/\/lore.kernel.org\/lkml\/20260725110853.GA91435@sakamocchi.jp\/\" rel=\"nofollow noopener\" target=\"_blank\">this pull request<\/a> ahead of Linux 7.2-rc5 due out later today.<\/p>\n","protected":false},"excerpt":{"rendered":"Firewire still isn&#8217;t dead yet on Linux. Current plans call for maintaining IEEE-1394 Firewire on Linux at least&hellip;\n","protected":false},"author":2,"featured_media":544714,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[10857,10856,10854,10853,10860,10858,10855,111,139,69,10859,10852,10863,145,10861,10862],"class_list":["post-544713","post","type-post","status-publish","format-standard","has-post-thumbnail","category-technology","tag-desktop-linux","tag-linux-benchmarking","tag-linux-hardware-benchmarks","tag-linux-hardware-reviews","tag-linux-how-to","tag-linux-performance","tag-linux-server-benchmarks","tag-new-zealand","tag-newzealand","tag-nz","tag-open-source-graphics","tag-phoronix","tag-phoronix-test-suite","tag-technology","tag-ubuntu-benchmarks","tag-ubuntu-hardware"],"_links":{"self":[{"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/posts\/544713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/comments?post=544713"}],"version-history":[{"count":0,"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/posts\/544713\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/media\/544714"}],"wp:attachment":[{"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/media?parent=544713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/categories?post=544713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.newsbeep.com\/nz\/wp-json\/wp\/v2\/tags?post=544713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}