fs_value_is_string,             Value is a string
        fs_value_is_blob,               Value is a binary blob
        fs_value_is_filename,           Value is a filename* + dirfd
-       fs_value_is_filename_empty,     Value is a filename* + dirfd + AT_EMPTY_PATH
        fs_value_is_file,               Value is an open file (file*)
 
      If there is a value, that value is stored in a union in the struct in one
 
        struct fs_context *fc;
        struct fd f;
        int ret;
+       int lookup_flags = 0;
 
        struct fs_parameter param = {
                .type   = fs_value_is_undefined,
                        goto out_key;
                }
                break;
+       case FSCONFIG_SET_PATH_EMPTY:
+               lookup_flags = LOOKUP_EMPTY;
+               /* fallthru */
        case FSCONFIG_SET_PATH:
                param.type = fs_value_is_filename;
-               param.name = getname_flags(_value, 0, NULL);
-               if (IS_ERR(param.name)) {
-                       ret = PTR_ERR(param.name);
-                       goto out_key;
-               }
-               param.dirfd = aux;
-               param.size = strlen(param.name->name);
-               break;
-       case FSCONFIG_SET_PATH_EMPTY:
-               param.type = fs_value_is_filename_empty;
-               param.name = getname_flags(_value, LOOKUP_EMPTY, NULL);
+               param.name = getname_flags(_value, lookup_flags, NULL);
                if (IS_ERR(param.name)) {
                        ret = PTR_ERR(param.name);
                        goto out_key;
 
        fs_value_is_string,             /* Value is a string */
        fs_value_is_blob,               /* Value is a binary blob */
        fs_value_is_filename,           /* Value is a filename* + dirfd */
-       fs_value_is_filename_empty,     /* Value is a filename* + dirfd + AT_EMPTY_PATH */
        fs_value_is_file,               /* Value is a file* */
 };