@@ -817,26 +817,15 @@ static void dvb_frontend_stop(struct dvb_frontend *fe)
817
817
818
818
dev_dbg (fe -> dvb -> device , "%s:\n" , __func__ );
819
819
820
- mutex_lock (& fe -> remove_mutex );
821
-
822
820
if (fe -> exit != DVB_FE_DEVICE_REMOVED )
823
821
fe -> exit = DVB_FE_NORMAL_EXIT ;
824
822
mb ();
825
823
826
- if (!fepriv -> thread ) {
827
- mutex_unlock (& fe -> remove_mutex );
824
+ if (!fepriv -> thread )
828
825
return ;
829
- }
830
826
831
827
kthread_stop (fepriv -> thread );
832
828
833
- mutex_unlock (& fe -> remove_mutex );
834
-
835
- if (fepriv -> dvbdev -> users < -1 ) {
836
- wait_event (fepriv -> dvbdev -> wait_queue ,
837
- fepriv -> dvbdev -> users == -1 );
838
- }
839
-
840
829
sema_init (& fepriv -> sem , 1 );
841
830
fepriv -> state = FESTATE_IDLE ;
842
831
@@ -2780,22 +2769,17 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
2780
2769
struct dvb_adapter * adapter = fe -> dvb ;
2781
2770
int ret ;
2782
2771
2783
- mutex_lock (& fe -> remove_mutex );
2784
-
2785
2772
dev_dbg (fe -> dvb -> device , "%s:\n" , __func__ );
2786
- if (fe -> exit == DVB_FE_DEVICE_REMOVED ) {
2787
- ret = - ENODEV ;
2788
- goto err_remove_mutex ;
2789
- }
2773
+ if (fe -> exit == DVB_FE_DEVICE_REMOVED )
2774
+ return - ENODEV ;
2790
2775
2791
2776
if (adapter -> mfe_shared == 2 ) {
2792
2777
mutex_lock (& adapter -> mfe_lock );
2793
2778
if ((file -> f_flags & O_ACCMODE ) != O_RDONLY ) {
2794
2779
if (adapter -> mfe_dvbdev &&
2795
2780
!adapter -> mfe_dvbdev -> writers ) {
2796
2781
mutex_unlock (& adapter -> mfe_lock );
2797
- ret = - EBUSY ;
2798
- goto err_remove_mutex ;
2782
+ return - EBUSY ;
2799
2783
}
2800
2784
adapter -> mfe_dvbdev = dvbdev ;
2801
2785
}
@@ -2818,10 +2802,8 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
2818
2802
while (mferetry -- && (mfedev -> users != -1 ||
2819
2803
mfepriv -> thread )) {
2820
2804
if (msleep_interruptible (500 )) {
2821
- if (signal_pending (current )) {
2822
- ret = - EINTR ;
2823
- goto err_remove_mutex ;
2824
- }
2805
+ if (signal_pending (current ))
2806
+ return - EINTR ;
2825
2807
}
2826
2808
}
2827
2809
@@ -2833,8 +2815,7 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
2833
2815
if (mfedev -> users != -1 ||
2834
2816
mfepriv -> thread ) {
2835
2817
mutex_unlock (& adapter -> mfe_lock );
2836
- ret = - EBUSY ;
2837
- goto err_remove_mutex ;
2818
+ return - EBUSY ;
2838
2819
}
2839
2820
adapter -> mfe_dvbdev = dvbdev ;
2840
2821
}
@@ -2893,8 +2874,6 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
2893
2874
2894
2875
if (adapter -> mfe_shared )
2895
2876
mutex_unlock (& adapter -> mfe_lock );
2896
-
2897
- mutex_unlock (& fe -> remove_mutex );
2898
2877
return ret ;
2899
2878
2900
2879
err3 :
@@ -2916,9 +2895,6 @@ static int dvb_frontend_open(struct inode *inode, struct file *file)
2916
2895
err0 :
2917
2896
if (adapter -> mfe_shared )
2918
2897
mutex_unlock (& adapter -> mfe_lock );
2919
-
2920
- err_remove_mutex :
2921
- mutex_unlock (& fe -> remove_mutex );
2922
2898
return ret ;
2923
2899
}
2924
2900
@@ -2929,8 +2905,6 @@ static int dvb_frontend_release(struct inode *inode, struct file *file)
2929
2905
struct dvb_frontend_private * fepriv = fe -> frontend_priv ;
2930
2906
int ret ;
2931
2907
2932
- mutex_lock (& fe -> remove_mutex );
2933
-
2934
2908
dev_dbg (fe -> dvb -> device , "%s:\n" , __func__ );
2935
2909
2936
2910
if ((file -> f_flags & O_ACCMODE ) != O_RDONLY ) {
@@ -2952,18 +2926,10 @@ static int dvb_frontend_release(struct inode *inode, struct file *file)
2952
2926
}
2953
2927
mutex_unlock (& fe -> dvb -> mdev_lock );
2954
2928
#endif
2929
+ if (fe -> exit != DVB_FE_NO_EXIT )
2930
+ wake_up (& dvbdev -> wait_queue );
2955
2931
if (fe -> ops .ts_bus_ctrl )
2956
2932
fe -> ops .ts_bus_ctrl (fe , 0 );
2957
-
2958
- if (fe -> exit != DVB_FE_NO_EXIT ) {
2959
- mutex_unlock (& fe -> remove_mutex );
2960
- wake_up (& dvbdev -> wait_queue );
2961
- } else {
2962
- mutex_unlock (& fe -> remove_mutex );
2963
- }
2964
-
2965
- } else {
2966
- mutex_unlock (& fe -> remove_mutex );
2967
2933
}
2968
2934
2969
2935
dvb_frontend_put (fe );
@@ -3064,7 +3030,6 @@ int dvb_register_frontend(struct dvb_adapter *dvb,
3064
3030
fepriv = fe -> frontend_priv ;
3065
3031
3066
3032
kref_init (& fe -> refcount );
3067
- mutex_init (& fe -> remove_mutex );
3068
3033
3069
3034
/*
3070
3035
* After initialization, there need to be two references: one
0 commit comments