From: Daniel Scheller <d.schel...@gmx.net>

Smatch reported:

  drivers/media/pci/ddbridge/ddbridge-core.c:1602 dvb_input_attach() error: we 
previously assumed 'dvb->fe' could be null (see line 1595)

dvb->fe2 will ever only be populated when dvb->fe is set. So only handle
registration of dvb->fe2 when dvb->fe got set beforehand by moving the
registration into the "if (dvb->fe)" conditional.

Cc: Ralph Metzler <r...@metzlerbros.de>
Signed-off-by: Daniel Scheller <d.schel...@gmx.net>
Tested-by: Richard Scobie <r.sco...@clear.net.nz>
Tested-by: Jasmin Jessich <jas...@anw.at>
Tested-by: Dietmar Spingler <d_sping...@freenet.de>
Tested-by: Manfred Knick <manfred.kn...@t-online.de>
---
 drivers/media/pci/ddbridge/ddbridge-core.c | 20 +++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/drivers/media/pci/ddbridge/ddbridge-core.c 
b/drivers/media/pci/ddbridge/ddbridge-core.c
index 12bc8de980b5..d01d54159008 100644
--- a/drivers/media/pci/ddbridge/ddbridge-core.c
+++ b/drivers/media/pci/ddbridge/ddbridge-core.c
@@ -1506,23 +1506,25 @@ static int dvb_input_attach(struct ddb_input *input)
                return 0;
        }
        dvb->attached = 0x30;
+
        if (dvb->fe) {
                if (dvb_register_frontend(adap, dvb->fe) < 0)
                        return -ENODEV;
+
+               if (dvb->fe2) {
+                       if (dvb_register_frontend(adap, dvb->fe2) < 0)
+                               return -ENODEV;
+                       dvb->fe2->tuner_priv = dvb->fe->tuner_priv;
+                       memcpy(&dvb->fe2->ops.tuner_ops,
+                              &dvb->fe->ops.tuner_ops,
+                              sizeof(struct dvb_tuner_ops));
+               }
        }
-       if (dvb->fe2) {
-               if (dvb_register_frontend(adap, dvb->fe2) < 0)
-                       return -ENODEV;
-               dvb->fe2->tuner_priv = dvb->fe->tuner_priv;
-               memcpy(&dvb->fe2->ops.tuner_ops,
-                      &dvb->fe->ops.tuner_ops,
-                      sizeof(struct dvb_tuner_ops));
-       }
+
        dvb->attached = 0x31;
        return 0;
 }
 
-
 static int port_has_encti(struct ddb_port *port)
 {
        struct device *dev = port->dev->dev;
-- 
2.13.0

Reply via email to