udev: match kfd by name only — misc-class devices have no udev subsystem

The first revision guarded the kfd line with SUBSYSTEM=="misc", which never
matches (misc-class devices carry no subsystem for udev matching), so the rule
was read but never fired and /dev/kfd stayed 0660 root:render. Name-only match
applies 0666 on creation and on trigger.

Also fixes test-changed.sh to exit 0 when changed paths map to zero tests
(udev rules are mapped-but-untestable) instead of invoking bats with an empty
selection.
This commit is contained in:
Frank
2026-08-30 18:37:33 -07:00
parent 28eb7531e5
commit 055fafc233
2 changed files with 7 additions and 3 deletions
+3 -3
View File
@@ -15,7 +15,7 @@
# domain) can already ptrace the GPU userspace through an existing holder's
# fd inheritance; on a private single-administrator home server this trades a
# capability gate that could never be held by the intended user anyway.
# Render nodes and /dev/kfd are compute nodes only — display outputs (card0,
# card1) keep their owner/group/mode.
KERNEL=="kfd", SUBSYSTEM=="misc", MODE="0666"
# Note the missing SUBSYSTEM= guard on the kfd line: misc-class devices have no
# subsystem for udev matching, so a SUBSYSTEM=="misc" guard never matches.
KERNEL=="kfd", MODE="0666"
KERNEL=="renderD*", SUBSYSTEM=="drm", MODE="0666"
+4
View File
@@ -214,6 +214,10 @@ for path in "${CHANGED[@]}"; do
esac
done
# Mapped-but-untestable paths (udev rules, trash moves) legitimately produce an
# empty selection; that is a pass, not a bats usage error.
[ "${#TESTS[@]}" -gt 0 ] || exit 0
if [ "$LIST_ONLY" -eq 1 ]; then
printf '%s\n' "${TESTS[@]}"
exit 0