Merge in6_pcb.c:1.86 from HEAD to RELENG_6:
Fix leaking MAC labels for IPv6 inpcbs by adding missing MAC label destroy call; this transpired because the inpcb alloc path for IPv4/IPv6 is the same code, but IPv6 has a separate free path. The results was that as new IPv6 TCP connections were created, kernel memory would gradually leak. Reported by: tanyong <tanyong at ercist dot iscas dot ac dot cn>, zhouzhouyi Approved by: re (kensmith)
This commit is contained in:
parent
88ff3b6258
commit
7c5b9ca5c3
@ -65,9 +65,11 @@
|
|||||||
#include "opt_inet.h"
|
#include "opt_inet.h"
|
||||||
#include "opt_inet6.h"
|
#include "opt_inet6.h"
|
||||||
#include "opt_ipsec.h"
|
#include "opt_ipsec.h"
|
||||||
|
#include "opt_mac.h"
|
||||||
|
|
||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/systm.h>
|
#include <sys/systm.h>
|
||||||
|
#include <sys/mac.h>
|
||||||
#include <sys/malloc.h>
|
#include <sys/malloc.h>
|
||||||
#include <sys/mbuf.h>
|
#include <sys/mbuf.h>
|
||||||
#include <sys/domain.h>
|
#include <sys/domain.h>
|
||||||
@ -457,6 +459,9 @@ in6_pcbdetach(inp)
|
|||||||
(void)m_free(inp->inp_options);
|
(void)m_free(inp->inp_options);
|
||||||
ip_freemoptions(inp->inp_moptions);
|
ip_freemoptions(inp->inp_moptions);
|
||||||
inp->inp_vflag = 0;
|
inp->inp_vflag = 0;
|
||||||
|
#ifdef MAC
|
||||||
|
mac_destroy_inpcb(inp);
|
||||||
|
#endif
|
||||||
INP_UNLOCK(inp);
|
INP_UNLOCK(inp);
|
||||||
uma_zfree(ipi->ipi_zone, inp);
|
uma_zfree(ipi->ipi_zone, inp);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user