ecryptfs: Use struct_size to improve process_response + send_miscdev
PATCH 1/1 ecryptfs: Use struct_size to improve process_response + send_miscdev
Use struct_size(), which provides additional compile-time checks for structures with flexible array members (e.g., __must_be_array()), to determine the allocation size for a new 'struct ecryptfs_message'.
In send_miscdev(), reuse 'msg_size' instead of recalculating it.
Signed-off-by Thorsten Blum <[email protected]>
--- fs/ecryptfs/messaging.c | 3 ++- fs/ecryptfs/miscdev.c | 7 +++++-- 2 files changed, 7 insertions(+), 3 deletions(-)
fs/ecryptfs/messaging.c +2 -1
@@ -6,6 +6,7 @@* Author(s): Michael A. Halcrow <[email protected]> * Tyler Hicks <[email protected]> */ +#include <linux/overflow.h> #include <linux/sched.h> #include <linux/slab.h> #include <linux/user_namespace.h>
@@ -232,7 +233,7 @@ int ecryptfs_process_response(struct ecryptfs_daemon *daemon, msg_ctx->counter, seq); goto unlock; } - msg_size = (sizeof (*msg) + msg->data_len); + msg_size =struct_size (msg, data, msg->data_len); msg_ctx->msg =kmemdup (msg, msg_size,GFP_KERNEL );if (!msg_ctx->msg) { rc = -ENOMEM ;
fs/ecryptfs/miscdev.c +5 -2
@@ -10,6 +10,7 @@#include <linux/hash.h> #include <linux/random.h> #include <linux/miscdevice.h> +#include <linux/overflow.h> #include <linux/poll.h> #include <linux/slab.h> #include <linux/wait.h>
@@ -148,8 +149,10 @@ int ecryptfs_send_miscdev(char *data, size_t data_size, u16 msg_flags, struct ecryptfs_daemon *daemon) { struct ecryptfs_message *msg; +size_t msg_size; - msg =kmalloc ((sizeof (*msg) + data_size),GFP_KERNEL ); + msg_size =struct_size (msg, data, data_size); + msg =kmalloc (msg_size,GFP_KERNEL );if (!msg)return -ENOMEM ;
@@ -159,7 +162,7 @@ int ecryptfs_send_miscdev(char *data, size_t data_size, msg_ctx->msg->data_len = data_size; msg_ctx->type = msg_type;memcpy (msg_ctx->msg->data, data, data_size); - msg_ctx->msg_size = (sizeof (*msg_ctx->msg) + data_size); + msg_ctx->msg_size = msg_size;list_add_tail (&msg_ctx->daemon_out_list, &daemon->msg_ctx_out_queue);mutex_unlock (&msg_ctx->mux);
Signature · 2 lines
Thorsten Blum <[email protected]> GPG: 1D60 735E 8AEF 3BE4 73B6 9D84 7336 78FD 8DFE EAD4