Seventeen Years On, Linux Finally Patches IPv4 Reassembly Bug Over Ancient FireWire Links

A 17-year-old bug in Linux's fw-ipv4 driver prevented proper datagram reassembly across buffer ranges. Discovered via static analysis by Ruoyu Wang and fixed in 7.2-rc5, the patch ensures correct merging of fragments for the few remaining FireWire IPv4 users. FireWire support continues through at least 2029.
Seventeen Years On, Linux Finally Patches IPv4 Reassembly Bug Over Ancient FireWire Links
Written by Ava Callegari

Linus Torvalds is about to release Linux 7.2-rc5. Tucked inside sits a one-line change that corrects behavior unchanged since 2009. The adjustment targets IPv4 traffic sent across IEEE 1394 connections. Few will notice. Yet the story behind it reveals how static analysis tools now surface flaws that human eyes missed for nearly two decades.

FireWire refuses to disappear. The ieee1394.docs.kernel.org project page outlines plans to maintain the subsystem at least through 2029. After that the code stays if it continues to compile. No one has committed to active development beyond the current maintainer. Still, the hardware persists in industrial cameras, audio interfaces, and storage arrays that refuse to die.

RFC 2734 defined IPv4 datagrams over IEEE 1394 back in 1999. Linux gained a modern driver named fw-ipv4 in 2009. That code handled fragmentation and reassembly for packets traveling across the high-speed serial bus. It worked well enough for the handful of users who needed it. Or so everyone thought.

Seventeen years passed. Then open-source developer Ruoyu Wang ran a static analysis checker. The tool flagged suspicious neighbor lookups inside the fragment list handling. Wang followed the trail. He confirmed the logic error with careful code review. The driver failed to reassemble a complete datagram when fragments spanned multiple buffer ranges in the list.

“Those neighbor lookups currently assume that the current fragment always has a real next or previous fragment,” Wang wrote in the patch description. “At a list edge, the next or previous entry is the list head, not a struct fwnet_fragment_info.”

The gap checks compared against the wrong edge values. A bridging fragment could leave two adjacent ranges unmerged. As a result, the function fwnet_pd_is_complete sometimes missed an otherwise finished packet. Simple. Subtle. Present since the driver first landed.

Wang posted his fix to the linux-kernel mailing list on July 7. The patch adds explicit checks for the list head before dereferencing neighbors. It updates the merge logic to compare against the new fragment’s far edge. Three ranges now combine correctly. The change is small. Its impact on the handful of remaining FireWire IPv4 users should be complete.

But Wang does not appear to run IPv4 over FireWire himself. He found the bug through automated tooling and confirmed it by inspection. That pattern grows more common. Tools scan millions of lines that no single engineer could review in a lifetime. They surface issues in code paths exercised by almost no one.

The pull request reached the netdev maintainers over the weekend. It landed in time for Linux 7.2-rc5, expected later today. Phoronix first reported the merge on July 26, noting the maintenance horizon that keeps the old bus alive a few more years.

Kernel 7.2 itself brings other changes. Cache-aware scheduling, USB4STREAM support, and continued AMD hardware enablement dominate the headlines. Yet this FireWire correction stands out for its longevity. A bug born in 2009 survived every subsequent release until static analysis caught it in 2026.

Industry veterans remember when FireWire promised to replace SCSI and parallel ports. Apple pushed it hard. Sony built cameras around it. Linux supported both the old ieee1394 stack and the newer firewire drivers. Over time the newer stack won. IPv4 support followed.

Today the use cases have narrowed. Professional video capture, certain DAW interfaces, and legacy storage arrays still rely on it. Some embedded systems never migrated. For them this patch matters. A datagram that previously failed to reassemble will now succeed. Packet loss drops. Reliability improves without any user-visible configuration change.

And the broader lesson lingers. Code that looks correct for years can still hide edge conditions. List handling, especially with head and tail sentinels, invites off-by-one mistakes. Modern tooling finds them. Human reviewers, even skilled ones, sometimes do not.

So the Linux kernel inches forward. One more corner case closed. One more device regains full functionality. FireWire lives on, at least until 2029. After that its fate depends on whether anyone still cares enough to keep the code compiling. For now, the IPv4 path over those aging cables just became a little more dependable.

Subscribe for Updates

DevNews Newsletter

The DevNews Email Newsletter is essential for software developers, web developers, programmers, and tech decision-makers. Perfect for professionals driving innovation and building the future of tech.

By signing up for our newsletter you agree to receive content related to ientry.com / webpronews.com and our affiliate partners. For additional information refer to our terms of service.

Notice an error?

Help us improve our content by reporting any issues you find.

Get the WebProNews newsletter delivered to your inbox

Get the free daily newsletter read by decision makers

Subscribe
Advertise with Us

Ready to get started?

Get our media kit

Advertise with Us