Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp528136yba; Mon, 1 Apr 2019 11:07:08 -0700 (PDT) X-Google-Smtp-Source: APXvYqzvL0UUGiuNon3U8LIk1YOcmCCzHMzBZr3WkC7n9OuecqRPwmh4fDobSYG6RDl0zcDWXlzT X-Received: by 2002:a62:4290:: with SMTP id h16mr64065964pfd.8.1554142028690; Mon, 01 Apr 2019 11:07:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1554142028; cv=none; d=google.com; s=arc-20160816; b=H1gLZB4Ia6TXHGZkszbUVkMzsvLn2KXTCcqKK06lyefRNBLsWMOcXSF45Oqp2hY9vG QBVXsVOa3DgUOFtvhXmlWOQXn/Esyy/txUCRq6SiJUZGNpBrv2WZe15SDP0Vv0cgyufI TBpFQmEnbI9L2sx7C0kxmT8Eni1rYF3Xhap6RWaSkXVA40rLaj4twQOpgwNhjG+FJu60 hX1iyCeOQspeWfwdrDnE/0cAnu1ebyWN2P8EEdlSjT8wJpAVitA4CYz5+DIooqhIAf/t /5xiWCs9k8XxNwuCk2vS/4PfoMgxGX3KvxiQbn9YfuOGk0SYPlMHhSZ4fFXUc7E4kIib 8niw== 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=YQgPFaW2bxx9Rff5X04ZOVRez5C7VTcJDj9CPmfTzGQ=; b=AuXHocIjRXO1QVj6nPrA/pBeGP0Z/YeJmI4h2DN1GSaCKIe914oqd2W7a0jIL6BoRV vXneV++50qqM95VUfkRg3WnAIqnTugYiX+ZXTz07vkQJCcbQWuXhV2Rwx5bqFPsnXpEZ 0VqdtuerZzy6fBJGgfi6kBwHI8Uo+hgu93yTzL6SNFUrTZaXcdhwVs5zn0jrK82X0rY9 9D+q7eOl0RCDbsBv/WgzKfOXVBMWNcBgG1Yhsr0rg0JVEFFVU9dPkjD1D3s04C9dtN76 d/jEoA0A4PBlFZJMOobGk/uXuiAKcVXIfGIyLmVNiI8gNmtQYQutxxcy87mSWXWaJenP mlJw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=a1bwrFJa; 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 s5si9080180plr.307.2019.04.01.11.06.52; Mon, 01 Apr 2019 11:07:08 -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=a1bwrFJa; 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 S1730212AbfDASGT (ORCPT + 99 others); Mon, 1 Apr 2019 14:06:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:34990 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729542AbfDARM5 (ORCPT ); Mon, 1 Apr 2019 13:12:57 -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 23AFA20883; Mon, 1 Apr 2019 17:12:55 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1554138776; bh=t+Tlm/kpfL97NuEjXm2QbOfF7qXQgWgO46UA0YnYV80=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=a1bwrFJaCFZ2FLJkCqFTMXSjjTlao6C0T3gbTeQDcJzWqPxBH1qjdrUpgLgV5QN0u jvQDOJTy5cwSvEFF5Me2aOUbXId4nh2AD/9rmW7nwmFJpy/vQT1sj9wV0CPSeWZIpG B5PiM2M3GYv6igmOAvYeYvhTjIH1eIni2XYakxJo= 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.19 018/134] rhashtable: Still do rehash when we get EEXIST Date: Mon, 1 Apr 2019 19:00:54 +0200 Message-Id: <20190401170046.285097671@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190401170044.243719205@linuxfoundation.org> References: <20190401170044.243719205@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.19-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 @@ -416,8 +416,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);