Showing error 1649

User: Jiri Slaby
Error type: Invalid Pointer Dereference
Error type description: A pointer which is invalid is being dereferenced
File location: drivers/serial/8250_pci.c
Line in file: 676
Project: Linux Kernel
Project version: 2.6.28
Tools: Smatch (1.59)
Entered: 2013-09-10 07:54:05 UTC


Source:

 646        /* search for the base-ioport */
 647        i = 0;
 648        while (inta_addr[i] && iobase == NULL) {
 649                iobase = request_region(inta_addr[i], ITE_887x_IOSIZE,
 650                                                                "ite887x");
 651                if (iobase != NULL) {
 652                        /* write POSIO0R - speed | size | ioport */
 653                        pci_write_config_dword(dev, ITE_887x_POSIO0,
 654                                ITE_887x_POSIO_ENABLE | ITE_887x_POSIO_SPEED |
 655                                ITE_887x_POSIO_IOSIZE_32 | inta_addr[i]);
 656                        /* write INTCBAR - ioport */
 657                        pci_write_config_dword(dev, ITE_887x_INTCBAR,
 658                                                                inta_addr[i]);
 659                        ret = inb(inta_addr[i]);
 660                        if (ret != 0xff) {
 661                                /* ioport connected */
 662                                break;
 663                        }
 664                        release_region(iobase->start, ITE_887x_IOSIZE);
 665                        iobase = NULL;
 666                }
 667                i++;
 668        }
 669
 670        if (!inta_addr[i]) {
 671                printk(KERN_ERR "ite887x: could not find iobase\n");
 672                return -ENODEV;
 673        }
 674
 675        /* start of undocumented type checking (see parport_pc.c) */
 676        type = inb(iobase->start + 0x18) & 0x0f;
 677
 678        switch (type) {
 679        case 0x2:        /* ITE8871 (1P) */
 680        case 0xa:        /* ITE8875 (1P) */
 681                ret = 0;
 682                break;
 683        case 0xe:        /* ITE8872 (2S1P) */
 684                ret = 2;
 685                break;
 686        case 0x6:        /* ITE8873 (1S) */
Show full sources