]> git.proxmox.com Git - mirror_ubuntu-hirsute-kernel.git/commitdiff
fscrypt: constify inode parameter to filename encryption functions
authorEric Biggers <ebiggers@google.com>
Sun, 15 Dec 2019 21:39:47 +0000 (13:39 -0800)
committerEric Biggers <ebiggers@google.com>
Tue, 31 Dec 2019 16:33:50 +0000 (10:33 -0600)
Constify the struct inode parameter to fscrypt_fname_disk_to_usr() and
the other filename encryption functions so that users don't have to pass
in a non-const inode when they are dealing with a const one, as in [1].

[1] https://lkml.kernel.org/linux-ext4/20191203051049.44573-6-drosen@google.com/

Cc: Daniel Rosenberg <drosen@google.com>
Link: https://lore.kernel.org/r/20191215213947.9521-1-ebiggers@kernel.org
Signed-off-by: Eric Biggers <ebiggers@google.com>
fs/crypto/fname.c
fs/crypto/fscrypt_private.h
include/linux/fscrypt.h

index 3da3707c10e33d4fef01248bbb1acaf4695153ab..c87b71aa2353319b1d85e1e4564e1e550be5937e 100644 (file)
@@ -34,12 +34,12 @@ static inline bool fscrypt_is_dot_dotdot(const struct qstr *str)
  *
  * Return: 0 on success, -errno on failure
  */
-int fname_encrypt(struct inode *inode, const struct qstr *iname,
+int fname_encrypt(const struct inode *inode, const struct qstr *iname,
                  u8 *out, unsigned int olen)
 {
        struct skcipher_request *req = NULL;
        DECLARE_CRYPTO_WAIT(wait);
-       struct fscrypt_info *ci = inode->i_crypt_info;
+       const struct fscrypt_info *ci = inode->i_crypt_info;
        struct crypto_skcipher *tfm = ci->ci_ctfm;
        union fscrypt_iv iv;
        struct scatterlist sg;
@@ -85,14 +85,14 @@ int fname_encrypt(struct inode *inode, const struct qstr *iname,
  *
  * Return: 0 on success, -errno on failure
  */
-static int fname_decrypt(struct inode *inode,
-                               const struct fscrypt_str *iname,
-                               struct fscrypt_str *oname)
+static int fname_decrypt(const struct inode *inode,
+                        const struct fscrypt_str *iname,
+                        struct fscrypt_str *oname)
 {
        struct skcipher_request *req = NULL;
        DECLARE_CRYPTO_WAIT(wait);
        struct scatterlist src_sg, dst_sg;
-       struct fscrypt_info *ci = inode->i_crypt_info;
+       const struct fscrypt_info *ci = inode->i_crypt_info;
        struct crypto_skcipher *tfm = ci->ci_ctfm;
        union fscrypt_iv iv;
        int res;
@@ -247,10 +247,10 @@ EXPORT_SYMBOL(fscrypt_fname_free_buffer);
  *
  * Return: 0 on success, -errno on failure
  */
-int fscrypt_fname_disk_to_usr(struct inode *inode,
-                       u32 hash, u32 minor_hash,
-                       const struct fscrypt_str *iname,
-                       struct fscrypt_str *oname)
+int fscrypt_fname_disk_to_usr(const struct inode *inode,
+                             u32 hash, u32 minor_hash,
+                             const struct fscrypt_str *iname,
+                             struct fscrypt_str *oname)
 {
        const struct qstr qname = FSTR_TO_QSTR(iname);
        struct fscrypt_digested_name digested_name;
index 23cef4d3793a5b1d967afd4c455176350627e72b..5792ecbd4d24ef61b41bb0ea6eca89304396b3a5 100644 (file)
@@ -260,7 +260,7 @@ void fscrypt_generate_iv(union fscrypt_iv *iv, u64 lblk_num,
                         const struct fscrypt_info *ci);
 
 /* fname.c */
-extern int fname_encrypt(struct inode *inode, const struct qstr *iname,
+extern int fname_encrypt(const struct inode *inode, const struct qstr *iname,
                         u8 *out, unsigned int olen);
 extern bool fscrypt_fname_encrypted_size(const struct inode *inode,
                                         u32 orig_len, u32 max_len,
index 1a7bffe78ed56078c568a3df13ca07b52908487f..6eaa729544a3e4535df7b7e588f82cb536fcea87 100644 (file)
@@ -153,8 +153,10 @@ static inline void fscrypt_free_filename(struct fscrypt_name *fname)
 extern int fscrypt_fname_alloc_buffer(const struct inode *, u32,
                                struct fscrypt_str *);
 extern void fscrypt_fname_free_buffer(struct fscrypt_str *);
-extern int fscrypt_fname_disk_to_usr(struct inode *, u32, u32,
-                       const struct fscrypt_str *, struct fscrypt_str *);
+extern int fscrypt_fname_disk_to_usr(const struct inode *inode,
+                                    u32 hash, u32 minor_hash,
+                                    const struct fscrypt_str *iname,
+                                    struct fscrypt_str *oname);
 
 #define FSCRYPT_FNAME_MAX_UNDIGESTED_SIZE      32
 
@@ -438,7 +440,7 @@ static inline void fscrypt_fname_free_buffer(struct fscrypt_str *crypto_str)
        return;
 }
 
-static inline int fscrypt_fname_disk_to_usr(struct inode *inode,
+static inline int fscrypt_fname_disk_to_usr(const struct inode *inode,
                                            u32 hash, u32 minor_hash,
                                            const struct fscrypt_str *iname,
                                            struct fscrypt_str *oname)