1 Add __exit functions for llcrypt.
2 Initial fscrypt implementation lacks this because fscrypt is not a kernel module.
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
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:
22 + * llcrypt_exit() - Clean up for fs encryption.
24 +void __exit llcrypt_exit(void)
26 + llcrypt_exit_keyring();
30 + * Make sure all delayed rcu free inodes are flushed before we
35 + kmem_cache_destroy(llcrypt_info_cachep);
36 + kmem_cache_destroy(llcrypt_ctx_cachep);
37 + destroy_workqueue(llcrypt_read_workqueue);
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;
45 +EXPORT_SYMBOL(llcrypt_sb_free);
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);
54 +void __exit llcrypt_exit_keyring(void)
56 + unregister_key_type(&key_type_llcrypt_user);
57 + unregister_key_type(&key_type_llcrypt);
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
63 extern int __init llcrypt_init_keyring(void);
65 +extern void __exit llcrypt_exit_keyring(void);