Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ecryptfs/ecryptfs-2.6:
MAINTAINERS: Update eCryptfs mailing list
eCryptfs: Allow 2 scatterlist entries for encrypted filenames
eCryptfs: Clear i_nlink in rmdir

+24 -26
+1 -1
MAINTAINERS
··· 2304 2304 ECRYPT FILE SYSTEM 2305 2305 M: Tyler Hicks <tyhicks@linux.vnet.ibm.com> 2306 2306 M: Dustin Kirkland <kirkland@canonical.com> 2307 - L: ecryptfs-devel@lists.launchpad.net 2307 + L: ecryptfs@vger.kernel.org 2308 2308 W: https://launchpad.net/ecryptfs 2309 2309 S: Supported 2310 2310 F: Documentation/filesystems/ecryptfs.txt
+2
fs/ecryptfs/inode.c
··· 529 529 dget(lower_dentry); 530 530 rc = vfs_rmdir(lower_dir_dentry->d_inode, lower_dentry); 531 531 dput(lower_dentry); 532 + if (!rc && dentry->d_inode) 533 + clear_nlink(dentry->d_inode); 532 534 fsstack_copy_attr_times(dir, lower_dir_dentry->d_inode); 533 535 dir->i_nlink = lower_dir_dentry->d_inode->i_nlink; 534 536 unlock_dir(lower_dir_dentry);
+21 -25
fs/ecryptfs/keystore.c
··· 599 599 struct mutex *tfm_mutex; 600 600 char *block_aligned_filename; 601 601 struct ecryptfs_auth_tok *auth_tok; 602 - struct scatterlist src_sg; 603 - struct scatterlist dst_sg; 602 + struct scatterlist src_sg[2]; 603 + struct scatterlist dst_sg[2]; 604 604 struct blkcipher_desc desc; 605 605 char iv[ECRYPTFS_MAX_IV_BYTES]; 606 606 char hash[ECRYPTFS_TAG_70_DIGEST_SIZE]; ··· 816 816 memcpy(&s->block_aligned_filename[s->num_rand_bytes], filename, 817 817 filename_size); 818 818 rc = virt_to_scatterlist(s->block_aligned_filename, 819 - s->block_aligned_filename_size, &s->src_sg, 1); 820 - if (rc != 1) { 819 + s->block_aligned_filename_size, s->src_sg, 2); 820 + if (rc < 1) { 821 821 printk(KERN_ERR "%s: Internal error whilst attempting to " 822 - "convert filename memory to scatterlist; " 823 - "expected rc = 1; got rc = [%d]. " 822 + "convert filename memory to scatterlist; rc = [%d]. " 824 823 "block_aligned_filename_size = [%zd]\n", __func__, rc, 825 824 s->block_aligned_filename_size); 826 825 goto out_release_free_unlock; 827 826 } 828 827 rc = virt_to_scatterlist(&dest[s->i], s->block_aligned_filename_size, 829 - &s->dst_sg, 1); 830 - if (rc != 1) { 828 + s->dst_sg, 2); 829 + if (rc < 1) { 831 830 printk(KERN_ERR "%s: Internal error whilst attempting to " 832 831 "convert encrypted filename memory to scatterlist; " 833 - "expected rc = 1; got rc = [%d]. " 834 - "block_aligned_filename_size = [%zd]\n", __func__, rc, 835 - s->block_aligned_filename_size); 832 + "rc = [%d]. block_aligned_filename_size = [%zd]\n", 833 + __func__, rc, s->block_aligned_filename_size); 836 834 goto out_release_free_unlock; 837 835 } 838 836 /* The characters in the first block effectively do the job ··· 853 855 mount_crypt_stat->global_default_fn_cipher_key_bytes); 854 856 goto out_release_free_unlock; 855 857 } 856 - rc = crypto_blkcipher_encrypt_iv(&s->desc, &s->dst_sg, &s->src_sg, 858 + rc = crypto_blkcipher_encrypt_iv(&s->desc, s->dst_sg, s->src_sg, 857 859 s->block_aligned_filename_size); 858 860 if (rc) { 859 861 printk(KERN_ERR "%s: Error attempting to encrypt filename; " ··· 889 891 struct mutex *tfm_mutex; 890 892 char *decrypted_filename; 891 893 struct ecryptfs_auth_tok *auth_tok; 892 - struct scatterlist src_sg; 893 - struct scatterlist dst_sg; 894 + struct scatterlist src_sg[2]; 895 + struct scatterlist dst_sg[2]; 894 896 struct blkcipher_desc desc; 895 897 char fnek_sig_hex[ECRYPTFS_SIG_SIZE_HEX + 1]; 896 898 char iv[ECRYPTFS_MAX_IV_BYTES]; ··· 1006 1008 } 1007 1009 mutex_lock(s->tfm_mutex); 1008 1010 rc = virt_to_scatterlist(&data[(*packet_size)], 1009 - s->block_aligned_filename_size, &s->src_sg, 1); 1010 - if (rc != 1) { 1011 + s->block_aligned_filename_size, s->src_sg, 2); 1012 + if (rc < 1) { 1011 1013 printk(KERN_ERR "%s: Internal error whilst attempting to " 1012 1014 "convert encrypted filename memory to scatterlist; " 1013 - "expected rc = 1; got rc = [%d]. " 1014 - "block_aligned_filename_size = [%zd]\n", __func__, rc, 1015 - s->block_aligned_filename_size); 1015 + "rc = [%d]. block_aligned_filename_size = [%zd]\n", 1016 + __func__, rc, s->block_aligned_filename_size); 1016 1017 goto out_unlock; 1017 1018 } 1018 1019 (*packet_size) += s->block_aligned_filename_size; ··· 1025 1028 goto out_unlock; 1026 1029 } 1027 1030 rc = virt_to_scatterlist(s->decrypted_filename, 1028 - s->block_aligned_filename_size, &s->dst_sg, 1); 1029 - if (rc != 1) { 1031 + s->block_aligned_filename_size, s->dst_sg, 2); 1032 + if (rc < 1) { 1030 1033 printk(KERN_ERR "%s: Internal error whilst attempting to " 1031 1034 "convert decrypted filename memory to scatterlist; " 1032 - "expected rc = 1; got rc = [%d]. " 1033 - "block_aligned_filename_size = [%zd]\n", __func__, rc, 1034 - s->block_aligned_filename_size); 1035 + "rc = [%d]. block_aligned_filename_size = [%zd]\n", 1036 + __func__, rc, s->block_aligned_filename_size); 1035 1037 goto out_free_unlock; 1036 1038 } 1037 1039 /* The characters in the first block effectively do the job of ··· 1061 1065 mount_crypt_stat->global_default_fn_cipher_key_bytes); 1062 1066 goto out_free_unlock; 1063 1067 } 1064 - rc = crypto_blkcipher_decrypt_iv(&s->desc, &s->dst_sg, &s->src_sg, 1068 + rc = crypto_blkcipher_decrypt_iv(&s->desc, s->dst_sg, s->src_sg, 1065 1069 s->block_aligned_filename_size); 1066 1070 if (rc) { 1067 1071 printk(KERN_ERR "%s: Error attempting to decrypt filename; "