diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-08-25 03:08:13 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2010-08-25 03:08:13 +0200 |
commit | 638b47ddcec13d384c6122f56f8e336019382e2b (patch) | |
tree | 68c0fcc3764be4bb62a3d2fd016f4f00d4b77308 | |
parent | daa80bfb63be6fcab80f2d7f526976b3000572f2 (diff) | |
download | kernel-crypto-638b47ddcec13d384c6122f56f8e336019382e2b.tar.gz kernel-crypto-638b47ddcec13d384c6122f56f8e336019382e2b.tar.xz kernel-crypto-638b47ddcec13d384c6122f56f8e336019382e2b.zip |
Don't allocate session IDs for *_ONCE.
Also skip locking the mutex - the session is private to the calling
thread, nothing else can access it.
-rw-r--r-- | ncr-sessions.c | 21 |
1 files changed, 2 insertions, 19 deletions
diff --git a/ncr-sessions.c b/ncr-sessions.c index ab4c9971719..c0ef7e01f51 100644 --- a/ncr-sessions.c +++ b/ncr-sessions.c @@ -1096,34 +1096,17 @@ int ncr_session_once(struct ncr_lists *lists, int compat) { struct session_item_st *sess; - int ret, desc; - - desc = session_alloc_desc(lists); - if (desc < 0) { - err(); - return desc; - } + int ret; - sess = _ncr_session_init(lists, desc, once->op, tb); + sess = _ncr_session_init(lists, -1, once->op, tb); if (IS_ERR(sess)) { err(); - session_drop_desc(lists, desc); return PTR_ERR(sess); } - session_publish(lists, sess); - - if (mutex_lock_interruptible(&sess->mem_mutex)) { - err(); - _ncr_sessions_item_put(sess); - return -ERESTARTSYS; - } - ret = _ncr_session_final(lists, sess, tb, compat); - mutex_unlock(&sess->mem_mutex); _ncr_sessions_item_put(sess); - _ncr_session_remove(lists, desc); return ret; } |