From e035177b13afb4278167f946b85080b6057da99b Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Fri, 17 Feb 2017 00:58:21 +0000 Subject: [PATCH] net: ipv6: check route protocol when deleting routes (Closes: #855153) --- debian/changelog | 1 + ...-route-protocol-when-deleting-routes.patch | 32 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 34 insertions(+) create mode 100644 debian/patches/bugfix/all/net-ipv6-check-route-protocol-when-deleting-routes.patch diff --git a/debian/changelog b/debian/changelog index e62844098..927a3f9ab 100644 --- a/debian/changelog +++ b/debian/changelog @@ -247,6 +247,7 @@ linux (4.9.10-1) UNRELEASED; urgency=medium * test-patches: Use the pkg.linux.notools build profile * test-patches: Set default number of jobs to number of available processors * dccp: Disable auto-loading as mitigation against local exploits + * net: ipv6: check route protocol when deleting routes (Closes: #855153) [ Roger Shimizu ] * [armel] ARM: dts: orion5x-lschl: Fix model name diff --git a/debian/patches/bugfix/all/net-ipv6-check-route-protocol-when-deleting-routes.patch b/debian/patches/bugfix/all/net-ipv6-check-route-protocol-when-deleting-routes.patch new file mode 100644 index 000000000..0682f7a83 --- /dev/null +++ b/debian/patches/bugfix/all/net-ipv6-check-route-protocol-when-deleting-routes.patch @@ -0,0 +1,32 @@ +From: Mantas M +Date: Fri, 16 Dec 2016 10:30:59 +0200 +Subject: net: ipv6: check route protocol when deleting routes +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +Origin: https://git.kernel.org/linus/c2ed1880fd61a998e3ce40254a99a2ad000f1a7d +Bug-Debian: https://bugs.debian.org/855153 + +The protocol field is checked when deleting IPv4 routes, but ignored for +IPv6, which causes problems with routing daemons accidentally deleting +externally set routes (observed by multiple bird6 users). + +This can be verified using `ip -6 route del proto something`. + +Signed-off-by: Mantas Mikulėnas +Signed-off-by: David S. Miller +--- + net/ipv6/route.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/net/ipv6/route.c ++++ b/net/ipv6/route.c +@@ -2166,6 +2166,8 @@ static int ip6_route_del(struct fib6_con + continue; + if (cfg->fc_metric && cfg->fc_metric != rt->rt6i_metric) + continue; ++ if (cfg->fc_protocol && cfg->fc_protocol != rt->rt6i_protocol) ++ continue; + dst_hold(&rt->dst); + read_unlock_bh(&table->tb6_lock); + diff --git a/debian/patches/series b/debian/patches/series index eed5066ad..454a19f89 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -75,6 +75,7 @@ bugfix/all/nbd-use-loff_t-for-blocksize-and-nbd_set_size-args.patch bugfix/all/ath9k-fix-null-pointer-dereference.patch bugfix/all/nbd-fix-64-bit-division.patch bugfix/all/pegasus-use-heap-buffers-for-all-register-access.patch +bugfix/all/net-ipv6-check-route-protocol-when-deleting-routes.patch # Miscellaneous features