|
@@ -460,7 +460,7 @@ static int __key_instantiate_and_link(struct key *key,
|
|
|
if (authkey)
|
|
if (authkey)
|
|
|
key_revoke(authkey);
|
|
key_revoke(authkey);
|
|
|
|
|
|
|
|
- if (prep->expiry != TIME_T_MAX) {
|
|
|
|
|
|
|
+ if (prep->expiry != TIME64_MAX) {
|
|
|
key->expiry = prep->expiry;
|
|
key->expiry = prep->expiry;
|
|
|
key_schedule_gc(prep->expiry + key_gc_delay);
|
|
key_schedule_gc(prep->expiry + key_gc_delay);
|
|
|
}
|
|
}
|
|
@@ -506,7 +506,7 @@ int key_instantiate_and_link(struct key *key,
|
|
|
prep.data = data;
|
|
prep.data = data;
|
|
|
prep.datalen = datalen;
|
|
prep.datalen = datalen;
|
|
|
prep.quotalen = key->type->def_datalen;
|
|
prep.quotalen = key->type->def_datalen;
|
|
|
- prep.expiry = TIME_T_MAX;
|
|
|
|
|
|
|
+ prep.expiry = TIME64_MAX;
|
|
|
if (key->type->preparse) {
|
|
if (key->type->preparse) {
|
|
|
ret = key->type->preparse(&prep);
|
|
ret = key->type->preparse(&prep);
|
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
@@ -570,7 +570,6 @@ int key_reject_and_link(struct key *key,
|
|
|
struct key *authkey)
|
|
struct key *authkey)
|
|
|
{
|
|
{
|
|
|
struct assoc_array_edit *edit;
|
|
struct assoc_array_edit *edit;
|
|
|
- struct timespec now;
|
|
|
|
|
int ret, awaken, link_ret = 0;
|
|
int ret, awaken, link_ret = 0;
|
|
|
|
|
|
|
|
key_check(key);
|
|
key_check(key);
|
|
@@ -593,8 +592,7 @@ int key_reject_and_link(struct key *key,
|
|
|
/* mark the key as being negatively instantiated */
|
|
/* mark the key as being negatively instantiated */
|
|
|
atomic_inc(&key->user->nikeys);
|
|
atomic_inc(&key->user->nikeys);
|
|
|
mark_key_instantiated(key, -error);
|
|
mark_key_instantiated(key, -error);
|
|
|
- now = current_kernel_time();
|
|
|
|
|
- key->expiry = now.tv_sec + timeout;
|
|
|
|
|
|
|
+ key->expiry = ktime_get_real_seconds() + timeout;
|
|
|
key_schedule_gc(key->expiry + key_gc_delay);
|
|
key_schedule_gc(key->expiry + key_gc_delay);
|
|
|
|
|
|
|
|
if (test_and_clear_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags))
|
|
if (test_and_clear_bit(KEY_FLAG_USER_CONSTRUCT, &key->flags))
|
|
@@ -710,16 +708,13 @@ found_kernel_type:
|
|
|
|
|
|
|
|
void key_set_timeout(struct key *key, unsigned timeout)
|
|
void key_set_timeout(struct key *key, unsigned timeout)
|
|
|
{
|
|
{
|
|
|
- struct timespec now;
|
|
|
|
|
- time_t expiry = 0;
|
|
|
|
|
|
|
+ time64_t expiry = 0;
|
|
|
|
|
|
|
|
/* make the changes with the locks held to prevent races */
|
|
/* make the changes with the locks held to prevent races */
|
|
|
down_write(&key->sem);
|
|
down_write(&key->sem);
|
|
|
|
|
|
|
|
- if (timeout > 0) {
|
|
|
|
|
- now = current_kernel_time();
|
|
|
|
|
- expiry = now.tv_sec + timeout;
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ if (timeout > 0)
|
|
|
|
|
+ expiry = ktime_get_real_seconds() + timeout;
|
|
|
|
|
|
|
|
key->expiry = expiry;
|
|
key->expiry = expiry;
|
|
|
key_schedule_gc(key->expiry + key_gc_delay);
|
|
key_schedule_gc(key->expiry + key_gc_delay);
|
|
@@ -850,7 +845,7 @@ key_ref_t key_create_or_update(key_ref_t keyring_ref,
|
|
|
prep.data = payload;
|
|
prep.data = payload;
|
|
|
prep.datalen = plen;
|
|
prep.datalen = plen;
|
|
|
prep.quotalen = index_key.type->def_datalen;
|
|
prep.quotalen = index_key.type->def_datalen;
|
|
|
- prep.expiry = TIME_T_MAX;
|
|
|
|
|
|
|
+ prep.expiry = TIME64_MAX;
|
|
|
if (index_key.type->preparse) {
|
|
if (index_key.type->preparse) {
|
|
|
ret = index_key.type->preparse(&prep);
|
|
ret = index_key.type->preparse(&prep);
|
|
|
if (ret < 0) {
|
|
if (ret < 0) {
|
|
@@ -994,7 +989,7 @@ int key_update(key_ref_t key_ref, const void *payload, size_t plen)
|
|
|
prep.data = payload;
|
|
prep.data = payload;
|
|
|
prep.datalen = plen;
|
|
prep.datalen = plen;
|
|
|
prep.quotalen = key->type->def_datalen;
|
|
prep.quotalen = key->type->def_datalen;
|
|
|
- prep.expiry = TIME_T_MAX;
|
|
|
|
|
|
|
+ prep.expiry = TIME64_MAX;
|
|
|
if (key->type->preparse) {
|
|
if (key->type->preparse) {
|
|
|
ret = key->type->preparse(&prep);
|
|
ret = key->type->preparse(&prep);
|
|
|
if (ret < 0)
|
|
if (ret < 0)
|
|
@@ -1028,8 +1023,7 @@ EXPORT_SYMBOL(key_update);
|
|
|
*/
|
|
*/
|
|
|
void key_revoke(struct key *key)
|
|
void key_revoke(struct key *key)
|
|
|
{
|
|
{
|
|
|
- struct timespec now;
|
|
|
|
|
- time_t time;
|
|
|
|
|
|
|
+ time64_t time;
|
|
|
|
|
|
|
|
key_check(key);
|
|
key_check(key);
|
|
|
|
|
|
|
@@ -1044,8 +1038,7 @@ void key_revoke(struct key *key)
|
|
|
key->type->revoke(key);
|
|
key->type->revoke(key);
|
|
|
|
|
|
|
|
/* set the death time to no more than the expiry time */
|
|
/* set the death time to no more than the expiry time */
|
|
|
- now = current_kernel_time();
|
|
|
|
|
- time = now.tv_sec;
|
|
|
|
|
|
|
+ time = ktime_get_real_seconds();
|
|
|
if (key->revoked_at == 0 || key->revoked_at > time) {
|
|
if (key->revoked_at == 0 || key->revoked_at > time) {
|
|
|
key->revoked_at = time;
|
|
key->revoked_at = time;
|
|
|
key_schedule_gc(key->revoked_at + key_gc_delay);
|
|
key_schedule_gc(key->revoked_at + key_gc_delay);
|