#ifdef CONFIG_KEYS
        unsigned char   jit_keyring;    /* default keyring to attach requested
                                         * keys to */
-       struct key __rcu *session_keyring; /* keyring inherited over fork */
+       struct key      *session_keyring; /* keyring inherited over fork */
        struct key      *process_keyring; /* keyring private to this process */
        struct key      *thread_keyring; /* keyring private to this thread */
        struct key      *request_key_auth; /* assumed request_key authority */
 
  * Install the given keyring as the session keyring of the given credentials
  * struct, replacing the existing one if any.  If the given keyring is NULL,
  * then install a new anonymous session keyring.
+ * @cred can not be in use by any task yet.
  *
  * Return: 0 on success; -errno on failure.
  */
 
        /* install the keyring */
        old = cred->session_keyring;
-       rcu_assign_pointer(cred->session_keyring, keyring);
+       cred->session_keyring = keyring;
 
        if (old)
                key_put(old);
 
        /* search the session keyring */
        if (ctx->cred->session_keyring) {
-               rcu_read_lock();
                key_ref = keyring_search_aux(
-                       make_key_ref(rcu_dereference(ctx->cred->session_keyring), 1),
-                       ctx);
-               rcu_read_unlock();
+                       make_key_ref(ctx->cred->session_keyring, 1), ctx);
 
                if (!IS_ERR(key_ref))
                        goto found;
                        goto reget_creds;
                }
 
-               rcu_read_lock();
-               key = rcu_dereference(ctx.cred->session_keyring);
+               key = ctx.cred->session_keyring;
                __key_get(key);
-               rcu_read_unlock();
                key_ref = make_key_ref(key, 1);
                break;
 
 
                prkey = cred->process_keyring->serial;
        sprintf(keyring_str[1], "%d", prkey);
 
-       rcu_read_lock();
-       session = rcu_dereference(cred->session_keyring);
+       session = cred->session_keyring;
        if (!session)
                session = cred->user->session_keyring;
        sskey = session->serial;
-       rcu_read_unlock();
 
        sprintf(keyring_str[2], "%d", sskey);
 
 
                        /* fall through */
                case KEY_REQKEY_DEFL_SESSION_KEYRING:
-                       rcu_read_lock();
-                       dest_keyring = key_get(
-                               rcu_dereference(cred->session_keyring));
-                       rcu_read_unlock();
+                       dest_keyring = key_get(cred->session_keyring);
 
                        if (dest_keyring)
                                break;