return cap_enable_effective(old_caps, NULL);
 }
 
-static int set_delegate_mask(int fs_fd, const char *key, __u64 mask)
+static int set_delegate_mask(int fs_fd, const char *key, __u64 mask, const char *mask_str)
 {
        char buf[32];
        int err;
 
-       snprintf(buf, sizeof(buf), "0x%llx", (unsigned long long)mask);
+       if (!mask_str) {
+               if (mask == ~0ULL) {
+                       mask_str = "any";
+               } else {
+                       snprintf(buf, sizeof(buf), "0x%llx", (unsigned long long)mask);
+                       mask_str = buf;
+               }
+       }
+
        err = sys_fsconfig(fs_fd, FSCONFIG_SET_STRING, key,
-                          mask == ~0ULL ? "any" : buf, 0);
+                          mask_str, 0);
        if (err < 0)
                err = -errno;
        return err;
        __u64 maps;
        __u64 progs;
        __u64 attachs;
+       const char *cmds_str;
+       const char *maps_str;
+       const char *progs_str;
+       const char *attachs_str;
 };
 
 static int create_bpffs_fd(void)
        int mnt_fd, err;
 
        /* set up token delegation mount options */
-       err = set_delegate_mask(fs_fd, "delegate_cmds", opts->cmds);
+       err = set_delegate_mask(fs_fd, "delegate_cmds", opts->cmds, opts->cmds_str);
        if (!ASSERT_OK(err, "fs_cfg_cmds"))
                return err;
-       err = set_delegate_mask(fs_fd, "delegate_maps", opts->maps);
+       err = set_delegate_mask(fs_fd, "delegate_maps", opts->maps, opts->maps_str);
        if (!ASSERT_OK(err, "fs_cfg_maps"))
                return err;
-       err = set_delegate_mask(fs_fd, "delegate_progs", opts->progs);
+       err = set_delegate_mask(fs_fd, "delegate_progs", opts->progs, opts->progs_str);
        if (!ASSERT_OK(err, "fs_cfg_progs"))
                return err;
-       err = set_delegate_mask(fs_fd, "delegate_attachs", opts->attachs);
+       err = set_delegate_mask(fs_fd, "delegate_attachs", opts->attachs, opts->attachs_str);
        if (!ASSERT_OK(err, "fs_cfg_attachs"))
                return err;
 
        }
 
        /* ensure unprivileged child cannot set delegation options */
-       err = set_delegate_mask(fs_fd, "delegate_cmds", 0x1);
+       err = set_delegate_mask(fs_fd, "delegate_cmds", 0x1, NULL);
        ASSERT_EQ(err, -EPERM, "delegate_cmd_eperm");
-       err = set_delegate_mask(fs_fd, "delegate_maps", 0x1);
+       err = set_delegate_mask(fs_fd, "delegate_maps", 0x1, NULL);
        ASSERT_EQ(err, -EPERM, "delegate_maps_eperm");
-       err = set_delegate_mask(fs_fd, "delegate_progs", 0x1);
+       err = set_delegate_mask(fs_fd, "delegate_progs", 0x1, NULL);
        ASSERT_EQ(err, -EPERM, "delegate_progs_eperm");
-       err = set_delegate_mask(fs_fd, "delegate_attachs", 0x1);
+       err = set_delegate_mask(fs_fd, "delegate_attachs", 0x1, NULL);
        ASSERT_EQ(err, -EPERM, "delegate_attachs_eperm");
 
        /* pass BPF FS context object to parent */
        }
 
        /* ensure unprivileged child cannot reconfigure to set delegation options */
-       err = set_delegate_mask(fs_fd, "delegate_cmds", ~0ULL);
+       err = set_delegate_mask(fs_fd, "delegate_cmds", 0, "any");
        if (!ASSERT_EQ(err, -EPERM, "delegate_cmd_eperm_reconfig")) {
                err = -EINVAL;
                goto cleanup;
        }
-       err = set_delegate_mask(fs_fd, "delegate_maps", ~0ULL);
+       err = set_delegate_mask(fs_fd, "delegate_maps", 0, "any");
        if (!ASSERT_EQ(err, -EPERM, "delegate_maps_eperm_reconfig")) {
                err = -EINVAL;
                goto cleanup;
        }
-       err = set_delegate_mask(fs_fd, "delegate_progs", ~0ULL);
+       err = set_delegate_mask(fs_fd, "delegate_progs", 0, "any");
        if (!ASSERT_EQ(err, -EPERM, "delegate_progs_eperm_reconfig")) {
                err = -EINVAL;
                goto cleanup;
        }
-       err = set_delegate_mask(fs_fd, "delegate_attachs", ~0ULL);
+       err = set_delegate_mask(fs_fd, "delegate_attachs", 0, "any");
        if (!ASSERT_EQ(err, -EPERM, "delegate_attachs_eperm_reconfig")) {
                err = -EINVAL;
                goto cleanup;
 {
        if (test__start_subtest("map_token")) {
                struct bpffs_opts opts = {
-                       .cmds = 1ULL << BPF_MAP_CREATE,
-                       .maps = 1ULL << BPF_MAP_TYPE_STACK,
+                       .cmds_str = "map_create",
+                       .maps_str = "stack",
                };
 
                subtest_userns(&opts, userns_map_create);
        }
        if (test__start_subtest("prog_token")) {
                struct bpffs_opts opts = {
-                       .cmds = 1ULL << BPF_PROG_LOAD,
-                       .progs = 1ULL << BPF_PROG_TYPE_XDP,
-                       .attachs = 1ULL << BPF_XDP,
+                       .cmds_str = "PROG_LOAD",
+                       .progs_str = "XDP",
+                       .attachs_str = "xdp",
                };
 
                subtest_userns(&opts, userns_prog_load);