[roll] Roll fuchsia [starnix] Fix lock ordering in controlling terminal disassociation

The `disassociate_controlling_terminal` function iterates through thread
groups in the foreground process group and acquires their
`ThreadGroupMutableState` locks. Previously, it was called while already
holding the `ThreadGroupMutableState` lock of the exiting session
leader. This caused a lock order violation.

To enforce the correct lock order, `disassociate_controlling_terminal`
must be called after dropping any `ThreadGroupMutableState` lock.

This change introduces a `#[must_use]` `SessionDisassociation` struct
returned by `leave_process_group` and `set_process_group`. Callers
(like `ThreadGroup::remove`, `setpgid`, and `setsid`) must explicitly
call `.disassociate_controlling_terminal()` on the returned value
after dropping the `ThreadGroupMutableState` lock, ensuring the fix
is safe and cannot be forgotten.

Original-Original-Fixed: b/529617819
Original-Original-Reviewed-on: https://fuchsia-review.googlesource.com/c/fuchsia/+/1686794
Original-Original-Revision: 796b4c6ca888d87b4b6e8fb5d34fa38649c4a1e2
GitOrigin-RevId: 8991472929e8626775555807c3319539a3f01f00
Change-Id: I10d062aa48337712a149805cd674f3e16b8b0cbc
Reviewed-on: https://fuchsia-review.googlesource.com/c/integration/+/1686505
Cr-Commit-Position: refs/heads/main@{#195881}
1 file changed
tree: 38e87ba06bb6c9506bc9266d11ff17e46935a393
  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.