diff --git a/drivers/char/mbcs.c b/drivers/char/mbcs.c
index 7321c14868af4ba17f7039f25548643a5ef8cce8..f4716ad7348ae7185bdba2a35379b9a68fd37a63 100644
--- a/drivers/char/mbcs.c
+++ b/drivers/char/mbcs.c
@@ -347,7 +347,7 @@ do_mbcs_sram_dmaread(struct mbcs_soft *soft, uint64_t hostAddr,
 {
 	int rv = 0;
 
-	if (down_interruptible(&soft->dmareadlock))
+	if (mutex_lock_interruptible(&soft->dmareadlock))
 		return -ERESTARTSYS;
 
 	atomic_set(&soft->dmawrite_done, 0);
@@ -372,7 +372,7 @@ do_mbcs_sram_dmaread(struct mbcs_soft *soft, uint64_t hostAddr,
 	*off += len;
 
 dmaread_exit:
-	up(&soft->dmareadlock);
+	mutex_unlock(&soft->dmareadlock);
 
 	return rv;
 }
@@ -764,7 +764,7 @@ static int mbcs_probe(struct cx_dev *dev, const struct cx_device_id *id)
 	init_waitqueue_head(&soft->algo_queue);
 
 	mutex_init(&soft->dmawritelock);
-	init_MUTEX(&soft->dmareadlock);
+	mutex_init(&soft->dmareadlock);
 	mutex_init(&soft->algolock);
 
 	mbcs_getdma_init(&soft->getdma);
diff --git a/drivers/char/mbcs.h b/drivers/char/mbcs.h
index b05435145d7200c1871ace7f4376f401727d860b..ba671589f4cba31716a0b1ac4f505e39003b5626 100644
--- a/drivers/char/mbcs.h
+++ b/drivers/char/mbcs.h
@@ -538,7 +538,7 @@ struct mbcs_soft {
 	atomic_t dmaread_done;
 	atomic_t algo_done;
 	struct mutex dmawritelock;
-	struct semaphore dmareadlock;
+	struct mutex dmareadlock;
 	struct mutex algolock;
 };