Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] dvbdev: add a dvb_detach() macro

The dvb_attach() was unbalanced, as there was no dvb_dettach. Ok,
on current cases, the dettach is done by dvbdev, but that are some
future corner cases where we may need to do this before registering
the frontend.

So, add a dvb_detach() and use it at dvb_frontend.c.

Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>

+8 -4
+4 -4
drivers/media/dvb-core/dvb_frontend.c
··· 2666 2666 2667 2667 if (fe->ops.release_sec) { 2668 2668 fe->ops.release_sec(fe); 2669 - symbol_put_addr(fe->ops.release_sec); 2669 + dvb_detach(fe->ops.release_sec); 2670 2670 } 2671 2671 if (fe->ops.tuner_ops.release) { 2672 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 2675 if (fe->ops.analog_ops.release) { 2676 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 2679 ptr = (void*)fe->ops.release; 2680 2680 if (ptr) { 2681 2681 fe->ops.release(fe); 2682 - symbol_put_addr(ptr); 2682 + dvb_detach(ptr); 2683 2683 } 2684 2684 } 2685 2685 #else
+4
drivers/media/dvb-core/dvbdev.h
··· 136 136 __r; \ 137 137 }) 138 138 139 + #define dvb_detach(FUNC) symbol_put_addr(FUNC) 140 + 139 141 #else 140 142 #define dvb_attach(FUNCTION, ARGS...) ({ \ 141 143 FUNCTION(ARGS); \ 142 144 }) 145 + 146 + #define dvb_detach(FUNC) {} 143 147 144 148 #endif 145 149