Dmitry Torokhov wrote: >> +static void hid_bus_release(struct device *dev) >> +{ >> +} >> + >> +struct device hid_bus = { >> + .bus_id = "hidbus0", >> + .release = hid_bus_release >> +}; >> + >> +static void hid_dev_release(struct device *dev) >> +{ >> +} >> + >> > > That will for sure raise Greg KH's blood pressure ;) >
I know your words now. The entire hid_bus device is useless. The original code of hid bus is copied from LDD3e. It seem the API had changed since it pressed. In fact, the new kernel only work silent without it, or the kref_get() will warn us. And, I fixed the double hidinput_disconnect() problem last night. It's reason is not invalid memory access, instead of, it's normal behavior of hidinput_disconnect(). The resolution is easy, We should move inputs member to hid_device, not in hid_driver. so if we removed one hid_device, it do not disconnect all devices which its driver bind, just only itself. Now, usbhid works fine. Good luck. - Li Yu - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/