Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp41666imu; Thu, 8 Nov 2018 14:24:54 -0800 (PST) X-Google-Smtp-Source: AJdET5foyRG/kIbeZn0RhlpnoQXf3Nc3EvMQn5RUfl7Af8vB1fuieUenxxuDgMVraHDwZ+LO2X0h X-Received: by 2002:a63:2109:: with SMTP id h9mr5251054pgh.277.1541715894318; Thu, 08 Nov 2018 14:24:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1541715894; cv=none; d=google.com; s=arc-20160816; b=n589fd9QlYhn/2h9ZQVOoGz8bDNQGZNdvyMgLZzqCJhxkT+1yXUF7B4p/mgQ+NqGua Qxvfk1gIa4nrnh+S3Pa6WkKhA+vOgftZp93DKONKrM2QFEu8feKZTeDIleltXXXVLiTs KzQJy7wwxiS1uzuHl47PcUwI/iHTujtRPFSppZPymkAtAYsC6D8cG/q1crtDor653NsC SZwiKbd999JiuXYtDt+FK6orLkmcuADCJXQYdCDbbwBeERq34k/3t9RlCpxnHilXmKA5 8kg3OSeQxh7SXuCCiMS0I23t/0lX5MSoi1gh2r7wMEueqyXktRx2cVUzBAsb/d4k2bax PbMQ== 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=MJedwipJR5m5aLUFI2Yfu3C3ZIjVxFQo+iPxfcD66EM=; b=C+tRsnyaT+d6q3ijTdWxvUu1pwHtU5VnVp7HMVkIOxwBAA5HPTSOhh0D9OtihyL/on pMEJHa35urBS8LFxXu4dGDvfQL1LL2CMGXfLpquwsQdObRPFW+ghYMUSK5JlpU6O1YsK SQOxeC55RkOUj7IS1iKkWRbAKMT5h4X/QuJWU/CElEWJnvPXtfcwdQeqIJ/IxoAqg0ao As8T+JGcIQstQtUU59+/uEuv1l634Q6fhl85mIMf45teuTY8pzPIkcpbnhHjZqZ5ysec TD/127tghC+603MeJtl8UF9bXPHPIL6xL6Slk67xvRxUQsPzE7eZfaNjRwdDZ6F6jPV6 hd/A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=mNS24iHX; 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 v18-v6si5885716pfa.3.2018.11.08.14.24.34; Thu, 08 Nov 2018 14:24:54 -0800 (PST) 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=mNS24iHX; 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 S1731550AbeKIHmi (ORCPT + 99 others); Fri, 9 Nov 2018 02:42:38 -0500 Received: from mail.kernel.org ([198.145.29.99]:34514 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729920AbeKIHmh (ORCPT ); Fri, 9 Nov 2018 02:42:37 -0500 Received: from localhost (unknown [208.72.13.198]) (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 1B69F208A3; Thu, 8 Nov 2018 22:05:07 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1541714707; bh=o54vluqQ5Fg8bJcCmiuPRN7paIhVBFw+bcLG3H6vm6U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=mNS24iHX7bcULiBerH3E+QUdOJO345ChrRM4NhqNkkIaj82P6lmmtNU56DjO8VGGU H2+GmzIo1jaUKHYQTHclwUU1nMiABDvVcP9hWnKtOq4BgGbaecz75c2NjLPu3oWroB AzE5R3V9y4Posymanzsbbn9SVvFW8fElBwsV3608= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Bob Peterson , Herbert Xu , "David S. Miller" , Sasha Levin Subject: [PATCH 4.9 052/171] tipc: Fix tipc_sk_reinit handling of -EAGAIN Date: Thu, 8 Nov 2018 13:50:22 -0800 Message-Id: <20181108215131.285116345@linuxfoundation.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181108215127.257643509@linuxfoundation.org> References: <20181108215127.257643509@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review 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.9-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 6c7e983b220f89e03286dc70a41c7ef3a8b409df ] In 9dbbfb0ab6680c6a85609041011484e6658e7d3c function tipc_sk_reinit had additional logic added to loop in the event that function rhashtable_walk_next() returned -EAGAIN. No worries. However, if rhashtable_walk_start returns -EAGAIN, it does "continue", and therefore skips the call to rhashtable_walk_stop(). That has the effect of calling rcu_read_lock() without its paired call to rcu_read_unlock(). Since rcu_read_lock() may be nested, the problem may not be apparent for a while, especially since resize events may be rare. But the comments to rhashtable_walk_start() state: * ...Note that we take the RCU lock in all * cases including when we return an error. So you must always call * rhashtable_walk_stop to clean up. This patch replaces the continue with a goto and label to ensure a matching call to rhashtable_walk_stop(). Signed-off-by: Bob Peterson Acked-by: Herbert Xu Signed-off-by: David S. Miller Signed-off-by: Sasha Levin --- net/tipc/socket.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/tipc/socket.c b/net/tipc/socket.c index 25bc5c30d7fb..9d3f047305ce 100644 --- a/net/tipc/socket.c +++ b/net/tipc/socket.c @@ -2277,8 +2277,8 @@ void tipc_sk_reinit(struct net *net) do { tsk = ERR_PTR(rhashtable_walk_start(&iter)); - if (tsk) - continue; + if (IS_ERR(tsk)) + goto walk_stop; while ((tsk = rhashtable_walk_next(&iter)) && !IS_ERR(tsk)) { spin_lock_bh(&tsk->sk.sk_lock.slock); @@ -2287,7 +2287,7 @@ void tipc_sk_reinit(struct net *net) msg_set_orignode(msg, tn->own_addr); spin_unlock_bh(&tsk->sk.sk_lock.slock); } - +walk_stop: rhashtable_walk_stop(&iter); } while (tsk == ERR_PTR(-EAGAIN)); } -- 2.17.1