@@ -320,6 +320,16 @@
key, type, value, timeout);
}
+ /*
+ * Set timeout before instantiation revokes our rights
+ * over the key.
+ */
+ if ( timeout > 0 ) {
+ rc = keyctl_set_timeout(key, timeout);
+ if ( rc != 0 )
+ xlog_warn("keyctl_set_timeout key 0x%x failed: %m",key);
+ }
+
if (strcmp(type, "uid") == 0)
rc = id_lookup(value, key, USER);
else if (strcmp(type, "gid") == 0)
@@ -329,10 +339,6 @@
else if (strcmp(type, "group") == 0)
rc = name_lookup(value, key, GROUP);
- /* Set timeout to 10 (600 seconds) minutes */
- if (rc == 0)
- keyctl_set_timeout(key, timeout);
-
free(arg);
return rc;
}