From 3959e5b137db6e81820a9d729ba3c61fc269b3f0 Mon Sep 17 00:00:00 2001 From: Miloslav Trmač Date: Wed, 25 Aug 2010 03:14:05 +0200 Subject: Simplify refcount handling in session_init --- ncr-sessions.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ncr-sessions.c b/ncr-sessions.c index c0ef7e0..098b35f 100644 --- a/ncr-sessions.c +++ b/ncr-sessions.c @@ -86,12 +86,12 @@ static void session_drop_desc(struct ncr_lists *lst, ncr_session_t desc) mutex_unlock(&lst->session_idr_mutex); } -/* Make a session descriptor visible in user-space */ -static void session_publish(struct ncr_lists *lst, struct session_item_st *sess) +/* Make a session descriptor visible in user-space, stealing the reference */ +static void session_publish_ref(struct ncr_lists *lst, + struct session_item_st *sess) { void *old; - atomic_inc(&sess->refcnt); mutex_lock(&lst->session_idr_mutex); old = idr_replace(&lst->session_idr, sess, sess->desc); mutex_unlock(&lst->session_idr_mutex); @@ -513,8 +513,7 @@ int ncr_session_init(struct ncr_lists *lists, return PTR_ERR(sess); } - session_publish(lists, sess); - _ncr_sessions_item_put(sess); + session_publish_ref(lists, sess); return desc; } -- cgit