Re: [PATCH] 2.4.10-pre13: ATM drivers cause panic

From: Alan Cox (alan@lxorguk.ukuu.org.uk)
Date: Sat Sep 22 2001 - 11:04:45 EST


> seems a couple of spin_lock(s) and a spin_unlock was missing.
> Why didn't this problem show up with earlier releases ???
> Anyways, please find a (quick) patch below. It would be great if this patch or
> any other similar could make it into the next release!

How about

static struct atm_dev *alloc_atm_dev(const char *type)
{
         struct atm_dev *dev;

        dev = kmalloc(sizeof(*dev),GFP_KERNEL);
        if (!dev) return NULL;
        memset(dev,0,sizeof(*dev));
        dev->type = type;
        dev->signal = ATM_PHY_SIG_UNKNOWN;
        dev->link_rate = ATM_OC3_PCR;
        dev->next = NULL;

        spin_lock(&atm_dev_lock);

        dev->prev = last_dev;

        if (atm_devs) last_dev->next = dev;
        else atm_devs = dev;
        last_dev = dev;
        spin_unlock(&atm_dev_lock);
        return dev;
}

instead. That seems to fix alloc_atm_dev safely. Refcounting wants adding
to atm_dev objects too, its impossible currently to make atm_find_dev
remotely safe

Alan

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



This archive was generated by hypermail 2b29 : Sun Sep 23 2001 - 21:00:49 EST