{"id":808995,"url":"http://patchwork.ozlabs.org/api/patches/808995/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/patch/1504299812.15310.26.camel@edumazet-glaptop3.roam.corp.google.com/","project":{"id":7,"url":"http://patchwork.ozlabs.org/api/projects/7/?format=json","name":"Linux network development","link_name":"netdev","list_id":"netdev.vger.kernel.org","list_email":"netdev@vger.kernel.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<1504299812.15310.26.camel@edumazet-glaptop3.roam.corp.google.com>","list_archive_url":null,"date":"2017-09-01T21:03:32","name":"[net-next] inetpeer: fix RCU lookup()","commit_ref":null,"pull_url":null,"state":"accepted","archived":true,"hash":"1b7bed742935d48aa1d61e0c120ce139e5b3739c","submitter":{"id":2404,"url":"http://patchwork.ozlabs.org/api/people/2404/?format=json","name":"Eric Dumazet","email":"eric.dumazet@gmail.com"},"delegate":{"id":34,"url":"http://patchwork.ozlabs.org/api/users/34/?format=json","username":"davem","first_name":"David","last_name":"Miller","email":"davem@davemloft.net"},"mbox":"http://patchwork.ozlabs.org/project/netdev/patch/1504299812.15310.26.camel@edumazet-glaptop3.roam.corp.google.com/mbox/","series":[{"id":1114,"url":"http://patchwork.ozlabs.org/api/series/1114/?format=json","web_url":"http://patchwork.ozlabs.org/project/netdev/list/?series=1114","date":"2017-09-01T21:03:32","name":"[net-next] inetpeer: fix RCU lookup()","version":1,"mbox":"http://patchwork.ozlabs.org/series/1114/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/808995/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/808995/checks/","tags":{},"related":[],"headers":{"Return-Path":"<netdev-owner@vger.kernel.org>","X-Original-To":"patchwork-incoming@ozlabs.org","Delivered-To":"patchwork-incoming@ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=none (mailfrom) smtp.mailfrom=vger.kernel.org\n\t(client-ip=209.132.180.67; helo=vger.kernel.org;\n\tenvelope-from=netdev-owner@vger.kernel.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (2048-bit key;\n\tunprotected) header.d=gmail.com header.i=@gmail.com\n\theader.b=\"QWOuq2At\"; dkim-atps=neutral"],"Received":["from vger.kernel.org (vger.kernel.org [209.132.180.67])\n\tby ozlabs.org (Postfix) with ESMTP id 3xkWtd5X3Qz9sNr\n\tfor <patchwork-incoming@ozlabs.org>;\n\tSat,  2 Sep 2017 07:03:37 +1000 (AEST)","(majordomo@vger.kernel.org) by vger.kernel.org via listexpand\n\tid S1752554AbdIAVDf (ORCPT <rfc822;patchwork-incoming@ozlabs.org>);\n\tFri, 1 Sep 2017 17:03:35 -0400","from mail-pg0-f67.google.com ([74.125.83.67]:37822 \"EHLO\n\tmail-pg0-f67.google.com\" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\n\twith ESMTP id S1752436AbdIAVDe (ORCPT\n\t<rfc822;netdev@vger.kernel.org>); Fri, 1 Sep 2017 17:03:34 -0400","by mail-pg0-f67.google.com with SMTP id t193so773159pgc.4\n\tfor <netdev@vger.kernel.org>; Fri, 01 Sep 2017 14:03:34 -0700 (PDT)","from [192.168.86.171] (c-67-180-167-114.hsd1.ca.comcast.net.\n\t[67.180.167.114]) by smtp.googlemail.com with ESMTPSA id\n\td6sm1224984pfh.113.2017.09.01.14.03.33\n\t(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);\n\tFri, 01 Sep 2017 14:03:33 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=gmail.com; s=20161025;\n\th=message-id:subject:from:to:cc:date:mime-version\n\t:content-transfer-encoding;\n\tbh=VGDVHJy3bKb/6XEtxxvKrUI3kfWfu01yBdAupCKu7Mc=;\n\tb=QWOuq2AtpI/Eb+8sfK2+Dnl1FrTUEKwvCpPFQbnK4wGRmA9Wr124vbr8+/nIF/DmkG\n\tKnJmXsuw95P1awIx4YEhVc3Bn/ItqhKI6YA5zlKhp9Lu0yvfLH8q92UmzZE56X4taVEB\n\tfaLRK4PYuAiLhbGv1f8AqVM4oeiygTcqcku06hXxfMBTWr1qGy9mhbt03/bXA220SAgb\n\t5ic/OkKuqM5ogf0+/QxcG1uUQfgDquCMs2Au3z53GaslxPhKbcWhOrx1b2WI8xIvsH+w\n\tF7k8329Cwonf/2gsit3vcpN+70GSqoIwIq+Z7hQQ8ryzQWDCqwMMqGksxPrZ1QVIM93J\n\t5s0A==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:message-id:subject:from:to:cc:date:mime-version\n\t:content-transfer-encoding;\n\tbh=VGDVHJy3bKb/6XEtxxvKrUI3kfWfu01yBdAupCKu7Mc=;\n\tb=H1WClNEqmZsYlhPmj4PHj5CK3ppOVG0yf3fu76yRWn5/HXuKTxFW36rBnyKAUsPp6+\n\tMFfsJmlzcSL0RMn6xl5zFEwZww+4Sr0kgQ66+/Y35mJlTrP5Q/SEYz4o7cBawO2/BTNi\n\tND+o5hGpaWhWijAnbsNOaXSiZhXAAa5vlLlPq1FCHA9PNA0EvmtxH6gUqEmvCpPpzvRT\n\tCWA/mIo8nZCW/9D/5VCkyTfM+Gu6f0yKDB2SVhSIOEK3UDt80bC+7jfo88xbxtRTHkfV\n\tioSMYXo3/+bWaRG6MCQkkr4o+lsCRgGBpNec4mNLhwMJ1j0Q4reVKrN5544j+lq0Ovjo\n\tjgkg==","X-Gm-Message-State":"AHPjjUgQ3scXLIrz+aNYIfUj9SsrWB61YdtqB7h4K7AGkeyHYO6bkP0s\n\toJC0GFzSbzDjSB8C","X-Google-Smtp-Source":"ADKCNb7bUdf0miLUSi5AtQ22NJtY/S6jba4wGiKmDDozBvCTV5pgZ8fIWqYC9ZWLNBKJ1Zl4DrUA5A==","X-Received":"by 10.84.237.15 with SMTP id s15mr3861834plk.69.1504299813861;\n\tFri, 01 Sep 2017 14:03:33 -0700 (PDT)","Message-ID":"<1504299812.15310.26.camel@edumazet-glaptop3.roam.corp.google.com>","Subject":"[PATCH net-next] inetpeer: fix RCU lookup()","From":"Eric Dumazet <eric.dumazet@gmail.com>","To":"David Miller <davem@davemloft.net>","Cc":"netdev <netdev@vger.kernel.org>","Date":"Fri, 01 Sep 2017 14:03:32 -0700","Content-Type":"text/plain; charset=\"UTF-8\"","X-Mailer":"Evolution 3.10.4-0ubuntu2 ","Mime-Version":"1.0","Content-Transfer-Encoding":"7bit","Sender":"netdev-owner@vger.kernel.org","Precedence":"bulk","List-ID":"<netdev.vger.kernel.org>","X-Mailing-List":"netdev@vger.kernel.org"},"content":"From: Eric Dumazet <edumazet@google.com>\n\nExcess of seafood or something happened while I cooked the commit\nadding RB tree to inetpeer.\n\nOf course, RCU rules need to be respected or bad things can happen.\n\nIn this particular loop, we need to read *pp once per iteration, not\ntwice.\n\nFixes: b145425f269a (\"inetpeer: remove AVL implementation in favor of RB tree\")\nReported-by: John Sperbeck <jsperbeck@google.com>\nSigned-off-by: Eric Dumazet <edumazet@google.com>\n---\n net/ipv4/inetpeer.c |    9 ++++++---\n 1 file changed, 6 insertions(+), 3 deletions(-)","diff":"diff --git a/net/ipv4/inetpeer.c b/net/ipv4/inetpeer.c\nindex 337ad41bb80a5fcd3db7ac674292c5b5d462982e..e7eb590c86ce2b33654c17c61619de74ff07bfd1 100644\n--- a/net/ipv4/inetpeer.c\n+++ b/net/ipv4/inetpeer.c\n@@ -102,15 +102,18 @@ static struct inet_peer *lookup(const struct inetpeer_addr *daddr,\n \t\t\t\tstruct rb_node **parent_p,\n \t\t\t\tstruct rb_node ***pp_p)\n {\n-\tstruct rb_node **pp, *parent;\n+\tstruct rb_node **pp, *parent, *next;\n \tstruct inet_peer *p;\n \n \tpp = &base->rb_root.rb_node;\n \tparent = NULL;\n-\twhile (*pp) {\n+\twhile (1) {\n \t\tint cmp;\n \n-\t\tparent = rcu_dereference_raw(*pp);\n+\t\tnext = rcu_dereference_raw(*pp);\n+\t\tif (!next)\n+\t\t\tbreak;\n+\t\tparent = next;\n \t\tp = rb_entry(parent, struct inet_peer, rb_node);\n \t\tcmp = inetpeer_addr_cmp(daddr, &p->daddr);\n \t\tif (cmp == 0) {\n","prefixes":["net-next"]}