[roll] Roll fuchsia [starnix][kernel] Explicitly clear FdTable on release

FdTable resources are managed by RCU, which defers drops until the grace
period passes. Task teardown requires deterministic resource cleanup,
meaning the Task must eagerly clear its FdTable at exit so that any VFS
close notifications can execute before the exit finishes. However, if
the FdTable is shared, it must not be cleared.

This change uses an atomic share_count inside FdTableInner as the single
source of truth for FdTable sharing, allowing deterministic cleanup when
the last owner releases the table. This is managed by a FdTableInnerArc
RAII wrapper which manages forking, unsharing, and clearing.

Clearing of the table is deterministically deferred using delayed
release to ensure that file objects are not dropped in contexts where an
RCU read lock is held.

Original-Original-Bug: 297440106
Test: starnix_syscalls_cpp_tests
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1617965
Original-Original-Revision: 28549ecd85b00923c6bd9da2dc16790d044da0be
GitOrigin-RevId: fb55fa607abc0f477a427436835e852461dda103
Change-Id: I8495b5123886414cc4033b4f7ff22b09c5c7b6f3
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1635315
Cr-Commit-Position: refs/heads/main@{#193868}
1 file changed
tree: 2f31eb99e3934980b0c1d17da3267055b01a977c
  1. ctf/
  2. git-hooks/
  3. infra/
  4. third_party/
  5. cobalt
  6. flower
  7. jiri.lock
  8. MILESTONE
  9. minimal
  10. prebuilts
  11. README.md
  12. stem
  13. test_durations
README.md

Integration

This repository contains Fuchsia's Global Integration manifest files.

Making changes

All changes should be made to the internal version of this repository. Our infrastructure automatically updates this version when the internal one changes.

Currently all changes must be made by a Google employee. Non-Google employees wishing to make a change can ask for assistance in one of the communication channels documented at get involved.

Obtaining the source

First install Jiri.

Next run:

$ jiri init
$ jiri import minimal https://fuchsia.googlesource.com/integration
$ jiri update

Third party

Third party projects should have their own subdirectory in ./third_party.