Messages in this thread | | | Date | Wed, 9 Jul 2003 21:30:10 -0700 | From | Andrew Morton <> | Subject | Re: 2.5.74-mm3 yenta-socket oops back |
| |
Michael Frank <mflt1@micrologica.com.hk> wrote: > > 2.5.74-mm3 yenta-socket oopsed on the first boot at the same spot. > > I have successfully used both patches below with -mm1. > > --- 1.50/drivers/pcmcia/cs.c Mon Jun 30 22:22:30 2003 > +++ edited/cs.c Sat Jul 5 23:58:07 2003 > @@ -338,13 +338,13 @@ > socket->erase_busy.next = socket->erase_busy.prev = &socket->erase_busy; > INIT_LIST_HEAD(&socket->cis_cache); > spin_lock_init(&socket->lock); > - > - init_socket(socket); > - > init_completion(&socket->thread_done); > init_waitqueue_head(&socket->thread_wait); > init_MUTEX(&socket->skt_sem); > spin_lock_init(&socket->thread_lock); > + > + init_socket(socket); > + > ret = kernel_thread(pccardd, socket, CLONE_KERNEL); > if (ret < 0) > return ret; >
This one is clearly correct.
> and my patch (may apply with some offset, which I'm about to check > into bk anyway): > > --- linux/drivers/pcmcia/cs.c.old Fri Jul 4 10:21:50 2003 > +++ linux/drivers/pcmcia/cs.c Sun Jul 6 23:04:10 2003 > @@ -870,11 +870,13 @@ > > void pcmcia_parse_events(struct pcmcia_socket *s, u_int events) > { > - spin_lock(&s->thread_lock); > - s->thread_events |= events; > - spin_unlock(&s->thread_lock); > + if (s->thread) { > + spin_lock(&s->thread_lock); > + s->thread_events |= events; > + spin_unlock(&s->thread_lock); > > - wake_up(&s->thread_wait); > + wake_up(&s->thread_wait); > + } > } /* pcmcia_parse_events */
This one may not be. How did we get here with no thread to handle the event? Do you have an oops trace on this one?
Or just stick a
if (!s->thread) dump_stack();
in there as well.
- 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/
| |