]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/md/dm-crypt.c
Merge branch 'stable/for-linus-4.11' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / drivers / md / dm-crypt.c
1 /*
2  * Copyright (C) 2003 Jana Saout <jana@saout.de>
3  * Copyright (C) 2004 Clemens Fruhwirth <clemens@endorphin.org>
4  * Copyright (C) 2006-2015 Red Hat, Inc. All rights reserved.
5  * Copyright (C) 2013 Milan Broz <gmazyland@gmail.com>
6  *
7  * This file is released under the GPL.
8  */
9
10 #include <linux/completion.h>
11 #include <linux/err.h>
12 #include <linux/module.h>
13 #include <linux/init.h>
14 #include <linux/kernel.h>
15 #include <linux/key.h>
16 #include <linux/bio.h>
17 #include <linux/blkdev.h>
18 #include <linux/mempool.h>
19 #include <linux/slab.h>
20 #include <linux/crypto.h>
21 #include <linux/workqueue.h>
22 #include <linux/kthread.h>
23 #include <linux/backing-dev.h>
24 #include <linux/atomic.h>
25 #include <linux/scatterlist.h>
26 #include <linux/rbtree.h>
27 #include <linux/ctype.h>
28 #include <asm/page.h>
29 #include <asm/unaligned.h>
30 #include <crypto/hash.h>
31 #include <crypto/md5.h>
32 #include <crypto/algapi.h>
33 #include <crypto/skcipher.h>
34 #include <keys/user-type.h>
35
36 #include <linux/device-mapper.h>
37
38 #define DM_MSG_PREFIX "crypt"
39
40 /*
41  * context holding the current state of a multi-part conversion
42  */
43 struct convert_context {
44         struct completion restart;
45         struct bio *bio_in;
46         struct bio *bio_out;
47         struct bvec_iter iter_in;
48         struct bvec_iter iter_out;
49         sector_t cc_sector;
50         atomic_t cc_pending;
51         struct skcipher_request *req;
52 };
53
54 /*
55  * per bio private data
56  */
57 struct dm_crypt_io {
58         struct crypt_config *cc;
59         struct bio *base_bio;
60         struct work_struct work;
61
62         struct convert_context ctx;
63
64         atomic_t io_pending;
65         int error;
66         sector_t sector;
67
68         struct rb_node rb_node;
69 } CRYPTO_MINALIGN_ATTR;
70
71 struct dm_crypt_request {
72         struct convert_context *ctx;
73         struct scatterlist sg_in;
74         struct scatterlist sg_out;
75         sector_t iv_sector;
76 };
77
78 struct crypt_config;
79
80 struct crypt_iv_operations {
81         int (*ctr)(struct crypt_config *cc, struct dm_target *ti,
82                    const char *opts);
83         void (*dtr)(struct crypt_config *cc);
84         int (*init)(struct crypt_config *cc);
85         int (*wipe)(struct crypt_config *cc);
86         int (*generator)(struct crypt_config *cc, u8 *iv,
87                          struct dm_crypt_request *dmreq);
88         int (*post)(struct crypt_config *cc, u8 *iv,
89                     struct dm_crypt_request *dmreq);
90 };
91
92 struct iv_essiv_private {
93         struct crypto_ahash *hash_tfm;
94         u8 *salt;
95 };
96
97 struct iv_benbi_private {
98         int shift;
99 };
100
101 #define LMK_SEED_SIZE 64 /* hash + 0 */
102 struct iv_lmk_private {
103         struct crypto_shash *hash_tfm;
104         u8 *seed;
105 };
106
107 #define TCW_WHITENING_SIZE 16
108 struct iv_tcw_private {
109         struct crypto_shash *crc32_tfm;
110         u8 *iv_seed;
111         u8 *whitening;
112 };
113
114 /*
115  * Crypt: maps a linear range of a block device
116  * and encrypts / decrypts at the same time.
117  */
118 enum flags { DM_CRYPT_SUSPENDED, DM_CRYPT_KEY_VALID,
119              DM_CRYPT_SAME_CPU, DM_CRYPT_NO_OFFLOAD };
120
121 /*
122  * The fields in here must be read only after initialization.
123  */
124 struct crypt_config {
125         struct dm_dev *dev;
126         sector_t start;
127
128         /*
129          * pool for per bio private data, crypto requests and
130          * encryption requeusts/buffer pages
131          */
132         mempool_t *req_pool;
133         mempool_t *page_pool;
134         struct bio_set *bs;
135         struct mutex bio_alloc_lock;
136
137         struct workqueue_struct *io_queue;
138         struct workqueue_struct *crypt_queue;
139
140         struct task_struct *write_thread;
141         wait_queue_head_t write_thread_wait;
142         struct rb_root write_tree;
143
144         char *cipher;
145         char *cipher_string;
146         char *key_string;
147
148         const struct crypt_iv_operations *iv_gen_ops;
149         union {
150                 struct iv_essiv_private essiv;
151                 struct iv_benbi_private benbi;
152                 struct iv_lmk_private lmk;
153                 struct iv_tcw_private tcw;
154         } iv_gen_private;
155         sector_t iv_offset;
156         unsigned int iv_size;
157
158         /* ESSIV: struct crypto_cipher *essiv_tfm */
159         void *iv_private;
160         struct crypto_skcipher **tfms;
161         unsigned tfms_count;
162
163         /*
164          * Layout of each crypto request:
165          *
166          *   struct skcipher_request
167          *      context
168          *      padding
169          *   struct dm_crypt_request
170          *      padding
171          *   IV
172          *
173          * The padding is added so that dm_crypt_request and the IV are
174          * correctly aligned.
175          */
176         unsigned int dmreq_start;
177
178         unsigned int per_bio_data_size;
179
180         unsigned long flags;
181         unsigned int key_size;
182         unsigned int key_parts;      /* independent parts in key buffer */
183         unsigned int key_extra_size; /* additional keys length */
184         u8 key[0];
185 };
186
187 #define MIN_IOS        64
188
189 static void clone_init(struct dm_crypt_io *, struct bio *);
190 static void kcryptd_queue_crypt(struct dm_crypt_io *io);
191 static u8 *iv_of_dmreq(struct crypt_config *cc, struct dm_crypt_request *dmreq);
192
193 /*
194  * Use this to access cipher attributes that are the same for each CPU.
195  */
196 static struct crypto_skcipher *any_tfm(struct crypt_config *cc)
197 {
198         return cc->tfms[0];
199 }
200
201 /*
202  * Different IV generation algorithms:
203  *
204  * plain: the initial vector is the 32-bit little-endian version of the sector
205  *        number, padded with zeros if necessary.
206  *
207  * plain64: the initial vector is the 64-bit little-endian version of the sector
208  *        number, padded with zeros if necessary.
209  *
210  * essiv: "encrypted sector|salt initial vector", the sector number is
211  *        encrypted with the bulk cipher using a salt as key. The salt
212  *        should be derived from the bulk cipher's key via hashing.
213  *
214  * benbi: the 64-bit "big-endian 'narrow block'-count", starting at 1
215  *        (needed for LRW-32-AES and possible other narrow block modes)
216  *
217  * null: the initial vector is always zero.  Provides compatibility with
218  *       obsolete loop_fish2 devices.  Do not use for new devices.
219  *
220  * lmk:  Compatible implementation of the block chaining mode used
221  *       by the Loop-AES block device encryption system
222  *       designed by Jari Ruusu. See http://loop-aes.sourceforge.net/
223  *       It operates on full 512 byte sectors and uses CBC
224  *       with an IV derived from the sector number, the data and
225  *       optionally extra IV seed.
226  *       This means that after decryption the first block
227  *       of sector must be tweaked according to decrypted data.
228  *       Loop-AES can use three encryption schemes:
229  *         version 1: is plain aes-cbc mode
230  *         version 2: uses 64 multikey scheme with lmk IV generator
231  *         version 3: the same as version 2 with additional IV seed
232  *                   (it uses 65 keys, last key is used as IV seed)
233  *
234  * tcw:  Compatible implementation of the block chaining mode used
235  *       by the TrueCrypt device encryption system (prior to version 4.1).
236  *       For more info see: https://gitlab.com/cryptsetup/cryptsetup/wikis/TrueCryptOnDiskFormat
237  *       It operates on full 512 byte sectors and uses CBC
238  *       with an IV derived from initial key and the sector number.
239  *       In addition, whitening value is applied on every sector, whitening
240  *       is calculated from initial key, sector number and mixed using CRC32.
241  *       Note that this encryption scheme is vulnerable to watermarking attacks
242  *       and should be used for old compatible containers access only.
243  *
244  * plumb: unimplemented, see:
245  * http://article.gmane.org/gmane.linux.kernel.device-mapper.dm-crypt/454
246  */
247
248 static int crypt_iv_plain_gen(struct crypt_config *cc, u8 *iv,
249                               struct dm_crypt_request *dmreq)
250 {
251         memset(iv, 0, cc->iv_size);
252         *(__le32 *)iv = cpu_to_le32(dmreq->iv_sector & 0xffffffff);
253
254         return 0;
255 }
256
257 static int crypt_iv_plain64_gen(struct crypt_config *cc, u8 *iv,
258                                 struct dm_crypt_request *dmreq)
259 {
260         memset(iv, 0, cc->iv_size);
261         *(__le64 *)iv = cpu_to_le64(dmreq->iv_sector);
262
263         return 0;
264 }
265
266 /* Initialise ESSIV - compute salt but no local memory allocations */
267 static int crypt_iv_essiv_init(struct crypt_config *cc)
268 {
269         struct iv_essiv_private *essiv = &cc->iv_gen_private.essiv;
270         AHASH_REQUEST_ON_STACK(req, essiv->hash_tfm);
271         struct scatterlist sg;
272         struct crypto_cipher *essiv_tfm;
273         int err;
274
275         sg_init_one(&sg, cc->key, cc->key_size);
276         ahash_request_set_tfm(req, essiv->hash_tfm);
277         ahash_request_set_callback(req, CRYPTO_TFM_REQ_MAY_SLEEP, NULL, NULL);
278         ahash_request_set_crypt(req, &sg, essiv->salt, cc->key_size);
279
280         err = crypto_ahash_digest(req);
281         ahash_request_zero(req);
282         if (err)
283                 return err;
284
285         essiv_tfm = cc->iv_private;
286
287         err = crypto_cipher_setkey(essiv_tfm, essiv->salt,
288                             crypto_ahash_digestsize(essiv->hash_tfm));
289         if (err)
290                 return err;
291
292         return 0;
293 }
294
295 /* Wipe salt and reset key derived from volume key */
296 static int crypt_iv_essiv_wipe(struct crypt_config *cc)
297 {
298         struct iv_essiv_private *essiv = &cc->iv_gen_private.essiv;
299         unsigned salt_size = crypto_ahash_digestsize(essiv->hash_tfm);
300         struct crypto_cipher *essiv_tfm;
301         int r, err = 0;
302
303         memset(essiv->salt, 0, salt_size);
304
305         essiv_tfm = cc->iv_private;
306         r = crypto_cipher_setkey(essiv_tfm, essiv->salt, salt_size);
307         if (r)
308                 err = r;
309
310         return err;
311 }
312
313 /* Set up per cpu cipher state */
314 static struct crypto_cipher *setup_essiv_cpu(struct crypt_config *cc,
315                                              struct dm_target *ti,
316                                              u8 *salt, unsigned saltsize)
317 {
318         struct crypto_cipher *essiv_tfm;
319         int err;
320
321         /* Setup the essiv_tfm with the given salt */
322         essiv_tfm = crypto_alloc_cipher(cc->cipher, 0, CRYPTO_ALG_ASYNC);
323         if (IS_ERR(essiv_tfm)) {
324                 ti->error = "Error allocating crypto tfm for ESSIV";
325                 return essiv_tfm;
326         }
327
328         if (crypto_cipher_blocksize(essiv_tfm) !=
329             crypto_skcipher_ivsize(any_tfm(cc))) {
330                 ti->error = "Block size of ESSIV cipher does "
331                             "not match IV size of block cipher";
332                 crypto_free_cipher(essiv_tfm);
333                 return ERR_PTR(-EINVAL);
334         }
335
336         err = crypto_cipher_setkey(essiv_tfm, salt, saltsize);
337         if (err) {
338                 ti->error = "Failed to set key for ESSIV cipher";
339                 crypto_free_cipher(essiv_tfm);
340                 return ERR_PTR(err);
341         }
342
343         return essiv_tfm;
344 }
345
346 static void crypt_iv_essiv_dtr(struct crypt_config *cc)
347 {
348         struct crypto_cipher *essiv_tfm;
349         struct iv_essiv_private *essiv = &cc->iv_gen_private.essiv;
350
351         crypto_free_ahash(essiv->hash_tfm);
352         essiv->hash_tfm = NULL;
353
354         kzfree(essiv->salt);
355         essiv->salt = NULL;
356
357         essiv_tfm = cc->iv_private;
358
359         if (essiv_tfm)
360                 crypto_free_cipher(essiv_tfm);
361
362         cc->iv_private = NULL;
363 }
364
365 static int crypt_iv_essiv_ctr(struct crypt_config *cc, struct dm_target *ti,
366                               const char *opts)
367 {
368         struct crypto_cipher *essiv_tfm = NULL;
369         struct crypto_ahash *hash_tfm = NULL;
370         u8 *salt = NULL;
371         int err;
372
373         if (!opts) {
374                 ti->error = "Digest algorithm missing for ESSIV mode";
375                 return -EINVAL;
376         }
377
378         /* Allocate hash algorithm */
379         hash_tfm = crypto_alloc_ahash(opts, 0, CRYPTO_ALG_ASYNC);
380         if (IS_ERR(hash_tfm)) {
381                 ti->error = "Error initializing ESSIV hash";
382                 err = PTR_ERR(hash_tfm);
383                 goto bad;
384         }
385
386         salt = kzalloc(crypto_ahash_digestsize(hash_tfm), GFP_KERNEL);
387         if (!salt) {
388                 ti->error = "Error kmallocing salt storage in ESSIV";
389                 err = -ENOMEM;
390                 goto bad;
391         }
392
393         cc->iv_gen_private.essiv.salt = salt;
394         cc->iv_gen_private.essiv.hash_tfm = hash_tfm;
395
396         essiv_tfm = setup_essiv_cpu(cc, ti, salt,
397                                 crypto_ahash_digestsize(hash_tfm));
398         if (IS_ERR(essiv_tfm)) {
399                 crypt_iv_essiv_dtr(cc);
400                 return PTR_ERR(essiv_tfm);
401         }
402         cc->iv_private = essiv_tfm;
403
404         return 0;
405
406 bad:
407         if (hash_tfm && !IS_ERR(hash_tfm))
408                 crypto_free_ahash(hash_tfm);
409         kfree(salt);
410         return err;
411 }
412
413 static int crypt_iv_essiv_gen(struct crypt_config *cc, u8 *iv,
414                               struct dm_crypt_request *dmreq)
415 {
416         struct crypto_cipher *essiv_tfm = cc->iv_private;
417
418         memset(iv, 0, cc->iv_size);
419         *(__le64 *)iv = cpu_to_le64(dmreq->iv_sector);
420         crypto_cipher_encrypt_one(essiv_tfm, iv, iv);
421
422         return 0;
423 }
424
425 static int crypt_iv_benbi_ctr(struct crypt_config *cc, struct dm_target *ti,
426                               const char *opts)
427 {
428         unsigned bs = crypto_skcipher_blocksize(any_tfm(cc));
429         int log = ilog2(bs);
430
431         /* we need to calculate how far we must shift the sector count
432          * to get the cipher block count, we use this shift in _gen */
433
434         if (1 << log != bs) {
435                 ti->error = "cypher blocksize is not a power of 2";
436                 return -EINVAL;
437         }
438
439         if (log > 9) {
440                 ti->error = "cypher blocksize is > 512";
441                 return -EINVAL;
442         }
443
444         cc->iv_gen_private.benbi.shift = 9 - log;
445
446         return 0;
447 }
448
449 static void crypt_iv_benbi_dtr(struct crypt_config *cc)
450 {
451 }
452
453 static int crypt_iv_benbi_gen(struct crypt_config *cc, u8 *iv,
454                               struct dm_crypt_request *dmreq)
455 {
456         __be64 val;
457
458         memset(iv, 0, cc->iv_size - sizeof(u64)); /* rest is cleared below */
459
460         val = cpu_to_be64(((u64)dmreq->iv_sector << cc->iv_gen_private.benbi.shift) + 1);
461         put_unaligned(val, (__be64 *)(iv + cc->iv_size - sizeof(u64)));
462
463         return 0;
464 }
465
466 static int crypt_iv_null_gen(struct crypt_config *cc, u8 *iv,
467                              struct dm_crypt_request *dmreq)
468 {
469         memset(iv, 0, cc->iv_size);
470
471         return 0;
472 }
473
474 static void crypt_iv_lmk_dtr(struct crypt_config *cc)
475 {
476         struct iv_lmk_private *lmk = &cc->iv_gen_private.lmk;
477
478         if (lmk->hash_tfm && !IS_ERR(lmk->hash_tfm))
479                 crypto_free_shash(lmk->hash_tfm);
480         lmk->hash_tfm = NULL;
481
482         kzfree(lmk->seed);
483         lmk->seed = NULL;
484 }
485
486 static int crypt_iv_lmk_ctr(struct crypt_config *cc, struct dm_target *ti,
487                             const char *opts)
488 {
489         struct iv_lmk_private *lmk = &cc->iv_gen_private.lmk;
490
491         lmk->hash_tfm = crypto_alloc_shash("md5", 0, 0);
492         if (IS_ERR(lmk->hash_tfm)) {
493                 ti->error = "Error initializing LMK hash";
494                 return PTR_ERR(lmk->hash_tfm);
495         }
496
497         /* No seed in LMK version 2 */
498         if (cc->key_parts == cc->tfms_count) {
499                 lmk->seed = NULL;
500                 return 0;
501         }
502
503         lmk->seed = kzalloc(LMK_SEED_SIZE, GFP_KERNEL);
504         if (!lmk->seed) {
505                 crypt_iv_lmk_dtr(cc);
506                 ti->error = "Error kmallocing seed storage in LMK";
507                 return -ENOMEM;
508         }
509
510         return 0;
511 }
512
513 static int crypt_iv_lmk_init(struct crypt_config *cc)
514 {
515         struct iv_lmk_private *lmk = &cc->iv_gen_private.lmk;
516         int subkey_size = cc->key_size / cc->key_parts;
517
518         /* LMK seed is on the position of LMK_KEYS + 1 key */
519         if (lmk->seed)
520                 memcpy(lmk->seed, cc->key + (cc->tfms_count * subkey_size),
521                        crypto_shash_digestsize(lmk->hash_tfm));
522
523         return 0;
524 }
525
526 static int crypt_iv_lmk_wipe(struct crypt_config *cc)
527 {
528         struct iv_lmk_private *lmk = &cc->iv_gen_private.lmk;
529
530         if (lmk->seed)
531                 memset(lmk->seed, 0, LMK_SEED_SIZE);
532
533         return 0;
534 }
535
536 static int crypt_iv_lmk_one(struct crypt_config *cc, u8 *iv,
537                             struct dm_crypt_request *dmreq,
538                             u8 *data)
539 {
540         struct iv_lmk_private *lmk = &cc->iv_gen_private.lmk;
541         SHASH_DESC_ON_STACK(desc, lmk->hash_tfm);
542         struct md5_state md5state;
543         __le32 buf[4];
544         int i, r;
545
546         desc->tfm = lmk->hash_tfm;
547         desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
548
549         r = crypto_shash_init(desc);
550         if (r)
551                 return r;
552
553         if (lmk->seed) {
554                 r = crypto_shash_update(desc, lmk->seed, LMK_SEED_SIZE);
555                 if (r)
556                         return r;
557         }
558
559         /* Sector is always 512B, block size 16, add data of blocks 1-31 */
560         r = crypto_shash_update(desc, data + 16, 16 * 31);
561         if (r)
562                 return r;
563
564         /* Sector is cropped to 56 bits here */
565         buf[0] = cpu_to_le32(dmreq->iv_sector & 0xFFFFFFFF);
566         buf[1] = cpu_to_le32((((u64)dmreq->iv_sector >> 32) & 0x00FFFFFF) | 0x80000000);
567         buf[2] = cpu_to_le32(4024);
568         buf[3] = 0;
569         r = crypto_shash_update(desc, (u8 *)buf, sizeof(buf));
570         if (r)
571                 return r;
572
573         /* No MD5 padding here */
574         r = crypto_shash_export(desc, &md5state);
575         if (r)
576                 return r;
577
578         for (i = 0; i < MD5_HASH_WORDS; i++)
579                 __cpu_to_le32s(&md5state.hash[i]);
580         memcpy(iv, &md5state.hash, cc->iv_size);
581
582         return 0;
583 }
584
585 static int crypt_iv_lmk_gen(struct crypt_config *cc, u8 *iv,
586                             struct dm_crypt_request *dmreq)
587 {
588         u8 *src;
589         int r = 0;
590
591         if (bio_data_dir(dmreq->ctx->bio_in) == WRITE) {
592                 src = kmap_atomic(sg_page(&dmreq->sg_in));
593                 r = crypt_iv_lmk_one(cc, iv, dmreq, src + dmreq->sg_in.offset);
594                 kunmap_atomic(src);
595         } else
596                 memset(iv, 0, cc->iv_size);
597
598         return r;
599 }
600
601 static int crypt_iv_lmk_post(struct crypt_config *cc, u8 *iv,
602                              struct dm_crypt_request *dmreq)
603 {
604         u8 *dst;
605         int r;
606
607         if (bio_data_dir(dmreq->ctx->bio_in) == WRITE)
608                 return 0;
609
610         dst = kmap_atomic(sg_page(&dmreq->sg_out));
611         r = crypt_iv_lmk_one(cc, iv, dmreq, dst + dmreq->sg_out.offset);
612
613         /* Tweak the first block of plaintext sector */
614         if (!r)
615                 crypto_xor(dst + dmreq->sg_out.offset, iv, cc->iv_size);
616
617         kunmap_atomic(dst);
618         return r;
619 }
620
621 static void crypt_iv_tcw_dtr(struct crypt_config *cc)
622 {
623         struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;
624
625         kzfree(tcw->iv_seed);
626         tcw->iv_seed = NULL;
627         kzfree(tcw->whitening);
628         tcw->whitening = NULL;
629
630         if (tcw->crc32_tfm && !IS_ERR(tcw->crc32_tfm))
631                 crypto_free_shash(tcw->crc32_tfm);
632         tcw->crc32_tfm = NULL;
633 }
634
635 static int crypt_iv_tcw_ctr(struct crypt_config *cc, struct dm_target *ti,
636                             const char *opts)
637 {
638         struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;
639
640         if (cc->key_size <= (cc->iv_size + TCW_WHITENING_SIZE)) {
641                 ti->error = "Wrong key size for TCW";
642                 return -EINVAL;
643         }
644
645         tcw->crc32_tfm = crypto_alloc_shash("crc32", 0, 0);
646         if (IS_ERR(tcw->crc32_tfm)) {
647                 ti->error = "Error initializing CRC32 in TCW";
648                 return PTR_ERR(tcw->crc32_tfm);
649         }
650
651         tcw->iv_seed = kzalloc(cc->iv_size, GFP_KERNEL);
652         tcw->whitening = kzalloc(TCW_WHITENING_SIZE, GFP_KERNEL);
653         if (!tcw->iv_seed || !tcw->whitening) {
654                 crypt_iv_tcw_dtr(cc);
655                 ti->error = "Error allocating seed storage in TCW";
656                 return -ENOMEM;
657         }
658
659         return 0;
660 }
661
662 static int crypt_iv_tcw_init(struct crypt_config *cc)
663 {
664         struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;
665         int key_offset = cc->key_size - cc->iv_size - TCW_WHITENING_SIZE;
666
667         memcpy(tcw->iv_seed, &cc->key[key_offset], cc->iv_size);
668         memcpy(tcw->whitening, &cc->key[key_offset + cc->iv_size],
669                TCW_WHITENING_SIZE);
670
671         return 0;
672 }
673
674 static int crypt_iv_tcw_wipe(struct crypt_config *cc)
675 {
676         struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;
677
678         memset(tcw->iv_seed, 0, cc->iv_size);
679         memset(tcw->whitening, 0, TCW_WHITENING_SIZE);
680
681         return 0;
682 }
683
684 static int crypt_iv_tcw_whitening(struct crypt_config *cc,
685                                   struct dm_crypt_request *dmreq,
686                                   u8 *data)
687 {
688         struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;
689         __le64 sector = cpu_to_le64(dmreq->iv_sector);
690         u8 buf[TCW_WHITENING_SIZE];
691         SHASH_DESC_ON_STACK(desc, tcw->crc32_tfm);
692         int i, r;
693
694         /* xor whitening with sector number */
695         memcpy(buf, tcw->whitening, TCW_WHITENING_SIZE);
696         crypto_xor(buf, (u8 *)&sector, 8);
697         crypto_xor(&buf[8], (u8 *)&sector, 8);
698
699         /* calculate crc32 for every 32bit part and xor it */
700         desc->tfm = tcw->crc32_tfm;
701         desc->flags = CRYPTO_TFM_REQ_MAY_SLEEP;
702         for (i = 0; i < 4; i++) {
703                 r = crypto_shash_init(desc);
704                 if (r)
705                         goto out;
706                 r = crypto_shash_update(desc, &buf[i * 4], 4);
707                 if (r)
708                         goto out;
709                 r = crypto_shash_final(desc, &buf[i * 4]);
710                 if (r)
711                         goto out;
712         }
713         crypto_xor(&buf[0], &buf[12], 4);
714         crypto_xor(&buf[4], &buf[8], 4);
715
716         /* apply whitening (8 bytes) to whole sector */
717         for (i = 0; i < ((1 << SECTOR_SHIFT) / 8); i++)
718                 crypto_xor(data + i * 8, buf, 8);
719 out:
720         memzero_explicit(buf, sizeof(buf));
721         return r;
722 }
723
724 static int crypt_iv_tcw_gen(struct crypt_config *cc, u8 *iv,
725                             struct dm_crypt_request *dmreq)
726 {
727         struct iv_tcw_private *tcw = &cc->iv_gen_private.tcw;
728         __le64 sector = cpu_to_le64(dmreq->iv_sector);
729         u8 *src;
730         int r = 0;
731
732         /* Remove whitening from ciphertext */
733         if (bio_data_dir(dmreq->ctx->bio_in) != WRITE) {
734                 src = kmap_atomic(sg_page(&dmreq->sg_in));
735                 r = crypt_iv_tcw_whitening(cc, dmreq, src + dmreq->sg_in.offset);
736                 kunmap_atomic(src);
737         }
738
739         /* Calculate IV */
740         memcpy(iv, tcw->iv_seed, cc->iv_size);
741         crypto_xor(iv, (u8 *)&sector, 8);
742         if (cc->iv_size > 8)
743                 crypto_xor(&iv[8], (u8 *)&sector, cc->iv_size - 8);
744
745         return r;
746 }
747
748 static int crypt_iv_tcw_post(struct crypt_config *cc, u8 *iv,
749                              struct dm_crypt_request *dmreq)
750 {
751         u8 *dst;
752         int r;
753
754         if (bio_data_dir(dmreq->ctx->bio_in) != WRITE)
755                 return 0;
756
757         /* Apply whitening on ciphertext */
758         dst = kmap_atomic(sg_page(&dmreq->sg_out));
759         r = crypt_iv_tcw_whitening(cc, dmreq, dst + dmreq->sg_out.offset);
760         kunmap_atomic(dst);
761
762         return r;
763 }
764
765 static const struct crypt_iv_operations crypt_iv_plain_ops = {
766         .generator = crypt_iv_plain_gen
767 };
768
769 static const struct crypt_iv_operations crypt_iv_plain64_ops = {
770         .generator = crypt_iv_plain64_gen
771 };
772
773 static const struct crypt_iv_operations crypt_iv_essiv_ops = {
774         .ctr       = crypt_iv_essiv_ctr,
775         .dtr       = crypt_iv_essiv_dtr,
776         .init      = crypt_iv_essiv_init,
777         .wipe      = crypt_iv_essiv_wipe,
778         .generator = crypt_iv_essiv_gen
779 };
780
781 static const struct crypt_iv_operations crypt_iv_benbi_ops = {
782         .ctr       = crypt_iv_benbi_ctr,
783         .dtr       = crypt_iv_benbi_dtr,
784         .generator = crypt_iv_benbi_gen
785 };
786
787 static const struct crypt_iv_operations crypt_iv_null_ops = {
788         .generator = crypt_iv_null_gen
789 };
790
791 static const struct crypt_iv_operations crypt_iv_lmk_ops = {
792         .ctr       = crypt_iv_lmk_ctr,
793         .dtr       = crypt_iv_lmk_dtr,
794         .init      = crypt_iv_lmk_init,
795         .wipe      = crypt_iv_lmk_wipe,
796         .generator = crypt_iv_lmk_gen,
797         .post      = crypt_iv_lmk_post
798 };
799
800 static const struct crypt_iv_operations crypt_iv_tcw_ops = {
801         .ctr       = crypt_iv_tcw_ctr,
802         .dtr       = crypt_iv_tcw_dtr,
803         .init      = crypt_iv_tcw_init,
804         .wipe      = crypt_iv_tcw_wipe,
805         .generator = crypt_iv_tcw_gen,
806         .post      = crypt_iv_tcw_post
807 };
808
809 static void crypt_convert_init(struct crypt_config *cc,
810                                struct convert_context *ctx,
811                                struct bio *bio_out, struct bio *bio_in,
812                                sector_t sector)
813 {
814         ctx->bio_in = bio_in;
815         ctx->bio_out = bio_out;
816         if (bio_in)
817                 ctx->iter_in = bio_in->bi_iter;
818         if (bio_out)
819                 ctx->iter_out = bio_out->bi_iter;
820         ctx->cc_sector = sector + cc->iv_offset;
821         init_completion(&ctx->restart);
822 }
823
824 static struct dm_crypt_request *dmreq_of_req(struct crypt_config *cc,
825                                              struct skcipher_request *req)
826 {
827         return (struct dm_crypt_request *)((char *)req + cc->dmreq_start);
828 }
829
830 static struct skcipher_request *req_of_dmreq(struct crypt_config *cc,
831                                                struct dm_crypt_request *dmreq)
832 {
833         return (struct skcipher_request *)((char *)dmreq - cc->dmreq_start);
834 }
835
836 static u8 *iv_of_dmreq(struct crypt_config *cc,
837                        struct dm_crypt_request *dmreq)
838 {
839         return (u8 *)ALIGN((unsigned long)(dmreq + 1),
840                 crypto_skcipher_alignmask(any_tfm(cc)) + 1);
841 }
842
843 static int crypt_convert_block(struct crypt_config *cc,
844                                struct convert_context *ctx,
845                                struct skcipher_request *req)
846 {
847         struct bio_vec bv_in = bio_iter_iovec(ctx->bio_in, ctx->iter_in);
848         struct bio_vec bv_out = bio_iter_iovec(ctx->bio_out, ctx->iter_out);
849         struct dm_crypt_request *dmreq;
850         u8 *iv;
851         int r;
852
853         dmreq = dmreq_of_req(cc, req);
854         iv = iv_of_dmreq(cc, dmreq);
855
856         dmreq->iv_sector = ctx->cc_sector;
857         dmreq->ctx = ctx;
858         sg_init_table(&dmreq->sg_in, 1);
859         sg_set_page(&dmreq->sg_in, bv_in.bv_page, 1 << SECTOR_SHIFT,
860                     bv_in.bv_offset);
861
862         sg_init_table(&dmreq->sg_out, 1);
863         sg_set_page(&dmreq->sg_out, bv_out.bv_page, 1 << SECTOR_SHIFT,
864                     bv_out.bv_offset);
865
866         bio_advance_iter(ctx->bio_in, &ctx->iter_in, 1 << SECTOR_SHIFT);
867         bio_advance_iter(ctx->bio_out, &ctx->iter_out, 1 << SECTOR_SHIFT);
868
869         if (cc->iv_gen_ops) {
870                 r = cc->iv_gen_ops->generator(cc, iv, dmreq);
871                 if (r < 0)
872                         return r;
873         }
874
875         skcipher_request_set_crypt(req, &dmreq->sg_in, &dmreq->sg_out,
876                                    1 << SECTOR_SHIFT, iv);
877
878         if (bio_data_dir(ctx->bio_in) == WRITE)
879                 r = crypto_skcipher_encrypt(req);
880         else
881                 r = crypto_skcipher_decrypt(req);
882
883         if (!r && cc->iv_gen_ops && cc->iv_gen_ops->post)
884                 r = cc->iv_gen_ops->post(cc, iv, dmreq);
885
886         return r;
887 }
888
889 static void kcryptd_async_done(struct crypto_async_request *async_req,
890                                int error);
891
892 static void crypt_alloc_req(struct crypt_config *cc,
893                             struct convert_context *ctx)
894 {
895         unsigned key_index = ctx->cc_sector & (cc->tfms_count - 1);
896
897         if (!ctx->req)
898                 ctx->req = mempool_alloc(cc->req_pool, GFP_NOIO);
899
900         skcipher_request_set_tfm(ctx->req, cc->tfms[key_index]);
901
902         /*
903          * Use REQ_MAY_BACKLOG so a cipher driver internally backlogs
904          * requests if driver request queue is full.
905          */
906         skcipher_request_set_callback(ctx->req,
907             CRYPTO_TFM_REQ_MAY_BACKLOG | CRYPTO_TFM_REQ_MAY_SLEEP,
908             kcryptd_async_done, dmreq_of_req(cc, ctx->req));
909 }
910
911 static void crypt_free_req(struct crypt_config *cc,
912                            struct skcipher_request *req, struct bio *base_bio)
913 {
914         struct dm_crypt_io *io = dm_per_bio_data(base_bio, cc->per_bio_data_size);
915
916         if ((struct skcipher_request *)(io + 1) != req)
917                 mempool_free(req, cc->req_pool);
918 }
919
920 /*
921  * Encrypt / decrypt data from one bio to another one (can be the same one)
922  */
923 static int crypt_convert(struct crypt_config *cc,
924                          struct convert_context *ctx)
925 {
926         int r;
927
928         atomic_set(&ctx->cc_pending, 1);
929
930         while (ctx->iter_in.bi_size && ctx->iter_out.bi_size) {
931
932                 crypt_alloc_req(cc, ctx);
933
934                 atomic_inc(&ctx->cc_pending);
935
936                 r = crypt_convert_block(cc, ctx, ctx->req);
937
938                 switch (r) {
939                 /*
940                  * The request was queued by a crypto driver
941                  * but the driver request queue is full, let's wait.
942                  */
943                 case -EBUSY:
944                         wait_for_completion(&ctx->restart);
945                         reinit_completion(&ctx->restart);
946                         /* fall through */
947                 /*
948                  * The request is queued and processed asynchronously,
949                  * completion function kcryptd_async_done() will be called.
950                  */
951                 case -EINPROGRESS:
952                         ctx->req = NULL;
953                         ctx->cc_sector++;
954                         continue;
955                 /*
956                  * The request was already processed (synchronously).
957                  */
958                 case 0:
959                         atomic_dec(&ctx->cc_pending);
960                         ctx->cc_sector++;
961                         cond_resched();
962                         continue;
963
964                 /* There was an error while processing the request. */
965                 default:
966                         atomic_dec(&ctx->cc_pending);
967                         return r;
968                 }
969         }
970
971         return 0;
972 }
973
974 static void crypt_free_buffer_pages(struct crypt_config *cc, struct bio *clone);
975
976 /*
977  * Generate a new unfragmented bio with the given size
978  * This should never violate the device limitations (but only because
979  * max_segment_size is being constrained to PAGE_SIZE).
980  *
981  * This function may be called concurrently. If we allocate from the mempool
982  * concurrently, there is a possibility of deadlock. For example, if we have
983  * mempool of 256 pages, two processes, each wanting 256, pages allocate from
984  * the mempool concurrently, it may deadlock in a situation where both processes
985  * have allocated 128 pages and the mempool is exhausted.
986  *
987  * In order to avoid this scenario we allocate the pages under a mutex.
988  *
989  * In order to not degrade performance with excessive locking, we try
990  * non-blocking allocations without a mutex first but on failure we fallback
991  * to blocking allocations with a mutex.
992  */
993 static struct bio *crypt_alloc_buffer(struct dm_crypt_io *io, unsigned size)
994 {
995         struct crypt_config *cc = io->cc;
996         struct bio *clone;
997         unsigned int nr_iovecs = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;
998         gfp_t gfp_mask = GFP_NOWAIT | __GFP_HIGHMEM;
999         unsigned i, len, remaining_size;
1000         struct page *page;
1001
1002 retry:
1003         if (unlikely(gfp_mask & __GFP_DIRECT_RECLAIM))
1004                 mutex_lock(&cc->bio_alloc_lock);
1005
1006         clone = bio_alloc_bioset(GFP_NOIO, nr_iovecs, cc->bs);
1007         if (!clone)
1008                 goto return_clone;
1009
1010         clone_init(io, clone);
1011
1012         remaining_size = size;
1013
1014         for (i = 0; i < nr_iovecs; i++) {
1015                 page = mempool_alloc(cc->page_pool, gfp_mask);
1016                 if (!page) {
1017                         crypt_free_buffer_pages(cc, clone);
1018                         bio_put(clone);
1019                         gfp_mask |= __GFP_DIRECT_RECLAIM;
1020                         goto retry;
1021                 }
1022
1023                 len = (remaining_size > PAGE_SIZE) ? PAGE_SIZE : remaining_size;
1024
1025                 bio_add_page(clone, page, len, 0);
1026
1027                 remaining_size -= len;
1028         }
1029
1030 return_clone:
1031         if (unlikely(gfp_mask & __GFP_DIRECT_RECLAIM))
1032                 mutex_unlock(&cc->bio_alloc_lock);
1033
1034         return clone;
1035 }
1036
1037 static void crypt_free_buffer_pages(struct crypt_config *cc, struct bio *clone)
1038 {
1039         unsigned int i;
1040         struct bio_vec *bv;
1041
1042         bio_for_each_segment_all(bv, clone, i) {
1043                 BUG_ON(!bv->bv_page);
1044                 mempool_free(bv->bv_page, cc->page_pool);
1045                 bv->bv_page = NULL;
1046         }
1047 }
1048
1049 static void crypt_io_init(struct dm_crypt_io *io, struct crypt_config *cc,
1050                           struct bio *bio, sector_t sector)
1051 {
1052         io->cc = cc;
1053         io->base_bio = bio;
1054         io->sector = sector;
1055         io->error = 0;
1056         io->ctx.req = NULL;
1057         atomic_set(&io->io_pending, 0);
1058 }
1059
1060 static void crypt_inc_pending(struct dm_crypt_io *io)
1061 {
1062         atomic_inc(&io->io_pending);
1063 }
1064
1065 /*
1066  * One of the bios was finished. Check for completion of
1067  * the whole request and correctly clean up the buffer.
1068  */
1069 static void crypt_dec_pending(struct dm_crypt_io *io)
1070 {
1071         struct crypt_config *cc = io->cc;
1072         struct bio *base_bio = io->base_bio;
1073         int error = io->error;
1074
1075         if (!atomic_dec_and_test(&io->io_pending))
1076                 return;
1077
1078         if (io->ctx.req)
1079                 crypt_free_req(cc, io->ctx.req, base_bio);
1080
1081         base_bio->bi_error = error;
1082         bio_endio(base_bio);
1083 }
1084
1085 /*
1086  * kcryptd/kcryptd_io:
1087  *
1088  * Needed because it would be very unwise to do decryption in an
1089  * interrupt context.
1090  *
1091  * kcryptd performs the actual encryption or decryption.
1092  *
1093  * kcryptd_io performs the IO submission.
1094  *
1095  * They must be separated as otherwise the final stages could be
1096  * starved by new requests which can block in the first stages due
1097  * to memory allocation.
1098  *
1099  * The work is done per CPU global for all dm-crypt instances.
1100  * They should not depend on each other and do not block.
1101  */
1102 static void crypt_endio(struct bio *clone)
1103 {
1104         struct dm_crypt_io *io = clone->bi_private;
1105         struct crypt_config *cc = io->cc;
1106         unsigned rw = bio_data_dir(clone);
1107         int error;
1108
1109         /*
1110          * free the processed pages
1111          */
1112         if (rw == WRITE)
1113                 crypt_free_buffer_pages(cc, clone);
1114
1115         error = clone->bi_error;
1116         bio_put(clone);
1117
1118         if (rw == READ && !error) {
1119                 kcryptd_queue_crypt(io);
1120                 return;
1121         }
1122
1123         if (unlikely(error))
1124                 io->error = error;
1125
1126         crypt_dec_pending(io);
1127 }
1128
1129 static void clone_init(struct dm_crypt_io *io, struct bio *clone)
1130 {
1131         struct crypt_config *cc = io->cc;
1132
1133         clone->bi_private = io;
1134         clone->bi_end_io  = crypt_endio;
1135         clone->bi_bdev    = cc->dev->bdev;
1136         clone->bi_opf     = io->base_bio->bi_opf;
1137 }
1138
1139 static int kcryptd_io_read(struct dm_crypt_io *io, gfp_t gfp)
1140 {
1141         struct crypt_config *cc = io->cc;
1142         struct bio *clone;
1143
1144         /*
1145          * We need the original biovec array in order to decrypt
1146          * the whole bio data *afterwards* -- thanks to immutable
1147          * biovecs we don't need to worry about the block layer
1148          * modifying the biovec array; so leverage bio_clone_fast().
1149          */
1150         clone = bio_clone_fast(io->base_bio, gfp, cc->bs);
1151         if (!clone)
1152                 return 1;
1153
1154         crypt_inc_pending(io);
1155
1156         clone_init(io, clone);
1157         clone->bi_iter.bi_sector = cc->start + io->sector;
1158
1159         generic_make_request(clone);
1160         return 0;
1161 }
1162
1163 static void kcryptd_io_read_work(struct work_struct *work)
1164 {
1165         struct dm_crypt_io *io = container_of(work, struct dm_crypt_io, work);
1166
1167         crypt_inc_pending(io);
1168         if (kcryptd_io_read(io, GFP_NOIO))
1169                 io->error = -ENOMEM;
1170         crypt_dec_pending(io);
1171 }
1172
1173 static void kcryptd_queue_read(struct dm_crypt_io *io)
1174 {
1175         struct crypt_config *cc = io->cc;
1176
1177         INIT_WORK(&io->work, kcryptd_io_read_work);
1178         queue_work(cc->io_queue, &io->work);
1179 }
1180
1181 static void kcryptd_io_write(struct dm_crypt_io *io)
1182 {
1183         struct bio *clone = io->ctx.bio_out;
1184
1185         generic_make_request(clone);
1186 }
1187
1188 #define crypt_io_from_node(node) rb_entry((node), struct dm_crypt_io, rb_node)
1189
1190 static int dmcrypt_write(void *data)
1191 {
1192         struct crypt_config *cc = data;
1193         struct dm_crypt_io *io;
1194
1195         while (1) {
1196                 struct rb_root write_tree;
1197                 struct blk_plug plug;
1198
1199                 DECLARE_WAITQUEUE(wait, current);
1200
1201                 spin_lock_irq(&cc->write_thread_wait.lock);
1202 continue_locked:
1203
1204                 if (!RB_EMPTY_ROOT(&cc->write_tree))
1205                         goto pop_from_list;
1206
1207                 set_current_state(TASK_INTERRUPTIBLE);
1208                 __add_wait_queue(&cc->write_thread_wait, &wait);
1209
1210                 spin_unlock_irq(&cc->write_thread_wait.lock);
1211
1212                 if (unlikely(kthread_should_stop())) {
1213                         set_current_state(TASK_RUNNING);
1214                         remove_wait_queue(&cc->write_thread_wait, &wait);
1215                         break;
1216                 }
1217
1218                 schedule();
1219
1220                 set_current_state(TASK_RUNNING);
1221                 spin_lock_irq(&cc->write_thread_wait.lock);
1222                 __remove_wait_queue(&cc->write_thread_wait, &wait);
1223                 goto continue_locked;
1224
1225 pop_from_list:
1226                 write_tree = cc->write_tree;
1227                 cc->write_tree = RB_ROOT;
1228                 spin_unlock_irq(&cc->write_thread_wait.lock);
1229
1230                 BUG_ON(rb_parent(write_tree.rb_node));
1231
1232                 /*
1233                  * Note: we cannot walk the tree here with rb_next because
1234                  * the structures may be freed when kcryptd_io_write is called.
1235                  */
1236                 blk_start_plug(&plug);
1237                 do {
1238                         io = crypt_io_from_node(rb_first(&write_tree));
1239                         rb_erase(&io->rb_node, &write_tree);
1240                         kcryptd_io_write(io);
1241                 } while (!RB_EMPTY_ROOT(&write_tree));
1242                 blk_finish_plug(&plug);
1243         }
1244         return 0;
1245 }
1246
1247 static void kcryptd_crypt_write_io_submit(struct dm_crypt_io *io, int async)
1248 {
1249         struct bio *clone = io->ctx.bio_out;
1250         struct crypt_config *cc = io->cc;
1251         unsigned long flags;
1252         sector_t sector;
1253         struct rb_node **rbp, *parent;
1254
1255         if (unlikely(io->error < 0)) {
1256                 crypt_free_buffer_pages(cc, clone);
1257                 bio_put(clone);
1258                 crypt_dec_pending(io);
1259                 return;
1260         }
1261
1262         /* crypt_convert should have filled the clone bio */
1263         BUG_ON(io->ctx.iter_out.bi_size);
1264
1265         clone->bi_iter.bi_sector = cc->start + io->sector;
1266
1267         if (likely(!async) && test_bit(DM_CRYPT_NO_OFFLOAD, &cc->flags)) {
1268                 generic_make_request(clone);
1269                 return;
1270         }
1271
1272         spin_lock_irqsave(&cc->write_thread_wait.lock, flags);
1273         rbp = &cc->write_tree.rb_node;
1274         parent = NULL;
1275         sector = io->sector;
1276         while (*rbp) {
1277                 parent = *rbp;
1278                 if (sector < crypt_io_from_node(parent)->sector)
1279                         rbp = &(*rbp)->rb_left;
1280                 else
1281                         rbp = &(*rbp)->rb_right;
1282         }
1283         rb_link_node(&io->rb_node, parent, rbp);
1284         rb_insert_color(&io->rb_node, &cc->write_tree);
1285
1286         wake_up_locked(&cc->write_thread_wait);
1287         spin_unlock_irqrestore(&cc->write_thread_wait.lock, flags);
1288 }
1289
1290 static void kcryptd_crypt_write_convert(struct dm_crypt_io *io)
1291 {
1292         struct crypt_config *cc = io->cc;
1293         struct bio *clone;
1294         int crypt_finished;
1295         sector_t sector = io->sector;
1296         int r;
1297
1298         /*
1299          * Prevent io from disappearing until this function completes.
1300          */
1301         crypt_inc_pending(io);
1302         crypt_convert_init(cc, &io->ctx, NULL, io->base_bio, sector);
1303
1304         clone = crypt_alloc_buffer(io, io->base_bio->bi_iter.bi_size);
1305         if (unlikely(!clone)) {
1306                 io->error = -EIO;
1307                 goto dec;
1308         }
1309
1310         io->ctx.bio_out = clone;
1311         io->ctx.iter_out = clone->bi_iter;
1312
1313         sector += bio_sectors(clone);
1314
1315         crypt_inc_pending(io);
1316         r = crypt_convert(cc, &io->ctx);
1317         if (r)
1318                 io->error = -EIO;
1319         crypt_finished = atomic_dec_and_test(&io->ctx.cc_pending);
1320
1321         /* Encryption was already finished, submit io now */
1322         if (crypt_finished) {
1323                 kcryptd_crypt_write_io_submit(io, 0);
1324                 io->sector = sector;
1325         }
1326
1327 dec:
1328         crypt_dec_pending(io);
1329 }
1330
1331 static void kcryptd_crypt_read_done(struct dm_crypt_io *io)
1332 {
1333         crypt_dec_pending(io);
1334 }
1335
1336 static void kcryptd_crypt_read_convert(struct dm_crypt_io *io)
1337 {
1338         struct crypt_config *cc = io->cc;
1339         int r = 0;
1340
1341         crypt_inc_pending(io);
1342
1343         crypt_convert_init(cc, &io->ctx, io->base_bio, io->base_bio,
1344                            io->sector);
1345
1346         r = crypt_convert(cc, &io->ctx);
1347         if (r < 0)
1348                 io->error = -EIO;
1349
1350         if (atomic_dec_and_test(&io->ctx.cc_pending))
1351                 kcryptd_crypt_read_done(io);
1352
1353         crypt_dec_pending(io);
1354 }
1355
1356 static void kcryptd_async_done(struct crypto_async_request *async_req,
1357                                int error)
1358 {
1359         struct dm_crypt_request *dmreq = async_req->data;
1360         struct convert_context *ctx = dmreq->ctx;
1361         struct dm_crypt_io *io = container_of(ctx, struct dm_crypt_io, ctx);
1362         struct crypt_config *cc = io->cc;
1363
1364         /*
1365          * A request from crypto driver backlog is going to be processed now,
1366          * finish the completion and continue in crypt_convert().
1367          * (Callback will be called for the second time for this request.)
1368          */
1369         if (error == -EINPROGRESS) {
1370                 complete(&ctx->restart);
1371                 return;
1372         }
1373
1374         if (!error && cc->iv_gen_ops && cc->iv_gen_ops->post)
1375                 error = cc->iv_gen_ops->post(cc, iv_of_dmreq(cc, dmreq), dmreq);
1376
1377         if (error < 0)
1378                 io->error = -EIO;
1379
1380         crypt_free_req(cc, req_of_dmreq(cc, dmreq), io->base_bio);
1381
1382         if (!atomic_dec_and_test(&ctx->cc_pending))
1383                 return;
1384
1385         if (bio_data_dir(io->base_bio) == READ)
1386                 kcryptd_crypt_read_done(io);
1387         else
1388                 kcryptd_crypt_write_io_submit(io, 1);
1389 }
1390
1391 static void kcryptd_crypt(struct work_struct *work)
1392 {
1393         struct dm_crypt_io *io = container_of(work, struct dm_crypt_io, work);
1394
1395         if (bio_data_dir(io->base_bio) == READ)
1396                 kcryptd_crypt_read_convert(io);
1397         else
1398                 kcryptd_crypt_write_convert(io);
1399 }
1400
1401 static void kcryptd_queue_crypt(struct dm_crypt_io *io)
1402 {
1403         struct crypt_config *cc = io->cc;
1404
1405         INIT_WORK(&io->work, kcryptd_crypt);
1406         queue_work(cc->crypt_queue, &io->work);
1407 }
1408
1409 /*
1410  * Decode key from its hex representation
1411  */
1412 static int crypt_decode_key(u8 *key, char *hex, unsigned int size)
1413 {
1414         char buffer[3];
1415         unsigned int i;
1416
1417         buffer[2] = '\0';
1418
1419         for (i = 0; i < size; i++) {
1420                 buffer[0] = *hex++;
1421                 buffer[1] = *hex++;
1422
1423                 if (kstrtou8(buffer, 16, &key[i]))
1424                         return -EINVAL;
1425         }
1426
1427         if (*hex != '\0')
1428                 return -EINVAL;
1429
1430         return 0;
1431 }
1432
1433 static void crypt_free_tfms(struct crypt_config *cc)
1434 {
1435         unsigned i;
1436
1437         if (!cc->tfms)
1438                 return;
1439
1440         for (i = 0; i < cc->tfms_count; i++)
1441                 if (cc->tfms[i] && !IS_ERR(cc->tfms[i])) {
1442                         crypto_free_skcipher(cc->tfms[i]);
1443                         cc->tfms[i] = NULL;
1444                 }
1445
1446         kfree(cc->tfms);
1447         cc->tfms = NULL;
1448 }
1449
1450 static int crypt_alloc_tfms(struct crypt_config *cc, char *ciphermode)
1451 {
1452         unsigned i;
1453         int err;
1454
1455         cc->tfms = kzalloc(cc->tfms_count * sizeof(struct crypto_skcipher *),
1456                            GFP_KERNEL);
1457         if (!cc->tfms)
1458                 return -ENOMEM;
1459
1460         for (i = 0; i < cc->tfms_count; i++) {
1461                 cc->tfms[i] = crypto_alloc_skcipher(ciphermode, 0, 0);
1462                 if (IS_ERR(cc->tfms[i])) {
1463                         err = PTR_ERR(cc->tfms[i]);
1464                         crypt_free_tfms(cc);
1465                         return err;
1466                 }
1467         }
1468
1469         return 0;
1470 }
1471
1472 static int crypt_setkey(struct crypt_config *cc)
1473 {
1474         unsigned subkey_size;
1475         int err = 0, i, r;
1476
1477         /* Ignore extra keys (which are used for IV etc) */
1478         subkey_size = (cc->key_size - cc->key_extra_size) >> ilog2(cc->tfms_count);
1479
1480         for (i = 0; i < cc->tfms_count; i++) {
1481                 r = crypto_skcipher_setkey(cc->tfms[i],
1482                                            cc->key + (i * subkey_size),
1483                                            subkey_size);
1484                 if (r)
1485                         err = r;
1486         }
1487
1488         return err;
1489 }
1490
1491 #ifdef CONFIG_KEYS
1492
1493 static bool contains_whitespace(const char *str)
1494 {
1495         while (*str)
1496                 if (isspace(*str++))
1497                         return true;
1498         return false;
1499 }
1500
1501 static int crypt_set_keyring_key(struct crypt_config *cc, const char *key_string)
1502 {
1503         char *new_key_string, *key_desc;
1504         int ret;
1505         struct key *key;
1506         const struct user_key_payload *ukp;
1507
1508         /*
1509          * Reject key_string with whitespace. dm core currently lacks code for
1510          * proper whitespace escaping in arguments on DM_TABLE_STATUS path.
1511          */
1512         if (contains_whitespace(key_string)) {
1513                 DMERR("whitespace chars not allowed in key string");
1514                 return -EINVAL;
1515         }
1516
1517         /* look for next ':' separating key_type from key_description */
1518         key_desc = strpbrk(key_string, ":");
1519         if (!key_desc || key_desc == key_string || !strlen(key_desc + 1))
1520                 return -EINVAL;
1521
1522         if (strncmp(key_string, "logon:", key_desc - key_string + 1) &&
1523             strncmp(key_string, "user:", key_desc - key_string + 1))
1524                 return -EINVAL;
1525
1526         new_key_string = kstrdup(key_string, GFP_KERNEL);
1527         if (!new_key_string)
1528                 return -ENOMEM;
1529
1530         key = request_key(key_string[0] == 'l' ? &key_type_logon : &key_type_user,
1531                           key_desc + 1, NULL);
1532         if (IS_ERR(key)) {
1533                 kzfree(new_key_string);
1534                 return PTR_ERR(key);
1535         }
1536
1537         down_read(&key->sem);
1538
1539         ukp = user_key_payload_locked(key);
1540         if (!ukp) {
1541                 up_read(&key->sem);
1542                 key_put(key);
1543                 kzfree(new_key_string);
1544                 return -EKEYREVOKED;
1545         }
1546
1547         if (cc->key_size != ukp->datalen) {
1548                 up_read(&key->sem);
1549                 key_put(key);
1550                 kzfree(new_key_string);
1551                 return -EINVAL;
1552         }
1553
1554         memcpy(cc->key, ukp->data, cc->key_size);
1555
1556         up_read(&key->sem);
1557         key_put(key);
1558
1559         /* clear the flag since following operations may invalidate previously valid key */
1560         clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1561
1562         ret = crypt_setkey(cc);
1563
1564         /* wipe the kernel key payload copy in each case */
1565         memset(cc->key, 0, cc->key_size * sizeof(u8));
1566
1567         if (!ret) {
1568                 set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1569                 kzfree(cc->key_string);
1570                 cc->key_string = new_key_string;
1571         } else
1572                 kzfree(new_key_string);
1573
1574         return ret;
1575 }
1576
1577 static int get_key_size(char **key_string)
1578 {
1579         char *colon, dummy;
1580         int ret;
1581
1582         if (*key_string[0] != ':')
1583                 return strlen(*key_string) >> 1;
1584
1585         /* look for next ':' in key string */
1586         colon = strpbrk(*key_string + 1, ":");
1587         if (!colon)
1588                 return -EINVAL;
1589
1590         if (sscanf(*key_string + 1, "%u%c", &ret, &dummy) != 2 || dummy != ':')
1591                 return -EINVAL;
1592
1593         *key_string = colon;
1594
1595         /* remaining key string should be :<logon|user>:<key_desc> */
1596
1597         return ret;
1598 }
1599
1600 #else
1601
1602 static int crypt_set_keyring_key(struct crypt_config *cc, const char *key_string)
1603 {
1604         return -EINVAL;
1605 }
1606
1607 static int get_key_size(char **key_string)
1608 {
1609         return (*key_string[0] == ':') ? -EINVAL : strlen(*key_string) >> 1;
1610 }
1611
1612 #endif
1613
1614 static int crypt_set_key(struct crypt_config *cc, char *key)
1615 {
1616         int r = -EINVAL;
1617         int key_string_len = strlen(key);
1618
1619         /* Hyphen (which gives a key_size of zero) means there is no key. */
1620         if (!cc->key_size && strcmp(key, "-"))
1621                 goto out;
1622
1623         /* ':' means the key is in kernel keyring, short-circuit normal key processing */
1624         if (key[0] == ':') {
1625                 r = crypt_set_keyring_key(cc, key + 1);
1626                 goto out;
1627         }
1628
1629         /* clear the flag since following operations may invalidate previously valid key */
1630         clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1631
1632         /* wipe references to any kernel keyring key */
1633         kzfree(cc->key_string);
1634         cc->key_string = NULL;
1635
1636         if (cc->key_size && crypt_decode_key(cc->key, key, cc->key_size) < 0)
1637                 goto out;
1638
1639         r = crypt_setkey(cc);
1640         if (!r)
1641                 set_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1642
1643 out:
1644         /* Hex key string not needed after here, so wipe it. */
1645         memset(key, '0', key_string_len);
1646
1647         return r;
1648 }
1649
1650 static int crypt_wipe_key(struct crypt_config *cc)
1651 {
1652         clear_bit(DM_CRYPT_KEY_VALID, &cc->flags);
1653         memset(&cc->key, 0, cc->key_size * sizeof(u8));
1654         kzfree(cc->key_string);
1655         cc->key_string = NULL;
1656
1657         return crypt_setkey(cc);
1658 }
1659
1660 static void crypt_dtr(struct dm_target *ti)
1661 {
1662         struct crypt_config *cc = ti->private;
1663
1664         ti->private = NULL;
1665
1666         if (!cc)
1667                 return;
1668
1669         if (cc->write_thread)
1670                 kthread_stop(cc->write_thread);
1671
1672         if (cc->io_queue)
1673                 destroy_workqueue(cc->io_queue);
1674         if (cc->crypt_queue)
1675                 destroy_workqueue(cc->crypt_queue);
1676
1677         crypt_free_tfms(cc);
1678
1679         if (cc->bs)
1680                 bioset_free(cc->bs);
1681
1682         mempool_destroy(cc->page_pool);
1683         mempool_destroy(cc->req_pool);
1684
1685         if (cc->iv_gen_ops && cc->iv_gen_ops->dtr)
1686                 cc->iv_gen_ops->dtr(cc);
1687
1688         if (cc->dev)
1689                 dm_put_device(ti, cc->dev);
1690
1691         kzfree(cc->cipher);
1692         kzfree(cc->cipher_string);
1693         kzfree(cc->key_string);
1694
1695         /* Must zero key material before freeing */
1696         kzfree(cc);
1697 }
1698
1699 static int crypt_ctr_cipher(struct dm_target *ti,
1700                             char *cipher_in, char *key)
1701 {
1702         struct crypt_config *cc = ti->private;
1703         char *tmp, *cipher, *chainmode, *ivmode, *ivopts, *keycount;
1704         char *cipher_api = NULL;
1705         int ret = -EINVAL;
1706         char dummy;
1707
1708         /* Convert to crypto api definition? */
1709         if (strchr(cipher_in, '(')) {
1710                 ti->error = "Bad cipher specification";
1711                 return -EINVAL;
1712         }
1713
1714         cc->cipher_string = kstrdup(cipher_in, GFP_KERNEL);
1715         if (!cc->cipher_string)
1716                 goto bad_mem;
1717
1718         /*
1719          * Legacy dm-crypt cipher specification
1720          * cipher[:keycount]-mode-iv:ivopts
1721          */
1722         tmp = cipher_in;
1723         keycount = strsep(&tmp, "-");
1724         cipher = strsep(&keycount, ":");
1725
1726         if (!keycount)
1727                 cc->tfms_count = 1;
1728         else if (sscanf(keycount, "%u%c", &cc->tfms_count, &dummy) != 1 ||
1729                  !is_power_of_2(cc->tfms_count)) {
1730                 ti->error = "Bad cipher key count specification";
1731                 return -EINVAL;
1732         }
1733         cc->key_parts = cc->tfms_count;
1734         cc->key_extra_size = 0;
1735
1736         cc->cipher = kstrdup(cipher, GFP_KERNEL);
1737         if (!cc->cipher)
1738                 goto bad_mem;
1739
1740         chainmode = strsep(&tmp, "-");
1741         ivopts = strsep(&tmp, "-");
1742         ivmode = strsep(&ivopts, ":");
1743
1744         if (tmp)
1745                 DMWARN("Ignoring unexpected additional cipher options");
1746
1747         /*
1748          * For compatibility with the original dm-crypt mapping format, if
1749          * only the cipher name is supplied, use cbc-plain.
1750          */
1751         if (!chainmode || (!strcmp(chainmode, "plain") && !ivmode)) {
1752                 chainmode = "cbc";
1753                 ivmode = "plain";
1754         }
1755
1756         if (strcmp(chainmode, "ecb") && !ivmode) {
1757                 ti->error = "IV mechanism required";
1758                 return -EINVAL;
1759         }
1760
1761         cipher_api = kmalloc(CRYPTO_MAX_ALG_NAME, GFP_KERNEL);
1762         if (!cipher_api)
1763                 goto bad_mem;
1764
1765         ret = snprintf(cipher_api, CRYPTO_MAX_ALG_NAME,
1766                        "%s(%s)", chainmode, cipher);
1767         if (ret < 0) {
1768                 kfree(cipher_api);
1769                 goto bad_mem;
1770         }
1771
1772         /* Allocate cipher */
1773         ret = crypt_alloc_tfms(cc, cipher_api);
1774         if (ret < 0) {
1775                 ti->error = "Error allocating crypto tfm";
1776                 goto bad;
1777         }
1778
1779         /* Initialize IV */
1780         cc->iv_size = crypto_skcipher_ivsize(any_tfm(cc));
1781         if (cc->iv_size)
1782                 /* at least a 64 bit sector number should fit in our buffer */
1783                 cc->iv_size = max(cc->iv_size,
1784                                   (unsigned int)(sizeof(u64) / sizeof(u8)));
1785         else if (ivmode) {
1786                 DMWARN("Selected cipher does not support IVs");
1787                 ivmode = NULL;
1788         }
1789
1790         /* Choose ivmode, see comments at iv code. */
1791         if (ivmode == NULL)
1792                 cc->iv_gen_ops = NULL;
1793         else if (strcmp(ivmode, "plain") == 0)
1794                 cc->iv_gen_ops = &crypt_iv_plain_ops;
1795         else if (strcmp(ivmode, "plain64") == 0)
1796                 cc->iv_gen_ops = &crypt_iv_plain64_ops;
1797         else if (strcmp(ivmode, "essiv") == 0)
1798                 cc->iv_gen_ops = &crypt_iv_essiv_ops;
1799         else if (strcmp(ivmode, "benbi") == 0)
1800                 cc->iv_gen_ops = &crypt_iv_benbi_ops;
1801         else if (strcmp(ivmode, "null") == 0)
1802                 cc->iv_gen_ops = &crypt_iv_null_ops;
1803         else if (strcmp(ivmode, "lmk") == 0) {
1804                 cc->iv_gen_ops = &crypt_iv_lmk_ops;
1805                 /*
1806                  * Version 2 and 3 is recognised according
1807                  * to length of provided multi-key string.
1808                  * If present (version 3), last key is used as IV seed.
1809                  * All keys (including IV seed) are always the same size.
1810                  */
1811                 if (cc->key_size % cc->key_parts) {
1812                         cc->key_parts++;
1813                         cc->key_extra_size = cc->key_size / cc->key_parts;
1814                 }
1815         } else if (strcmp(ivmode, "tcw") == 0) {
1816                 cc->iv_gen_ops = &crypt_iv_tcw_ops;
1817                 cc->key_parts += 2; /* IV + whitening */
1818                 cc->key_extra_size = cc->iv_size + TCW_WHITENING_SIZE;
1819         } else {
1820                 ret = -EINVAL;
1821                 ti->error = "Invalid IV mode";
1822                 goto bad;
1823         }
1824
1825         /* Initialize and set key */
1826         ret = crypt_set_key(cc, key);
1827         if (ret < 0) {
1828                 ti->error = "Error decoding and setting key";
1829                 goto bad;
1830         }
1831
1832         /* Allocate IV */
1833         if (cc->iv_gen_ops && cc->iv_gen_ops->ctr) {
1834                 ret = cc->iv_gen_ops->ctr(cc, ti, ivopts);
1835                 if (ret < 0) {
1836                         ti->error = "Error creating IV";
1837                         goto bad;
1838                 }
1839         }
1840
1841         /* Initialize IV (set keys for ESSIV etc) */
1842         if (cc->iv_gen_ops && cc->iv_gen_ops->init) {
1843                 ret = cc->iv_gen_ops->init(cc);
1844                 if (ret < 0) {
1845                         ti->error = "Error initialising IV";
1846                         goto bad;
1847                 }
1848         }
1849
1850         ret = 0;
1851 bad:
1852         kfree(cipher_api);
1853         return ret;
1854
1855 bad_mem:
1856         ti->error = "Cannot allocate cipher strings";
1857         return -ENOMEM;
1858 }
1859
1860 /*
1861  * Construct an encryption mapping:
1862  * <cipher> [<key>|:<key_size>:<user|logon>:<key_description>] <iv_offset> <dev_path> <start>
1863  */
1864 static int crypt_ctr(struct dm_target *ti, unsigned int argc, char **argv)
1865 {
1866         struct crypt_config *cc;
1867         int key_size;
1868         unsigned int opt_params;
1869         unsigned long long tmpll;
1870         int ret;
1871         size_t iv_size_padding;
1872         struct dm_arg_set as;
1873         const char *opt_string;
1874         char dummy;
1875
1876         static struct dm_arg _args[] = {
1877                 {0, 3, "Invalid number of feature args"},
1878         };
1879
1880         if (argc < 5) {
1881                 ti->error = "Not enough arguments";
1882                 return -EINVAL;
1883         }
1884
1885         key_size = get_key_size(&argv[1]);
1886         if (key_size < 0) {
1887                 ti->error = "Cannot parse key size";
1888                 return -EINVAL;
1889         }
1890
1891         cc = kzalloc(sizeof(*cc) + key_size * sizeof(u8), GFP_KERNEL);
1892         if (!cc) {
1893                 ti->error = "Cannot allocate encryption context";
1894                 return -ENOMEM;
1895         }
1896         cc->key_size = key_size;
1897
1898         ti->private = cc;
1899         ret = crypt_ctr_cipher(ti, argv[0], argv[1]);
1900         if (ret < 0)
1901                 goto bad;
1902
1903         cc->dmreq_start = sizeof(struct skcipher_request);
1904         cc->dmreq_start += crypto_skcipher_reqsize(any_tfm(cc));
1905         cc->dmreq_start = ALIGN(cc->dmreq_start, __alignof__(struct dm_crypt_request));
1906
1907         if (crypto_skcipher_alignmask(any_tfm(cc)) < CRYPTO_MINALIGN) {
1908                 /* Allocate the padding exactly */
1909                 iv_size_padding = -(cc->dmreq_start + sizeof(struct dm_crypt_request))
1910                                 & crypto_skcipher_alignmask(any_tfm(cc));
1911         } else {
1912                 /*
1913                  * If the cipher requires greater alignment than kmalloc
1914                  * alignment, we don't know the exact position of the
1915                  * initialization vector. We must assume worst case.
1916                  */
1917                 iv_size_padding = crypto_skcipher_alignmask(any_tfm(cc));
1918         }
1919
1920         ret = -ENOMEM;
1921         cc->req_pool = mempool_create_kmalloc_pool(MIN_IOS, cc->dmreq_start +
1922                         sizeof(struct dm_crypt_request) + iv_size_padding + cc->iv_size);
1923         if (!cc->req_pool) {
1924                 ti->error = "Cannot allocate crypt request mempool";
1925                 goto bad;
1926         }
1927
1928         cc->per_bio_data_size = ti->per_io_data_size =
1929                 ALIGN(sizeof(struct dm_crypt_io) + cc->dmreq_start +
1930                       sizeof(struct dm_crypt_request) + iv_size_padding + cc->iv_size,
1931                       ARCH_KMALLOC_MINALIGN);
1932
1933         cc->page_pool = mempool_create_page_pool(BIO_MAX_PAGES, 0);
1934         if (!cc->page_pool) {
1935                 ti->error = "Cannot allocate page mempool";
1936                 goto bad;
1937         }
1938
1939         cc->bs = bioset_create(MIN_IOS, 0);
1940         if (!cc->bs) {
1941                 ti->error = "Cannot allocate crypt bioset";
1942                 goto bad;
1943         }
1944
1945         mutex_init(&cc->bio_alloc_lock);
1946
1947         ret = -EINVAL;
1948         if (sscanf(argv[2], "%llu%c", &tmpll, &dummy) != 1) {
1949                 ti->error = "Invalid iv_offset sector";
1950                 goto bad;
1951         }
1952         cc->iv_offset = tmpll;
1953
1954         ret = dm_get_device(ti, argv[3], dm_table_get_mode(ti->table), &cc->dev);
1955         if (ret) {
1956                 ti->error = "Device lookup failed";
1957                 goto bad;
1958         }
1959
1960         ret = -EINVAL;
1961         if (sscanf(argv[4], "%llu%c", &tmpll, &dummy) != 1) {
1962                 ti->error = "Invalid device sector";
1963                 goto bad;
1964         }
1965         cc->start = tmpll;
1966
1967         argv += 5;
1968         argc -= 5;
1969
1970         /* Optional parameters */
1971         if (argc) {
1972                 as.argc = argc;
1973                 as.argv = argv;
1974
1975                 ret = dm_read_arg_group(_args, &as, &opt_params, &ti->error);
1976                 if (ret)
1977                         goto bad;
1978
1979                 ret = -EINVAL;
1980                 while (opt_params--) {
1981                         opt_string = dm_shift_arg(&as);
1982                         if (!opt_string) {
1983                                 ti->error = "Not enough feature arguments";
1984                                 goto bad;
1985                         }
1986
1987                         if (!strcasecmp(opt_string, "allow_discards"))
1988                                 ti->num_discard_bios = 1;
1989
1990                         else if (!strcasecmp(opt_string, "same_cpu_crypt"))
1991                                 set_bit(DM_CRYPT_SAME_CPU, &cc->flags);
1992
1993                         else if (!strcasecmp(opt_string, "submit_from_crypt_cpus"))
1994                                 set_bit(DM_CRYPT_NO_OFFLOAD, &cc->flags);
1995
1996                         else {
1997                                 ti->error = "Invalid feature arguments";
1998                                 goto bad;
1999                         }
2000                 }
2001         }
2002
2003         ret = -ENOMEM;
2004         cc->io_queue = alloc_workqueue("kcryptd_io", WQ_MEM_RECLAIM, 1);
2005         if (!cc->io_queue) {
2006                 ti->error = "Couldn't create kcryptd io queue";
2007                 goto bad;
2008         }
2009
2010         if (test_bit(DM_CRYPT_SAME_CPU, &cc->flags))
2011                 cc->crypt_queue = alloc_workqueue("kcryptd", WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM, 1);
2012         else
2013                 cc->crypt_queue = alloc_workqueue("kcryptd", WQ_CPU_INTENSIVE | WQ_MEM_RECLAIM | WQ_UNBOUND,
2014                                                   num_online_cpus());
2015         if (!cc->crypt_queue) {
2016                 ti->error = "Couldn't create kcryptd queue";
2017                 goto bad;
2018         }
2019
2020         init_waitqueue_head(&cc->write_thread_wait);
2021         cc->write_tree = RB_ROOT;
2022
2023         cc->write_thread = kthread_create(dmcrypt_write, cc, "dmcrypt_write");
2024         if (IS_ERR(cc->write_thread)) {
2025                 ret = PTR_ERR(cc->write_thread);
2026                 cc->write_thread = NULL;
2027                 ti->error = "Couldn't spawn write thread";
2028                 goto bad;
2029         }
2030         wake_up_process(cc->write_thread);
2031
2032         ti->num_flush_bios = 1;
2033         ti->discard_zeroes_data_unsupported = true;
2034
2035         return 0;
2036
2037 bad:
2038         crypt_dtr(ti);
2039         return ret;
2040 }
2041
2042 static int crypt_map(struct dm_target *ti, struct bio *bio)
2043 {
2044         struct dm_crypt_io *io;
2045         struct crypt_config *cc = ti->private;
2046
2047         /*
2048          * If bio is REQ_PREFLUSH or REQ_OP_DISCARD, just bypass crypt queues.
2049          * - for REQ_PREFLUSH device-mapper core ensures that no IO is in-flight
2050          * - for REQ_OP_DISCARD caller must use flush if IO ordering matters
2051          */
2052         if (unlikely(bio->bi_opf & REQ_PREFLUSH ||
2053             bio_op(bio) == REQ_OP_DISCARD)) {
2054                 bio->bi_bdev = cc->dev->bdev;
2055                 if (bio_sectors(bio))
2056                         bio->bi_iter.bi_sector = cc->start +
2057                                 dm_target_offset(ti, bio->bi_iter.bi_sector);
2058                 return DM_MAPIO_REMAPPED;
2059         }
2060
2061         /*
2062          * Check if bio is too large, split as needed.
2063          */
2064         if (unlikely(bio->bi_iter.bi_size > (BIO_MAX_PAGES << PAGE_SHIFT)) &&
2065             bio_data_dir(bio) == WRITE)
2066                 dm_accept_partial_bio(bio, ((BIO_MAX_PAGES << PAGE_SHIFT) >> SECTOR_SHIFT));
2067
2068         io = dm_per_bio_data(bio, cc->per_bio_data_size);
2069         crypt_io_init(io, cc, bio, dm_target_offset(ti, bio->bi_iter.bi_sector));
2070         io->ctx.req = (struct skcipher_request *)(io + 1);
2071
2072         if (bio_data_dir(io->base_bio) == READ) {
2073                 if (kcryptd_io_read(io, GFP_NOWAIT))
2074                         kcryptd_queue_read(io);
2075         } else
2076                 kcryptd_queue_crypt(io);
2077
2078         return DM_MAPIO_SUBMITTED;
2079 }
2080
2081 static void crypt_status(struct dm_target *ti, status_type_t type,
2082                          unsigned status_flags, char *result, unsigned maxlen)
2083 {
2084         struct crypt_config *cc = ti->private;
2085         unsigned i, sz = 0;
2086         int num_feature_args = 0;
2087
2088         switch (type) {
2089         case STATUSTYPE_INFO:
2090                 result[0] = '\0';
2091                 break;
2092
2093         case STATUSTYPE_TABLE:
2094                 DMEMIT("%s ", cc->cipher_string);
2095
2096                 if (cc->key_size > 0) {
2097                         if (cc->key_string)
2098                                 DMEMIT(":%u:%s", cc->key_size, cc->key_string);
2099                         else
2100                                 for (i = 0; i < cc->key_size; i++)
2101                                         DMEMIT("%02x", cc->key[i]);
2102                 } else
2103                         DMEMIT("-");
2104
2105                 DMEMIT(" %llu %s %llu", (unsigned long long)cc->iv_offset,
2106                                 cc->dev->name, (unsigned long long)cc->start);
2107
2108                 num_feature_args += !!ti->num_discard_bios;
2109                 num_feature_args += test_bit(DM_CRYPT_SAME_CPU, &cc->flags);
2110                 num_feature_args += test_bit(DM_CRYPT_NO_OFFLOAD, &cc->flags);
2111                 if (num_feature_args) {
2112                         DMEMIT(" %d", num_feature_args);
2113                         if (ti->num_discard_bios)
2114                                 DMEMIT(" allow_discards");
2115                         if (test_bit(DM_CRYPT_SAME_CPU, &cc->flags))
2116                                 DMEMIT(" same_cpu_crypt");
2117                         if (test_bit(DM_CRYPT_NO_OFFLOAD, &cc->flags))
2118                                 DMEMIT(" submit_from_crypt_cpus");
2119                 }
2120
2121                 break;
2122         }
2123 }
2124
2125 static void crypt_postsuspend(struct dm_target *ti)
2126 {
2127         struct crypt_config *cc = ti->private;
2128
2129         set_bit(DM_CRYPT_SUSPENDED, &cc->flags);
2130 }
2131
2132 static int crypt_preresume(struct dm_target *ti)
2133 {
2134         struct crypt_config *cc = ti->private;
2135
2136         if (!test_bit(DM_CRYPT_KEY_VALID, &cc->flags)) {
2137                 DMERR("aborting resume - crypt key is not set.");
2138                 return -EAGAIN;
2139         }
2140
2141         return 0;
2142 }
2143
2144 static void crypt_resume(struct dm_target *ti)
2145 {
2146         struct crypt_config *cc = ti->private;
2147
2148         clear_bit(DM_CRYPT_SUSPENDED, &cc->flags);
2149 }
2150
2151 /* Message interface
2152  *      key set <key>
2153  *      key wipe
2154  */
2155 static int crypt_message(struct dm_target *ti, unsigned argc, char **argv)
2156 {
2157         struct crypt_config *cc = ti->private;
2158         int key_size, ret = -EINVAL;
2159
2160         if (argc < 2)
2161                 goto error;
2162
2163         if (!strcasecmp(argv[0], "key")) {
2164                 if (!test_bit(DM_CRYPT_SUSPENDED, &cc->flags)) {
2165                         DMWARN("not suspended during key manipulation.");
2166                         return -EINVAL;
2167                 }
2168                 if (argc == 3 && !strcasecmp(argv[1], "set")) {
2169                         /* The key size may not be changed. */
2170                         key_size = get_key_size(&argv[2]);
2171                         if (key_size < 0 || cc->key_size != key_size) {
2172                                 memset(argv[2], '0', strlen(argv[2]));
2173                                 return -EINVAL;
2174                         }
2175
2176                         ret = crypt_set_key(cc, argv[2]);
2177                         if (ret)
2178                                 return ret;
2179                         if (cc->iv_gen_ops && cc->iv_gen_ops->init)
2180                                 ret = cc->iv_gen_ops->init(cc);
2181                         return ret;
2182                 }
2183                 if (argc == 2 && !strcasecmp(argv[1], "wipe")) {
2184                         if (cc->iv_gen_ops && cc->iv_gen_ops->wipe) {
2185                                 ret = cc->iv_gen_ops->wipe(cc);
2186                                 if (ret)
2187                                         return ret;
2188                         }
2189                         return crypt_wipe_key(cc);
2190                 }
2191         }
2192
2193 error:
2194         DMWARN("unrecognised message received.");
2195         return -EINVAL;
2196 }
2197
2198 static int crypt_iterate_devices(struct dm_target *ti,
2199                                  iterate_devices_callout_fn fn, void *data)
2200 {
2201         struct crypt_config *cc = ti->private;
2202
2203         return fn(ti, cc->dev, cc->start, ti->len, data);
2204 }
2205
2206 static void crypt_io_hints(struct dm_target *ti, struct queue_limits *limits)
2207 {
2208         /*
2209          * Unfortunate constraint that is required to avoid the potential
2210          * for exceeding underlying device's max_segments limits -- due to
2211          * crypt_alloc_buffer() possibly allocating pages for the encryption
2212          * bio that are not as physically contiguous as the original bio.
2213          */
2214         limits->max_segment_size = PAGE_SIZE;
2215 }
2216
2217 static struct target_type crypt_target = {
2218         .name   = "crypt",
2219         .version = {1, 15, 0},
2220         .module = THIS_MODULE,
2221         .ctr    = crypt_ctr,
2222         .dtr    = crypt_dtr,
2223         .map    = crypt_map,
2224         .status = crypt_status,
2225         .postsuspend = crypt_postsuspend,
2226         .preresume = crypt_preresume,
2227         .resume = crypt_resume,
2228         .message = crypt_message,
2229         .iterate_devices = crypt_iterate_devices,
2230         .io_hints = crypt_io_hints,
2231 };
2232
2233 static int __init dm_crypt_init(void)
2234 {
2235         int r;
2236
2237         r = dm_register_target(&crypt_target);
2238         if (r < 0)
2239                 DMERR("register failed %d", r);
2240
2241         return r;
2242 }
2243
2244 static void __exit dm_crypt_exit(void)
2245 {
2246         dm_unregister_target(&crypt_target);
2247 }
2248
2249 module_init(dm_crypt_init);
2250 module_exit(dm_crypt_exit);
2251
2252 MODULE_AUTHOR("Jana Saout <jana@saout.de>");
2253 MODULE_DESCRIPTION(DM_NAME " target for transparent encryption / decryption");
2254 MODULE_LICENSE("GPL");