Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp2816346pxj; Mon, 14 Jun 2021 07:49:46 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx3WAWdPut3oRbyF+OzqyMrewaboUnEZtj6MY/7yGoW9hAu881bwrEM6uNLWRPFOkm9ctYM X-Received: by 2002:aa7:d8d8:: with SMTP id k24mr17264971eds.253.1623682186742; Mon, 14 Jun 2021 07:49:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623682186; cv=none; d=google.com; s=arc-20160816; b=EaN4A7YCPABcWAdL55ghK+xA3hvjVDoPwP/HCBMmmpq3ryyEBkZd47fJ11fOQAWVjm aL7nDA5J4jseA/v0CIbwkfA32FMweVJ4Vh1w+nvLlz72t31s8mUp+CV8jHcrP/hbEESM vBc3FEcgHpdqhcL394RzP+ckzrjvFvNUU3of77zJk87QBqclnNUdTamwM4iJNswRB7H1 GqpKDrHHg7lK4vqEyDHITgT1W5eTR1ahvrM9SIdtqadQF3VXs0BG8vleTr85hASznmpa mnXwRtCpGxhA1nxrZDeM2CLUnY4DCQTnhFU+5FXZj5ceW3KJRvDA82BwYytXStl1lQ7d Qpyg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-filter; bh=tJu/YB8YfTYAErJCXtbzdTcqkumkglIeRIjNCyXiwR0=; b=X3oBC9vNwA24faVmq5sB2ZzzirA9w/0bENiD7Q9M7IQIRvokOBJQiCpa8pqxRBZP7o fKJ++hnENvYMunQAJf/4Bx5P4vyy4GxkvJEfmuTi1YplHFc6F2bJPOLVmLUeVaSO+W+O US20ebug2nL9Y8V8Jg8oXD32GzIJIXNQwgUItcp8DkikW05ILOoxEeDTsFqFK/DUP3Qk ycmKM+ZmzI+SYAmQz2QcYC0kE/LwX7zbmfdVzvywKRPxP4Rb2IK11p0kdr0IOXPU0zna qe68PHJQ3QcJ6K5obrY+4GVRMhWYZKZOFm1CufM5042Ll88IqWPZfm1yijE8435pt3f8 0juQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e5si11249089ejl.222.2021.06.14.07.49.22; Mon, 14 Jun 2021 07:49:46 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-nfs-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232798AbhFNOuZ (ORCPT + 99 others); Mon, 14 Jun 2021 10:50:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60482 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232858AbhFNOuY (ORCPT ); Mon, 14 Jun 2021 10:50:24 -0400 Received: from fieldses.org (fieldses.org [IPv6:2600:3c00:e000:2f7::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2F163C061767 for ; Mon, 14 Jun 2021 07:48:21 -0700 (PDT) Received: by fieldses.org (Postfix, from userid 2815) id 8C3F75047; Mon, 14 Jun 2021 10:48:19 -0400 (EDT) DKIM-Filter: OpenDKIM Filter v2.11.0 fieldses.org 8C3F75047 From: "J. Bruce Fields" To: Trond Myklebust , Anna Schumaker Cc: daire@dneg.com, linux-nfs@vger.kernel.org, "J. Bruce Fields" Subject: [PATCH 2/3] lockd: lockd server-side shouldn't set fl_ops Date: Mon, 14 Jun 2021 10:48:17 -0400 Message-Id: <1623682098-13236-3-git-send-email-bfields@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1623682098-13236-1-git-send-email-bfields@redhat.com> References: <1623682098-13236-1-git-send-email-bfields@redhat.com> Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: "J. Bruce Fields" Locks have two sets of op arrays, fl_lmops for the lock manager (lockd or nfsd), fl_ops for the filesystem. The server-side lockd code has been setting its own fl_ops, which leads to confusion (and crashes) in the reexport case, where the filesystem expects to be the only one setting fl_ops. And there's no reason for it that I can see-the lm_get/put_owner ops do the same job. Signed-off-by: J. Bruce Fields --- fs/lockd/svclock.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/fs/lockd/svclock.c b/fs/lockd/svclock.c index 61d3cc2283dc..1781fc5e9091 100644 --- a/fs/lockd/svclock.c +++ b/fs/lockd/svclock.c @@ -395,28 +395,10 @@ nlmsvc_release_lockowner(struct nlm_lock *lock) nlmsvc_put_lockowner(lock->fl.fl_owner); } -static void nlmsvc_locks_copy_lock(struct file_lock *new, struct file_lock *fl) -{ - struct nlm_lockowner *nlm_lo = (struct nlm_lockowner *)fl->fl_owner; - new->fl_owner = nlmsvc_get_lockowner(nlm_lo); -} - -static void nlmsvc_locks_release_private(struct file_lock *fl) -{ - nlmsvc_put_lockowner((struct nlm_lockowner *)fl->fl_owner); -} - -static const struct file_lock_operations nlmsvc_lock_ops = { - .fl_copy_lock = nlmsvc_locks_copy_lock, - .fl_release_private = nlmsvc_locks_release_private, -}; - void nlmsvc_locks_init_private(struct file_lock *fl, struct nlm_host *host, pid_t pid) { fl->fl_owner = nlmsvc_find_lockowner(host, pid); - if (fl->fl_owner != NULL) - fl->fl_ops = &nlmsvc_lock_ops; } /* @@ -788,9 +770,21 @@ nlmsvc_notify_blocked(struct file_lock *fl) printk(KERN_WARNING "lockd: notification for unknown block!\n"); } +static fl_owner_t nlmsvc_get_owner(fl_owner_t owner) +{ + return nlmsvc_get_lockowner(owner); +} + +static void nlmsvc_put_owner(fl_owner_t owner) +{ + nlmsvc_put_lockowner(owner); +} + const struct lock_manager_operations nlmsvc_lock_operations = { .lm_notify = nlmsvc_notify_blocked, .lm_grant = nlmsvc_grant_deferred, + .lm_get_owner = nlmsvc_get_owner, + .lm_put_owner = nlmsvc_put_owner, }; /* -- 2.31.1