mvsas mvs_pci_alloc() error handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When playing with mvsas (on 2.6.34-rc4 ish), I ran into this:

	WARNING: at /data/buytenh/linux-2.6/mm/vmalloc.c:1368 __vunmap+0x58/0xdc()
	Trying to vfree() nonexistent vm area (f0800000)

If ->chip_ioremap() fails, mvs_pci_alloc() will call mvs_free(), which
calls ->chip_iounmap(), which tries to free something that couldn't be
allocated in the first place.


A quick second glance at mvs_pci_alloc() turns up more fishy stuff,
for example:

        do {
                mvi = mvs_pci_alloc(pdev, ent, shost, nhost);
                if (!mvi) {
                        rc = -ENOMEM;
                        goto err_out_regions;
                }

                mvs_init_sas_add(mvi);

                mvi->instance = nhost;
                rc = MVS_CHIP_DISP->chip_init(mvi);
                if (rc) {
                        mvs_free(mvi);
                        goto err_out_regions;
                }
                nhost++;
        } while (nhost < chip->n_host);

I.e. if mvs_pci_alloc() or ->chip_init() fails for an mvi, we will free
this mvi but not any of the ones previously allocated in this loop.
--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux