@@ -, +, @@ --- src/login/logind-acl.c | 3 +++ 1 file changed, 3 insertions(+) --- systemd-208/src/login/logind-acl.c +++ systemd-208/src/login/logind-acl.c @@ -287,6 +287,22 @@ int devnode_acl_all(struct udev *udev, r = devnode_acl(n, flush, del, old_uid, add, new_uid); } + /* only apply ACL on nvidia* if /dev/nvidiactl exists */ + if (devnode_acl("/dev/nvidiactl", flush, del, old_uid, add, new_uid) >= 0) { + int i; + char *devname; + + for (i = 0; i <= 256 ; i++) { + if (asprintf(&devname, "/dev/nvidia%d", i) < 0) + break; + if (devnode_acl(devname, flush, del, old_uid, add, new_uid) < 0) { + free(devname); + break; + } + free(devname); + } + } + finish: udev_enumerate_unref(e); set_free_free(nodes);