usb/107701: usbd ignores "detach"
Julian Stacey
jhs at berklix.org
Wed Jan 10 01:12:07 UTC 2007
Reposting here to restore
cc: freebsd-usb at freebsd.org
lost from
To: "Julian H. Stacey" <jhs at flat.berklix.net>
Cc: freebsd-gnats-submit at freebsd.org, bug-followup at freebsd.org
Julian S.
------------------
Reference:
> From: Atom Smasher <atom at smasher.org>
> Date: Tue, 9 Jan 2007 18:04:47 -0500 (EST)
> Message-id: <20070109230449.56854.qmail at smasher.org>
Atom Smasher wrote:
> On Tue, 9 Jan 2007, Julian H. Stacey wrote:
>
> > Did you try taking out devname from your entries, to quote a comment I
> > added to my personal usbd.conf some time back:
> >
> > # - devname entries are mostly unused, as only reported on attach,
> > # not detach, so detach fails to be called if devname is specified.
> ==================
>
> i removed devname from one of the entries and restarted usbd. the detach
> event is still silently ignored.
>
> here's the relevant section of my usbd.conf. note that it assumes that
> "device speaker" is enabled in the kernel:
>
> <<<<<<<<<<<<<<
>
> device "CF card"
> devname "umass[0-9]+"
> attach "echo 'T90 L16 DA' > /dev/speaker"
> detach "echo 'T90 L16 AD' > /dev/speaker"
>
> <<<<<<<<<<<<<<
>
> it should play two ascending tones when i insert a flash drive, and two
> descending tones when i remove the flash drive. it only plays tones on
> insertion.
>
>
> --
> ...atom
>
> ________________________
> http://atom.smasher.org/
> 762A 3B98 A3C3 96C9 C6B7 582A B88D 52E4 D9F5 7808
> -------------------------------------------------
>
> "TELEVISION IS DRUGS"
> -- Bumper Sticker
---------------
I can reproduce the error.
Loads of people Should have stumbled on this.
I've found the bug in the code.
This diff just marks the bug.
*** /host/fire/usr/src/usr.sbin/usbd/usbd.c Fri Jul 1 17:49:52 2005
--- usbd.c Wed Jan 10 01:54:54 2007
***************
*** 879,886 ****
--- 879,891 ----
devinfo = &events.u.ue_device;
for (i = 0; i < USB_MAX_DEVNAMES; i++) {
+ printf(" \nJHS1\n" );
if (devinfo->udi_devnames[i][0] == '\0')
break;
+ /* This break is a problem it prevents
+ USB_EVENT_IS_DETACH being run at JHS3
+ */
+ printf(" \nJHS2\n" );
memcpy(&the_event, &events, sizeof(the_event));
the_devinfo = &the_event.u.ue_device;
***************
*** 925,930 ****
--- 930,936 ----
if (USB_EVENT_IS_ATTACH(the_event.ue_type) &&
action_match.action->attach)
execute_command(action_match.action->attach);
+ printf(" \nJHS3\n" );
if (USB_EVENT_IS_DETACH(the_event.ue_type) &&
action_match.action->detach)
execute_command(action_match.action->detach);
The error is still there in 6-Stable too.
There is no src/usr.sbin/usbd/usbd.c in current.
I don't know the code, & too tired & busy to fix this,
Someone else here able to fix it & post a patch ?
If not, Atom Smasher <atom at smasher.org> please use
send-pr to report this identified bug.
--
Julian Stacey. BSD Unix C Net Consultancy, Munich/Muenchen http://berklix.com
Mail Ascii, not HTML. Ihr Rauch = mein allergischer Kopfschmerz.
http://berklix.org/free-software
More information about the freebsd-usb
mailing list