[CHECKER]: malloc/free errors part III

From: Dawson Engler (engler@csl.Stanford.EDU)
Date: Fri Aug 11 2000 - 20:55:09 EDT

  • Next message: Frank Davis: "2.4.0-test7-1, emd.c compile error"

    Hi,

    here's the third vetted installment of malloc/free errors. I've looked
    over all of them, but the not-freeing-on-error cases were sometimes a
    little subtle so there may still be a few false positives.

    Dawson
    ------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1115:usb_parse_configuration: ERROR: did not free config on error path

    Not sure: looks like you'll just overwrite it on the second pass:

            config->interface = (struct usb_interface *)
                    kmalloc(config->bNumInterfaces *
                    sizeof(struct usb_interface), GFP_KERNEL);

    -------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/i2o/i2o_config.c:502:ioctl_html: ERROR: did not free query on error path

          if(kcmd.qlen) /* Check for post data */
            {
                    query = kmalloc(kcmd.qlen, GFP_KERNEL);
                    if(!query)
                    {
                            i2o_unlock_controller(c);
                            return -ENOMEM;
                    }
                    if(copy_from_user(query, kcmd.qbuf, kcmd.qlen))
                    {
                            i2o_unlock_controller(c);
                            printk(KERN_INFO "i2o_config: could not get query\n");
                            kfree(query);
                            return -EFAULT;
                    }
            }

            res = kmalloc(65536, GFP_KERNEL);
            if(!res)
            {

                    i2o_unlock_controller(c);
    lost query
    ----> return -ENOMEM;
            }

    -------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/i2o/i2o_core.c:1532:i2o_reset_controller: ERROR: did not free status on error path

            status=(void *)kmalloc(4, GFP_KERNEL);
            if(status==NULL) {
                    printk(KERN_ERR "IOP reset failed - no free memory.\n");
                    return -ENOMEM;
            }

    ....
                  {
                            if((jiffies-time) >= 30*HZ)
                            {
                                    printk(KERN_ERR "%s: Timeout waiting for IOP reset.\n",
                                                    c->name);
    status lost
    ---> return -ETIMEDOUT;
                            }

    -------------------------------------------------------------------------

    /u2/engler/ic/linux-2.3.99/drivers/ide/ide-probe.c:626:init_irq: ERROR: memset of unchecked var 'hwgroup'!

                    hwgroup = kmalloc(sizeof(ide_hwgroup_t), GFP_KERNEL);
                    memset(hwgroup, 0, sizeof(ide_hwgroup_t));

    -------------------------------------------------------------------------
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/ide/ide-probe.c:725:init_gendisk: ERROR: memset of unchecked var 'gd'!
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/ide/ide-probe.c:728:init_gendisk: ERROR: Unchecked use of malloc'd var 'bs'
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/ide/ide-probe.c:729:init_gendisk: ERROR: Unchecked use of malloc'd var 'max_sect'
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/ide/ide-probe.c:730:init_gendisk: ERROR: Unchecked use of malloc'd var 'max_ra'
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/ide/ide-probe.c:744:init_gendisk: ERROR: Unchecked use of malloc'd var 'gd'

            minors = units * (1<<PARTN_BITS);
            gd = kmalloc (sizeof(struct gendisk), GFP_KERNEL);
            gd->sizes = kmalloc (minors * sizeof(int), GFP_KERNEL);
            gd->part = kmalloc (minors * sizeof(struct hd_struct), GFP_KERNEL);
            bs = kmalloc (minors*sizeof(int), GFP_KERNEL);
            max_sect = kmalloc (minors*sizeof(int), GFP_KERNEL);
            max_ra = kmalloc (minors*sizeof(int), GFP_KERNEL);

            memset(gd->part, 0, minors * sizeof(struct hd_struct));

    -------------------------------------------------------------------------

    /u2/engler/ic/linux-2.3.99/drivers/scsi/scsi.c:1428:scsi_build_commandblocks: ERROR: memset of unchecked var 'SCpnt'!

                    SCpnt = (Scsi_Cmnd *)
                            kmalloc(sizeof(Scsi_Cmnd), GFP_ATOMIC |
                                    (host->unchecked_isa_dma ? GFP_DMA : 0));
    Uh. Gotta check *before* use ;-)
    ---> memset(SCpnt, 0, sizeof(Scsi_Cmnd));
                    if (NULL == SCpnt)
                            break; /* If not, the next line will oops ... */
                    memset(&SCpnt->eh_timeout, 0, sizeof(SCpnt->eh_timeout));

    -------------------------------------------------------------------------

    /u2/engler/ic/linux-2.3.99/drivers/scsi/scsi.c:2715:scsi_get_host_dev: ERROR: memset of unchecked var 'SDpnt'!

            SDpnt = (Scsi_Device *) kmalloc(sizeof(Scsi_Device),
                                            GFP_ATOMIC);
            memset(SDpnt, 0, sizeof(Scsi_Device));

    -------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/scsi/eata_dma.c:917:get_board_data: ERROR: memset of unchecked var 'cp'!
    /u2/engler/ic/linux-2.3.99/drivers/scsi/eata_dma.c:918:get_board_data: ERROR: memset of unchecked var 'sp'!

        cp = (struct eata_ccb *) kmalloc(sizeof(struct eata_ccb),
                                         GFP_ATOMIC | GFP_DMA);
        sp = (struct eata_sp *) kmalloc(sizeof(struct eata_sp),
                                                 GFP_ATOMIC | GFP_DMA);
        buff = dma_scratch;

        memset(cp, 0, sizeof(struct eata_ccb));
        memset(sp, 0, sizeof(struct eata_sp));

    -------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/scsi/hosts.c:740:scsi_register: ERROR: memset of unchecked var 'retval'!

        retval = (struct Scsi_Host *)kmalloc(sizeof(struct Scsi_Host) + j,
                                             (tpnt->unchecked_isa_dma && j ? GFP_DMA : 0) | GFP_ATOMIC);
        memset(retval, 0, sizeof(struct Scsi_Host) + j);

    /u2/engler/ic/linux-2.3.99/drivers/scsi/hosts.c:766:scsi_register: ERROR: Unchecked use of malloc'd var 'shn'
    /u2/engler/ic/linux-2.3.99/drivers/scsi/hosts.c:767:scsi_register: ERROR: Unchecked use of malloc'd var 'shn'
    /u2/engler/ic/linux-2.3.99/drivers/scsi/hosts.c:768:scsi_register: ERROR: Unchecked use of malloc'd var 'shn'

          shn->name = kmalloc(len+1, GFP_ATOMIC);
            if (tpnt->proc_dir)
                    strncpy(shn->name, tpnt->proc_dir->name, len);

    -------------------------------------------------------------------------

    /u2/engler/ic/linux-2.3.99/drivers/scsi/ips.c:3237:ips_allocatescbs: ERROR: memset of unchecked var 'ha'!

       ha->scbs = (ips_scb_t *) kmalloc(ha->max_cmds * sizeof(ips_scb_t), GFP_KERNEL|GFP_DMA);

       memset(ha->scbs, 0, ha->max_cmds * sizeof(ips_scb_t));
    ---------------------------------------------------------------
    CONFIRM [CHECK]

    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1024:sd_init: ERROR: memset of unchecked var 'rscsi_disks'!

            rscsi_disks = (Scsi_Disk *)
                    kmalloc(sd_template.dev_max * sizeof(Scsi_Disk), GFP_ATOMIC);
            memset(rscsi_disks, 0, sd_template.dev_max * sizeof(Scsi_Disk));

    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1028:sd_init: ERROR: memset of unchecked var 'sd_sizes'!
            /* for every (necessary) major: */
            sd_sizes = (int *) kmalloc((sd_template.dev_max << 4) * sizeof(int), GFP_ATOMIC);
            memset(sd_sizes, 0, (sd_template.dev_max << 4) * sizeof(int));

            sd_blocksizes = (int *) kmalloc((sd_template.dev_max << 4) * sizeof(int), GFP_ATOMIC);
            sd_hardsizes = (int *) kmalloc((sd_template.dev_max << 4) * sizeof(int), GFP_ATOMIC);

    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1039:sd_init: ERROR: Unchecked use of malloc'd var 'sd_blocksizes'
            for (i = 0; i < sd_template.dev_max << 4; i++) {
                    sd_blocksizes[i] = 1024;
                    sd_hardsizes[i] = 512; }

    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1045:sd_init: ERROR: memset of unchecked var 'sd'!

            sd = (struct hd_struct *) kmalloc((sd_template.dev_max << 4) * sizeof(struct hd_struct),
                                              GFP_ATOMIC);
            memset(sd, 0, (sd_template.dev_max << 4) * sizeof(struct hd_struct));

    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1055:sd_init: ERROR: memset of unchecked var 'sd_gendisks'!
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1059:sd_init: ERROR: memset of unchecked var 'sd_gendisks'!
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sd.c:1040:sd_init: ERROR: Unchecked use of malloc'd var 'sd_hardsizes'

    ------------------------------------------------------------------------------

    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sr.c:712:sr_init: ERROR: memset of unchecked var 'scsi_CDs'!
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sr.c:715:sr_init: ERROR: memset of unchecked var 'sr_sizes'!
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sr.c:730:sr_init: ERROR: Unchecked use of malloc'd var 'sr_blocksizes'
    CONFIRM [CHECK]
    /u2/engler/ic/linux-2.3.99/drivers/scsi/sr.c:727:sr_init: ERROR: Unchecked use of malloc'd var 'sr_blocksizes'

            scsi_CDs = (Scsi_CD *) kmalloc(sr_template.dev_max * sizeof(Scsi_CD), GFP_ATOMIC);
            memset(scsi_CDs, 0, sr_template.dev_max * sizeof(Scsi_CD));
            sr_sizes = (int *) kmalloc(sr_template.dev_max * sizeof(int), GFP_ATOMIC);
            memset(sr_sizes, 0, sr_template.dev_max * sizeof(int));

            sr_blocksizes = (int *) kmalloc(sr_template.dev_max * sizeof(int), GFP_ATOMIC);
            sr_hardsizes = (int *) kmalloc(sr_template.dev_max * sizeof(int), GFP_ATOMIC);

    ---------------------------------------------------------------------------
    CONFIRM [FREE]
    /u2/engler/ic/linux-2.3.99/drivers/cdrom/mcdx.c:1516:mcdx_readtoc: ERROR: did not free stuffp on error path
    CONFIRM [FREE]
    /u2/engler/ic/linux-2.3.99/drivers/cdrom/mcdx.c:1492:mcdx_readtoc: ERROR: did not free stuffp on error path

            stuffp->toc = kmalloc(size, GFP_KERNEL);
            if (!stuffp->toc) {
                xwarn("Cannot malloc %d bytes for toc\n", size);
                mcdx_setdrivemode(stuffp, DATA, 1);
    shouldn't this be ENOMEM?
    ----> return -EIO;
            }
        }

    ---------------------------------------------------------------------------
    CONFIRM [CHECK]

    /u2/engler/ic/linux-2.3.99/drivers/isdn/hisax/callc.c:1177:init_PStack: ERROR: Unchecked use of malloc'd var 'stp'

            *stp = kmalloc(sizeof(struct PStack), GFP_ATOMIC);
            (*stp)->next = NULL;

    ---------------------------------------------------------------------------
    CONFIRM [CHECK]

    /u2/engler/ic/linux-2.3.99/drivers/isdn/hisax/fsm.c:64:FsmNew: ERROR: memset of unchecked var 'fsm'!

            fsm->jumpmatrix = (FSMFNPTR *)
                    kmalloc(sizeof (FSMFNPTR) * fsm->state_count * fsm->event_count, GFP_KERNEL);
            memset(fsm->jumpmatrix, 0, sizeof (FSMFNPTR) * fsm->state_count * fsm->e

    ---------------------------------------------------------------------------
    CONFIRM [FREE]

    /u2/engler/ic/linux-2.3.99/drivers/isdn/icn/icn.c:1066:icn_loadboot: ERROR: did not free codebuf on error path

    Got it right on most paths, missed this one:

       if (!(codebuf = kmalloc(ICN_CODE_STAGE1, GFP_KERNEL))) {
                    printk(KERN_WARNING "icn: Could not allocate code buffer\n");
                    return -ENOMEM;
            }

            ...

            if (!dev.mvalid) {
                    if (check_shmem((ulong) dev.shmem, 0x4000)) {
                            printk(KERN_WARNING
                                   "icn: memory at 0x%08lx in use.\n", (ulong) dev.shmem);
                            restore_flags(flags);
    code buf still allocated.
    ---> return -EBUSY;
                    }

    ---------------------------------------------------------------------------
    Not sure: is this possibly getting lost? Or are the two if statemnets
    exclusive?

    /u2/engler/ic/linux-2.3.99/drivers/isdn/pcbit/capi.c:458:capi_decode_conn_ind: ERROR: did not free info on error path

           len = skb->data[0];

            if (len > 0) {
                    int count = 1;

    #ifdef DEBUG
                    printk(KERN_DEBUG "CPN: Octect 3 %02x\n", skb->data[1]);
    #endif
                    if ((skb->data[1] & 0x80) == 0)
                            count = 2;

    ------------> if (!(info->data.setup.CallingPN = kmalloc(len - count + 1, GFP_ATOMIC)))
                            return -1;

            ...

            skb_pull(skb, len + 1);

            /* Calling Party Subaddress */
            skb_pull(skb, skb->data[0] + 1);
            /* Called Party Number */

            len = skb->data[0];
            if (len > 0) { int count = 1;
                    if ((skb->data[1] & 0x80) == 0)
                            count = 2;
    -------> if (!(info->data.setup.CalledPN = kmalloc(len - count + 1, GFP_ATOMIC)))
                            return -1;
                    memcpy(info->data.setup.CalledPN, skb->data + count + 1,
                           len - count);
                    info->data.setup.CalledPN[len - count] = 0;

            }
            else {

    -----------------------------------------------------------------
    CONFIRM [FREE]
    /u2/engler/ic/linux-2.3.99/drivers/isdn/pcbit/drv.c:208:pcbit_init_dev: ERROR: did not free dev_if on error path

    It looks like it's not freeing dev_if on this path (it assigns it
    to dev->dev_if)

           if (!register_isdn(dev_if)) {
                    free_irq(irq, dev);
                    kfree(dev->b1);
                    kfree(dev->b2);
                    kfree(dev);
    CHECKER BUG: why is this not getting caught:
    dereffing dev after freeing it!
    ---> iounmap((unsigned char*)dev->sh_mem);
                    release_mem_region(dev->ph_mem, 4096);
                    dev_pcbit[board] = NULL;
                    return -EIO;
            }

    -----------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/isdn/eicon/eicon_isa.c:421:eicon_isa_load: ERROR: did not free code on error path

            tmp = readb(&boot->msize);
            if (tmp != 8 && tmp != 16 && tmp != 24 &&
                tmp != 32 && tmp != 48 && tmp != 60) {
                    printk(KERN_WARNING "eicon_isa_load: invalid memsize\n");
                    eicon_isa_release_shmem(card);
                    return -EIO;
            }

            eicon_isa_printpar(card);
    ---------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/atm/iphase.c:1639:rx_init: ERROR: did not free dle_addr on error path
    /u2/engler/ic/linux-2.3.99/drivers/atm/iphase.c:1988:tx_init: ERROR: did not free dle_addr on error path
    /u2/engler/ic/linux-2.3.99/drivers/atm/iphase.c:1979:tx_init: ERROR: did not free dle_addr on error path

    Shouldn't this bail with an error if it cannot allocate? It's just going
    and dereffing it.

           /* allocate 8k bytes */
            dle_addr = (u32*)kmalloc(2*sizeof(struct dle)*DLE_ENTRIES, GFP_KERNEL);
            if (!dle_addr)
            {
                    printk(KERN_ERR DEV_LABEL "can't allocate DLEs\n");
            }
            /* find 4k byte boundary within the 8k allocated */
            dle_addr = (u32*)( ((u32)dle_addr+(4096-1)) & ~(4096-1) );

    ---------------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/drivers/atm/iphase.c:2129:tx_init: ERROR: Unchecked use of malloc'd var 'iadev'

                 iadev->testTable[i] = (struct testTable_t *) kmalloc(sizeof(struct testTable_t), GFP_KERNEL);
                    iadev->testTable[i]->lastTime = 0;

    ------------------------------------------------------------------------

    There are a boatload of errors caused by the bogus code in CODA_ALLOC
    where it allocates, checks for null, and then memsets even if null.

    Eg:
    CONFIRM [CODA]
    /u2/engler/ic/linux-2.3.99/fs/coda/cache.c:89:coda_cache_create: ERROR: memset of unchecked var 'cc'!

    -----------
    CONFIRM [CODA]
    /u2/engler/ic/linux-2.3.99/fs/coda/dir.c:681:coda_venus_readdir: ERROR: memset of unchecked var 'buff'!

    CONFIRM [CODA]
    /u2/engler/ic/linux-2.3.99/fs/coda/psdev.c:137:coda_psdev_write: ERROR: memset of unchecked var 'dcbuf'!

    CONFIRM [CODA]
    /u2/engler/ic/linux-2.3.99/fs/coda/upcall.c:80:venus_rootfid: ERROR: Unchecked use of malloc'd var 'inp'
    /u2/engler/ic/linux-2.3.99/fs/coda/upcall.c:80:venus_rootfid: ERROR: Unchecked use of malloc'd var 'inp'
    /u2/engler/ic/linux-2.3.99/fs/coda/upcall.c:80:venus_rootfid: ERROR: memset of unchecked var 'inp'!

    -------------------------------------------------------------------------

    Actually, it loses the storage even on success!

    /u2/engler/ic/linux-2.3.99/net/atm/common.c:560:atm_ioctl: ERROR: did not free tmp_buf on error path

                     if (size > len) return -E2BIG;
                            tmp_buf = kmalloc(size,GFP_KERNEL);
                            if (!tmp_buf) return -ENOMEM;
                            for (dev = atm_devs; dev; dev = dev->next)
                                    *tmp_buf++ = dev->number;
                            if (copy_to_user(buf,(char *) tmp_buf-size,size))
                                    return -EFAULT;
                            return put_user(size,
                                &((struct atm_iobuf *) arg)->length) ? -EFAULT : 0;

    -------------------------------------------------------------------

    /u2/engler/ic/linux-2.3.99/net/atm/lec.c:280:lec_send_packet: ERROR: Unchecked use of malloc'd var 'nb'

                           nb=(unsigned char*)kmalloc(64, GFP_ATOMIC);
                            memcpy(nb,skb->data,skb->len);
                            skb->head = skb->data = nb;
                            skb->tail = nb+62;
                            skb->end = nb+64;

    -----------------------------------------------------------------------
    /u2/engler/ic/linux-2.3.99/net/atm/mpc.c:169:atm_mpoa_add_qos: ERROR: allocated 84 bytes for 'entry' need 92

            Typo in the size field.

    -------------------------------------------------------------------
    UNSURE, but it looks like all these interface allocations will be lost.
    If it fails, they just get overwritten.

    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path

    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1023:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1057:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1046:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1023:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1057:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1046:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1023:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1057:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1046:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1023:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1057:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1046:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1023:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1057:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1046:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1057:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1046:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1023:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:1038:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:990:usb_parse_interface: ERROR: did not free interface on error path
    /u2/engler/ic/linux-2.3.99/drivers/usb/usb.c:956:usb_parse_interface: ERROR: did not free interface on error path

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.rutgers.edu
    Please read the FAQ at http://www.tux.org/lkml/



    This archive was generated by hypermail 2b29 : Fri Aug 11 2000 - 20:58:18 EDT