22 #include <linux/module.h>
25 #include <linux/string.h>
28 #include <linux/loop.h>
30 #include <asm/uaccess.h>
36 #define LOOP_IV_SECTOR_BITS 9
37 #define LOOP_IV_SECTOR_SIZE (1 << LOOP_IV_SECTOR_BITS)
60 cipher_len =
strcspn(cmsp,
"-");
62 mode = cmsp + cipher_len;
78 cmsp = cms + mode_len;
99 crypto_free_blkcipher(tfm);
113 struct page *raw_page,
unsigned raw_off,
114 struct page *loop_page,
unsigned loop_off,
126 struct page *in_page, *out_page;
127 unsigned in_offs, out_offs;
136 out_page = loop_page;
138 encdecfunc = crypto_blkcipher_crt(tfm)->decrypt;
144 encdecfunc = crypto_blkcipher_crt(tfm)->encrypt;
152 sg_set_page(&sg_in, in_page, sz, in_offs);
153 sg_set_page(&sg_out, out_page, sz, out_offs);
156 err = encdecfunc(&desc, &sg_out, &sg_in, sz);
180 crypto_free_blkcipher(tfm);
190 .init = cryptoloop_init,
191 .ioctl = cryptoloop_ioctl,
192 .transfer = cryptoloop_transfer,
193 .release = cryptoloop_release,
198 init_cryptoloop(
void)
208 cleanup_cryptoloop(
void)
212 "cryptoloop: loop_unregister_transfer failed\n");