Skip to contentSkip to conversation

Link user keyrings together correctly

PATCH New David Howells 1 participant 1 message Sep 23, 2004

Subsystems (2)
lore
Share & tools
lore

David Howells

author maintainer
#0 lore raw

PATCH 1/1 Link user keyrings together correctly

The attached patch causes the per-user keyring to be linked into the user's default session keyring rather than the other way around.

---

 process_keys.c |   24 ++++++++++++------------
 1 files changed, 12 insertions(+), 12 deletions(-)
security/keys/process_keys.c +12 -12
diff -uNrp linux-2.6.9-rc2-mm1/security/keys/process_keys.c linux-2.6.9-rc2-mm1-afskey/security/keys/process_keys.c
@@ -74,24 +74,24 @@ int alloc_uid_keyring(struct user_struct
 	char buf[20];
 	int ret;
 
-	/* concoct a UID specific keyring */
-	sprintf(buf, "_uid.%u", user->uid);
+	/* concoct a default session keyring */
+	sprintf(buf, "_uid_ses.%u", user->uid);
 
-	uid_keyring = keyring_alloc(buf, user->uid, (gid_t) -1, 0, NULL);
-	if (IS_ERR(uid_keyring)) {
-		ret = PTR_ERR(uid_keyring);
+	session_keyring = keyring_alloc(buf, user->uid, (gid_t) -1, 0, NULL);
+	if (IS_ERR(session_keyring)) {
+		ret = PTR_ERR(session_keyring);
 		goto error;
 	}
 
-	/* and a default session keyring with a pointer to the UID specific
+	/* and a UID specific keyring, pointed to by the default session
 	 * keyring */
-	sprintf(buf, "_uid_ses.%u", user->uid);
+	sprintf(buf, "_uid.%u", user->uid);
 
-	session_keyring = keyring_alloc(buf, user->uid, (gid_t) -1, 0,
-					uid_keyring);
-	if (IS_ERR(session_keyring)) {
-		key_put(uid_keyring);
-		ret = PTR_ERR(session_keyring);
+	uid_keyring = keyring_alloc(buf, user->uid, (gid_t) -1, 0,
+				    session_keyring);
+	if (IS_ERR(uid_keyring)) {
+		key_put(session_keyring);
+		ret = PTR_ERR(uid_keyring);
 		goto error;
 	}