summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiloslav Trmač <mitr@redhat.com>2010-08-25 03:14:05 +0200
committerMiloslav Trmač <mitr@redhat.com>2010-08-25 03:14:05 +0200
commit3959e5b137db6e81820a9d729ba3c61fc269b3f0 (patch)
tree5437da951b98d02482d5341de037f2cd81572416
parent638b47ddcec13d384c6122f56f8e336019382e2b (diff)
downloadcryptodev-linux-3959e5b137db6e81820a9d729ba3c61fc269b3f0.tar.gz
cryptodev-linux-3959e5b137db6e81820a9d729ba3c61fc269b3f0.tar.xz
cryptodev-linux-3959e5b137db6e81820a9d729ba3c61fc269b3f0.zip
Simplify refcount handling in session_init
-rw-r--r--ncr-sessions.c9
1 files 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;
}