dvb_frontend_thread performs an up() on its semaphore at exit, even though one must have already been done to reach the exit point. This means fe->sem affords no protection past the first time a frontend device is closed.
This was manifesting as a 3 second tuning delay on my system when opening the frontend device all times except the first, due to a race on fe->wakeup. I imagine it could also cause tuning failures in other situations. The attached patch removes the extra up and also corrects the title block in dvb_frontend.c which calls this file dvb-core.c. Regards Chris -- Christopher Pascoe IT Infrastructure Manager School of Information Technology and Electrical Engineering The University of Queensland Brisbane QLD 4072 Australia
