From: Stanislaw G. <st...@wp...> - 2010-05-26 17:43:35
|
On Wed, May 26, 2010 at 12:16:24PM +0100, David Woodhouse wrote: > The problem is that the 'find_vcc' functions in these drivers are > returning a vcc with the ATM_VF_READY bit cleared, because it's already > in the process of being destroyed. If we fix that simple oversight, > there's still a race condition because the socket can still be closed > (and completely freed, afaict) between our call to find_vcc() and our > call to vcc->push() in the RX tasklet. > > Here's a patch for solos-pci which should fix it. We prevent the race by > making the dev->ops->close() function wait for the RX tasklet to > complete, so it can't still be using the vcc in question. I do not think this is problem with usbatm. We use custom vcc_list with custom usbatm_vcc_data entries. We remove entry on atmdev_ops->close() within tasklet_disable()/tasklet_enable() section. After that rx tasklet will not find usbatm_vcc_data for corresponding vpi, vpi. Stanislaw |