Date: Thu, 18 Feb 2010 12:08:12 -0500 From: "J.R. Oldroyd" <fbsd@opal.com> To: Hans Petter Selasky <hselasky@c2i.net> Cc: freebsd-multimedia@freebsd.org, lme@freebsd.org, emulation@freebsd.org, multimedia@freebsd.org, Alexander Leidinger <Alexander@leidinger.net> Subject: Re: FYI: v4l-linuxulator support in FreeBSD-current now [panic] Message-ID: <20100218120812.2224f6bf@shibato.opal.com> In-Reply-To: <201002172137.25396.hselasky@c2i.net> References: <20091204223126.00005392@unknown> <20100112124621.59fa3747@shibato.opal.com> <201001121849.48833.hselasky@c2i.net> <201002172137.25396.hselasky@c2i.net>
next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_/q6wfV9dmVu6L0DVac4rl6oH Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable On Wed, 17 Feb 2010 21:37:25 +0100, Hans Petter Selasky <hselasky@c2i.net> = wrote: > > On Tuesday 12 January 2010 18:49:48 Hans Petter Selasky wrote: > > Re: FYI: v4l-linuxulator support in FreeBSD-current now > >=20 >=20 > Hi, >=20 > Some panics have cropped up when using linux-V4L with webcamd. >=20 > 1st) panic: freeing memory in linux_v4l_cliplist_free() which is not=20 > allocated, but there seems to be more which needs to be done. >=20 > I tried to fix something, but it was not enough. >=20 > Help appreciated. >=20 > We are currently debugging this issue @ #bsdusb on efnet. >=20 > --HPS >=20 > --- linux_ioctl.c.orig 2010-02-17 20:42:53.000000000 +0100 > +++ linux_ioctl.c 2010-02-17 21:03:10.000000000 +0100 > @@ -2711,7 +2711,7 @@ > /* XXX: If there can be no concurrency: s/M_NOWAIT/M_WAITOK/ */ > if ((*ppvc =3D malloc(sizeof(**ppvc), M_LINUX, M_NOWAIT)) =3D=3D = NULL) > return (ENOMEM); /* XXX: linux has no ENOMEM here */ > - memcpy(&vclip, *ppvc, sizeof(vclip)); > + memcpy(*ppvc, &vclip, sizeof(vclip)); > (*ppvc)->next =3D NULL; > return (0); > } > @@ -2719,13 +2719,15 @@ > static int > linux_v4l_cliplist_free(struct video_window *vw) > { > - struct video_clip **ppvc; > - struct video_clip **ppvc_next; > + struct video_clip *ppvc; > + struct video_clip *ppvc_next; > =20 > - for (ppvc =3D &(vw->clips); *ppvc !=3D NULL; ppvc =3D ppvc_next) { > - ppvc_next =3D &((*ppvc)->next); > - free(*ppvc, M_LINUX); > + for (ppvc =3D vw->clips; ppvc !=3D NULL; ppvc =3D ppvc_next) { > + ppvc_next =3D ppvc->next; > + free(ppvc, M_LINUX); > } > + vw->clips =3D NULL; > + > return (0); > } > =20 I wrote the video_clip support but was unable to test it due to lack of either a driver that supported it or an application that used it. I did this based on very sparse documentation on what a video clip list actually is. Looks like the memcpy in linux_v4l_clip_copy is indeed backwards, so sorry about that. Simplifying the double pointers in linux_v4l_cliplist_free is probably also OK, but in that case, you should also rename the pointers to "pvc" rather than "ppvc". If it is still failing with these changes, it would help to know if the failure is happening during the cliplist build, during the ioctl that uses the cliplist, or when tearing down the cliplist after the call. You could try instrumenting LINUX_VIDIOCSWIN to see how far it is getting. -jr --Sig_/q6wfV9dmVu6L0DVac4rl6oH Content-Type: application/pgp-signature; name=signature.asc Content-Disposition: attachment; filename=signature.asc -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (FreeBSD) iEYEARECAAYFAkt9c/wACgkQls33urr0k4md+gCfThu0FwXq9Hw145yRlJDgDeLE VvkAn084uy/VFuKPLfCISdhiD0PfU6uY =hAoZ -----END PGP SIGNATURE----- --Sig_/q6wfV9dmVu6L0DVac4rl6oH--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100218120812.2224f6bf>