diff options
Diffstat (limited to 'security/keys/big_key.c')
-rw-r--r-- | security/keys/big_key.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/security/keys/big_key.c b/security/keys/big_key.c index 835c1ab30d01..9f4c86cade8e 100644 --- a/security/keys/big_key.c +++ b/security/keys/big_key.c | |||
@@ -295,6 +295,7 @@ long big_key_read(const struct key *key, char __user *buffer, size_t buflen) | |||
295 | u8 *data; | 295 | u8 *data; |
296 | u8 *enckey = (u8 *)key->payload.data[big_key_data]; | 296 | u8 *enckey = (u8 *)key->payload.data[big_key_data]; |
297 | size_t enclen = ALIGN(datalen, crypto_skcipher_blocksize(big_key_skcipher)); | 297 | size_t enclen = ALIGN(datalen, crypto_skcipher_blocksize(big_key_skcipher)); |
298 | loff_t pos = 0; | ||
298 | 299 | ||
299 | data = kmalloc(enclen, GFP_KERNEL); | 300 | data = kmalloc(enclen, GFP_KERNEL); |
300 | if (!data) | 301 | if (!data) |
@@ -307,7 +308,7 @@ long big_key_read(const struct key *key, char __user *buffer, size_t buflen) | |||
307 | } | 308 | } |
308 | 309 | ||
309 | /* read file to kernel and decrypt */ | 310 | /* read file to kernel and decrypt */ |
310 | ret = kernel_read(file, 0, data, enclen); | 311 | ret = kernel_read(file, data, enclen, &pos); |
311 | if (ret >= 0 && ret != enclen) { | 312 | if (ret >= 0 && ret != enclen) { |
312 | ret = -EIO; | 313 | ret = -EIO; |
313 | goto err_fput; | 314 | goto err_fput; |