Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp4539591imm; Mon, 17 Sep 2018 16:07:51 -0700 (PDT) X-Google-Smtp-Source: ANB0VdZIO2Wz4iW9mOqcWAyf2G3IOudsgsQ3UyrGPPgKA9WAuFOIy2WOQdl3H89HyDspX09bml7P X-Received: by 2002:a62:da0b:: with SMTP id c11-v6mr28053375pfh.68.1537225671226; Mon, 17 Sep 2018 16:07:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1537225671; cv=none; d=google.com; s=arc-20160816; b=h9MQZtM1XR+Oas4JkdZk3NZIvjkYT1NHWbeTVk/svIP6zufmnhVjuhsG9dyzf7dSVy eCnmF4oKokdN0LEv8izRLp1XIxaYweRqPFFe5RLcdqkEm0Co8OKKXhWFl5UBBriuthH0 pE4vG92b5N2/BUr5FX6nCCpg79KPW4P0nbIefEpMdP+pYnLcbxPyRodUmkqTRE1hf0DP amQQRhgf5K6xBw9+o82+ip1ccdDC2W55sd0+rSh3aI7UKKIAW9EYe5oEtuXKyAGos59Z ke0LD5nS/QHbB+/lb8Z+/g2drlL94hQB2owocRBhMIJLZyO5vFkTUKErMZBxqYIpXiPc ecag== 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; bh=cWDgwk0+ouCsY2y1PNXKX6rLAtKWvxEpAxekgZDXCLU=; b=uSW5jj0+oSkW4QBT4WVGZABwSAqSwSdL3sSOGzcPIszwYb3IYwuVWLb4W6WbXeh+GX atn13mHt2B0jO/7VBmWm3Ildi9qGFODr3N3JG1V4YJ+Xk8E4hI7FWJOnWHJowP8bQ1VK bzToU4OykeZp0C6VEwQ7ywO9+cEDpCimf0pczYRbynvfOc/e/rpIRBWHKzS24lJPRm2B zWRSH+dAaSNnEnLrPDKlnh7DWZkcQlw4WX4JNOrQjBBveMhTdofkee6Uf791ceZQDOSW 6DYzpdzQGyT5LZgDFqgvri3OEWz/uBg2j9bjw7CbvQVqHdEwYSDr/K0Xt5K8oujYvwyR 6YkQ== 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 b3-v6si16897886plc.502.2018.09.17.16.07.32; Mon, 17 Sep 2018 16:07:51 -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 S1731236AbeIREfn (ORCPT + 99 others); Tue, 18 Sep 2018 00:35:43 -0400 Received: from mail.linuxfoundation.org ([140.211.169.12]:49458 "EHLO mail.linuxfoundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728677AbeIREfn (ORCPT ); Tue, 18 Sep 2018 00:35:43 -0400 Received: from localhost (li1825-44.members.linode.com [172.104.248.44]) by mail.linuxfoundation.org (Postfix) with ESMTPSA id B6416C49; Mon, 17 Sep 2018 23:06:13 +0000 (UTC) From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Trond Myklebust , Sasha Levin Subject: [PATCH 4.14 088/126] NFSv4.1: Fix a potential layoutget/layoutrecall deadlock Date: Tue, 18 Sep 2018 00:42:16 +0200 Message-Id: <20180917211709.801525671@linuxfoundation.org> X-Mailer: git-send-email 2.19.0 In-Reply-To: <20180917211703.481236999@linuxfoundation.org> References: <20180917211703.481236999@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.14-stable review patch. If anyone has any objections, please let me know. ------------------ From: Trond Myklebust [ Upstream commit bd3d16a887b0c19a2a20d35ffed499e3a3637feb ] If the client is sending a layoutget, but the server issues a callback to recall what it thinks may be an outstanding layout, then we may find an uninitialised layout attached to the inode due to the layoutget. In that case, it is appropriate to return NFS4ERR_NOMATCHING_LAYOUT rather than NFS4ERR_DELAY, as the latter can end up deadlocking. Signed-off-by: Trond Myklebust Signed-off-by: Sasha Levin Signed-off-by: Greg Kroah-Hartman --- fs/nfs/callback_proc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- a/fs/nfs/callback_proc.c +++ b/fs/nfs/callback_proc.c @@ -213,9 +213,9 @@ static u32 pnfs_check_callback_stateid(s { u32 oldseq, newseq; - /* Is the stateid still not initialised? */ + /* Is the stateid not initialised? */ if (!pnfs_layout_is_valid(lo)) - return NFS4ERR_DELAY; + return NFS4ERR_NOMATCHING_LAYOUT; /* Mismatched stateid? */ if (!nfs4_stateid_match_other(&lo->plh_stateid, new))