From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_PASS autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A23E6C04AA7 for ; Mon, 13 May 2019 22:01:09 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 55817208C3 for ; Mon, 13 May 2019 22:01:09 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="Ju4mEqg8" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726609AbfEMWBI (ORCPT ); Mon, 13 May 2019 18:01:08 -0400 Received: from mail-pg1-f193.google.com ([209.85.215.193]:42015 "EHLO mail-pg1-f193.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726413AbfEMWBH (ORCPT ); Mon, 13 May 2019 18:01:07 -0400 Received: by mail-pg1-f193.google.com with SMTP id 145so7454476pgg.9; Mon, 13 May 2019 15:01:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:message-id:date:user-agent:mime-version :in-reply-to:content-language:content-transfer-encoding; bh=BmohReTs8oe9mx36kGEB4VnDpcgr/j26VHR2MYQ6DXc=; b=Ju4mEqg8x5eYk6CHoWmkkEfGCg7glF/eJ8cLf3NnG25GPVs9B9/psWZdZWH0Z2S7C3 zz5mZ6JLp+tIFy6KJHdOtQzMJaGn278yLc2K79fcb/bZhgEz2GNOT7IhC40LbtBGGU84 IpS7AUKD5pgT3cSTg14JOTk48rIXnqAZL5QhUSIzFe8aH51Ti54BG64SLU9fx1dGhhqW pflESkGO1KdHsf2TYVyLIlFY021oxyEbi1rlpM0BnVUJniWtGFq65e1YAQpw4L9jWdjY 1AVe1WQAyQ6VaTs17k7fMnAT11oitfyiM96miZe3FhB7u5Q+NA4iFtEFKDc0/CrLAS8d aWPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=BmohReTs8oe9mx36kGEB4VnDpcgr/j26VHR2MYQ6DXc=; b=YTyBMKoGmCIPGv2qN+m+CaQYJI/7UEsKPnxxwDjcR3UaDuu8vUEwiuf91kZXesakJv XsQNf1p4Y3fOdZHihd2Z1jeBGzIiV6QbTb8UUQH2WkNKjPyoPserdRtiH0aZZNeXfJns jueOZfC/VZOasl8MXwHtuY4VuDA64mQFi56YrsSIWE+BOXfBltKjbFOkFjnNN+J554ST AlKE4BUY7MmlcS3qhIqN/OHhe60MdbDxvFV7ncblEyypKX50CkljF3ZJlBzf11Z4xmOn nFkR/dTWf7m04pKbDeFh70zXCYuYytb5d8oKILEL2ImnMK91Wnyhht1B5Lr9P6KGVets 7qGA== X-Gm-Message-State: APjAAAXe26yl1KBWNmmbHvocnsWZQU70CnpnUd3hFbpSNJEGVbnnhvZm xFIL1/U9+bht3WsTqS1DBEc= X-Google-Smtp-Source: APXvYqy81lzMO2bK11iOnpqqTUPG1iup+4E7SDIPadrSejRVtOHbQHeJx+VL6icdi3oI011wIa7fdg== X-Received: by 2002:a63:cf0d:: with SMTP id j13mr35216766pgg.433.1557784867236; Mon, 13 May 2019 15:01:07 -0700 (PDT) Received: from ?IPv6:2601:282:800:fd80:5dd:49d5:5580:adf5? ([2601:282:800:fd80:5dd:49d5:5580:adf5]) by smtp.googlemail.com with ESMTPSA id q27sm10385684pfg.49.2019.05.13.15.01.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 13 May 2019 15:01:06 -0700 (PDT) Subject: Re: getneigh: add nondump to retrieve single entry To: mcmahon@arista.com, davem@davemloft.net, roopa@cumulusnetworks.com, christian@brauner.io, khlebnikov@yandex-team.ru, lzgrablic@arista.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, mowat@arista.com, dmia@arista.com References: <20190513160335.24128-1-mcmahon@arista.com> From: David Ahern Message-ID: Date: Mon, 13 May 2019 16:01:04 -0600 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <20190513160335.24128-1-mcmahon@arista.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 5/13/19 10:03 AM, mcmahon@arista.com wrote: > diff --git a/net/core/neighbour.c b/net/core/neighbour.c > index 30f6fd8f68e0..981f1568710b 100644 > --- a/net/core/neighbour.c > +++ b/net/core/neighbour.c > +static int neigh_find_fill(struct neigh_table *tbl, const void *pkey, > + struct net_device *dev, struct sk_buff *skb, u32 pid, > + u32 seq) > +{ > + struct neighbour *neigh; > + int key_len = tbl->key_len; > + u32 hash_val; > + struct neigh_hash_table *nht; > + int err; reverse xmas tree ordering ... > +static int neigh_get(struct sk_buff *skb, struct nlmsghdr *nlh) > +{ > + struct net *net = sock_net(skb->sk); > + struct ndmsg *ndm; > + struct nlattr *dst_attr; > + struct neigh_table *tbl; > + struct net_device *dev = NULL; > + > + ASSERT_RTNL(); > + if (nlmsg_len(nlh) < sizeof(*ndm)) > + return -EINVAL; > + > + dst_attr = nlmsg_find_attr(nlh, sizeof(*ndm), NDA_DST); > + if (dst_attr == NULL) > + return -EINVAL; > + > + ndm = nlmsg_data(nlh); > + if (ndm->ndm_ifindex) { > + dev = __dev_get_by_index(net, ndm->ndm_ifindex); > + if (dev == NULL) > + return -ENODEV; > + } > + > + read_lock(&neigh_tbl_lock); this patch is clearly for a MUCH older kernel than 5.2 (like 3.18 maybe?) as that lock no longer exists. > + for (tbl = neigh_tables; tbl; tbl = tbl->next) { > + struct sk_buff *nskb; > + int err; > + > + if (tbl->family != ndm->ndm_family) > + continue; Use neigh_find_table. You need to update the patch to top of net-next tree and re-work the locking. Run tests with RCU and lock debugging enabled to make sure you have it right.