summaryrefslogtreecommitdiffstats
path: root/security/keys/persistent.c
diff options
context:
space:
mode:
Diffstat (limited to 'security/keys/persistent.c')
-rw-r--r--security/keys/persistent.c27
1 files changed, 4 insertions, 23 deletions
diff --git a/security/keys/persistent.c b/security/keys/persistent.c
index 8171c90d4c9a..97af230aa4b2 100644
--- a/security/keys/persistent.c
+++ b/security/keys/persistent.c
@@ -12,27 +12,6 @@
12 12
13unsigned persistent_keyring_expiry = 3 * 24 * 3600; /* Expire after 3 days of non-use */ 13unsigned persistent_keyring_expiry = 3 * 24 * 3600; /* Expire after 3 days of non-use */
14 14
15static struct key_acl persistent_register_keyring_acl = {
16 .usage = REFCOUNT_INIT(1),
17 .nr_ace = 2,
18 .aces = {
19 KEY_POSSESSOR_ACE(KEY_ACE_SEARCH | KEY_ACE_WRITE),
20 KEY_OWNER_ACE(KEY_ACE_VIEW | KEY_ACE_READ),
21 }
22};
23
24static struct key_acl persistent_keyring_acl = {
25 .usage = REFCOUNT_INIT(1),
26 .nr_ace = 2,
27 .possessor_viewable = true,
28 .aces = {
29 KEY_POSSESSOR_ACE(KEY_ACE_VIEW | KEY_ACE_READ | KEY_ACE_WRITE |
30 KEY_ACE_SEARCH | KEY_ACE_LINK |
31 KEY_ACE_CLEAR | KEY_ACE_INVAL),
32 KEY_OWNER_ACE(KEY_ACE_VIEW | KEY_ACE_READ),
33 }
34};
35
36/* 15/*
37 * Create the persistent keyring register for the current user namespace. 16 * Create the persistent keyring register for the current user namespace.
38 * 17 *
@@ -43,7 +22,8 @@ static int key_create_persistent_register(struct user_namespace *ns)
43 struct key *reg = keyring_alloc(".persistent_register", 22 struct key *reg = keyring_alloc(".persistent_register",
44 KUIDT_INIT(0), KGIDT_INIT(0), 23 KUIDT_INIT(0), KGIDT_INIT(0),
45 current_cred(), 24 current_cred(),
46 &persistent_register_keyring_acl, 25 ((KEY_POS_ALL & ~KEY_POS_SETATTR) |
26 KEY_USR_VIEW | KEY_USR_READ),
47 KEY_ALLOC_NOT_IN_QUOTA, NULL, NULL); 27 KEY_ALLOC_NOT_IN_QUOTA, NULL, NULL);
48 if (IS_ERR(reg)) 28 if (IS_ERR(reg))
49 return PTR_ERR(reg); 29 return PTR_ERR(reg);
@@ -76,7 +56,8 @@ static key_ref_t key_create_persistent(struct user_namespace *ns, kuid_t uid,
76 56
77 persistent = keyring_alloc(index_key->description, 57 persistent = keyring_alloc(index_key->description,
78 uid, INVALID_GID, current_cred(), 58 uid, INVALID_GID, current_cred(),
79 &persistent_keyring_acl, 59 ((KEY_POS_ALL & ~KEY_POS_SETATTR) |
60 KEY_USR_VIEW | KEY_USR_READ),
80 KEY_ALLOC_NOT_IN_QUOTA, NULL, 61 KEY_ALLOC_NOT_IN_QUOTA, NULL,
81 ns->persistent_keyring_register); 62 ns->persistent_keyring_register);
82 if (IS_ERR(persistent)) 63 if (IS_ERR(persistent))