diff --git a/man/systemd.resource-control.xml b/man/systemd.resource-control.xml
index c3fd5fcee4..a51e600ebb 100644
--- a/man/systemd.resource-control.xml
+++ b/man/systemd.resource-control.xml
@@ -275,12 +275,16 @@ along with systemd; If not, see .
followed by a device group name, as listed in
/proc/devices. The latter is useful to
whitelist all current and future devices belonging to a
- specific device group at once. Examples:
- /dev/sda5 is a path to a device node,
- referring to an ATA or SCSI block
+ specific device group at once. The device group is matched
+ according to file name globbing rules, you may hence use the
+ * and ?
+ wildcards. Examples: /dev/sda5 is a
+ path to a device node, referring to an ATA or SCSI block
device. char-pts and
char-alsa are specifiers for all pseudo
- TTYs and all ALSA sound devices, respectively.
+ TTYs and all ALSA sound devices,
+ respectively. char-cpu/* is a specifier
+ matching all CPU related device groups.
diff --git a/src/core/cgroup.c b/src/core/cgroup.c
index 1327486509..18de888ba6 100644
--- a/src/core/cgroup.c
+++ b/src/core/cgroup.c
@@ -20,6 +20,7 @@
***/
#include
+#include
#include "path-util.h"
#include "special.h"
@@ -246,7 +247,8 @@ static int whitelist_major(const char *path, const char *name, char type, const
w++;
w += strspn(w, WHITESPACE);
- if (!streq(w, name))
+
+ if (fnmatch(name, w, 0) != 0)
continue;
sprintf(buf,