@@ -94,12 +94,12 @@ static inline bool fscrypt_is_dot_dotdot(const struct qstr *str)
9494int fscrypt_fname_encrypt (const struct inode * inode , const struct qstr * iname ,
9595 u8 * out , unsigned int olen )
9696{
97- struct skcipher_request * req = NULL ;
9897 const struct fscrypt_inode_info * ci = inode -> i_crypt_info ;
99- struct crypto_skcipher * tfm = ci -> ci_enc_key .tfm ;
98+ struct crypto_sync_skcipher * tfm = ci -> ci_enc_key .tfm ;
99+ SYNC_SKCIPHER_REQUEST_ON_STACK (req , tfm );
100100 union fscrypt_iv iv ;
101101 struct scatterlist sg ;
102- int res ;
102+ int err ;
103103
104104 /*
105105 * Copy the filename to the output buffer for encrypting in-place and
@@ -110,28 +110,17 @@ int fscrypt_fname_encrypt(const struct inode *inode, const struct qstr *iname,
110110 memcpy (out , iname -> name , iname -> len );
111111 memset (out + iname -> len , 0 , olen - iname -> len );
112112
113- /* Initialize the IV */
114113 fscrypt_generate_iv (& iv , 0 , ci );
115114
116- /* Set up the encryption request */
117- req = skcipher_request_alloc (tfm , GFP_NOFS );
118- if (!req )
119- return - ENOMEM ;
120115 skcipher_request_set_callback (
121116 req , CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP ,
122117 NULL , NULL );
123118 sg_init_one (& sg , out , olen );
124119 skcipher_request_set_crypt (req , & sg , & sg , olen , & iv );
125-
126- /* Do the encryption */
127- res = crypto_skcipher_encrypt (req );
128- skcipher_request_free (req );
129- if (res < 0 ) {
130- fscrypt_err (inode , "Filename encryption failed: %d" , res );
131- return res ;
132- }
133-
134- return 0 ;
120+ err = crypto_skcipher_encrypt (req );
121+ if (err )
122+ fscrypt_err (inode , "Filename encryption failed: %d" , err );
123+ return err ;
135124}
136125EXPORT_SYMBOL_GPL (fscrypt_fname_encrypt );
137126
@@ -149,33 +138,25 @@ static int fname_decrypt(const struct inode *inode,
149138 const struct fscrypt_str * iname ,
150139 struct fscrypt_str * oname )
151140{
152- struct skcipher_request * req = NULL ;
153- struct scatterlist src_sg , dst_sg ;
154141 const struct fscrypt_inode_info * ci = inode -> i_crypt_info ;
155- struct crypto_skcipher * tfm = ci -> ci_enc_key .tfm ;
142+ struct crypto_sync_skcipher * tfm = ci -> ci_enc_key .tfm ;
143+ SYNC_SKCIPHER_REQUEST_ON_STACK (req , tfm );
156144 union fscrypt_iv iv ;
157- int res ;
145+ struct scatterlist src_sg , dst_sg ;
146+ int err ;
147+
148+ fscrypt_generate_iv (& iv , 0 , ci );
158149
159- /* Allocate request */
160- req = skcipher_request_alloc (tfm , GFP_NOFS );
161- if (!req )
162- return - ENOMEM ;
163150 skcipher_request_set_callback (
164151 req , CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP ,
165152 NULL , NULL );
166-
167- /* Initialize IV */
168- fscrypt_generate_iv (& iv , 0 , ci );
169-
170- /* Create decryption request */
171153 sg_init_one (& src_sg , iname -> name , iname -> len );
172154 sg_init_one (& dst_sg , oname -> name , oname -> len );
173155 skcipher_request_set_crypt (req , & src_sg , & dst_sg , iname -> len , & iv );
174- res = crypto_skcipher_decrypt (req );
175- skcipher_request_free (req );
176- if (res < 0 ) {
177- fscrypt_err (inode , "Filename decryption failed: %d" , res );
178- return res ;
156+ err = crypto_skcipher_decrypt (req );
157+ if (err ) {
158+ fscrypt_err (inode , "Filename decryption failed: %d" , err );
159+ return err ;
179160 }
180161
181162 oname -> len = strnlen (oname -> name , iname -> len );
0 commit comments