Do not leak lock in the case of EEXIST error.

PR:		kern/92776
Submitted by:	Ed Schouten <Ed.Schouten tunix.nl>
This commit is contained in:
Gleb Smirnoff 2007-06-06 14:21:49 +00:00
parent d0a2646099
commit e9bf9fb67c

@ -1906,8 +1906,12 @@ carp_ioctl(struct ifnet *ifp, u_long cmd, caddr_t addr)
cif = (struct carp_if *)sc->sc_carpdev->if_carp;
TAILQ_FOREACH(vr, &cif->vhif_vrs, sc_list)
if (vr != sc &&
vr->sc_vhid == carpr.carpr_vhid)
return EEXIST;
vr->sc_vhid == carpr.carpr_vhid) {
error = EEXIST;
break;
}
if (error == EEXIST)
break;
}
sc->sc_vhid = carpr.carpr_vhid;
IF_LLADDR(sc->sc_ifp)[0] = 0;