From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.linuxfoundation.org ([140.211.169.12]:49928 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932615AbcIEO3t (ORCPT ); Mon, 5 Sep 2016 10:29:49 -0400 Subject: Patch "SUNRPC: Fix infinite looping in rpc_clnt_iterate_for_each_xprt" has been added to the 4.7-stable tree To: trond.myklebust@primarydata.com, green@linuxhacker.ru, gregkh@linuxfoundation.org, tibbs@math.uh.edu Cc: , From: Date: Mon, 05 Sep 2016 16:29:26 +0200 Message-ID: <1473085766243131@kroah.com> MIME-Version: 1.0 Content-Type: text/plain; charset=ANSI_X3.4-1968 Content-Transfer-Encoding: 8bit Sender: stable-owner@vger.kernel.org List-ID: This is a note to let you know that I've just added the patch titled SUNRPC: Fix infinite looping in rpc_clnt_iterate_for_each_xprt to the 4.7-stable tree which can be found at: http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary The filename of the patch is: sunrpc-fix-infinite-looping-in-rpc_clnt_iterate_for_each_xprt.patch and it can be found in the queue-4.7 subdirectory. If you, or anyone else, feels it should not be added to the stable tree, please let know about it. >>From bdc54d8e3cb4a41dddcabfd86d9eb3aa5f622b75 Mon Sep 17 00:00:00 2001 From: Trond Myklebust Date: Sat, 16 Jul 2016 11:47:00 -0400 Subject: SUNRPC: Fix infinite looping in rpc_clnt_iterate_for_each_xprt From: Trond Myklebust commit bdc54d8e3cb4a41dddcabfd86d9eb3aa5f622b75 upstream. If there were less than 2 entries in the multipath list, then xprt_iter_next_entry_multiple() would never advance beyond the first entry, which is correct for round robin behaviour, but not for the list iteration. The end result would be infinite looping in rpc_clnt_iterate_for_each_xprt() as we would never see the xprt == NULL condition fulfilled. Reported-by: Oleg Drokin Fixes: 80b14d5e61ca ("SUNRPC: Add a structure to track multiple transports") Signed-off-by: Trond Myklebust Cc: Jason L Tibbitts III Signed-off-by: Greg Kroah-Hartman --- net/sunrpc/xprtmultipath.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) --- a/net/sunrpc/xprtmultipath.c +++ b/net/sunrpc/xprtmultipath.c @@ -271,14 +271,12 @@ struct rpc_xprt *xprt_iter_next_entry_mu xprt_switch_find_xprt_t find_next) { struct rpc_xprt_switch *xps = rcu_dereference(xpi->xpi_xpswitch); - struct list_head *head; if (xps == NULL) return NULL; - head = &xps->xps_xprt_list; - if (xps->xps_nxprts < 2) - return xprt_switch_find_first_entry(head); - return xprt_switch_set_next_cursor(head, &xpi->xpi_cursor, find_next); + return xprt_switch_set_next_cursor(&xps->xps_xprt_list, + &xpi->xpi_cursor, + find_next); } static Patches currently in stable-queue which might be from trond.myklebust@primarydata.com are queue-4.7/sunrpc-fix-infinite-looping-in-rpc_clnt_iterate_for_each_xprt.patch queue-4.7/sunrpc-handle-eaddrnotavail-on-connection-failures.patch queue-4.7/sunrpc-allow-for-upcalls-for-same-uid-but-different-gss-service.patch