summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDevin Heitmueller <dheitmueller@kernellabs.com>2009-05-20 23:58:16 -0300
committerMauro Carvalho Chehab <mchehab@redhat.com>2009-06-16 19:14:15 -0300
commita5beb7b32364a236e833631c3ee5c910cbbfa5bb (patch)
tree1c5bdfdfe8ddbd05443e0625cbcfe974da17fe1f
parent9c9c68a8c06623b1f1b68652b1a3bf6d8ef415df (diff)
downloadop-kernel-dev-a5beb7b32364a236e833631c3ee5c910cbbfa5bb.zip
op-kernel-dev-a5beb7b32364a236e833631c3ee5c910cbbfa5bb.tar.gz
V4L/DVB (11875): dvb_frontend: fix case where fepriv->exit not reset
The fact that we now explicitly set fepriv->exit = 1 when the thread is shutting down exposed an edge case where it was not being reset back to zero once the thread went away in some cases. This resulted in failures in cases where the frontend was closed, and then opened O_RDONLY, since in that case the thread is not being restarted but it was checking the fepriv->exit flag. Thanks to Thierry Lelegard, who and encountered and debugged a large portion of the issue in the same twelve hours that I did (as well as testing my patch). Cc: Thierry Lelegard <thierry.lelegard@tv-numeric.com> Signed-off-by: Devin Heitmueller <dheitmueller@kernellabs.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r--drivers/media/dvb/dvb-core/dvb_frontend.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
index 1f38dd8..f50ca72 100644
--- a/drivers/media/dvb/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb/dvb-core/dvb_frontend.c
@@ -657,6 +657,7 @@ restart:
}
fepriv->thread = NULL;
+ fepriv->exit = 0;
mb();
dvb_frontend_wakeup(fe);
OpenPOWER on IntegriCloud