From patchwork Thu Jun 14 13:39:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anna Schumaker X-Patchwork-Id: 10464147 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 598B4601F9 for ; Thu, 14 Jun 2018 13:39:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 496A9289B6 for ; Thu, 14 Jun 2018 13:39:27 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3D076289F8; Thu, 14 Jun 2018 13:39:27 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.8 required=2.0 tests=BAYES_00, DKIM_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, MAILING_LIST_MULTI, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AE8D9289B6 for ; Thu, 14 Jun 2018 13:39:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754965AbeFNNjZ (ORCPT ); Thu, 14 Jun 2018 09:39:25 -0400 Received: from mail-it0-f66.google.com ([209.85.214.66]:55370 "EHLO mail-it0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754912AbeFNNjZ (ORCPT ); Thu, 14 Jun 2018 09:39:25 -0400 Received: by mail-it0-f66.google.com with SMTP id 16-v6so8327413itl.5 for ; Thu, 14 Jun 2018 06:39:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id; bh=wfRSbWG52vYkwXWiuK4o68H5lZrYfdQcDTraRh58vno=; b=EOOAWt5gAVYVH0sxrXNxGHen9pq67pV/Q9zXJTrkZLvKQWYWFZ+iBV3BKdEzzLvfiI MkvnWKkntGbNrj9IjY+Z0gZYOwW1Hg+ktcXX/F8UEogf6BCRYGhO1eYyto8DU0EL0+wE xSktZtOZZzU2KJa2CQXPux7aGorgnmXhgFwQ2FJWixek4XaELE8lZWCjRzlxNWg/svK4 DMIrU19mRh87e5r6A1OeRbyDH+Szkn/UpOBI7SHEMP8DHfBotI3gWdRpJqTruk0aarm7 Gh9Ei4lQgOhApDIKqzbrLX6URolPZ5wSfRlR8Jlpm7UrZIl5joUy2z6qVdsrCmRRAGeJ kWpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id; bh=wfRSbWG52vYkwXWiuK4o68H5lZrYfdQcDTraRh58vno=; b=mSvmOMjBCw71eZGXAUCz1u1vObnezUt3qUWWV3OZ91IGlyFF4/PZH1RWlYUVfdrg7e Isry5EklqI/nb6On5DlDAr0B+TC95lCECYdZnIhKhVcHdDwzjxZ66g6qKIIJJ3yR+pH5 NysqaonaNNQPxaDwGJM+2TecE6RcxcXjCCiOhC6ADiuomH5wQCBQd9tDPy73KYELtBOo 3LRVmfwC9FUWzJgszzF6gFhpDnR0EK8Gz1RmghxbVNx54i+yeJSpPs2a5m+afnaRSSZy Hvzxrs3eHroue1+kV3AKJ6tUQG8n4skBJX4QMOsVwzMCMHxO/y3pT4bnnQT39YC7oVLt /DkQ== X-Gm-Message-State: APt69E1jV2XQPiJYextazynxK7idj1v6Kwwk5vmMCB3o5ldn4QyyBVT3 QRY1vFROv3cF3ayrBtkkF4s= X-Google-Smtp-Source: ADUXVKJFBRwLF+oiS8y6iUN/pmTHCSKZQst+HyPCJsGAPTRYRO016dEq33MMd5Gnt0RYseNBclsh2A== X-Received: by 2002:a24:7dc6:: with SMTP id b189-v6mr2398830itc.135.1528983564548; Thu, 14 Jun 2018 06:39:24 -0700 (PDT) Received: from gouda.nowheycreamery.com.nowheycreamery.com (99-9-112-69.lightspeed.livnmi.sbcglobal.net. [99.9.112.69]) by smtp.gmail.com with ESMTPSA id f14-v6sm1837129ioc.17.2018.06.14.06.39.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 14 Jun 2018 06:39:23 -0700 (PDT) From: schumaker.anna@gmail.com X-Google-Original-From: Anna.Schumaker@Netapp.com To: Trond.Myklebust@hammerspace.com, linux-nfs@vger.kernel.org Cc: ross.zwisler@linux.intel.com Subject: [PATCH] NFS: Fix an rcu deadlock in nfs_delegation_find_inode() Date: Thu, 14 Jun 2018 09:39:17 -0400 Message-Id: <20180614133917.27656-1-Anna.Schumaker@Netapp.com> X-Mailer: git-send-email 2.17.1 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Anna Schumaker I was able to reproduce this pretty regularily using xfstests generic/013 on NFS v4.0. Reported-by: Ross Zwisler Fixes: a337fe91 (NFSv4: Return NFS4ERR_DELAY when a delegation recall fails due to igrab()) Signed-off-by: Anna Schumaker --- fs/nfs/delegation.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/fs/nfs/delegation.c b/fs/nfs/delegation.c index bbd0465535eb..f033f3a69a3b 100644 --- a/fs/nfs/delegation.c +++ b/fs/nfs/delegation.c @@ -883,8 +883,10 @@ struct inode *nfs_delegation_find_inode(struct nfs_client *clp, rcu_read_lock(); list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link) { res = nfs_delegation_find_inode_server(server, fhandle); - if (res != ERR_PTR(-ENOENT)) + if (res != ERR_PTR(-ENOENT)) { + rcu_read_unlock(); return res; + } } rcu_read_unlock(); return ERR_PTR(-ENOENT);