V4L/DVB (9336): cx88: always de-alloc frontends on fault condition
authorDarron Broad <darron@kewl.org>
Tue, 21 Oct 2008 14:47:50 +0000 (11:47 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Tue, 21 Oct 2008 16:32:12 +0000 (14:32 -0200)
De-alloc frontends on fault condition.

Signed-off-by: Darron Broad <darron@kewl.org>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx88/cx88-dvb.c

index 6170d27b4d9089664e981d86ef6939089b5b03eb..cf6c30d4e545e5dcc6d7c02013738b51544a0b9a 100644 (file)
@@ -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;
 }