[PATCH] dvb: ttpci: make av7110_fe_lock_fix() retryable
authorOliver Endriss <o.endriss@gmx.de>
Fri, 8 Jul 2005 00:58:02 +0000 (17:58 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Fri, 8 Jul 2005 01:23:58 +0000 (18:23 -0700)
av7110_fe_lock_fix() modified in a way that it can be retried after
-ERESTARTSYS

Signed-off-by: Oliver Endriss <o.endriss@gmx.de>
Signed-off-by: Johannes Stezenbach <js@linuxtv.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/media/dvb/ttpci/av7110.c

index ab4f77d..e4c6e87 100644 (file)
@@ -2038,15 +2038,13 @@ static int av7110_fe_lock_fix(struct av7110* av7110, fe_status_t status)
        if (av7110->fe_synced == synced)
                return 0;
 
-       av7110->fe_synced = synced;
-
        if (av7110->playing)
                return 0;
 
        if (down_interruptible(&av7110->pid_mutex))
                return -ERESTARTSYS;
 
-       if (av7110->fe_synced) {
+       if (synced) {
                ret = SetPIDs(av7110, av7110->pids[DMX_PES_VIDEO],
                        av7110->pids[DMX_PES_AUDIO],
                        av7110->pids[DMX_PES_TELETEXT], 0,
@@ -2062,6 +2060,9 @@ static int av7110_fe_lock_fix(struct av7110* av7110, fe_status_t status)
                }
        }
 
+       if (!ret)
+               av7110->fe_synced = synced;
+
        up(&av7110->pid_mutex);
        return ret;
 }