Re: Question about 2 gp8psk patches I noticed, and possible bug.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Em Thu, 10 Nov 2016 07:01:44 -0800
VDR User <user.vdr@xxxxxxxxx> escreveu:

> > commit 0c979a12309af49894bb1dc60e747c3cd53fa888
> > Author: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>
> > Date:   Wed Nov 9 15:33:17 2016 -0200
> >
> >     [media] gp8psk: Fix DVB frontend attach
> >
> >     it should be calling module_get() at attach, as otherwise
> >     module_put() will crash.
> >
> >     Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>
> >
> > diff --git a/drivers/media/usb/dvb-usb/gp8psk.c b/drivers/media/usb/dvb-usb/gp8psk.c
> > index cede0d8b0f8a..24eb6c6c8e24 100644
> > --- a/drivers/media/usb/dvb-usb/gp8psk.c
> > +++ b/drivers/media/usb/dvb-usb/gp8psk.c
> > @@ -250,7 +250,7 @@ static int gp8psk_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
> >
> >  static int gp8psk_frontend_attach(struct dvb_usb_adapter *adap)
> >  {
> > -       adap->fe_adap[0].fe = gp8psk_fe_attach(adap->dev);
> > +       adap->fe_adap[0].fe = dvb_attach(gp8psk_fe_attach, adap->dev);
> >         return 0;
> >  }  
> 
> This gives:
> 
> [119150.498863] DVB: Unable to find symbol gp8psk_fe_attach()
> [119150.498928] dvb-usb: no frontend was attached by 'Genpix
> SkyWalker-2 DVB-S receiver'

Hmm... dvb_attach() assumes that the symbol is exported. Please try
this patch. If it fixes the bug, I'll likely do something else, to
avoid the need of EXPORT_SYMBOL.


[PATCH] [media] gp8psk: Fix DVB frontend attach

it should be calling module_get() at attach, as otherwise
module_put() will crash.

Signed-off-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxxxxxxxx>

diff --git a/drivers/media/usb/dvb-usb/gp8psk-fe.c b/drivers/media/usb/dvb-usb/gp8psk-fe.c
index db6eb79cde07..ab7c6093436b 100644
--- a/drivers/media/usb/dvb-usb/gp8psk-fe.c
+++ b/drivers/media/usb/dvb-usb/gp8psk-fe.c
@@ -326,6 +326,7 @@ struct dvb_frontend * gp8psk_fe_attach(struct dvb_usb_device *d)
 success:
 	return &s->fe;
 }
+EXPORT_SYMBOL_GPL(gp8psk_fe_attach);
 
 
 static struct dvb_frontend_ops gp8psk_fe_ops = {
diff --git a/drivers/media/usb/dvb-usb/gp8psk.c b/drivers/media/usb/dvb-usb/gp8psk.c
index 2829e3082d15..c3762c50e93b 100644
--- a/drivers/media/usb/dvb-usb/gp8psk.c
+++ b/drivers/media/usb/dvb-usb/gp8psk.c
@@ -250,7 +250,7 @@ static int gp8psk_streaming_ctrl(struct dvb_usb_adapter *adap, int onoff)
 
 static int gp8psk_frontend_attach(struct dvb_usb_adapter *adap)
 {
-	adap->fe_adap[0].fe = gp8psk_fe_attach(adap->dev);
+	adap->fe_adap[0].fe = dvb_attach(gp8psk_fe_attach, adap->dev);
 	return 0;
 }
 





Cheers,
Mauro
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux