KEYCTL_UPDATE


Updates the payload of a key if the key type permits it.

Arguments

ecx Key serial number. It may be one of the following special values:

KEY_SPEC_THREAD_KEYRING Caller's thread-specific keyring.
KEY_SPEC_PROCESS_KEYRING Caller's process-specific keyring.
KEY_SPEC_SESSION_KEYRING Caller's session-specific keyring.
KEY_SPEC_USER_KEYRING Caller's UID-specific keyring.
KEY_SPEC_USER_SESSION_KEYRING Caller's UID-session keyring.
KEY_SPEC_GROUP_KEYRING Caller's GID-specific keyring.
KEY_SPEC_REQKEY_AUTH_KEY This specifies the authorization key created by request_key() and passed to the process it spawns to generate a key. If a valid keyring ID is passed in, then this will simply be returned if the key exists; an error will be issued if it doesn't exist.
edx A pointer to payload data. The key type may reject the data if it's in the wrong format or in some other way invalid.
edx and ecx may be zero if the key type permits that.
esi Size of the payload data.

Return values

If the system call succeeds the return value is 0.
If the system call fails the return value is one of the following errno values:

-ENOKEY The key specified is invalid.
-ENOMEM Insufficient memory to store the new payload.
-EDQUOT The key quota for this user would be exceeded by increasing the size of the key to accommodate the new payload.
-EKEYEXPIRED The key specified has expired.
-EKEYREVOKED The key specified had been revoked.
-EINVAL The payload data size was invalid.
-EACCES The key exists, but is not writable by the calling process.
-EFAULT The payload data was invalid.
-EOPNOTSUPP The key type does not support the update operation on its keys.

Remarks

The caller must have write permission on a key to be able update it.