lkml.org 
[lkml]   [2019]   [Jun]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.14 12/35] Revert "fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied"
    Date
    From: Hangbin Liu <liuhangbin@gmail.com>

    [ Upstream commit 4970b42d5c362bf873982db7d93245c5281e58f4 ]

    This reverts commit e9919a24d3022f72bcadc407e73a6ef17093a849.

    Nathan reported the new behaviour breaks Android, as Android just add
    new rules and delete old ones.

    If we return 0 without adding dup rules, Android will remove the new
    added rules and causing system to soft-reboot.

    Fixes: e9919a24d302 ("fib_rules: return 0 directly if an exactly same rule exists when NLM_F_EXCL not supplied")
    Reported-by: Nathan Chancellor <natechancellor@gmail.com>
    Reported-by: Yaro Slav <yaro330@gmail.com>
    Reported-by: Maciej Żenczykowski <zenczykowski@gmail.com>
    Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
    Reviewed-by: Nathan Chancellor <natechancellor@gmail.com>
    Tested-by: Nathan Chancellor <natechancellor@gmail.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    net/core/fib_rules.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/net/core/fib_rules.c
    +++ b/net/core/fib_rules.c
    @@ -563,9 +563,9 @@ int fib_nl_newrule(struct sk_buff *skb,
    rule->uid_range = fib_kuid_range_unset;
    }

    - if (rule_exists(ops, frh, tb, rule)) {
    - if (nlh->nlmsg_flags & NLM_F_EXCL)
    - err = -EEXIST;
    + if ((nlh->nlmsg_flags & NLM_F_EXCL) &&
    + rule_exists(ops, frh, tb, rule)) {
    + err = -EEXIST;
    goto errout_free;
    }


    \
     
     \ /
      Last update: 2019-06-09 19:19    [W:4.502 / U:0.144 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site