Date: Sun, 06 Sep 2009 13:50:25 +0100 From: Mark McLoughlin <markmc@redhat.com> To: Juergen Lock <nox@jelal.kn-bremen.de> Cc: freebsd-emulation@freebsd.org, qemu-devel@nongnu.org, Anthony Liguori <anthony@codemonkey.ws> Subject: Re: close tapfd before running down_script [was Re: [Qemu-devel] ANNOUNCE: Release 0.11.0-rc2 of QEMU] Message-ID: <1252241425.3191.81.camel@blaa> In-Reply-To: <20090904201347.GA77929@triton8.kn-bremen.de> References: <4AA11B9F.9050101@codemonkey.ws> <20090904201347.GA77929@triton8.kn-bremen.de>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2009-09-04 at 22:13 +0200, Juergen Lock wrote: > The second change is a small patch to tap_cleanup that makes it close > the tap fd before calling the ifdown script instead of after, otherwise > FreeBSD's tap driver may hit a KASSERT in case the ifdown script does > something like an `ifconfig tap0 destroy'... > > Index: qemu/net.c > @@ -1643,12 +1643,13 @@ static void tap_cleanup(VLANClientState > > qemu_purge_queued_packets(vc); > > - if (s->down_script[0]) > - launch_script(s->down_script, s->down_script_arg, s->fd); > - > tap_read_poll(s, 0); > tap_write_poll(s, 0); > close(s->fd); > + > + if (s->down_script[0]) > + launch_script(s->down_script, s->down_script_arg, -1); > + > qemu_free(s); > } > > I don't know if there are use cases where the ifdown script needs the > tap fd still open, otherwise I guess this can also be committed upstream. > And in case you want to: :) > > Signed-off-by: Juergen Lock <nox@jelal.kn-bremen.de> I don't ever use the the down script myself, but a couple of things to bear in mind: a) 0.9.1 never actually closed the tap fd and since 0.10.0 we've been closing the fd after calling the script b) where qemu creates the tap interface, by closing the tap fd before the script we'd be destroying the interface before passing the interface name to the script The current behaviour seems right to me. Could you explain your use case a bit more? Maybe post the up and down scripts? Cheers, Mark.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1252241425.3191.81.camel>