This is the uml-usb patch against 2.4.18-40 it mostly works for me but
events requiring a bus re-scan often kill my machine.
The problem appears to be that arch/um/drivers/usb/umusb_kern.c:640
umusb_scanbus(bus) calls opendir(path) which can want to grow its slab
and uses calloc which is wrapped to um_kmalloc(xxx,GFP_KERNEL) the big
problem occurs in that it is called at interrupt time (timer_bh) which
makes for some confusion in tracking it down when the kernel hits the
Would it be best to change the wrap_calloc to use GFP_ATOMIC ? or is some
other answer better. I was thinking that this could be done in a tasklet
but I am not sure I am up to that much of re-arch on a usb subsystem
design. And I don't even know that uml tasklets can use GFP_KERNEL.
This is after I put in code to usb_deregister_bus usb_free_bus any bus
that does not have any devices because those buses had null device
pointers that were dereferenced. I suppose that adding a fake device
entry would be another solution.
Another odd bit is that spinlocks are taken in umusb_user.c rather then
the kernel side. Is that not one of the no-no's of the uml design.
Also what would be the method to make UM_HCD into a module? now you can
specify that it should be one but it dies with undefined symbols at
module link time. I noticed that there are some recent patches to redo
Config.in/Makefile to better handle modules, but I get confused where
the xterm/tty/pts/pty appear to be dependant on the virtual serial line?
and in the differences between old USER rule vs the new individual rules.
Remember with this patch to change the permissions on the
host:/proc/bus/usb to allow for the uml userid to access the files.
Without these permissions the usb subsystem is basically off and has
Get latest updates about Open Source Projects, Conferences and News.