Showing error 1808

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/media/video/cx23885/cx23885-dvb.c
Line in file: 596
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-11 08:47:26 UTC


Source:

566         * Without these changes we risk an OOPS later. The changes here
567         * are for safety, and should provide a good foundation for the
568         * future addition of any multi-frontend cx23885 based boards.
569         */
570        printk(KERN_INFO "%s() allocating %d frontend(s)\n", __func__,
571                port->num_frontends);
572
573        for (i = 1; i <= port->num_frontends; i++) {
574                if (videobuf_dvb_alloc_frontend(
575                        &port->frontends, i) == NULL) {
576                        printk(KERN_ERR "%s() failed to alloc\n", __func__);
577                        return -ENOMEM;
578                }
579
580                fe0 = videobuf_dvb_get_frontend(&port->frontends, i);
581                if (!fe0)
582                        err = -EINVAL;
583
584                dprintk(1, "%s\n", __func__);
585                dprintk(1, " ->probed by Card=%d Name=%s, PCI %02x:%02x\n",
586                        dev->board,
587                        dev->name,
588                        dev->pci_bus,
589                        dev->pci_slot);
590
591                err = -ENODEV;
592
593                /* dvb stuff */
594                /* We have to init the queue for each frontend on a port. */
595                printk(KERN_INFO "%s: cx23885 based dvb card\n", dev->name);
596                videobuf_queue_sg_init(&fe0->dvb.dvbq, &dvb_qops,
597                            &dev->pci->dev, &port->slock,
598                            V4L2_BUF_TYPE_VIDEO_CAPTURE, V4L2_FIELD_TOP,
599                            sizeof(struct cx23885_buffer), port);
600        }
601        err = dvb_register(port);
602        if (err != 0)
603                printk(KERN_ERR "%s() dvb_register failed err = %d\n",
604                        __func__, err);
605
606        return err;
Show full sources