lkml.org 
[lkml]   [2021]   [Sep]   [9]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.13 024/219] netlink: Deal with ESRCH error in nlmsg_notify()
    Date
    From: Yajun Deng <yajun.deng@linux.dev>

    [ Upstream commit fef773fc8110d8124c73a5e6610f89e52814637d ]

    Yonghong Song report:
    The bpf selftest tc_bpf failed with latest bpf-next.
    The following is the command to run and the result:
    $ ./test_progs -n 132
    [ 40.947571] bpf_testmod: loading out-of-tree module taints kernel.
    test_tc_bpf:PASS:test_tc_bpf__open_and_load 0 nsec
    test_tc_bpf:PASS:bpf_tc_hook_create(BPF_TC_INGRESS) 0 nsec
    test_tc_bpf:PASS:bpf_tc_hook_create invalid hook.attach_point 0 nsec
    test_tc_bpf_basic:PASS:bpf_obj_get_info_by_fd 0 nsec
    test_tc_bpf_basic:PASS:bpf_tc_attach 0 nsec
    test_tc_bpf_basic:PASS:handle set 0 nsec
    test_tc_bpf_basic:PASS:priority set 0 nsec
    test_tc_bpf_basic:PASS:prog_id set 0 nsec
    test_tc_bpf_basic:PASS:bpf_tc_attach replace mode 0 nsec
    test_tc_bpf_basic:PASS:bpf_tc_query 0 nsec
    test_tc_bpf_basic:PASS:handle set 0 nsec
    test_tc_bpf_basic:PASS:priority set 0 nsec
    test_tc_bpf_basic:PASS:prog_id set 0 nsec
    libbpf: Kernel error message: Failed to send filter delete notification
    test_tc_bpf_basic:FAIL:bpf_tc_detach unexpected error: -3 (errno 3)
    test_tc_bpf:FAIL:test_tc_internal ingress unexpected error: -3 (errno 3)

    The failure seems due to the commit
    cfdf0d9ae75b ("rtnetlink: use nlmsg_notify() in rtnetlink_send()")

    Deal with ESRCH error in nlmsg_notify() even the report variable is zero.

    Reported-by: Yonghong Song <yhs@fb.com>
    Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
    Link: https://lore.kernel.org/r/20210719051816.11762-1-yajun.deng@linux.dev
    Signed-off-by: Jakub Kicinski <kuba@kernel.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    net/netlink/af_netlink.c | 4 +++-
    1 file changed, 3 insertions(+), 1 deletion(-)

    diff --git a/net/netlink/af_netlink.c b/net/netlink/af_netlink.c
    index 6133e412b948..b9ed16ff09c1 100644
    --- a/net/netlink/af_netlink.c
    +++ b/net/netlink/af_netlink.c
    @@ -2545,13 +2545,15 @@ int nlmsg_notify(struct sock *sk, struct sk_buff *skb, u32 portid,
    /* errors reported via destination sk->sk_err, but propagate
    * delivery errors if NETLINK_BROADCAST_ERROR flag is set */
    err = nlmsg_multicast(sk, skb, exclude_portid, group, flags);
    + if (err == -ESRCH)
    + err = 0;
    }

    if (report) {
    int err2;

    err2 = nlmsg_unicast(sk, skb, portid);
    - if (!err || err == -ESRCH)
    + if (!err)
    err = err2;
    }

    --
    2.30.2
    \
     
     \ /
      Last update: 2021-09-09 14:13    [W:3.767 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site