diff options
author | gonzo <gonzo@FreeBSD.org> | 2008-07-04 21:01:30 +0000 |
---|---|---|
committer | gonzo <gonzo@FreeBSD.org> | 2008-07-04 21:01:30 +0000 |
commit | 3e88043a6cb4e756160cd02ea26d7205e8b3faf0 (patch) | |
tree | 9dd30dd14e217a34b0d4497b8e90a3c4a2e401ee /sys/netinet | |
parent | 1ad481ce503efa104fda8e761b36f7d969822242 (diff) | |
download | FreeBSD-src-3e88043a6cb4e756160cd02ea26d7205e8b3faf0.zip FreeBSD-src-3e88043a6cb4e756160cd02ea26d7205e8b3faf0.tar.gz |
Enqueue de-capsulated packet instead of performing direct dispatch. It's
possible to exhaust and garble stack with a packet that contains a couple
of hundreds nested encapsulation levels.
Submitted by: Ming Fu <fming@borderware.com>
Reviewed by: rwatson
PR: kern/85320
Diffstat (limited to 'sys/netinet')
-rw-r--r-- | sys/netinet/ip_gre.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/netinet/ip_gre.c b/sys/netinet/ip_gre.c index e985006..218cc6e 100644 --- a/sys/netinet/ip_gre.c +++ b/sys/netinet/ip_gre.c @@ -214,7 +214,7 @@ gre_input2(struct mbuf *m ,int hlen, u_char proto) m->m_pkthdr.rcvif = GRE2IFP(sc); - netisr_dispatch(isr, m); + netisr_queue(isr, m); /* Packet is done, no further processing needed. */ return (NULL); @@ -298,7 +298,7 @@ gre_mobile_input(struct mbuf *m, int hlen) m->m_pkthdr.rcvif = GRE2IFP(sc); - netisr_dispatch(NETISR_IP, m); + netisr_queue(NETISR_IP, m); } /* |