Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 09 Jun 2012 16:27:56 +0200
From:      Gustau Perez Querol <gperez@entel.upc.edu>
To:        <net@freebsd.org>
Subject:   Panic with if_bridge when removing components
Message-ID:  <c3457a59051eba45d2204aa1fb7388db@webmail.entel.upc.edu>

next in thread | raw e-mail | index | archive | help
--=_7f2ea6bb87e1eea129bb2584420b95f0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=UTF-8;
 format=flowed

   Hi,

   I'm seeing panics when removing an interface of a bridge. The system 
runs HEAD/AMD64 r236733. I see no changes to if_bridge.c in the last two 
days, so I would say the problem's still there. I also checked stable 
and the problem should be there too.

   The problem is that I have a bridge composed of two ethernet 
interfaces, an ath interface and a tap. As soon as I remove any of them 
the system panics. Because the system runs openvpn with the tap 
connected to the bridge, when the system starts to reboot, the openvpn 
daemon removes the tap and thus causing also the panic.

   The panic comes because at sys/net/if_bridge.c:943 the struct 
*ifnet->if_bridge of the interface removed is set to NULL too early. 
Because of this, at sys/net/if_bridge.c:996 we call 
if_bridge.c:bridge_linkstate where the struct *ifnet->if_bridge is 
needed. This causes the panic.

   I can pastebin the core file if needed.

   I'm attaching a simple patch that solves it. The struct 
*ifnet->if_bridge could be set to null only if the interface removed is 
gone, but I think it won't hurt to set it to null in any case.

   Regards,

   Gustau

--=_7f2ea6bb87e1eea129bb2584420b95f0
Content-Transfer-Encoding: base64
Content-Type: text/x-diff;
 name=if_bridge.diff
Content-Disposition: attachment;
 filename=if_bridge.diff

ZGlmZiAtLWdpdCBhL3N5cy9uZXQvaWZfYnJpZGdlLmMgYi9zeXMvbmV0L2lmX2JyaWRnZS5jCmlu
ZGV4IDI3MWVmMzAuLjZjMTEyZGUgMTAwNjQ0Ci0tLSBhL3N5cy9uZXQvaWZfYnJpZGdlLmMKKysr
IGIvc3lzL25ldC9pZl9icmlkZ2UuYwpAQCAtOTQwLDcgKzk0MCw2IEBAIGJyaWRnZV9kZWxldGVf
bWVtYmVyKHN0cnVjdCBicmlkZ2Vfc29mdGMgKnNjLCBzdHJ1Y3QgYnJpZGdlX2lmbGlzdCAqYmlm
LAogCWlmIChiaWYtPmJpZl9mbGFncyAmIElGQklGX1NUUCkKIAkJYnN0cF9kaXNhYmxlKCZiaWYt
PmJpZl9zdHApOwogCi0JaWZzLT5pZl9icmlkZ2UgPSBOVUxMOwogCUJSSURHRV9YTE9DSyhzYyk7
CiAJTElTVF9SRU1PVkUoYmlmLCBiaWZfbmV4dCk7CiAJQlJJREdFX1hEUk9QKHNjKTsKQEAgLTk5
NCw2ICs5OTMsNyBAQCBicmlkZ2VfZGVsZXRlX21lbWJlcihzdHJ1Y3QgYnJpZGdlX3NvZnRjICpz
Yywgc3RydWN0IGJyaWRnZV9pZmxpc3QgKmJpZiwKIAl9CiAJYnN0cF9kZXN0cm95KCZiaWYtPmJp
Zl9zdHApOwkvKiBwcmVwYXJlIHRvIGZyZWUgKi8KIAlicmlkZ2VfbGlua3N0YXRlKGlmcyk7CisJ
aWZzLT5pZl9icmlkZ2UgPSBOVUxMOwogCUJSSURHRV9MT0NLKHNjKTsKIAlmcmVlKGJpZiwgTV9E
RVZCVUYpOwogfQo=
--=_7f2ea6bb87e1eea129bb2584420b95f0--




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