| 19 Oct 2025 |
dramforever | * go head -c 0 /dev/snd/timer which opens the device, and closes it | 19:25:01 |
dramforever | now you magically do have snd-timer loaded | 19:25:10 |
ElvishJerricco | ok | 19:25:50 |
ElvishJerricco | so, what, userspace creates fake device nodes, and the major/minor thing tells the kernel what it's supposed to be, and the kernel knows to load the corresponding module when it's accessed? | 19:26:26 |
dramforever | exactly | 19:26:55 |
ElvishJerricco | interesting | 19:27:01 |
dramforever | userspace knows what placeholders there could be by reading /lib/modules/*/modules.devname | 19:28:19 |
dramforever | and i think it loads module by a device number alias, so snd-timer is char-major-116-33 | 19:29:01 |
ElvishJerricco | so, running on systemd 257.9, I still see that udev doesn't recognize /dev/snd/timer as a device, and snd_timer is not in lsmod | 19:31:38 |
ElvishJerricco | so those things are the same | 19:31:41 |
dramforever | oh, right, https://www.freedesktop.org/software/systemd/man/latest/udev.html#static_node= | 19:31:50 |
dramforever | .... i thought i understood what this is but now i don't anymore | 19:32:33 |
ElvishJerricco | I mean it almost certainly has something to do with the uaccess changes | 19:34:41 |
ElvishJerricco | wat | 19:35:31 |
ElvishJerricco | In [2]: print(machine.execute("ls -lha /run/udev/static_node-tags/uaccess/")[1])
total 0
drwxr-xr-x 2 root root 80 Oct 19 19:34 .
drwxr-xr-x 3 root root 60 Oct 19 19:34 ..
lrwxrwxrwx 1 root root 12 Oct 19 19:34 snd\x2fseq -> /dev/snd/seq
lrwxrwxrwx 1 root root 14 Oct 19 19:34 snd\x2ftimer -> /dev/snd/timer
| 19:35:35 |
dramforever | but anyway if my theory is correct then this is a real 258 regression and could be reproducible on fedora rawhide or something | 19:35:35 |
ElvishJerricco | /run/udev/static_node-tags/ is supposed to be populated with symlinks indicating the tags that have been applied to static dev nodes | 19:36:32 |
ElvishJerricco | so, like, /dev/snd/timer has the tag, in theory | 19:37:03 |
ElvishJerricco | (the above past was back on 258, to be clear) | 19:37:14 |
ElvishJerricco | * (the above paste was back on 258, to be clear) | 19:37:19 |
ElvishJerricco | dramforever: tell me if this makes sense... In 257, logind was seeing that static_node-tags link thing and doing the ACLs for uaccess, even on these static dev-nodes for not-yet-loaded modules. In 258, such nodes aren't processed by udev; so the change that made it so udev is the one to apply the ACLs doesn't work for them. | 19:40:22 |
dramforever | i think it's possible, but i have no idea how it works under the hood | 19:41:13 |
ElvishJerricco | yea, I'm gonna go look at how logind did the acl stuff in 257 | 19:41:51 |
ElvishJerricco | this sounds like a plausible explanation | 19:42:02 |
ElvishJerricco | yea, that's exactly what logind does in 257; it iterates over the /run/udev/static_node-tags/uaccess directory | 19:44:53 |
ElvishJerricco | and yea, of course the code that did that is deleted in 258 | 19:45:50 |
ElvishJerricco | oh, not deleted; moved | 19:50:07 |
ElvishJerricco | * oh, not deleted; moved | 19:50:45 |
ElvishJerricco | nope, deleted | 19:50:47 |
ElvishJerricco | I think the bug report here is basically: "uaccess no longer works with OPTIONS+="static_node=..."" | 19:52:14 |