Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(134)

Side by Side Diff: fs/ecryptfs/read_write.c

Issue 6720011: Revert "ecryptfs: modify write path to encrypt page in writepage" (Closed) Base URL: http://git.chromium.org/git/kernel.git@master
Patch Set: Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « fs/ecryptfs/mmap.c ('k') | fs/ecryptfs/super.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /** 1 /**
2 * eCryptfs: Linux filesystem encryption layer 2 * eCryptfs: Linux filesystem encryption layer
3 * 3 *
4 * Copyright (C) 2007 International Business Machines Corp. 4 * Copyright (C) 2007 International Business Machines Corp.
5 * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com> 5 * Author(s): Michael A. Halcrow <mahalcro@us.ibm.com>
6 * 6 *
7 * This program is free software; you can redistribute it and/or 7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as 8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2 of the 9 * published by the Free Software Foundation; either version 2 of the
10 * License, or (at your option) any later version. 10 * License, or (at your option) any later version.
(...skipping 26 matching lines...) Expand all
37 * Returns bytes written on success; less than zero on error 37 * Returns bytes written on success; less than zero on error
38 */ 38 */
39 int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data, 39 int ecryptfs_write_lower(struct inode *ecryptfs_inode, char *data,
40 loff_t offset, size_t size) 40 loff_t offset, size_t size)
41 { 41 {
42 struct ecryptfs_inode_info *inode_info; 42 struct ecryptfs_inode_info *inode_info;
43 mm_segment_t fs_save; 43 mm_segment_t fs_save;
44 ssize_t rc; 44 ssize_t rc;
45 45
46 inode_info = ecryptfs_inode_to_private(ecryptfs_inode); 46 inode_info = ecryptfs_inode_to_private(ecryptfs_inode);
47 mutex_lock(&inode_info->lower_file_mutex);
47 BUG_ON(!inode_info->lower_file); 48 BUG_ON(!inode_info->lower_file);
49 inode_info->lower_file->f_pos = offset;
48 fs_save = get_fs(); 50 fs_save = get_fs();
49 set_fs(get_ds()); 51 set_fs(get_ds());
50 » rc = vfs_write(inode_info->lower_file, data, size, &offset); 52 » rc = vfs_write(inode_info->lower_file, data, size,
53 » » &inode_info->lower_file->f_pos);
51 set_fs(fs_save); 54 set_fs(fs_save);
55 mutex_unlock(&inode_info->lower_file_mutex);
52 mark_inode_dirty_sync(ecryptfs_inode); 56 mark_inode_dirty_sync(ecryptfs_inode);
53 return rc; 57 return rc;
54 } 58 }
55 59
56 /** 60 /**
57 * ecryptfs_write_lower_page_segment 61 * ecryptfs_write_lower_page_segment
58 * @ecryptfs_inode: The eCryptfs inode 62 * @ecryptfs_inode: The eCryptfs inode
59 * @page_for_lower: The page containing the data to be written to the 63 * @page_for_lower: The page containing the data to be written to the
60 * lower file 64 * lower file
61 * @offset_in_page: The offset in the @page_for_lower from which to 65 * @offset_in_page: The offset in the @page_for_lower from which to
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
224 * Returns bytes read on success; 0 on EOF; less than zero on error 228 * Returns bytes read on success; 0 on EOF; less than zero on error
225 */ 229 */
226 int ecryptfs_read_lower(char *data, loff_t offset, size_t size, 230 int ecryptfs_read_lower(char *data, loff_t offset, size_t size,
227 struct inode *ecryptfs_inode) 231 struct inode *ecryptfs_inode)
228 { 232 {
229 struct ecryptfs_inode_info *inode_info = 233 struct ecryptfs_inode_info *inode_info =
230 ecryptfs_inode_to_private(ecryptfs_inode); 234 ecryptfs_inode_to_private(ecryptfs_inode);
231 mm_segment_t fs_save; 235 mm_segment_t fs_save;
232 ssize_t rc; 236 ssize_t rc;
233 237
238 mutex_lock(&inode_info->lower_file_mutex);
234 BUG_ON(!inode_info->lower_file); 239 BUG_ON(!inode_info->lower_file);
240 inode_info->lower_file->f_pos = offset;
235 fs_save = get_fs(); 241 fs_save = get_fs();
236 set_fs(get_ds()); 242 set_fs(get_ds());
237 » rc = vfs_read(inode_info->lower_file, data, size, &offset); 243 » rc = vfs_read(inode_info->lower_file, data, size,
244 » » &inode_info->lower_file->f_pos);
238 set_fs(fs_save); 245 set_fs(fs_save);
246 mutex_unlock(&inode_info->lower_file_mutex);
239 return rc; 247 return rc;
240 } 248 }
241 249
242 /** 250 /**
243 * ecryptfs_read_lower_page_segment 251 * ecryptfs_read_lower_page_segment
244 * @page_for_ecryptfs: The page into which data for eCryptfs will be 252 * @page_for_ecryptfs: The page into which data for eCryptfs will be
245 * written 253 * written
246 * @offset_in_page: Offset in @page_for_ecryptfs from which to start 254 * @offset_in_page: Offset in @page_for_ecryptfs from which to start
247 * writing 255 * writing
248 * @size: The number of bytes to write into @page_for_ecryptfs 256 * @size: The number of bytes to write into @page_for_ecryptfs
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 SetPageUptodate(ecryptfs_page); 346 SetPageUptodate(ecryptfs_page);
339 unlock_page(ecryptfs_page); 347 unlock_page(ecryptfs_page);
340 page_cache_release(ecryptfs_page); 348 page_cache_release(ecryptfs_page);
341 pos += num_bytes; 349 pos += num_bytes;
342 data_offset += num_bytes; 350 data_offset += num_bytes;
343 } 351 }
344 out: 352 out:
345 return rc; 353 return rc;
346 } 354 }
347 #endif /* 0 */ 355 #endif /* 0 */
OLDNEW
« no previous file with comments | « fs/ecryptfs/mmap.c ('k') | fs/ecryptfs/super.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698