Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp2452669ybi; Sun, 9 Jun 2019 12:09:24 -0700 (PDT) X-Google-Smtp-Source: APXvYqzcFk+FDBiJsaEYss39yNWGG2XhfJy8FYPjdOc21/B0t/uaGBenIzEqYFXXut6NFs8lJUe1 X-Received: by 2002:a65:4907:: with SMTP id p7mr12382486pgs.288.1560107364600; Sun, 09 Jun 2019 12:09:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1560107364; cv=none; d=google.com; s=arc-20160816; b=JtMGPZoaMcH3sBYx0ZvYBQEKW235/V9vLP22/xA3dXe24G0zihLZ4ZOhxhTBU9kqTl cGXMfZhIF2rkxO8zyvUIUDg1oXqyuMnR4Y7wSYW08tdhcRhCMbHX+M6NW1jLp0OANe1h 7LjTwhU0oNF1frfHh6CL6cAGAJUQSBlF7AUfpXsB/itYlsCeqc8z52kXxxRmklL3UQZV 91C6o25G3DifK309/W+VlHab/L4MMV50zkivp5vxika2xgi7VqxRnF0r+vfPAVyiNaJQ DVQM+MTTynVLYXCniUljosTHPuLXrUenHEQ/B0gfc+ngzRlA9rmyyrE2GUkWpjFZzs4/ 3j6Q== 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=OY7h5x13pikxjQCFDsmbIENp2DU1jbgsSvI6GvR4ba0=; b=CmpjvJmqEWIzEwm/6hQGe2gybsJf1554xrLXtUh6ozPV41c62lKKG/yhfpbRxjFVQQ GWxlzPw+bMGoS61bhoGoJWVDN7P+C0OFDVumzsW5Cc7ufT08cKoIppggggceHM6sT075 SQpYIGZ1lBLGWcvScJOQh7n9vCmXC6iyX04moq0r0ZtRgQY+XJtFs83Jqbd8rbsjTKeJ XJh8S8t5GWZItF7/JF5Q5K2JW3Nb+/mR6qNgSmJ6Nje/F87KFymsoN5vLM66eDaf2yp3 y3fqwdbSXVWlqtHoD5eyXtEDpkV46z1npPevX5HG5RerIAHEfrVBm1//QEsQcg5pSqBP IPOw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="x/im7NW3"; 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 e2si8304099pfa.15.2019.06.09.12.09.07; Sun, 09 Jun 2019 12:09:24 -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="x/im7NW3"; 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 S1731072AbfFIQsD (ORCPT + 99 others); Sun, 9 Jun 2019 12:48:03 -0400 Received: from mail.kernel.org ([198.145.29.99]:46776 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729963AbfFIQrz (ORCPT ); Sun, 9 Jun 2019 12:47:55 -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 B0664205ED; Sun, 9 Jun 2019 16:47:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1560098875; bh=5Gn3cKXeLvaaV9cKG5BUsjf22qJuT6vgfoenKD8ddLE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=x/im7NW30Gcg+VMjMuCuDNKX68zVI0ViOl8ZFE9s3N/s04ih9NHcAnU0qqD8Q4ZXc y/7m4tPNnYo70feZQswfqzYQ4oKmKgqXJRlJUjMHtEj+vEWEihQp0EOOrf3G4DVjkH CGlRSM4sTl8EUK0o87dsOgVuD920nr+sSOyvUcPQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Yihao Wu , Jeff Layton , Anna Schumaker Subject: [PATCH 4.19 21/51] NFSv4.1: Fix bug only first CB_NOTIFY_LOCK is handled Date: Sun, 9 Jun 2019 18:42:02 +0200 Message-Id: <20190609164128.316056941@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190609164127.123076536@linuxfoundation.org> References: <20190609164127.123076536@linuxfoundation.org> User-Agent: quilt/0.66 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 From: Yihao Wu commit ba851a39c9703f09684a541885ed176f8fb7c868 upstream. When a waiter is waked by CB_NOTIFY_LOCK, it will retry nfs4_proc_setlk(). The waiter may fail to nfs4_proc_setlk() and sleep again. However, the waiter is already removed from clp->cl_lock_waitq when handling CB_NOTIFY_LOCK in nfs4_wake_lock_waiter(). So any subsequent CB_NOTIFY_LOCK won't wake this waiter anymore. We should put the waiter back to clp->cl_lock_waitq before retrying. Cc: stable@vger.kernel.org #4.9+ Signed-off-by: Yihao Wu Reviewed-by: Jeff Layton Signed-off-by: Anna Schumaker Signed-off-by: Greg Kroah-Hartman --- fs/nfs/nfs4proc.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) --- a/fs/nfs/nfs4proc.c +++ b/fs/nfs/nfs4proc.c @@ -6905,20 +6905,22 @@ nfs4_retry_setlk(struct nfs4_state *stat init_wait(&wait); wait.private = &waiter; wait.func = nfs4_wake_lock_waiter; - add_wait_queue(q, &wait); while(!signalled()) { + add_wait_queue(q, &wait); status = nfs4_proc_setlk(state, cmd, request); - if ((status != -EAGAIN) || IS_SETLK(cmd)) + if ((status != -EAGAIN) || IS_SETLK(cmd)) { + finish_wait(q, &wait); break; + } status = -ERESTARTSYS; freezer_do_not_count(); wait_woken(&wait, TASK_INTERRUPTIBLE, NFS4_LOCK_MAXTIMEOUT); freezer_count(); + finish_wait(q, &wait); } - finish_wait(q, &wait); return status; } #else /* !CONFIG_NFS_V4_1 */