aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Boettcher <pb@linuxtv.org>2006-08-08 14:48:11 -0400
committerMauro Carvalho Chehab <mchehab@infradead.org>2006-09-26 10:53:48 -0400
commit4e66c97c9299d53f1d9167e42b05357f023099c8 (patch)
tree43e0ad4156bfe890a59b0bb2c54d8cec5ad886d8
parenta2c00a0eee751e298c916508b6fa5cee0d7d188d (diff)
V4L/DVB: DiB3000MC: set FE to NULL after being freed
DiB3000MC: set FE to NULL after being freed Signed-off-by: Patrick Boettcher <pb@linuxtv.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
-rw-r--r--drivers/media/dvb/dvb-usb/dvb-usb-dvb.c9
-rw-r--r--drivers/media/dvb/frontends/dib3000mc.c5
2 files changed, 8 insertions, 6 deletions
diff --git a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
index 3a19689d9c9a..fe6208ada903 100644
--- a/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
+++ b/drivers/media/dvb/dvb-usb/dvb-usb-dvb.c
@@ -175,7 +175,7 @@ static int dvb_usb_fe_sleep(struct dvb_frontend *fe)
175int dvb_usb_fe_init(struct dvb_usb_device* d) 175int dvb_usb_fe_init(struct dvb_usb_device* d)
176{ 176{
177 if (d->props.frontend_attach == NULL) { 177 if (d->props.frontend_attach == NULL) {
178 err("strange '%s' doesn't want to attach a frontend.",d->desc->name); 178 err("strange: '%s' doesn't want to attach a frontend.",d->desc->name);
179 return 0; 179 return 0;
180 } 180 }
181 181
@@ -186,8 +186,7 @@ int dvb_usb_fe_init(struct dvb_usb_device* d)
186 186
187 if (dvb_register_frontend(&d->dvb_adap, d->fe)) { 187 if (dvb_register_frontend(&d->dvb_adap, d->fe)) {
188 err("Frontend registration failed."); 188 err("Frontend registration failed.");
189 if (d->fe->ops.release) 189 dvb_frontend_detach(d->fe);
190 d->fe->ops.release(d->fe);
191 d->fe = NULL; 190 d->fe = NULL;
192 return -ENODEV; 191 return -ENODEV;
193 } 192 }
@@ -203,7 +202,9 @@ int dvb_usb_fe_init(struct dvb_usb_device* d)
203 202
204int dvb_usb_fe_exit(struct dvb_usb_device *d) 203int dvb_usb_fe_exit(struct dvb_usb_device *d)
205{ 204{
206 if (d->fe != NULL) 205 if (d->fe != NULL) {
207 dvb_unregister_frontend(d->fe); 206 dvb_unregister_frontend(d->fe);
207 dvb_frontend_detach(d->fe);
208 }
208 return 0; 209 return 0;
209} 210}
diff --git a/drivers/media/dvb/frontends/dib3000mc.c b/drivers/media/dvb/frontends/dib3000mc.c
index cc41c6bcdaf6..04ce6276f873 100644
--- a/drivers/media/dvb/frontends/dib3000mc.c
+++ b/drivers/media/dvb/frontends/dib3000mc.c
@@ -899,9 +899,10 @@ int dib3000mc_attach(struct i2c_adapter *i2c_adap, int no_of_demods, u8 default_
899 return 0; 899 return 0;
900 900
901error: 901error:
902 for (k = 0; k < num; k++) 902 for (k = 0; k < num; k++) {
903 kfree(demod[k]->demodulator_priv); 903 kfree(demod[k]->demodulator_priv);
904 904 demod[k] = NULL;
905 }
905 return -EINVAL; 906 return -EINVAL;
906} 907}
907 908