From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from bombadil.infradead.org ([198.137.202.9]:38148 "EHLO bombadil.infradead.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756324AbcKKMto (ORCPT ); Fri, 11 Nov 2016 07:49:44 -0500 Date: Fri, 11 Nov 2016 10:49:03 -0200 From: Mauro Carvalho Chehab To: VDR User Cc: Mauro Carvalho Chehab , LMML Subject: Re: Question about 2 gp8psk patches I noticed, and possible bug. Message-ID: <20161111104903.607428e5@vela.lan> In-Reply-To: References: <20161108155520.224229d5@vento.lan> <20161109073331.204b53c4@vento.lan> <20161109153521.232b0956@vento.lan> <20161110060717.221e8d88@vento.lan> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-media-owner@vger.kernel.org List-ID: Em Thu, 10 Nov 2016 07:01:44 -0800 VDR User escreveu: > > commit 0c979a12309af49894bb1dc60e747c3cd53fa888 > > Author: Mauro Carvalho Chehab > > 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 > > > > 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 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