Re: debugging oops after disconnecting Nexio USB touchscreen

From: Alan Stern
Date: Sat Dec 05 2009 - 12:16:39 EST


On Sat, 5 Dec 2009, Andreas Mohr wrote:

> Hi,
>
> > Furthermore, the patch shows that the second-to-last argument to
> > usb_fill_bulk_urb() -- the completion function -- is NULL. That is
> > strictly illegal and it should have caused an oops as soon as the URB
> > was used.
>
> Then there's definitely a WARN_ON or so missing in
> static inline void usb_fill_bulk_urb()

No there isn't. That inline just fills in a bunch of fields.

You could argue that there is a WARN_ON missing in usb_submit_urb().
I don't think one is necessary, but you might disagree. Either way,
both of us missed the fact that right at the start of usb_submit_urb()
is a check for urb->complete being NULL; if it is NULL then the
submission simply fails (and there is no oops).

> And highly likely more checks in those areas that are causing my (and
> other people's) ftdi_sio tests and USB audio (MIPS mmap) to fail.
> Followup soon.

Sometimes having too many checks is worse than having too few,
especially if the failure modes are relatively easy to handle.

Alan Stern

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