aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/media/dvb-core/dvb_frontend.c8
-rw-r--r--drivers/media/dvb-core/dvbdev.h4
2 files changed, 8 insertions, 4 deletions
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c
index 6ce435ac866f..6cc2631d8f0e 100644
--- a/drivers/media/dvb-core/dvb_frontend.c
+++ b/drivers/media/dvb-core/dvb_frontend.c
@@ -2666,20 +2666,20 @@ void dvb_frontend_detach(struct dvb_frontend* fe)
2666 2666
2667 if (fe->ops.release_sec) { 2667 if (fe->ops.release_sec) {
2668 fe->ops.release_sec(fe); 2668 fe->ops.release_sec(fe);
2669 symbol_put_addr(fe->ops.release_sec); 2669 dvb_detach(fe->ops.release_sec);
2670 } 2670 }
2671 if (fe->ops.tuner_ops.release) { 2671 if (fe->ops.tuner_ops.release) {
2672 fe->ops.tuner_ops.release(fe); 2672 fe->ops.tuner_ops.release(fe);
2673 symbol_put_addr(fe->ops.tuner_ops.release); 2673 dvb_detach(fe->ops.tuner_ops.release);
2674 } 2674 }
2675 if (fe->ops.analog_ops.release) { 2675 if (fe->ops.analog_ops.release) {
2676 fe->ops.analog_ops.release(fe); 2676 fe->ops.analog_ops.release(fe);
2677 symbol_put_addr(fe->ops.analog_ops.release); 2677 dvb_detach(fe->ops.analog_ops.release);
2678 } 2678 }
2679 ptr = (void*)fe->ops.release; 2679 ptr = (void*)fe->ops.release;
2680 if (ptr) { 2680 if (ptr) {
2681 fe->ops.release(fe); 2681 fe->ops.release(fe);
2682 symbol_put_addr(ptr); 2682 dvb_detach(ptr);
2683 } 2683 }
2684} 2684}
2685#else 2685#else
diff --git a/drivers/media/dvb-core/dvbdev.h b/drivers/media/dvb-core/dvbdev.h
index 93a9470d3f0c..f96b28e7fc95 100644
--- a/drivers/media/dvb-core/dvbdev.h
+++ b/drivers/media/dvb-core/dvbdev.h
@@ -136,11 +136,15 @@ extern int dvb_usercopy(struct file *file, unsigned int cmd, unsigned long arg,
136 __r; \ 136 __r; \
137}) 137})
138 138
139#define dvb_detach(FUNC) symbol_put_addr(FUNC)
140
139#else 141#else
140#define dvb_attach(FUNCTION, ARGS...) ({ \ 142#define dvb_attach(FUNCTION, ARGS...) ({ \
141 FUNCTION(ARGS); \ 143 FUNCTION(ARGS); \
142}) 144})
143 145
146#define dvb_detach(FUNC) {}
147
144#endif 148#endif
145 149
146#endif /* #ifndef _DVBDEV_H_ */ 150#endif /* #ifndef _DVBDEV_H_ */