From patchwork Wed Sep 20 22:45:40 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eric Biggers X-Patchwork-Id: 816585 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.infradead.org (client-ip=65.50.211.133; helo=bombadil.infradead.org; envelope-from=linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="dhDdx+D7"; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="FphCao+M"; dkim-atps=neutral Received: from bombadil.infradead.org (bombadil.infradead.org [65.50.211.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3xyFTp1V3Pz9sBZ for ; Thu, 21 Sep 2017 08:56:14 +1000 (AEST) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20170209; h=Sender: Content-Transfer-Encoding:Content-Type:MIME-Version:Cc:List-Subscribe: List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id:Message-Id:Date: Subject:To:From:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Owner; bh=tkWTAFzxxnzqLpvZYnnJ7QFEGIiwzB9ZZ/6xz0weGJ4=; b=dhD dx+D7Tl0d5rbZIvmxgx1Hhn53scMqCS3dYWPkniCtoIKzZVSq0rqNHW7B/3E4aK/mk2SNFWD/jVcc D7ZRjvpxyCeTbnZVn4k9tVCQQQV33EUX+039L5RjHndPsHd0CU5IH4xHuf+yOv/gcrBlOFbkCyiPj 9i2sWwYs4bWs6EplgunlqJ+HchyByzjCfemxzIzKgqm6552owEf+To53K6C3DNbRJzzkigFDMZJdX 3yMpS4bsb4Jeu93+Qr4IPphc+ezcA2puAYX0cahqz6JfQ+CX3aLO2nWLUeR6nuTuM1M2dULhx56Ad ul1jdECJjQT0vTSv2WSyH8LWD6f4PTg==; Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.87 #1 (Red Hat Linux)) id 1dunuT-0005tC-1Y; Wed, 20 Sep 2017 22:56:01 +0000 Received: from mail-pf0-x242.google.com ([2607:f8b0:400e:c00::242]) by bombadil.infradead.org with esmtps (Exim 4.87 #1 (Red Hat Linux)) id 1dunlt-0004w0-Du for linux-mtd@lists.infradead.org; Wed, 20 Sep 2017 22:47:11 +0000 Received: by mail-pf0-x242.google.com with SMTP id i23so1721153pfi.2 for ; Wed, 20 Sep 2017 15:46:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=gg4dTmWolGvshKkwco5kNIF7wlEnX4tK2+q1ocOfBXQ=; b=FphCao+M+NY9mm9I4PCbsSzU5bAthzvJ33dxFjXbo7pOgQK/qVw7nNVX6JAh08R1DD lIsCJHKrVpSKcGzSrKq0wpoBq5qezhwWxm39tn2xTf9gYHevGpEkWBauhbrV1FCc/1P9 4OcGUSXCatGHRMpN1/IDryWSSo8xu5D2s+SO3p10cRo1ORXowY4SiP6xqWzcXipq40ai Kj+AIKgKiJvfqSRJ+mIkRNefMvpgf4mYuneAVWaHH0VsIJyMWEOnlU+JASXkZA0zjGRd Ua/Vof3CTEQX1iSHT6bAEdYGcgp0GebGqgMT+2449gX4NjCjw05BkGvg1vkCYR9f5U1T pF+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=gg4dTmWolGvshKkwco5kNIF7wlEnX4tK2+q1ocOfBXQ=; b=VDp/9P3IBMWRJ07yQiVTQ5Z4mWVeIU8rNoxFoXUTWCoJUMYPY8VX2X/r0irFK0r6/c VZI+2PEsmfBaZw0GZDC7I+JbB7M+rCY11ng7kyrb3XPbKiArtO0ayCbypl4YQsGc9QSa IVH7X0ZZYPB/3STRKxYuDuph26Di/GrTrMUsmEP9xJhWtoClimjGTNdvaG6TqYHopIOu LWfhH9bodICu4vKPiFF9Y9R+1D0wY75ICb//ohd3b3qlGCwLTMPyICOjpPvhUurOb4tB lrM9BpdPbJ7izsG948UiRK8zt1zxiSKowK54tX6rddadqQmphU+e2ub1ggNjd7adpe2K lqEQ== X-Gm-Message-State: AHPjjUgeKdFqQrzwCPRL+9K3waw+UlfQ0jvhFL9z2e5NSTNAYcwvSWaE N+DwW+68wREG3VVo8XkKWoM= X-Google-Smtp-Source: AOwi7QA2XPDNZ7ABiHw3lJUdagIHAgyIj9LkUcaKKrLDpgPBInV/CqRZQOMabdvmy+p+58NCWix5Cw== X-Received: by 10.84.165.171 with SMTP id y40mr2725445pla.373.1505947608312; Wed, 20 Sep 2017 15:46:48 -0700 (PDT) Received: from ebiggers-linuxstation.kir.corp.google.com ([100.66.174.81]) by smtp.gmail.com with ESMTPSA id j2sm6249pgn.26.2017.09.20.15.46.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 20 Sep 2017 15:46:47 -0700 (PDT) From: Eric Biggers To: linux-fscrypt@vger.kernel.org Subject: [PATCH 00/25] fscrypt: add some higher-level helper functions Date: Wed, 20 Sep 2017 15:45:40 -0700 Message-Id: <20170920224605.22030-1-ebiggers3@gmail.com> X-Mailer: git-send-email 2.14.1.821.g8fa685d3b7-goog X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20170920_154709_523967_31900F5B X-CRM114-Status: GOOD ( 12.04 ) X-Spam-Score: -1.8 (-) X-Spam-Report: SpamAssassin version 3.4.1 on bombadil.infradead.org summary: Content analysis details: (-1.8 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at http://www.dnswl.org/, no trust [2607:f8b0:400e:c00:0:0:0:242 listed in] [list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.2 FREEMAIL_ENVFROM_END_DIGIT Envelope-from freemail username ends in digit (ebiggers3[at]gmail.com) 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (ebiggers3[at]gmail.com) -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Theodore Y . Ts'o" , Eric Biggers , Michael Halcrow , linux-f2fs-devel@lists.sourceforge.net, linux-mtd@lists.infradead.org, linux-fsdevel@vger.kernel.org, Jaegeuk Kim , linux-ext4@vger.kernel.org MIME-Version: 1.0 Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org From: Eric Biggers This series reduces code duplication among ext4, f2fs, and ubifs by introducing a S_ENCRYPTED inode flag (so we don't have to call back into the filesystem to test the filesystem-specific inode flag), then introducing new helper functions that are called at the beginning of the open, link, rename, lookup, and setattr operations. In the future we maybe should even call these new helpers from the VFS so that each individual filesystem doesn't have to do it. But that's not possible currently because fs/crypto/ can be built as a module. Making changes like this is a bit challenging due to interdependencies between fscrypt and the individual filesystems, all of which have different maintainers. For now my intent is that patches 1-10 be taken through the fscrypt tree --- though it's not perfect since patches 1-4 do make some changes to each filesystem, as everyone must set S_ENCRYPTED before we can use it everywhere in the shared code. But afterwards, patches 11-25 can be picked up by the individual filesystems to switch to the new helpers. Eric Biggers (25): fs, fscrypt: add an S_ENCRYPTED inode flag fscrypt: switch from ->is_encrypted() to IS_ENCRYPTED() fscrypt: remove ->is_encrypted() fscrypt: remove unneeded empty fscrypt_operations structs fscrypt: new helper function - fscrypt_require_key() fscrypt: new helper function - fscrypt_file_open() fscrypt: new helper function - fscrypt_prepare_link() fscrypt: new helper function - fscrypt_prepare_rename() fscrypt: new helper function - fscrypt_prepare_lookup() fscrypt: new helper function - fscrypt_prepare_setattr() ext4: switch to fscrypt_file_open() ext4: switch to fscrypt_prepare_link() ext4: switch to fscrypt_prepare_rename() ext4: switch to fscrypt_prepare_lookup() ext4: switch to fscrypt_prepare_setattr() f2fs: switch to fscrypt_file_open() f2fs: switch to fscrypt_prepare_link() f2fs: switch to fscrypt_prepare_rename() f2fs: switch to fscrypt_prepare_lookup() f2fs: switch to fscrypt_prepare_setattr() ubifs: switch to fscrypt_file_open() ubifs: switch to fscrypt_prepare_link() ubifs: switch to fscrypt_prepare_rename() ubifs: switch to fscrypt_prepare_lookup() ubifs: switch to fscrypt_prepare_setattr() fs/crypto/Makefile | 2 +- fs/crypto/crypto.c | 2 +- fs/crypto/fname.c | 3 +- fs/crypto/hooks.c | 112 +++++++++++++++++++++++++++++ fs/crypto/keyinfo.c | 2 +- fs/crypto/policy.c | 6 +- fs/ext4/file.c | 23 ++---- fs/ext4/inode.c | 19 +++-- fs/ext4/namei.c | 62 +++++----------- fs/ext4/super.c | 15 ++-- fs/f2fs/f2fs.h | 1 + fs/f2fs/file.c | 30 ++------ fs/f2fs/inode.c | 5 +- fs/f2fs/namei.c | 54 ++++---------- fs/f2fs/super.c | 7 +- fs/ubifs/crypto.c | 1 - fs/ubifs/dir.c | 43 ++++------- fs/ubifs/file.c | 41 ++--------- fs/ubifs/ioctl.c | 5 +- fs/ubifs/super.c | 8 +-- fs/ubifs/ubifs.h | 9 +-- fs/ubifs/xattr.c | 1 + include/linux/fs.h | 2 + include/linux/fscrypt_common.h | 1 - include/linux/fscrypt_notsupp.h | 54 +++++++++++++- include/linux/fscrypt_supp.h | 153 ++++++++++++++++++++++++++++++++++++++++ 26 files changed, 418 insertions(+), 243 deletions(-) create mode 100644 fs/crypto/hooks.c Acked-by: Dave Chinner Reviewed-by: Chao Yu