Re: 2.6.9-mm1 usb oopses

From: Pete Zaitcev
Date: Sat Oct 23 2004 - 00:58:12 EST


On Fri, 22 Oct 2004 20:45:18 -0700, Andrew Morton <akpm@xxxxxxxx> wrote:

> looks like a ub.c problem.

Yes. At least partially.

> Date: Fri, 22 Oct 2004 21:59:20 +0200
> From: Fabio Coatti <cova@xxxxxxxxxxxxxxxx>

> Oct 22 21:40:05 kefk kernel: ub 5-3:1.0: usb_probe_interface - got id
> Oct 22 21:40:05 kefk kernel: uba: device 6 capacity nsec 50 bsize 512
> Oct 22 21:40:05 kefk kernel: uba: made changed
> Oct 22 21:40:05 kefk kernel: uba: device 6 capacity nsec 1024000 bsize 512
> Oct 22 21:40:05 kefk kernel: uba: device 6 capacity nsec 1024000 bsize 512
> Oct 22 21:40:05 kefk kernel: uba: uba1
> Oct 22 21:40:05 kefk kernel: uba: uba1
> Oct 22 21:40:05 kefk kernel: kobject_register failed for uba1 (-17)
> Oct 22 21:40:05 kefk kernel: [<c01f1f77>] kobject_register+0x51/0x5f

This looks like a race, but isn't. What actually happens is that the ub
returns a device changed indication from check_media_changed when the
device is connected. In such case, do_open will make another attempt
to read partitions. I discussed it with Al and he opined that no block
device should ever return a changed indication before the first open
has completed. If it cannot, it should refuse the open.

This only happens to devices which refuse to come online easily. Therefore,
I was going to fold a fix into a patch to add START STOP UNIT command.
It is not written yet.

The other side of this, the oops, is something for Viro/James/Axboe
to check out. It's entirely on their side. But of course, if ub quits
tripping the double registration condition, the problem of buggy
error paths in the block layer becomes moot. I'll work on it as soon
as possible.

-- Pete
-
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/