[PATCH 0/7] firewire: core: separate iso_resource paths

From: Takashi Sakamoto

Date: Wed Apr 29 2026 - 05:35:16 EST


Hi,

(Repost since lkml was excluded.)

Dingisoul has reported that a case where the reference count of a
client structure is leaked when handling iso_resource in cdev layer[1].
Fixing the bug immediately s difficult due to the complexity of
per-client resource lifetime.

As a first step toward addressing this issue, this patchset refactors the
existing code for isochronous resource operation. Userspace application
can allocate and deallocate isochronous resources on IEEE 1394 bus in two
ways:
* FW_CDEV_IOC_[DE]ALLOCATE_ISO_RESOURCE
* FW_CDEV_IOC_[DE]ALLOCATE_ISO_RESOURCE_ONCE

With the former, the application delegates the maintenance of the
allocated isochronous resources to kernel and obtain a handle for the
client resource. With the latter, the application should maintain
isochronous resources every time receiving bus reset event, without
relying on a handle.

Currently, both operations are handled by the same code, although they
differ in terms of client resource management.

This patchset separates these two paths. As a result, it becomes clear
that the reported issue only affects client resource allocated via the
former method. While the actual bug fix is deferred, this refactoring
lays the groundwork for it.

[1] https://sourceforge.net/p/linux1394/mailman/linux1394-devel/thread/20260404110936.GA282614%40sakamocchi.jp/#msg59317811

Takashi Sakamoto (7):
firewire: core: code refactoring for early return at client resource
allocation
firewire: core: code refactoring to queue work item for iso_resource
firewire: core: code refactoring for helper function to fill
iso_resource parameters
firewire: core: split functions for iso_resource once operation
firewire: core: code cleanup to remove old implementations for once
operation
firewire: core: append _auto suffix for non-once iso resource
operations
firewire: core: code cleanup for iso resource auto creation

drivers/firewire/core-cdev.c | 285 +++++++++++++++++++++--------------
1 file changed, 176 insertions(+), 109 deletions(-)


base-commit: 254f49634ee16a731174d2ae34bc50bd5f45e731
--
2.53.0