From: Zhiqiang Liu <liuzhiqian...@huawei.com> Date: Mon, 11 Feb 2019 10:57:46 +0800
> From: Zhiqiang Liu <liuzhiqian...@huawei.com> > > Follow those steps: > # ip addr add 2001:123::1/32 dev eth0 > # ip addr add 2001:123:456::2/64 dev eth0 > # ip addr del 2001:123::1/32 dev eth0 > # ip addr del 2001:123:456::2/64 dev eth0 > and then prefix route of 2001:123::1/32 will still exist. > > This is because ipv6_prefix_equal in check_cleanup_prefix_route > func does not check whether two IPv6 addresses have the same > prefix length. If the prefix of one address starts with another > shorter address prefix, even though their prefix lengths are > different, the return value of ipv6_prefix_equal is true. > > Here I add a check of whether two addresses have the same prefix > to decide whether their prefixes are equal. > > Fixes: 5b84efecb7d9 ("ipv6 addrconf: don't cleanup prefix route > for IFA_F_NOPREFIXROUTE") > Signed-off-by: Zhiqiang Liu <liuzhiqian...@huawei.com> > Reported-by: Wenhao Zhang <zhangwenh...@huawei.com> Applied and queued up for -stable. Please do not split up long Fixes: tag lines, keep the entire tag on one line only. I fixed it up for you this time. Thanks.