From 638b47ddcec13d384c6122f56f8e336019382e2b Mon Sep 17 00:00:00 2001 From: Miloslav Trmač Date: Wed, 25 Aug 2010 03:08:13 +0200 Subject: 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. --- ncr-sessions.c | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/ncr-sessions.c b/ncr-sessions.c index ab4c997..c0ef7e0 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; } -- cgit