diff options
Diffstat (limited to 'fs/ecryptfs')
| -rw-r--r-- | fs/ecryptfs/crypto.c | 16 | ||||
| -rw-r--r-- | fs/ecryptfs/keystore.c | 3 |
2 files changed, 14 insertions, 5 deletions
diff --git a/fs/ecryptfs/crypto.c b/fs/ecryptfs/crypto.c index 1ae90ef2c74d..0a9882edf562 100644 --- a/fs/ecryptfs/crypto.c +++ b/fs/ecryptfs/crypto.c | |||
| @@ -283,7 +283,7 @@ int virt_to_scatterlist(const void *addr, int size, struct scatterlist *sg, | |||
| 283 | pg = virt_to_page(addr); | 283 | pg = virt_to_page(addr); |
| 284 | offset = offset_in_page(addr); | 284 | offset = offset_in_page(addr); |
| 285 | if (sg) { | 285 | if (sg) { |
| 286 | sg[i].page = pg; | 286 | sg_set_page(&sg[i], pg); |
| 287 | sg[i].offset = offset; | 287 | sg[i].offset = offset; |
| 288 | } | 288 | } |
| 289 | remainder_of_page = PAGE_CACHE_SIZE - offset; | 289 | remainder_of_page = PAGE_CACHE_SIZE - offset; |
| @@ -713,10 +713,13 @@ ecryptfs_encrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat, | |||
| 713 | { | 713 | { |
| 714 | struct scatterlist src_sg, dst_sg; | 714 | struct scatterlist src_sg, dst_sg; |
| 715 | 715 | ||
| 716 | src_sg.page = src_page; | 716 | sg_init_table(&src_sg, 1); |
| 717 | sg_init_table(&dst_sg, 1); | ||
| 718 | |||
| 719 | sg_set_page(&src_sg, src_page); | ||
| 717 | src_sg.offset = src_offset; | 720 | src_sg.offset = src_offset; |
| 718 | src_sg.length = size; | 721 | src_sg.length = size; |
| 719 | dst_sg.page = dst_page; | 722 | sg_set_page(&dst_sg, dst_page); |
| 720 | dst_sg.offset = dst_offset; | 723 | dst_sg.offset = dst_offset; |
| 721 | dst_sg.length = size; | 724 | dst_sg.length = size; |
| 722 | return encrypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv); | 725 | return encrypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv); |
| @@ -742,10 +745,13 @@ ecryptfs_decrypt_page_offset(struct ecryptfs_crypt_stat *crypt_stat, | |||
| 742 | { | 745 | { |
| 743 | struct scatterlist src_sg, dst_sg; | 746 | struct scatterlist src_sg, dst_sg; |
| 744 | 747 | ||
| 745 | src_sg.page = src_page; | 748 | sg_init_table(&src_sg, 1); |
| 749 | sg_init_table(&dst_sg, 1); | ||
| 750 | |||
| 751 | sg_set_page(&src_sg, src_page); | ||
| 746 | src_sg.offset = src_offset; | 752 | src_sg.offset = src_offset; |
| 747 | src_sg.length = size; | 753 | src_sg.length = size; |
| 748 | dst_sg.page = dst_page; | 754 | sg_set_page(&dst_sg, dst_page); |
| 749 | dst_sg.offset = dst_offset; | 755 | dst_sg.offset = dst_offset; |
| 750 | dst_sg.length = size; | 756 | dst_sg.length = size; |
| 751 | return decrypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv); | 757 | return decrypt_scatterlist(crypt_stat, &dst_sg, &src_sg, size, iv); |
diff --git a/fs/ecryptfs/keystore.c b/fs/ecryptfs/keystore.c index 89d9710dd63d..263fed88c0ca 100644 --- a/fs/ecryptfs/keystore.c +++ b/fs/ecryptfs/keystore.c | |||
| @@ -1040,6 +1040,9 @@ decrypt_passphrase_encrypted_session_key(struct ecryptfs_auth_tok *auth_tok, | |||
| 1040 | }; | 1040 | }; |
| 1041 | int rc = 0; | 1041 | int rc = 0; |
| 1042 | 1042 | ||
| 1043 | sg_init_table(&dst_sg, 1); | ||
| 1044 | sg_init_table(&src_sg, 1); | ||
| 1045 | |||
| 1043 | if (unlikely(ecryptfs_verbosity > 0)) { | 1046 | if (unlikely(ecryptfs_verbosity > 0)) { |
| 1044 | ecryptfs_printk( | 1047 | ecryptfs_printk( |
| 1045 | KERN_DEBUG, "Session key encryption key (size [%d]):\n", | 1048 | KERN_DEBUG, "Session key encryption key (size [%d]):\n", |
