Received: by 10.213.65.68 with SMTP id h4csp1801836imn; Thu, 29 Mar 2018 11:17:30 -0700 (PDT) X-Google-Smtp-Source: AIpwx4/CAeeGeFLrB3Pg3IhGHuwzLCj0iQqJuE3vDOCQFNF2+HrH9NIudBp9lRk2S/pERNKT6FhY X-Received: by 10.101.97.15 with SMTP id z15mr6231344pgu.393.1522347450806; Thu, 29 Mar 2018 11:17:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1522347450; cv=none; d=google.com; s=arc-20160816; b=Hx2BcTlO2wO4/rxgIcpgKvXG+Chwf6wKdXwg93g9TTXKSNI6Vo6EYol5Z4jHUoMrpR Kz8YQ6nLT3iyleDE0pYQkbT6LZyTspXTgW37uV+PTalIrXu3nR1rKYc5yyXjo5TIAQEV PdjoTzM2EuGJ0NkVmd54Qju63SiIRvIEqc9blymHhlYGBQ3qwicoNRdVi/l1p/0jQdQp 8hi24GQ3Wgx3Kf+wXGqdVvP/yc6wIn8Eerios4SQktepekKxnDpTuZjZtr5I6SmyT5ir fE0LHiZzhrXafa2rnL5fbyV61eYm3Sw1NWWUHnm1HJ18gFag9p9Mm8afCb2w4H7kPEGe DJhw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:user-agent:references :in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=5BdZZ6+b3tB9kOVOw/YX5N1EKWvvEPTAKYuwFKSGdXw=; b=lHlTcPZyY938H+u8cHToBfgg/ND2YgaDpzyeBMjNrMTOZwVnBgYlFiMXWp/5T1M6lH m9QZzKQWRFtYJx36Ua735vXHymVvn257EVBvvvDWmCHunvlB6NgC/cL3n+QqfNvlu1qY EEptPyQoL9F6kGzSCnjhoex4EXytc3dQQXUB5A11PrBjcVMolTazgJoMxTfkIMj+5FJx YAVclAei5G/p3t4kJAF/yh0SVZ/6SKfj3jgVwel/UCQLtNsshrvj+yHKorFTixvXZQCS Fmf+e9qqMgxEsvolBGYPBqOUtKZ1nOTxDDm29XfPy/Y6o8TgzSavSoFphL0wbyPPgKbh lN3w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id a59-v6si6204009plc.370.2018.03.29.11.17.16; Thu, 29 Mar 2018 11:17:30 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753967AbeC2SHS (ORCPT + 99 others); Thu, 29 Mar 2018 14:07:18 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:59936 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753903AbeC2SHQ (ORCPT ); Thu, 29 Mar 2018 14:07:16 -0400 Received: from localhost (LFbn-1-12247-202.w90-92.abo.wanadoo.fr [90.92.61.202]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id 7485C9C5; Thu, 29 Mar 2018 18:07:15 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Paul Blakey , Herbert Xu , "David S. Miller" Subject: [PATCH 4.9 05/28] rhashtable: Fix rhlist duplicates insertion Date: Thu, 29 Mar 2018 20:00:24 +0200 Message-Id: <20180329175734.116913018@linuxfoundation.org> X-Mailer: git-send-email 2.16.3 In-Reply-To: <20180329175733.447823703@linuxfoundation.org> References: <20180329175733.447823703@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.9-stable review patch. If anyone has any objections, please let me know. ------------------ From: Paul Blakey [ Upstream commit d3dcf8eb615537526bd42ff27a081d46d337816e ] When inserting duplicate objects (those with the same key), current rhlist implementation messes up the chain pointers by updating the bucket pointer instead of prev next pointer to the newly inserted node. This causes missing elements on removal and travesal. Fix that by properly updating pprev pointer to point to the correct rhash_head next pointer. Issue: 1241076 Change-Id: I86b2c140bcb4aeb10b70a72a267ff590bb2b17e7 Fixes: ca26893f05e8 ('rhashtable: Add rhlist interface') Signed-off-by: Paul Blakey Acked-by: Herbert Xu Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- include/linux/rhashtable.h | 4 +++- lib/rhashtable.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) --- a/include/linux/rhashtable.h +++ b/include/linux/rhashtable.h @@ -706,8 +706,10 @@ slow_path: if (!key || (params.obj_cmpfn ? params.obj_cmpfn(&arg, rht_obj(ht, head)) : - rhashtable_compare(&arg, rht_obj(ht, head)))) + rhashtable_compare(&arg, rht_obj(ht, head)))) { + pprev = &head->next; continue; + } data = rht_obj(ht, head); --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -448,8 +448,10 @@ static void *rhashtable_lookup_one(struc if (!key || (ht->p.obj_cmpfn ? ht->p.obj_cmpfn(&arg, rht_obj(ht, head)) : - rhashtable_compare(&arg, rht_obj(ht, head)))) + rhashtable_compare(&arg, rht_obj(ht, head)))) { + pprev = &head->next; continue; + } if (!ht->rhlist) return rht_obj(ht, head);