From patchwork Fri Mar 15 00:46:07 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ycnian@gmail.com X-Patchwork-Id: 2274531 Return-Path: X-Original-To: patchwork-linux-nfs@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 7CB173FC8A for ; Fri, 15 Mar 2013 00:58:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751970Ab3COA6P (ORCPT ); Thu, 14 Mar 2013 20:58:15 -0400 Received: from mail-pb0-f43.google.com ([209.85.160.43]:51079 "EHLO mail-pb0-f43.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751822Ab3COA6O (ORCPT ); Thu, 14 Mar 2013 20:58:14 -0400 Received: by mail-pb0-f43.google.com with SMTP id md12so3048917pbc.16 for ; Thu, 14 Mar 2013 17:58:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:date:message-id:x-mailer; bh=C3IaJqXjZNDHUYk/+POYd06lM8nuozUS+29R2DNrF8M=; b=iyF9SbKm283jja/ObcuigdRpTZJLOm02KWoNcdHTqkT2fnkdkXkEVlYBqozt3Fq+pT TX0ts0mJ5T0jjUKUXDcGY7QQxmUKAL36p8HR/z/L9iv1zYnBWjSLB67knrNHQcgoicon 8wKhI4ktcuJHGp/K5hwgFjvZsZ2m0lLOZ02t6kh08jnrM7MRJKmd77EhoRh0rPuyh96i pLcoma2ejMHcuLk4zjtAqmufU6MLn0r/6IGlZ/2FzcSZalR6Hv8AwFotnXbVyS5zDxFr 9eez1kAea6/UFen2sORdnqB6vQzAu0ictt7qH8YRCQou58yNJRWPjwfHVzVW7bLvVFSh GkKw== X-Received: by 10.68.225.138 with SMTP id rk10mr10759834pbc.146.1363309093481; Thu, 14 Mar 2013 17:58:13 -0700 (PDT) Received: from localhost ([159.226.5.132]) by mx.google.com with ESMTPS id vd4sm5735353pbc.35.2013.03.14.17.58.10 (version=TLSv1.1 cipher=RC4-SHA bits=128/128); Thu, 14 Mar 2013 17:58:12 -0700 (PDT) From: ycnian@gmail.com To: bfields@fieldses.org Cc: linux-nfs@vger.kernel.org, linux-kernel@vger.kernel.org, Yanchuan Nian Subject: [PATCH] nfsd: remove unnecessary permission checking in nfsv4 Date: Fri, 15 Mar 2013 08:46:07 +0800 Message-Id: <1363308367-13314-1-git-send-email-ycnian@gmail.com> X-Mailer: git-send-email 1.7.4.4 Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org From: Yanchuan Nian Since read can use stateid's from opens that only requested write access, the value returned from access_permit_read() will always be true. It's not necessary to check read permission in nfsv4. Signed-off-by: Yanchuan Nian --- fs/nfsd/nfs4state.c | 16 ++-------------- 1 files changed, 2 insertions(+), 14 deletions(-) diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 2e27430..42824cd 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -3287,14 +3287,6 @@ STALE_STATEID(stateid_t *stateid, struct nfsd_net *nn) } static inline int -access_permit_read(struct nfs4_ol_stateid *stp) -{ - return test_access(NFS4_SHARE_ACCESS_READ, stp) || - test_access(NFS4_SHARE_ACCESS_BOTH, stp) || - test_access(NFS4_SHARE_ACCESS_WRITE, stp); -} - -static inline int access_permit_write(struct nfs4_ol_stateid *stp) { return test_access(NFS4_SHARE_ACCESS_WRITE, stp) || @@ -3304,17 +3296,13 @@ access_permit_write(struct nfs4_ol_stateid *stp) static __be32 nfs4_check_openmode(struct nfs4_ol_stateid *stp, int flags) { - __be32 status = nfserr_openmode; + __be32 status = nfs_ok; /* For lock stateid's, we test the parent open, not the lock: */ if (stp->st_openstp) stp = stp->st_openstp; if ((flags & WR_STATE) && !access_permit_write(stp)) - goto out; - if ((flags & RD_STATE) && !access_permit_read(stp)) - goto out; - status = nfs_ok; -out: + status = nfserr_openmode; return status; }