summaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorSteffen Klassert <steffen.klassert@secunet.com>2014-09-16 10:08:49 +0200
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2014-10-15 12:05:29 +0200
commitc4cb71c5dd4627c73f06a05ab0ea5963d1c90e4d (patch)
tree922f0841af205c60ff12eb9619b5ce2fecec6d17 /include/net
parentde541d0ce196bc1bf04caefc5b8a55f25b165517 (diff)
downloadlinux-stable-c4cb71c5dd4627c73f06a05ab0ea5963d1c90e4d.tar.gz
linux-stable-c4cb71c5dd4627c73f06a05ab0ea5963d1c90e4d.tar.bz2
linux-stable-c4cb71c5dd4627c73f06a05ab0ea5963d1c90e4d.zip
xfrm: Generate queueing routes only from route lookup functions
[ Upstream commit b8c203b2d2fc961bafd53b41d5396bbcdec55998 ] Currently we genarate a queueing route if we have matching policies but can not resolve the states and the sysctl xfrm_larval_drop is disabled. Here we assume that dst_output() is called to kill the queued packets. Unfortunately this assumption is not true in all cases, so it is possible that these packets leave the system unwanted. We fix this by generating queueing routes only from the route lookup functions, here we can guarantee a call to dst_output() afterwards. Fixes: a0073fe18e71 ("xfrm: Add a state resolution packet queue") Reported-by: Konstantinos Kolelis <k.kolelis@sirrix.com> Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/net')
-rw-r--r--include/net/dst.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/net/dst.h b/include/net/dst.h
index fa11c904d219..a8ae4e760778 100644
--- a/include/net/dst.h
+++ b/include/net/dst.h
@@ -480,6 +480,7 @@ void dst_init(void);
/* Flags for xfrm_lookup flags argument. */
enum {
XFRM_LOOKUP_ICMP = 1 << 0,
+ XFRM_LOOKUP_QUEUE = 1 << 1,
};
struct flowi;