Signed-off-by: Andreas Oberritter <o...@linuxtv.org>
---
 drivers/media/dvb/dvb-core/dvb_frontend.c |   23 +++++++++++------------
 1 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c 
b/drivers/media/dvb/dvb-core/dvb_frontend.c
index a716627..f433a88 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -31,7 +31,6 @@
 #include <linux/wait.h>
 #include <linux/slab.h>
 #include <linux/poll.h>
-#include <linux/semaphore.h>
 #include <linux/module.h>
 #include <linux/list.h>
 #include <linux/freezer.h>
@@ -108,7 +107,7 @@ struct dvb_frontend_private {
        struct dvb_frontend_parameters parameters_in;
        struct dvb_frontend_parameters parameters_out;
        struct dvb_fe_events events;
-       struct semaphore sem;
+       struct mutex lock;
        struct list_head list_head;
        wait_queue_head_t wait_queue;
        struct task_struct *thread;
@@ -190,12 +189,12 @@ static int dvb_frontend_get_event(struct dvb_frontend *fe,
                if (flags & O_NONBLOCK)
                        return -EWOULDBLOCK;
 
-               up(&fepriv->sem);
+               mutex_unlock(&fepriv->lock);
 
                ret = wait_event_interruptible (events->wait_queue,
                                                events->eventw != 
events->eventr);
 
-               if (down_interruptible (&fepriv->sem))
+               if (mutex_lock_interruptible(&fepriv->lock))
                        return -ERESTARTSYS;
 
                if (ret < 0)
@@ -556,7 +555,7 @@ static int dvb_frontend_thread(void *data)
 
        set_freezable();
        while (1) {
-               up(&fepriv->sem);           /* is locked when we enter the 
thread... */
+               mutex_unlock(&fepriv->lock);        /* is locked when we enter 
the thread... */
 restart:
                timeout = wait_event_interruptible_timeout(fepriv->wait_queue,
                        dvb_frontend_should_wakeup(fe) || kthread_should_stop()
@@ -572,7 +571,7 @@ restart:
                if (try_to_freeze())
                        goto restart;
 
-               if (down_interruptible(&fepriv->sem))
+               if (mutex_lock_interruptible(&fepriv->lock))
                        break;
 
                if (fepriv->reinitialise) {
@@ -704,7 +703,7 @@ static void dvb_frontend_stop(struct dvb_frontend *fe)
 
        kthread_stop(fepriv->thread);
 
-       sema_init(&fepriv->sem, 1);
+       mutex_init(&fepriv->lock);
        fepriv->state = FESTATE_IDLE;
 
        /* paranoia check in case a signal arrived */
@@ -773,7 +772,7 @@ static int dvb_frontend_start(struct dvb_frontend *fe)
 
        if (signal_pending(current))
                return -EINTR;
-       if (down_interruptible (&fepriv->sem))
+       if (mutex_lock_interruptible(&fepriv->lock))
                return -EINTR;
 
        fepriv->state = FESTATE_IDLE;
@@ -786,7 +785,7 @@ static int dvb_frontend_start(struct dvb_frontend *fe)
        if (IS_ERR(fe_thread)) {
                ret = PTR_ERR(fe_thread);
                printk("dvb_frontend_start: failed to start kthread (%d)\n", 
ret);
-               up(&fepriv->sem);
+               mutex_unlock(&fepriv->lock);
                return ret;
        }
        fepriv->thread = fe_thread;
@@ -1535,7 +1534,7 @@ static int dvb_frontend_ioctl(struct file *file,
             cmd == FE_DISEQC_RECV_SLAVE_REPLY))
                return -EPERM;
 
-       if (down_interruptible (&fepriv->sem))
+       if (mutex_lock_interruptible(&fepriv->lock))
                return -ERESTARTSYS;
 
        if ((cmd == FE_SET_PROPERTY) || (cmd == FE_GET_PROPERTY))
@@ -1545,7 +1544,7 @@ static int dvb_frontend_ioctl(struct file *file,
                err = dvb_frontend_ioctl_legacy(file, cmd, parg);
        }
 
-       up(&fepriv->sem);
+       mutex_unlock(&fepriv->lock);
        return err;
 }
 
@@ -2115,7 +2114,7 @@ int dvb_register_frontend(struct dvb_adapter* dvb,
        }
        fepriv = fe->frontend_priv;
 
-       sema_init(&fepriv->sem, 1);
+       mutex_init(&fepriv->lock);
        init_waitqueue_head (&fepriv->wait_queue);
        init_waitqueue_head (&fepriv->events.wait_queue);
        mutex_init(&fepriv->events.mtx);
-- 
1.7.2.5

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to