Whamcloud - gitweb
LU-12275 sec: add llcrypt as file encryption library
[fs/lustre-release.git] / contrib / scripts / crypto_patches / 0011_llcrypt_cleanup.patch
1 Add __exit functions for llcrypt.
2 Initial fscrypt implementation lacks this because fscrypt is not a kernel module.
3
4 --- a/libcfs/include/libcfs/crypto/llcrypt.h
5 +++ b/libcfs/include/libcfs/crypto/llcrypt.h
6 @@ -108,6 +108,7 @@ static inline void llcrypt_handle_d_move
7  
8  /* crypto.c */
9  extern int __init llcrypt_init(void);
10 +extern void __exit llcrypt_exit(void);
11  extern void llcrypt_enqueue_decrypt_work(struct work_struct *);
12  extern struct llcrypt_ctx *llcrypt_get_ctx(gfp_t);
13  extern void llcrypt_release_ctx(struct llcrypt_ctx *);
14 --- a/libcfs/libcfs/crypto/crypto.c
15 +++ b/libcfs/libcfs/crypto/crypto.c
16 @@ -517,3 +517,22 @@ fail_free_queue:
17  fail:
18         return err;
19  }
20 +
21 +/**
22 + * llcrypt_exit() - Clean up for fs encryption.
23 + */
24 +void __exit llcrypt_exit(void)
25 +{
26 +       llcrypt_exit_keyring();
27 +
28 +       llcrypt_destroy();
29 +       /*
30 +        * Make sure all delayed rcu free inodes are flushed before we
31 +        * destroy cache.
32 +        */
33 +       rcu_barrier();
34 +
35 +       kmem_cache_destroy(llcrypt_info_cachep);
36 +       kmem_cache_destroy(llcrypt_ctx_cachep);
37 +       destroy_workqueue(llcrypt_read_workqueue);
38 +}
39 --- a/libcfs/libcfs/crypto/keyring.c
40 +++ b/libcfs/libcfs/crypto/keyring.c
41 @@ -231,6 +231,7 @@ void llcrypt_sb_free(struct super_block
42                 lsi->lsi_master_keys = NULL;
43         }
44  }
45 +EXPORT_SYMBOL(llcrypt_sb_free);
46  
47  /*
48   * Find the specified master key in ->lsi_master_keys.
49 @@ -1003,3 +1004,9 @@ err_unregister_llcrypt:
50         unregister_key_type(&key_type_llcrypt);
51         return err;
52  }
53 +
54 +void __exit llcrypt_exit_keyring(void)
55 +{
56 +       unregister_key_type(&key_type_llcrypt_user);
57 +       unregister_key_type(&key_type_llcrypt);
58 +}
59 --- a/libcfs/libcfs/crypto/llcrypt_private.h
60 +++ b/libcfs/libcfs/crypto/llcrypt_private.h
61 @@ -444,6 +444,8 @@ extern int llcrypt_verify_key_added(stru
62  
63  extern int __init llcrypt_init_keyring(void);
64  
65 +extern void __exit llcrypt_exit_keyring(void);
66 +
67  /* keysetup.c */
68  
69  struct llcrypt_mode {