Signed-off-by: Dmitry Kasatkin <dmitry.kasat...@nokia.com>
---
 cryptodev_main.c |   35 ++++++++++++++++++-----------------
 1 files changed, 18 insertions(+), 17 deletions(-)

diff --git a/cryptodev_main.c b/cryptodev_main.c
index d29660f..2618c61 100644
--- a/cryptodev_main.c
+++ b/cryptodev_main.c
@@ -68,7 +68,7 @@ MODULE_PARM_DESC(enable_stats, "collect statictics about 
cryptodev usage");
 /* ====== CryptoAPI ====== */
 struct fcrypt {
        struct list_head list;
-       struct semaphore sem;
+       struct mutex sem;
 };
 
 struct crypt_priv {
@@ -85,7 +85,7 @@ struct crypt_priv {
 
 struct csession {
        struct list_head entry;
-       struct semaphore sem;
+       struct mutex sem;
        struct cipher_data cdata;
        struct hash_data hdata;
        uint32_t sid;
@@ -277,9 +277,9 @@ crypto_create_session(struct fcrypt *fcr, struct session_op 
*sop)
 
        /* put the new session to the list */
        get_random_bytes(&ses_new->sid, sizeof(ses_new->sid));
-       init_MUTEX(&ses_new->sem);
+       mutex_init(&ses_new->sem);
 
-       down(&fcr->sem);
+       mutex_lock(&fcr->sem);
 restart:
        list_for_each_entry(ses_ptr, &fcr->list, entry) {
                /* Check for duplicate SID */
@@ -292,7 +292,7 @@ restart:
        }
 
        list_add(&ses_new->entry, &fcr->list);
-       up(&fcr->sem);
+       mutex_unlock(&fcr->sem);
 
        /* Fill in some values for the user. */
        sop->ses = ses_new->sid;
@@ -314,10 +314,10 @@ error_cipher:
 static inline void
 crypto_destroy_session(struct csession *ses_ptr)
 {
-       if (down_trylock(&ses_ptr->sem)) {
+       if (!mutex_trylock(&ses_ptr->sem)) {
                dprintk(2, KERN_DEBUG, "Waiting for semaphore of sid=0x%08X\n",
                        ses_ptr->sid);
-               down(&ses_ptr->sem);
+               mutex_lock(&ses_ptr->sem);
        }
        dprintk(2, KERN_DEBUG, "Removed session 0x%08X\n", ses_ptr->sid);
 #if defined(CRYPTODEV_STATS)
@@ -338,7 +338,7 @@ crypto_destroy_session(struct csession *ses_ptr)
                        __func__, ses_ptr->array_size);
        kfree(ses_ptr->pages);
        kfree(ses_ptr->sg);
-       up(&ses_ptr->sem);
+       mutex_unlock(&ses_ptr->sem);
        kfree(ses_ptr);
 }
 
@@ -350,7 +350,7 @@ crypto_finish_session(struct fcrypt *fcr, uint32_t sid)
        struct list_head *head;
        int ret = 0;
 
-       down(&fcr->sem);
+       mutex_lock(&fcr->sem);
        head = &fcr->list;
        list_for_each_entry_safe(ses_ptr, tmp, head, entry) {
                if (ses_ptr->sid == sid) {
@@ -365,7 +365,7 @@ crypto_finish_session(struct fcrypt *fcr, uint32_t sid)
                        sid);
                ret = -ENOENT;
        }
-       up(&fcr->sem);
+       mutex_unlock(&fcr->sem);
 
        return ret;
 }
@@ -377,14 +377,14 @@ crypto_finish_all_sessions(struct fcrypt *fcr)
        struct csession *tmp, *ses_ptr;
        struct list_head *head;
 
-       down(&fcr->sem);
+       mutex_lock(&fcr->sem);
 
        head = &fcr->list;
        list_for_each_entry_safe(ses_ptr, tmp, head, entry) {
                list_del(&ses_ptr->entry);
                crypto_destroy_session(ses_ptr);
        }
-       up(&fcr->sem);
+       mutex_unlock(&fcr->sem);
 
        return 0;
 }
@@ -395,14 +395,14 @@ crypto_get_session_by_sid(struct fcrypt *fcr, uint32_t 
sid)
 {
        struct csession *ses_ptr;
 
-       down(&fcr->sem);
+       mutex_lock(&fcr->sem);
        list_for_each_entry(ses_ptr, &fcr->list, entry) {
                if (ses_ptr->sid == sid) {
-                       down(&ses_ptr->sem);
+                       mutex_lock(&ses_ptr->sem);
                        break;
                }
        }
-       up(&fcr->sem);
+       mutex_unlock(&fcr->sem);
 
        return ses_ptr;
 }
@@ -731,7 +731,7 @@ static int crypto_run(struct fcrypt *fcr, struct crypt_op 
*cop)
 #endif
 
 out_unlock:
-       up(&ses_ptr->sem);
+       mutex_unlock(&ses_ptr->sem);
        return ret;
 }
 
@@ -747,7 +747,7 @@ cryptodev_open(struct inode *inode, struct file *filp)
                return -ENOMEM;
 
        memset(pcr, 0, sizeof(*pcr));
-       init_MUTEX(&pcr->fcrypt.sem);
+       mutex_init(&pcr->fcrypt.sem);
        INIT_LIST_HEAD(&pcr->fcrypt.list);
 
        filp->private_data = pcr;
@@ -1021,3 +1021,4 @@ static void __exit exit_cryptodev(void)
 
 module_init(init_cryptodev);
 module_exit(exit_cryptodev);
+
-- 
1.7.0.4


_______________________________________________
Cryptodev-linux-devel mailing list
Cryptodev-linux-devel@gna.org
https://mail.gna.org/listinfo/cryptodev-linux-devel

Reply via email to