Date: Wed, 01 Jul 2015 21:22:06 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-net@FreeBSD.org Subject: [Bug 200210] adding vtnet to bridge results to kernel panic Message-ID: <bug-200210-2472-BrzJHEcxdG@https.bugs.freebsd.org/bugzilla/> In-Reply-To: <bug-200210-2472@https.bugs.freebsd.org/bugzilla/> References: <bug-200210-2472@https.bugs.freebsd.org/bugzilla/>
next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=200210 --- Comment #2 from commit-hook@freebsd.org --- A commit references this bug: Author: kp Date: Wed Jul 1 21:21:15 UTC 2015 New revision: 285016 URL: https://svnweb.freebsd.org/changeset/base/285016 Log: MFC r284348: Fix panic when adding vtnet interfaces to a bridge vtnet interfaces are always in promiscuous mode (at least if the VIRTIO_NET_F_CTRL_RX feature is not negotiated with the host). if_promisc() on a vtnet interface returned ENOTSUP although it has IFF_PROMISC set. This confused the bridge code. Instead we now accept all enable/disable promiscuous commands (and always keep IFF_PROMISC set). There are also two issues with the if_bridge error handling. If if_promisc() fails it uses bridge_delete_member() to clean up. This tries to disable promiscuous mode on the interface. That runs into an assert, because promiscuous mode was never set in the first place. (That's the panic reported in PR 200210.) We can only unset promiscuous mode if the interface actually is promiscuous. This goes against the reference counting done by if_promisc(), but only the first/last if_promic() calls can actually fail, so this is safe. A second issue is a double free of bif. It's already freed by bridge_delete_member(). PR: 200210 Changes: _U stable/10/ stable/10/sys/dev/virtio/network/if_vtnet.c stable/10/sys/net/if_bridge.c -- You are receiving this mail because: You are the assignee for the bug.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-200210-2472-BrzJHEcxdG>