crypto.c (8bba066f4e3854755a303cee37ea37bd080a46b3) | crypto.c (7ff1d74f5670329ac4b5959a675f8698ba95be20) |
---|---|
1/** 2 * eCryptfs: Linux filesystem encryption layer 3 * 4 * Copyright (C) 1997-2004 Erez Zadok 5 * Copyright (C) 2001-2004 Stony Brook University 6 * Copyright (C) 2004-2006 International Business Machines Corp. 7 * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com> 8 * Michael C. Thompson <mcthomps@us.ibm.com> --- 1177 unchanged lines hidden (view full) --- 1186 * @dentry 1187 * @nd 1188 * 1189 * Returns zero on success; non-zero otherwise 1190 */ 1191int ecryptfs_read_header_region(char *data, struct dentry *dentry, 1192 struct vfsmount *mnt) 1193{ | 1/** 2 * eCryptfs: Linux filesystem encryption layer 3 * 4 * Copyright (C) 1997-2004 Erez Zadok 5 * Copyright (C) 2001-2004 Stony Brook University 6 * Copyright (C) 2004-2006 International Business Machines Corp. 7 * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com> 8 * Michael C. Thompson <mcthomps@us.ibm.com> --- 1177 unchanged lines hidden (view full) --- 1186 * @dentry 1187 * @nd 1188 * 1189 * Returns zero on success; non-zero otherwise 1190 */ 1191int ecryptfs_read_header_region(char *data, struct dentry *dentry, 1192 struct vfsmount *mnt) 1193{ |
1194 struct file *file; | 1194 struct file *lower_file; |
1195 mm_segment_t oldfs; 1196 int rc; 1197 | 1195 mm_segment_t oldfs; 1196 int rc; 1197 |
1198 mnt = mntget(mnt); 1199 file = dentry_open(dentry, mnt, O_RDONLY); 1200 if (IS_ERR(file)) { 1201 ecryptfs_printk(KERN_DEBUG, "Error opening file to " 1202 "read header region\n"); 1203 mntput(mnt); 1204 rc = PTR_ERR(file); | 1198 if ((rc = ecryptfs_open_lower_file(&lower_file, dentry, mnt, 1199 O_RDONLY))) { 1200 printk(KERN_ERR 1201 "Error opening lower_file to read header region\n"); |
1205 goto out; 1206 } | 1202 goto out; 1203 } |
1207 file->f_pos = 0; | 1204 lower_file->f_pos = 0; |
1208 oldfs = get_fs(); 1209 set_fs(get_ds()); 1210 /* For releases 0.1 and 0.2, all of the header information 1211 * fits in the first data extent-sized region. */ | 1205 oldfs = get_fs(); 1206 set_fs(get_ds()); 1207 /* For releases 0.1 and 0.2, all of the header information 1208 * fits in the first data extent-sized region. */ |
1212 rc = file->f_op->read(file, (char __user *)data, 1213 ECRYPTFS_DEFAULT_EXTENT_SIZE, &file->f_pos); | 1209 rc = lower_file->f_op->read(lower_file, (char __user *)data, 1210 ECRYPTFS_DEFAULT_EXTENT_SIZE, &lower_file->f_pos); |
1214 set_fs(oldfs); | 1211 set_fs(oldfs); |
1215 fput(file); | 1212 if ((rc = ecryptfs_close_lower_file(lower_file))) { 1213 printk(KERN_ERR "Error closing lower_file\n"); 1214 goto out; 1215 } |
1216 rc = 0; 1217out: 1218 return rc; 1219} 1220 1221static void 1222write_header_metadata(char *virt, struct ecryptfs_crypt_stat *crypt_stat, 1223 size_t *written) --- 450 unchanged lines hidden --- | 1216 rc = 0; 1217out: 1218 return rc; 1219} 1220 1221static void 1222write_header_metadata(char *virt, struct ecryptfs_crypt_stat *crypt_stat, 1223 size_t *written) --- 450 unchanged lines hidden --- |