| From c5582ce3aea09ce3cc41114477888df3d92f05e8 Mon Sep 17 00:00:00 2001 |
| From: Jethro Beekman <jethro@fortanix.com> |
| Date: Wed, 12 Feb 2020 16:43:41 +0100 |
| Subject: [PATCH] net: fib_rules: Correctly set table field when table number |
| exceeds 8 bits |
| |
| commit 540e585a79e9d643ede077b73bcc7aa2d7b4d919 upstream. |
| |
| In 709772e6e06564ed94ba740de70185ac3d792773, RT_TABLE_COMPAT was added to |
| allow legacy software to deal with routing table numbers >= 256, but the |
| same change to FIB rule queries was overlooked. |
| |
| Signed-off-by: Jethro Beekman <jethro@fortanix.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c |
| index dd220ce7ca7a..bb11fc87bbae 100644 |
| --- a/net/core/fib_rules.c |
| +++ b/net/core/fib_rules.c |
| @@ -967,7 +967,7 @@ static int fib_nl_fill_rule(struct sk_buff *skb, struct fib_rule *rule, |
| |
| frh = nlmsg_data(nlh); |
| frh->family = ops->family; |
| - frh->table = rule->table; |
| + frh->table = rule->table < 256 ? rule->table : RT_TABLE_COMPAT; |
| if (nla_put_u32(skb, FRA_TABLE, rule->table)) |
| goto nla_put_failure; |
| if (nla_put_u32(skb, FRA_SUPPRESS_PREFIXLEN, rule->suppress_prefixlen)) |
| -- |
| 2.7.4 |
| |