|
@@ -967,7 +967,7 @@ static void ecryptfs_set_default_crypt_stat_vals(
|
|
|
|
|
|
/**
|
|
|
* ecryptfs_new_file_context
|
|
|
- * @ecryptfs_dentry: The eCryptfs dentry
|
|
|
+ * @ecryptfs_inode: The eCryptfs inode
|
|
|
*
|
|
|
* If the crypto context for the file has not yet been established,
|
|
|
* this is where we do that. Establishing a new crypto context
|
|
@@ -984,13 +984,13 @@ static void ecryptfs_set_default_crypt_stat_vals(
|
|
|
*
|
|
|
* Returns zero on success; non-zero otherwise
|
|
|
*/
|
|
|
-int ecryptfs_new_file_context(struct dentry *ecryptfs_dentry)
|
|
|
+int ecryptfs_new_file_context(struct inode *ecryptfs_inode)
|
|
|
{
|
|
|
struct ecryptfs_crypt_stat *crypt_stat =
|
|
|
- &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat;
|
|
|
+ &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat;
|
|
|
struct ecryptfs_mount_crypt_stat *mount_crypt_stat =
|
|
|
&ecryptfs_superblock_to_private(
|
|
|
- ecryptfs_dentry->d_sb)->mount_crypt_stat;
|
|
|
+ ecryptfs_inode->i_sb)->mount_crypt_stat;
|
|
|
int cipher_name_len;
|
|
|
int rc = 0;
|
|
|
|
|
@@ -1299,12 +1299,12 @@ static int ecryptfs_write_headers_virt(char *page_virt, size_t max,
|
|
|
}
|
|
|
|
|
|
static int
|
|
|
-ecryptfs_write_metadata_to_contents(struct dentry *ecryptfs_dentry,
|
|
|
+ecryptfs_write_metadata_to_contents(struct inode *ecryptfs_inode,
|
|
|
char *virt, size_t virt_len)
|
|
|
{
|
|
|
int rc;
|
|
|
|
|
|
- rc = ecryptfs_write_lower(ecryptfs_dentry->d_inode, virt,
|
|
|
+ rc = ecryptfs_write_lower(ecryptfs_inode, virt,
|
|
|
0, virt_len);
|
|
|
if (rc < 0)
|
|
|
printk(KERN_ERR "%s: Error attempting to write header "
|
|
@@ -1338,7 +1338,8 @@ static unsigned long ecryptfs_get_zeroed_pages(gfp_t gfp_mask,
|
|
|
|
|
|
/**
|
|
|
* ecryptfs_write_metadata
|
|
|
- * @ecryptfs_dentry: The eCryptfs dentry
|
|
|
+ * @ecryptfs_dentry: The eCryptfs dentry, which should be negative
|
|
|
+ * @ecryptfs_inode: The newly created eCryptfs inode
|
|
|
*
|
|
|
* Write the file headers out. This will likely involve a userspace
|
|
|
* callout, in which the session key is encrypted with one or more
|
|
@@ -1348,10 +1349,11 @@ static unsigned long ecryptfs_get_zeroed_pages(gfp_t gfp_mask,
|
|
|
*
|
|
|
* Returns zero on success; non-zero on error
|
|
|
*/
|
|
|
-int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry)
|
|
|
+int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry,
|
|
|
+ struct inode *ecryptfs_inode)
|
|
|
{
|
|
|
struct ecryptfs_crypt_stat *crypt_stat =
|
|
|
- &ecryptfs_inode_to_private(ecryptfs_dentry->d_inode)->crypt_stat;
|
|
|
+ &ecryptfs_inode_to_private(ecryptfs_inode)->crypt_stat;
|
|
|
unsigned int order;
|
|
|
char *virt;
|
|
|
size_t virt_len;
|
|
@@ -1391,7 +1393,7 @@ int ecryptfs_write_metadata(struct dentry *ecryptfs_dentry)
|
|
|
rc = ecryptfs_write_metadata_to_xattr(ecryptfs_dentry, virt,
|
|
|
size);
|
|
|
else
|
|
|
- rc = ecryptfs_write_metadata_to_contents(ecryptfs_dentry, virt,
|
|
|
+ rc = ecryptfs_write_metadata_to_contents(ecryptfs_inode, virt,
|
|
|
virt_len);
|
|
|
if (rc) {
|
|
|
printk(KERN_ERR "%s: Error writing metadata out to lower file; "
|
|
@@ -1943,7 +1945,7 @@ static unsigned char *portable_filename_chars = ("-.0123456789ABCD"
|
|
|
|
|
|
/* We could either offset on every reverse map or just pad some 0x00's
|
|
|
* at the front here */
|
|
|
-static const unsigned char filename_rev_map[] = {
|
|
|
+static const unsigned char filename_rev_map[256] = {
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 7 */
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 15 */
|
|
|
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 23 */
|
|
@@ -1959,7 +1961,7 @@ static const unsigned char filename_rev_map[] = {
|
|
|
0x00, 0x26, 0x27, 0x28, 0x29, 0x2A, 0x2B, 0x2C, /* 103 */
|
|
|
0x2D, 0x2E, 0x2F, 0x30, 0x31, 0x32, 0x33, 0x34, /* 111 */
|
|
|
0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, /* 119 */
|
|
|
- 0x3D, 0x3E, 0x3F
|
|
|
+ 0x3D, 0x3E, 0x3F /* 123 - 255 initialized to 0x00 */
|
|
|
};
|
|
|
|
|
|
/**
|