Files
rustdesk/docs
Mariano Abad 1647420993 drm: close the full-review findings (a third latched flag, and two escapees)
The one that matters: the display-cache refresh worker was the THIRD copy of
the wedged-flag hazard. catch_unwind covered only the enumeration, and
thread::spawn panics on EAGAIN after RUNNING was already swapped true, so
either path parked the flag for the process lifetime and every later refresh
- including every udev hotplug - returned early forever. Same ownership
guard as UINPUT_REFRESH_BUSY (the flag is handed back and re-taken mid-loop,
so an unconditional RAII release would clear a replacement worker's flag),
plus a fallible spawn whose failure drops the closure and releases the slot.
DRM_PROBE_IN_FLIGHT, UINPUT_REFRESH_BUSY, now this: the lesson stays
'grep for every site with the shape', and twice was not enough.

Two findings had been flagged in an earlier round and escaped the ledger:
- an unrecognized convert-output fourcc fell through to 'present as BGRA'
  with a debug log, where every sibling validation in that function is a
  hard error that lets the caller fall back to PipeWire. A 64bpp output
  passes the stride check and encodes garbage. Hard error now.
- the trust-boundary validation constants (fourccs, MAX_DIM,
  MAX_FRAME_BYTES) were declared independently on both sides of the split.
  Hoisted into drm_reader, imported by the converter, so the two halves
  cannot drift apart about what data they will touch.

The rest:
- the CI symbol extraction dropped any loader symbol containing a digit and
  degraded to a pass-with-zero-iterations no-op if the b"..." literals were
  ever refactored; digits allowed, count asserted, notice de-hardcoded.
- 'drm' in features was a substring test on the comma-joined string, so a
  future drm-lease feature would have shipped the consent-bypass deb
  without --drm. Exact membership now.
- the security doc claimed the deb is built on an ubuntu18.04 container;
  the only deb job runs on ubuntu-24.04. The 18.04 sentence now says what
  is true: 2.4.95 is an API floor, the binary floor is the build host's.
- DRM_DISPLAY_CACHE poison handling was recover-in-the-writer,
  panic-in-the-readers; both readers now recover like the writer.
- the producer prewarm ran on X11 where no consumer can connect, the same
  inconsistency just fixed for warm_availability. The listener still starts
  (the service outlives sessions; a later Wayland login must find the
  socket), only the prewarm is skipped.
2026-07-29 20:05:45 -03:00
..
2023-07-24 13:39:06 +02:00
2023-03-29 17:43:16 +02:00
2023-08-25 14:35:45 +03:00
2023-01-09 12:59:08 -05:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2026-01-17 18:31:41 +08:00
2025-10-27 16:52:36 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2025-08-13 19:24:00 +08:00
2023-04-25 23:26:55 +02:00
2023-07-24 13:39:06 +02:00
2024-01-23 15:35:32 +08:00
2025-07-17 21:11:58 +08:00
2025-01-23 13:22:25 +08:00
2023-03-28 21:55:28 +02:00
2025-10-27 16:52:36 +08:00
2023-08-25 14:38:38 +03:00
2023-02-07 17:00:36 +08:00