All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/4] eCryptfs: Combine similar encrypt and decrypt functions
@ 2013-05-25  0:05 Tyler Hicks
  2013-05-25  0:05 ` [PATCH 1/4] eCryptfs: Combine page_offset crypto functions Tyler Hicks
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Tyler Hicks @ 2013-05-25  0:05 UTC (permalink / raw)
  To: ecryptfs

This set of patches merges crypto code that does the same thing except for the
final action of either encrypting or decrypting. This makes maintenance a
little easier since, for example, there will just be one function that does the
crypto operations of extents.

Tyler

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/4] eCryptfs: Combine page_offset crypto functions
  2013-05-25  0:05 [PATCH 0/4] eCryptfs: Combine similar encrypt and decrypt functions Tyler Hicks
@ 2013-05-25  0:05 ` Tyler Hicks
  2013-05-25  0:05 ` [PATCH 2/4] eCryptfs: Merge ecryptfs_encrypt_extent() and ecryptfs_decrypt_extent() Tyler Hicks
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Tyler Hicks @ 2013-05-25  0:05 UTC (permalink / raw)
  To: ecryptfs

Combine ecryptfs_encrypt_page_offset() and
ecryptfs_decrypt_page_offset(). These two functions are functionally
identical so they can be safely merged if the caller can indicate
whether an encryption or decryption operation should occur.

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
---
 fs/ecryptfs/crypto.c | 69 ++++++++++++++--------------------------------------
 1 file changed, 18 insertions(+), 51 deletions(-)

diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index fb54a01..609efc0 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -40,14 +40,9 @@
 #define DECRYPT		0
 #define ENCRYPT		1
 
-static int
-ecryptfs_decrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
-			     struct page *dst_page, struct page *src_page,
-			     int offset, int size, unsigned char *iv);
-static int
-ecryptfs_encrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
+static int crypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
 			     struct page *dst_page, struct page *src_page,
-			     int offset, int size, unsigned char *iv);
+			     int offset, int size, unsigned char *iv, int op);
 
 /**
  * ecryptfs_to_hex
@@ -452,9 +447,9 @@ static int ecryptfs_encrypt_extent(struct page *enc_extent_page,
 			(unsigned long long)(extent_base + extent_offset), rc);
 		goto out;
 	}
-	rc = ecryptfs_encrypt_page_offset(crypt_stat, enc_extent_page, page,
-					extent_offset * crypt_stat->extent_size,
-					crypt_stat->extent_size, extent_iv);
+	rc = crypt_page_offset(crypt_stat, enc_extent_page, page,
+			       (extent_offset * crypt_stat->extent_size),
+			       crypt_stat->extent_size, extent_iv, ENCRYPT);
 	if (rc < 0) {
 		printk(KERN_ERR "%s: Error attempting to encrypt page with "
 		       "page->index = [%ld], extent_offset = [%ld]; "
@@ -555,9 +550,9 @@ static int ecryptfs_decrypt_extent(struct page *page,
 			(unsigned long long)(extent_base + extent_offset), rc);
 		goto out;
 	}
-	rc = ecryptfs_decrypt_page_offset(crypt_stat, page, enc_extent_page,
-					extent_offset * crypt_stat->extent_size,
-					crypt_stat->extent_size, extent_iv);
+	rc = crypt_page_offset(crypt_stat, page, enc_extent_page,
+			       (extent_offset * crypt_stat->extent_size),
+			       crypt_stat->extent_size, extent_iv, DECRYPT);
 	if (rc < 0) {
 		printk(KERN_ERR "%s: Error attempting to decrypt to page with "
 		       "page->index = [%ld], extent_offset = [%ld]; "
@@ -628,20 +623,20 @@ out:
 }
 
 /**
- * ecryptfs_encrypt_page_offset
+ * crypt_page_offset
  * @crypt_stat: The cryptographic context
- * @dst_page: The page to encrypt into
- * @src_page: The page to encrypt from
+ * @dst_page: The page to write the result into
+ * @src_page: The page to read from
  * @offset: The byte offset into the dst_page and src_page
- * @size: The number of bytes to encrypt
- * @iv: The initialization vector to use for the encryption
+ * @size: The number of bytes of data
+ * @iv: The initialization vector to use for the crypto operation
+ * @op: ENCRYPT or DECRYPT to indicate the desired operation
  *
- * Returns the number of bytes encrypted
+ * Returns the number of bytes encrypted or decrypted
  */
-static int
-ecryptfs_encrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
+static int crypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
 			     struct page *dst_page, struct page *src_page,
-			     int offset, int size, unsigned char *iv)
+			     int offset, int size, unsigned char *iv, int op)
 {
 	struct scatterlist src_sg, dst_sg;
 
@@ -650,36 +645,8 @@ ecryptfs_encrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
 
 	sg_set_page(&src_sg, src_page, size, offset);
 	sg_set_page(&dst_sg, dst_page, size, offset);
-	return crypt_scatterlist(crypt_stat, &dst_sg, &src_sg,
-				 size, iv, ENCRYPT);
-}
-
-/**
- * ecryptfs_decrypt_page_offset
- * @crypt_stat: The cryptographic context
- * @dst_page: The page to decrypt into
- * @src_page: The page to decrypt from
- * @offset: The byte offset into the dst_page and src_page
- * @size: The number of bytes to decrypt
- * @iv: The initialization vector to use for the decryption
- *
- * Returns the number of bytes decrypted
- */
-static int
-ecryptfs_decrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
-			     struct page *dst_page, struct page *src_page,
-			     int offset, int size, unsigned char *iv)
-{
-	struct scatterlist src_sg, dst_sg;
-
-	sg_init_table(&src_sg, 1);
-	sg_set_page(&src_sg, src_page, size, offset);
-
-	sg_init_table(&dst_sg, 1);
-	sg_set_page(&dst_sg, dst_page, size, offset);
 
-	return crypt_scatterlist(crypt_stat, &dst_sg, &src_sg,
-				 size, iv, DECRYPT);
+	return crypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv, op);
 }
 
 #define ECRYPTFS_MAX_SCATTERLIST_LEN 4
-- 
1.8.1.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 2/4] eCryptfs: Merge ecryptfs_encrypt_extent() and ecryptfs_decrypt_extent()
  2013-05-25  0:05 [PATCH 0/4] eCryptfs: Combine similar encrypt and decrypt functions Tyler Hicks
  2013-05-25  0:05 ` [PATCH 1/4] eCryptfs: Combine page_offset crypto functions Tyler Hicks
@ 2013-05-25  0:05 ` Tyler Hicks
  2013-05-25  0:05 ` [PATCH 3/4] eCryptfs: Collapse crypt_page_offset() into crypt_extent() Tyler Hicks
  2013-05-25  0:05 ` [PATCH 4/4] eCryptfs: Make extent and scatterlist crypt function parameters similar Tyler Hicks
  3 siblings, 0 replies; 5+ messages in thread
From: Tyler Hicks @ 2013-05-25  0:05 UTC (permalink / raw)
  To: ecryptfs

They are identical except if the src_page or dst_page index is used, so
they can be merged safely if page_index is conditionally assigned.

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
---
 fs/ecryptfs/crypto.c | 74 ++++++++++++++--------------------------------------
 1 file changed, 20 insertions(+), 54 deletions(-)

diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index 609efc0..9845d2f 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -416,28 +416,29 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
 }
 
 /**
- * ecryptfs_encrypt_extent
- * @enc_extent_page: Allocated page into which to encrypt the data in
- *                   @page
+ * crypt_extent
+ * @dst_page: The page to write the result into
  * @crypt_stat: crypt_stat containing cryptographic context for the
  *              encryption operation
- * @page: Page containing plaintext data extent to encrypt
+ * @src_page: The page to read from
  * @extent_offset: Page extent offset for use in generating IV
+ * @op: ENCRYPT or DECRYPT to indicate the desired operation
  *
- * Encrypts one extent of data.
+ * Encrypts or decrypts one extent of data.
  *
  * Return zero on success; non-zero otherwise
  */
-static int ecryptfs_encrypt_extent(struct page *enc_extent_page,
-				   struct ecryptfs_crypt_stat *crypt_stat,
-				   struct page *page,
-				   unsigned long extent_offset)
+static int crypt_extent(struct page *dst_page,
+			struct ecryptfs_crypt_stat *crypt_stat,
+			struct page *src_page,
+			unsigned long extent_offset, int op)
 {
+	pgoff_t page_index = op == ENCRYPT ? src_page->index : dst_page->index;
 	loff_t extent_base;
 	char extent_iv[ECRYPTFS_MAX_IV_BYTES];
 	int rc;
 
-	extent_base = (((loff_t)page->index)
+	extent_base = (((loff_t)page_index)
 		       * (PAGE_CACHE_SIZE / crypt_stat->extent_size));
 	rc = ecryptfs_derive_iv(extent_iv, crypt_stat,
 				(extent_base + extent_offset));
@@ -447,14 +448,13 @@ static int ecryptfs_encrypt_extent(struct page *enc_extent_page,
 			(unsigned long long)(extent_base + extent_offset), rc);
 		goto out;
 	}
-	rc = crypt_page_offset(crypt_stat, enc_extent_page, page,
+	rc = crypt_page_offset(crypt_stat, dst_page, src_page,
 			       (extent_offset * crypt_stat->extent_size),
-			       crypt_stat->extent_size, extent_iv, ENCRYPT);
+			       crypt_stat->extent_size, extent_iv, op);
 	if (rc < 0) {
-		printk(KERN_ERR "%s: Error attempting to encrypt page with "
-		       "page->index = [%ld], extent_offset = [%ld]; "
-		       "rc = [%d]\n", __func__, page->index, extent_offset,
-		       rc);
+		printk(KERN_ERR "%s: Error attempting to crypt page with "
+		       "page_index = [%ld], extent_offset = [%ld]; "
+		       "rc = [%d]\n", __func__, page_index, extent_offset, rc);
 		goto out;
 	}
 	rc = 0;
@@ -503,8 +503,8 @@ int ecryptfs_encrypt_page(struct page *page)
 	for (extent_offset = 0;
 	     extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
 	     extent_offset++) {
-		rc = ecryptfs_encrypt_extent(enc_extent_page, crypt_stat, page,
-					     extent_offset);
+		rc = crypt_extent(enc_extent_page, crypt_stat, page,
+				  extent_offset, ENCRYPT);
 		if (rc) {
 			printk(KERN_ERR "%s: Error encrypting extent; "
 			       "rc = [%d]\n", __func__, rc);
@@ -531,40 +531,6 @@ out:
 	return rc;
 }
 
-static int ecryptfs_decrypt_extent(struct page *page,
-				   struct ecryptfs_crypt_stat *crypt_stat,
-				   struct page *enc_extent_page,
-				   unsigned long extent_offset)
-{
-	loff_t extent_base;
-	char extent_iv[ECRYPTFS_MAX_IV_BYTES];
-	int rc;
-
-	extent_base = (((loff_t)page->index)
-		       * (PAGE_CACHE_SIZE / crypt_stat->extent_size));
-	rc = ecryptfs_derive_iv(extent_iv, crypt_stat,
-				(extent_base + extent_offset));
-	if (rc) {
-		ecryptfs_printk(KERN_ERR, "Error attempting to derive IV for "
-			"extent [0x%.16llx]; rc = [%d]\n",
-			(unsigned long long)(extent_base + extent_offset), rc);
-		goto out;
-	}
-	rc = crypt_page_offset(crypt_stat, page, enc_extent_page,
-			       (extent_offset * crypt_stat->extent_size),
-			       crypt_stat->extent_size, extent_iv, DECRYPT);
-	if (rc < 0) {
-		printk(KERN_ERR "%s: Error attempting to decrypt to page with "
-		       "page->index = [%ld], extent_offset = [%ld]; "
-		       "rc = [%d]\n", __func__, page->index, extent_offset,
-		       rc);
-		goto out;
-	}
-	rc = 0;
-out:
-	return rc;
-}
-
 /**
  * ecryptfs_decrypt_page
  * @page: Page mapped from the eCryptfs inode for the file; data read
@@ -610,8 +576,8 @@ int ecryptfs_decrypt_page(struct page *page)
 	for (extent_offset = 0;
 	     extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
 	     extent_offset++) {
-		rc = ecryptfs_decrypt_extent(page, crypt_stat, page,
-					     extent_offset);
+		rc = crypt_extent(page, crypt_stat, page,
+				  extent_offset, DECRYPT);
 		if (rc) {
 			printk(KERN_ERR "%s: Error encrypting extent; "
 			       "rc = [%d]\n", __func__, rc);
-- 
1.8.1.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 3/4] eCryptfs: Collapse crypt_page_offset() into crypt_extent()
  2013-05-25  0:05 [PATCH 0/4] eCryptfs: Combine similar encrypt and decrypt functions Tyler Hicks
  2013-05-25  0:05 ` [PATCH 1/4] eCryptfs: Combine page_offset crypto functions Tyler Hicks
  2013-05-25  0:05 ` [PATCH 2/4] eCryptfs: Merge ecryptfs_encrypt_extent() and ecryptfs_decrypt_extent() Tyler Hicks
@ 2013-05-25  0:05 ` Tyler Hicks
  2013-05-25  0:05 ` [PATCH 4/4] eCryptfs: Make extent and scatterlist crypt function parameters similar Tyler Hicks
  3 siblings, 0 replies; 5+ messages in thread
From: Tyler Hicks @ 2013-05-25  0:05 UTC (permalink / raw)
  To: ecryptfs

crypt_page_offset() simply initialized the two scatterlists and called
crypt_scatterlist() so it is simple enough to move into the only
function that calls it.

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
---
 fs/ecryptfs/crypto.c | 50 ++++++++++++++------------------------------------
 1 file changed, 14 insertions(+), 36 deletions(-)

diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index 9845d2f..9947388 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -40,10 +40,6 @@
 #define DECRYPT		0
 #define ENCRYPT		1
 
-static int crypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
-			     struct page *dst_page, struct page *src_page,
-			     int offset, int size, unsigned char *iv, int op);
-
 /**
  * ecryptfs_to_hex
  * @dst: Buffer to take hex character representation of contents of
@@ -436,10 +432,11 @@ static int crypt_extent(struct page *dst_page,
 	pgoff_t page_index = op == ENCRYPT ? src_page->index : dst_page->index;
 	loff_t extent_base;
 	char extent_iv[ECRYPTFS_MAX_IV_BYTES];
+	struct scatterlist src_sg, dst_sg;
+	size_t extent_size = crypt_stat->extent_size;
 	int rc;
 
-	extent_base = (((loff_t)page_index)
-		       * (PAGE_CACHE_SIZE / crypt_stat->extent_size));
+	extent_base = (((loff_t)page_index) * (PAGE_CACHE_SIZE / extent_size));
 	rc = ecryptfs_derive_iv(extent_iv, crypt_stat,
 				(extent_base + extent_offset));
 	if (rc) {
@@ -448,9 +445,17 @@ static int crypt_extent(struct page *dst_page,
 			(unsigned long long)(extent_base + extent_offset), rc);
 		goto out;
 	}
-	rc = crypt_page_offset(crypt_stat, dst_page, src_page,
-			       (extent_offset * crypt_stat->extent_size),
-			       crypt_stat->extent_size, extent_iv, op);
+
+	sg_init_table(&src_sg, 1);
+	sg_init_table(&dst_sg, 1);
+
+	sg_set_page(&src_sg, src_page, extent_size,
+		    extent_offset * extent_size);
+	sg_set_page(&dst_sg, dst_page, extent_size,
+		    extent_offset * extent_size);
+
+	rc = crypt_scatterlist(crypt_stat, &dst_sg, &src_sg, extent_size,
+			       extent_iv, op);
 	if (rc < 0) {
 		printk(KERN_ERR "%s: Error attempting to crypt page with "
 		       "page_index = [%ld], extent_offset = [%ld]; "
@@ -588,33 +593,6 @@ out:
 	return rc;
 }
 
-/**
- * crypt_page_offset
- * @crypt_stat: The cryptographic context
- * @dst_page: The page to write the result into
- * @src_page: The page to read from
- * @offset: The byte offset into the dst_page and src_page
- * @size: The number of bytes of data
- * @iv: The initialization vector to use for the crypto operation
- * @op: ENCRYPT or DECRYPT to indicate the desired operation
- *
- * Returns the number of bytes encrypted or decrypted
- */
-static int crypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat,
-			     struct page *dst_page, struct page *src_page,
-			     int offset, int size, unsigned char *iv, int op)
-{
-	struct scatterlist src_sg, dst_sg;
-
-	sg_init_table(&src_sg, 1);
-	sg_init_table(&dst_sg, 1);
-
-	sg_set_page(&src_sg, src_page, size, offset);
-	sg_set_page(&dst_sg, dst_page, size, offset);
-
-	return crypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv, op);
-}
-
 #define ECRYPTFS_MAX_SCATTERLIST_LEN 4
 
 /**
-- 
1.8.1.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 4/4] eCryptfs: Make extent and scatterlist crypt function parameters similar
  2013-05-25  0:05 [PATCH 0/4] eCryptfs: Combine similar encrypt and decrypt functions Tyler Hicks
                   ` (2 preceding siblings ...)
  2013-05-25  0:05 ` [PATCH 3/4] eCryptfs: Collapse crypt_page_offset() into crypt_extent() Tyler Hicks
@ 2013-05-25  0:05 ` Tyler Hicks
  3 siblings, 0 replies; 5+ messages in thread
From: Tyler Hicks @ 2013-05-25  0:05 UTC (permalink / raw)
  To: ecryptfs

The 'dest' abbreviation is only used in crypt_scatterlist(), while all
other functions in crypto.c use 'dst' so dest_sg should be renamed to
dst_sg.

The crypt_stat parameter is typically the first parameter in internal
eCryptfs functions so crypt_stat and dst_page should be swapped in
crypt_extent().

Signed-off-by: Tyler Hicks <tyhicks@canonical.com>
---
 fs/ecryptfs/crypto.c | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c
index 9947388..46a6f6a 100644
--- a/fs/ecryptfs/crypto.c
+++ b/fs/ecryptfs/crypto.c
@@ -330,7 +330,7 @@ static void extent_crypt_complete(struct crypto_async_request *req, int rc)
 /**
  * crypt_scatterlist
  * @crypt_stat: Pointer to the crypt_stat struct to initialize.
- * @dest_sg: Destination of the data after performing the crypto operation
+ * @dst_sg: Destination of the data after performing the crypto operation
  * @src_sg: Data to be encrypted or decrypted
  * @size: Length of data
  * @iv: IV to use
@@ -339,7 +339,7 @@ static void extent_crypt_complete(struct crypto_async_request *req, int rc)
  * Returns the number of bytes encrypted or decrypted; negative value on error
  */
 static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
-			     struct scatterlist *dest_sg,
+			     struct scatterlist *dst_sg,
 			     struct scatterlist *src_sg, int size,
 			     unsigned char *iv, int op)
 {
@@ -384,7 +384,7 @@ static int crypt_scatterlist(struct ecryptfs_crypt_stat *crypt_stat,
 		crypt_stat->flags |= ECRYPTFS_KEY_SET;
 	}
 	mutex_unlock(&crypt_stat->cs_tfm_mutex);
-	ablkcipher_request_set_crypt(req, src_sg, dest_sg, size, iv);
+	ablkcipher_request_set_crypt(req, src_sg, dst_sg, size, iv);
 	rc = op == ENCRYPT ? crypto_ablkcipher_encrypt(req) :
 			     crypto_ablkcipher_decrypt(req);
 	if (rc == -EINPROGRESS || rc == -EBUSY) {
@@ -413,9 +413,9 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
 
 /**
  * crypt_extent
- * @dst_page: The page to write the result into
  * @crypt_stat: crypt_stat containing cryptographic context for the
  *              encryption operation
+ * @dst_page: The page to write the result into
  * @src_page: The page to read from
  * @extent_offset: Page extent offset for use in generating IV
  * @op: ENCRYPT or DECRYPT to indicate the desired operation
@@ -424,8 +424,8 @@ static loff_t lower_offset_for_page(struct ecryptfs_crypt_stat *crypt_stat,
  *
  * Return zero on success; non-zero otherwise
  */
-static int crypt_extent(struct page *dst_page,
-			struct ecryptfs_crypt_stat *crypt_stat,
+static int crypt_extent(struct ecryptfs_crypt_stat *crypt_stat,
+			struct page *dst_page,
 			struct page *src_page,
 			unsigned long extent_offset, int op)
 {
@@ -508,7 +508,7 @@ int ecryptfs_encrypt_page(struct page *page)
 	for (extent_offset = 0;
 	     extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
 	     extent_offset++) {
-		rc = crypt_extent(enc_extent_page, crypt_stat, page,
+		rc = crypt_extent(crypt_stat, enc_extent_page, page,
 				  extent_offset, ENCRYPT);
 		if (rc) {
 			printk(KERN_ERR "%s: Error encrypting extent; "
@@ -581,7 +581,7 @@ int ecryptfs_decrypt_page(struct page *page)
 	for (extent_offset = 0;
 	     extent_offset < (PAGE_CACHE_SIZE / crypt_stat->extent_size);
 	     extent_offset++) {
-		rc = crypt_extent(page, crypt_stat, page,
+		rc = crypt_extent(crypt_stat, page, page,
 				  extent_offset, DECRYPT);
 		if (rc) {
 			printk(KERN_ERR "%s: Error encrypting extent; "
-- 
1.8.1.2

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2013-05-25  0:05 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-05-25  0:05 [PATCH 0/4] eCryptfs: Combine similar encrypt and decrypt functions Tyler Hicks
2013-05-25  0:05 ` [PATCH 1/4] eCryptfs: Combine page_offset crypto functions Tyler Hicks
2013-05-25  0:05 ` [PATCH 2/4] eCryptfs: Merge ecryptfs_encrypt_extent() and ecryptfs_decrypt_extent() Tyler Hicks
2013-05-25  0:05 ` [PATCH 3/4] eCryptfs: Collapse crypt_page_offset() into crypt_extent() Tyler Hicks
2013-05-25  0:05 ` [PATCH 4/4] eCryptfs: Make extent and scatterlist crypt function parameters similar Tyler Hicks

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.