diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:13:32 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-09-14 21:13:32 -0400 |
| commit | 581bfce969cbfc7ce43ee92273be9cb7c3fdfa61 (patch) | |
| tree | 0a693778ce39c49b9b7d93d0d6795c576896f5cf /security | |
| parent | cc73fee0bae2d66594d1fa2df92bbd783aa98e04 (diff) | |
| parent | 9725d4cef62229b4ec4c912e0db0761e7d400650 (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.c | 6 |
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; |
