Procházet zdrojové kódy

V4L/DVB (9336): cx88: always de-alloc frontends on fault condition

De-alloc frontends on fault condition.

Signed-off-by: Darron Broad <darron@kewl.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
Darron Broad před 16 roky
rodič
revize
becd43056c
1 změnil soubory, kde provedl 2 přidání a 6 odebrání
  1. 2 6
      drivers/media/video/cx88/cx88-dvb.c

+ 2 - 6
drivers/media/video/cx88/cx88-dvb.c

@@ -789,7 +789,7 @@ static int dvb_register(struct cx8802_dev *dev)
 		if (fe0->dvb.frontend)
 			fe0->dvb.frontend->ops.i2c_gate_ctrl = NULL;
 		if (attach_xc3028(0x61, dev) < 0)
-			return -EINVAL;
+			goto frontend_detach;
 		break;
 	case CX88_BOARD_PCHDTV_HD3000:
 		fe0->dvb.frontend = dvb_attach(or51132_attach, &pchdtv_hd3000,
@@ -1058,7 +1058,6 @@ static int dvb_register(struct cx8802_dev *dev)
 					goto frontend_detach;
 				core->prev_set_voltage = fe0->dvb.frontend->ops.set_voltage;
 				fe0->dvb.frontend->ops.set_voltage = tevii_dvbs_set_voltage;
-
 			}
 		}
 		break;
@@ -1110,10 +1109,7 @@ static int dvb_register(struct cx8802_dev *dev)
 		&dev->pci->dev, adapter_nr, mfe_shared);
 
 frontend_detach:
-	if (fe0->dvb.frontend) {
-		dvb_frontend_detach(fe0->dvb.frontend);
-		fe0->dvb.frontend = NULL;
-	}
+	videobuf_dvb_dealloc_frontends(&dev->frontends);
 	return -EINVAL;
 }