Fix a possible refcount leak in regen_tmpaddr().
public_ifa6 may be set to NULL after taking a reference to a previous address list element. Instead, only take the reference after leaving the loop but before releasing the address list lock. Differential Revision: https://reviews.freebsd.org/D2253 Reviewed by: ae MFC after: 2 weeks
This commit is contained in:
parent
e3b60002c6
commit
47f557e75d
@ -765,11 +765,10 @@ regen_tmpaddr(struct in6_ifaddr *ia6)
|
||||
* address with the prefix.
|
||||
*/
|
||||
if (!IFA6_IS_DEPRECATED(it6))
|
||||
public_ifa6 = it6;
|
||||
|
||||
if (public_ifa6 != NULL)
|
||||
ifa_ref(&public_ifa6->ia_ifa);
|
||||
public_ifa6 = it6;
|
||||
}
|
||||
if (public_ifa6 != NULL)
|
||||
ifa_ref(&public_ifa6->ia_ifa);
|
||||
IF_ADDR_RUNLOCK(ifp);
|
||||
|
||||
if (public_ifa6 != NULL) {
|
||||
|
Loading…
Reference in New Issue
Block a user