diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-08-25 03:14:05 +0200 |
---|---|---|
committer | Miloslav Trmač <mitr@redhat.com> | 2010-08-25 03:14:05 +0200 |
commit | 3959e5b137db6e81820a9d729ba3c61fc269b3f0 (patch) | |
tree | 5437da951b98d02482d5341de037f2cd81572416 | |
parent | 638b47ddcec13d384c6122f56f8e336019382e2b (diff) | |
download | cryptodev-linux-3959e5b137db6e81820a9d729ba3c61fc269b3f0.tar.gz cryptodev-linux-3959e5b137db6e81820a9d729ba3c61fc269b3f0.tar.xz cryptodev-linux-3959e5b137db6e81820a9d729ba3c61fc269b3f0.zip |
Simplify refcount handling in session_init
-rw-r--r-- | ncr-sessions.c | 9 |
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; } |