aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-09-14 21:13:32 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2017-09-14 21:13:32 -0400
commit581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (patch)
tree0a693778ce39c49b9b7d93d0d6795c576896f5cf /security
parentcc73fee0bae2d66594d1fa2df92bbd783aa98e04 (diff)
parent9725d4cef62229b4ec4c912e0db0761e7d400650 (diff)
Merge branch 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
Pull more set_fs removal from Al Viro: "Christoph's 'use kernel_read and friends rather than open-coding set_fs()' series" * 'work.set_fs' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: fs: unexport vfs_readv and vfs_writev fs: unexport vfs_read and vfs_write fs: unexport __vfs_read/__vfs_write lustre: switch to kernel_write gadget/f_mass_storage: stop messing with the address limit mconsole: switch to kernel_read btrfs: switch write_buf to kernel_write net/9p: switch p9_fd_read to kernel_write mm/nommu: switch do_mmap_private to kernel_read serial2002: switch serial2002_tty_write to kernel_{read/write} fs: make the buf argument to __kernel_write a void pointer fs: fix kernel_write prototype fs: fix kernel_read prototype fs: move kernel_read to fs/read_write.c fs: move kernel_write to fs/read_write.c autofs4: switch autofs4_write to __kernel_write ashmem: switch to ->read_iter
Diffstat (limited to 'security')
-rw-r--r--security/keys/big_key.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/security/keys/big_key.c b/security/keys/big_key.c
index 835c1ab30d01..6acb00f6f22c 100644
--- a/security/keys/big_key.c
+++ b/security/keys/big_key.c
@@ -147,6 +147,7 @@ int big_key_preparse(struct key_preparsed_payload *prep)
147 * File content is stored encrypted with randomly generated key. 147 * File content is stored encrypted with randomly generated key.
148 */ 148 */
149 size_t enclen = ALIGN(datalen, crypto_skcipher_blocksize(big_key_skcipher)); 149 size_t enclen = ALIGN(datalen, crypto_skcipher_blocksize(big_key_skcipher));
150 loff_t pos = 0;
150 151
151 /* prepare aligned data to encrypt */ 152 /* prepare aligned data to encrypt */
152 data = kmalloc(enclen, GFP_KERNEL); 153 data = kmalloc(enclen, GFP_KERNEL);
@@ -179,7 +180,7 @@ int big_key_preparse(struct key_preparsed_payload *prep)
179 goto err_enckey; 180 goto err_enckey;
180 } 181 }
181 182
182 written = kernel_write(file, data, enclen, 0); 183 written = kernel_write(file, data, enclen, &pos);
183 if (written != enclen) { 184 if (written != enclen) {
184 ret = written; 185 ret = written;
185 if (written >= 0) 186 if (written >= 0)
@@ -295,6 +296,7 @@ long big_key_read(const struct key *key, char __user *buffer, size_t buflen)
295 u8 *data; 296 u8 *data;
296 u8 *enckey = (u8 *)key->payload.data[big_key_data]; 297 u8 *enckey = (u8 *)key->payload.data[big_key_data];
297 size_t enclen = ALIGN(datalen, crypto_skcipher_blocksize(big_key_skcipher)); 298 size_t enclen = ALIGN(datalen, crypto_skcipher_blocksize(big_key_skcipher));
299 loff_t pos = 0;
298 300
299 data = kmalloc(enclen, GFP_KERNEL); 301 data = kmalloc(enclen, GFP_KERNEL);
300 if (!data) 302 if (!data)
@@ -307,7 +309,7 @@ long big_key_read(const struct key *key, char __user *buffer, size_t buflen)
307 } 309 }
308 310
309 /* read file to kernel and decrypt */ 311 /* read file to kernel and decrypt */
310 ret = kernel_read(file, 0, data, enclen); 312 ret = kernel_read(file, data, enclen, &pos);
311 if (ret >= 0 && ret != enclen) { 313 if (ret >= 0 && ret != enclen) {
312 ret = -EIO; 314 ret = -EIO;
313 goto err_fput; 315 goto err_fput;