diff options
author | Miloslav Trmač <mitr@redhat.com> | 2010-07-28 02:48:46 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-28 18:06:41 +0200 |
commit | c3a197347ffd389572e0941cbcbbf8c076dd4d76 (patch) | |
tree | f2efc037de9eba51ef5b13ee5f9667067e6b6694 | |
parent | c7d95c16bdd1fcbf3948647ca6a3c5d15eec9a91 (diff) | |
download | cryptodev-linux-c3a197347ffd389572e0941cbcbbf8c076dd4d76.tar.gz cryptodev-linux-c3a197347ffd389572e0941cbcbbf8c076dd4d76.tar.xz cryptodev-linux-c3a197347ffd389572e0941cbcbbf8c076dd4d76.zip |
Don't access new objects when not holding a reference
-rw-r--r-- | ncr-key.c | 2 | ||||
-rw-r--r-- | ncr-sessions.c | 3 |
2 files changed, 3 insertions, 2 deletions
@@ -189,9 +189,9 @@ int ncr_key_init(struct list_sem_st* lst, void __user* arg) list_add(&key->list, &lst->list); + desc = key->desc; up(&lst->sem); - desc = key->desc; ret = copy_to_user(arg, &desc, sizeof(desc)); if (unlikely(ret)) { down(&lst->sem); diff --git a/ncr-sessions.c b/ncr-sessions.c index 7d79753..365935f 100644 --- a/ncr-sessions.c +++ b/ncr-sessions.c @@ -121,7 +121,7 @@ struct session_item_st* ncr_session_new(struct list_sem_st* lst) } init_MUTEX(&sess->mem_mutex); - atomic_set(&sess->refcnt, 1); + atomic_set(&sess->refcnt, 2); /* One for lst->list, one for "sess" */ down(&lst->sem); @@ -392,6 +392,7 @@ fail: if (ret < 0) { _ncr_session_remove(&lists->sessions, ns->desc); } + _ncr_sessions_item_put(ns); return ret; } |