Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp491888yba; Mon, 1 Apr 2019 10:22:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqwS71jmS3Ov8RyOAh+2i3GCBjA/HoQoNax8R0V0Jeqh0M4BHiD9eGuXUPVNg6plHlGM2R2O X-Received: by 2002:a63:6c87:: with SMTP id h129mr62497138pgc.190.1554139324152; Mon, 01 Apr 2019 10:22:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554139324; cv=none; d=google.com; s=arc-20160816; b=T8I94lP7z54pNTSFE2UE6nfMNiZe18EvkTlgDZDlQJupA6qStvOaVwsy/F2V+wg2Qe kKoEjletgXKfKLSTPtEcX2NAHsfZfj+lseZI/Wr9UttfxMMXtcesDtjU8ha+6KRsKmMC qsWQn2Z+ZNttcnrXR1zHdh6zwfijZmm+2uSGCS0zQL6WgFf9CB6LMm3Hbsia+robH71S NDrJqrEbQYh+V5LGFD+SodREC7r36KmG18bLWGKDGhklhB6mI5YFZ4zEk53UC/62vtsR /KUV/hNxbtqlDL1tt9J43f+dkDgjqKrar50QbD0fguaqvWvnGRh0laPr95beA4u7HK9z 5MTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=qd7UI/HqAgUz5HP1uC0tmWSwHUoBPu0EfHri0P9OSX0=; b=km2OvO9d5XZzB94zTCnBzwRbHeHixJScQM7fGMyvEF+bVTy2hWKpRnn2wmnFcIVir5 DyJ4+noaCE+D404MmQ+AHDNYwT9yOt7SAlTXoMLd8nGpJ6zgCp22M2ykt3JN+s9Ouau/ IVk0bhGiqm+SsxX1dPE39DLL3xthK8PiV8NSdAhibLZhaUB/VV4gAm1gDpzcG0yRTqiW NLcJVCp0YDMcYQ/aGa/INQ5YGFVkT4Jij0EQEtXVnzcWKCPUnclOtZNTHtQXhop2QqPS GrFKPbeDq4zClDmCouiQe+n7lS7eIysSBnKRfLSuOXJJHu9TatlC3uvyfF29qQUwCoGB bMcg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=ji50ZanL; 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 r82si9088587pfa.252.2019.04.01.10.21.48; Mon, 01 Apr 2019 10:22:04 -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; dkim=pass header.i=@kernel.org header.s=default header.b=ji50ZanL; 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 S1731650AbfDARU1 (ORCPT + 99 others); Mon, 1 Apr 2019 13:20:27 -0400 Received: from mail.kernel.org ([198.145.29.99]:48576 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1731638AbfDARUY (ORCPT ); Mon, 1 Apr 2019 13:20:24 -0400 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 9F076206C0; Mon, 1 Apr 2019 17:20:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554139224; bh=/Oa42ootfa3ePucnBBTmLbvfgR9umwGL0Djqk/EGRn8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ji50ZanL5sdMgKiIGkwLqqSMrF4mlbsmuUthKMF5PQH3xW9XffRBUiOzoihl5eK9/ KwCrtk1p56p522r5XyeL64/xEfP2SUj4hrAq+ryJt0D5iNmd7hlIIM1shByk+xUwMG AlO2BZDOwB9ZpCBPeRrT5KQwGXNSGPeW8oRKSkhM= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Josh Elsasser , Herbert Xu , "David S. Miller" Subject: [PATCH 4.14 014/107] rhashtable: Still do rehash when we get EEXIST Date: Mon, 1 Apr 2019 19:01:29 +0200 Message-Id: <20190401170046.831657502@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401170045.246405031@linuxfoundation.org> References: <20190401170045.246405031@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Herbert Xu [ Upstream commit 408f13ef358aa5ad56dc6230c2c7deb92cf462b1 ] As it stands if a shrink is delayed because of an outstanding rehash, we will go into a rescheduling loop without ever doing the rehash. This patch fixes this by still carrying out the rehash and then rescheduling so that we can shrink after the completion of the rehash should it still be necessary. The return value of EEXIST captures this case and other cases (e.g., another thread expanded/rehashed the table at the same time) where we should still proceed with the rehash. Fixes: da20420f83ea ("rhashtable: Add nested tables") Reported-by: Josh Elsasser Signed-off-by: Herbert Xu Tested-by: Josh Elsasser Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- lib/rhashtable.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) --- a/lib/rhashtable.c +++ b/lib/rhashtable.c @@ -459,8 +459,12 @@ static void rht_deferred_worker(struct w else if (tbl->nest) err = rhashtable_rehash_alloc(ht, tbl, tbl->size); - if (!err) - err = rhashtable_rehash_table(ht); + if (!err || err == -EEXIST) { + int nerr; + + nerr = rhashtable_rehash_table(ht); + err = err ?: nerr; + } mutex_unlock(&ht->mutex);