Merge branch 'vuplus-1.6' of 192.168.102.66:/var/ikseong/repo/openembedded into test_0921
[vuplus_openembedded] / recipes / v4l-dvb / files / backport-k.patch
1 commit 8c577726896d50db622d56a06920d19645e5aed8
2 Author: ghost <andreas.monzner@multimedia-labs.de>
3 Date:   Tue Sep 13 15:59:07 2011 +0200
4
5     DVB: dvb_frontend: fixed (slow) frontend thread shutdown on device close
6
7 diff --git a/drivers/media/dvb/dvb-core/dvb_frontend.c b/drivers/media/dvb/dvb-core/dvb_frontend.c
8 index 7784d74..6823c2b 100644
9 --- a/drivers/media/dvb/dvb-core/dvb_frontend.c 2011-09-07 12:32:24.000000000 +0200
10 +++ a/drivers/media/dvb/dvb-core/dvb_frontend.c 2011-09-13 15:55:48.865742791 +0200
11 @@ -514,7 +514,7 @@
12                 return 1;
13  
14         if (fepriv->dvbdev->writers == 1)
15 -               if (time_after(jiffies, fepriv->release_jiffies +
16 +               if (time_after_eq(jiffies, fepriv->release_jiffies +
17                                   dvb_shutdown_timeout * HZ))
18                         return 1;
19  
20 @@ -2070,12 +2070,15 @@
21  
22         dprintk ("%s\n", __func__);
23  
24 -       if ((file->f_flags & O_ACCMODE) != O_RDONLY)
25 +       if ((file->f_flags & O_ACCMODE) != O_RDONLY) {
26                 fepriv->release_jiffies = jiffies;
27 +               mb();
28 +       }
29  
30         ret = dvb_generic_release (inode, file);
31  
32         if (dvbdev->users == -1) {
33 +               wake_up(&fepriv->wait_queue);
34                 if (fepriv->exit != DVB_FE_NO_EXIT) {
35                         fops_put(file->f_op);
36                         file->f_op = NULL;