Am Mittwoch, 2. Juli 2003 12:17 schrieb Manuel Estrada Sainz:
> On Fri, Jun 27, 2003 at 12:15:04PM +0200, Oliver Neukum wrote:
> > On Fri, 27 Jun 2003, Manuel Estrada Sainz wrote:
> > > On Thu, Jun 26, 2003 at 11:41:18PM +0200, Oliver Neukum wrote:
> > > > /* We don't like racing :) */
> > > > ctx->outurb->transfer_flags &= ~URB_ASYNC_UNLINK;
> > > > usb_unlink_urb(ctx->outurb);
> > > > del_timer_sync(&ctx->timer);
> > > >
> > > > But neither do we like sleeping in interrupt. You can't simply unset the flag
> > > > if somebody else may be needing it.
> > > >
> > > > More when I am rested :-)
> > >
> > > How about the attached patch, not pretty, but it should work.
> > It is much too ugly. Please use a struct completion or a waitqueue.
> How about this?
> The other choice is to just wait on the completion unconditionally and
> let timers expire on their own if needed.
> That would probably be more robust, and waiting a few extra seconds on
> module removal (which would just happen when the card hangs) is
> probably OK. What do you think?
You also need this code path on hotunplugging.
Please take out the test for EINPROGRESS and examine the return
value of usb_unlink_urb() to decide whether you have to wait.
> PS: Ideas on how to make the PCMCIA vs. USB integration (specially the
> locking) cleaner would be very, very welcomed.
I know too little about the PCMCIA cards. Sorry.
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to firstname.lastname@example.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 : Mon Jul 07 2003 - 22:00:16 EST