Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 04 Oct 2008 02:21:04 +0400
From:      Vladimir Grebenschikov <vova@fbsd.ru>
To:        Maksim Yevmenkin <maksim.yevmenkin@gmail.com>
Cc:        freebsd-bluetooth@freebsd.org, usb@freebsd.org, Federico Lorenzi <florenzi@gmail.com>
Subject:   Re: Bluetooth audio - crash on USB bluetooth dongle disconnect - solved
Message-ID:  <1223072464.4832.2.camel@localhost>
In-Reply-To: <bb4a86c70810031418t5b9eef45p4d57b55f22c05715@mail.gmail.com>
References:  <3a386af20809261420j535680e8pf44453dbf6f84b20@mail.gmail.com> <bb4a86c70809261504v45ffe1a8oaf26670a1032e86c@mail.gmail.com> <1223034512.1842.111.camel@localhost> <bb4a86c70810030945g3d870a1eqacc85233d9698a66@mail.gmail.com> <1223067257.2362.6.camel@localhost> <bb4a86c70810031418t5b9eef45p4d57b55f22c05715@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
=F7 Fri, 03/10/2008 =D7 14:18 -0700, Maksim Yevmenkin =D0=C9=DB=C5=D4:

> one thing that is different from interrupt and bulk transfers is that
> ng_ubt(4) always has multiple outstanding incoming isoc transfers.
> when device is simply pulled out, there is not much driver can do. if
> i enable debugging i can see my transfer completion routine called
> with ioerror status or something like that. so, i suspect this is a
> cleanup issue. i'm not sure who supposed to do the cleanup in this
> case driver or stack.
>=20
> in any case,  can you verify that ubt_reset() is called when device is
> pulled out? (it should be called as part of hook disconnect).=20

Right guess, it does not called.

> if not - then please try to call ubt_reset() from ubt_detach() just befor=
e
> closing all the pipes.

Yes, it fixes crash, patch below.

Index: netgraph/bluetooth/drivers/ubt/ng_ubt.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /usr/ncvs/src/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c,v
retrieving revision 1.35
diff -u -r1.35 ng_ubt.c
--- netgraph/bluetooth/drivers/ubt/ng_ubt.c	29 Jul 2008 00:17:53 -0000	1.35
+++ netgraph/bluetooth/drivers/ubt/ng_ubt.c	3 Oct 2008 22:13:46 -0000
@@ -803,6 +803,9 @@
 	struct ubt_softc *sc =3D device_get_softc(self);
 	int	i;
=20
+	/* Reset queues and pipes */
+	ubt_reset(sc);
+=09
 	/* Destroy Netgraph node */
 	if (sc->sc_node !=3D NULL) {
 		NG_NODE_SET_PRIVATE(sc->sc_node, NULL);


> thanks,
> max
--=20
Vladimir B. Grebenschikov
vova@fbsd.ru



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1223072464.4832.2.camel>