Skip to content

Commit 1057066

Browse files
Erick Archerrostedt
authored andcommitted
eventfs: Use kcalloc() instead of kzalloc()
As noted in the "Deprecated Interfaces, Language Features, Attributes, and Conventions" documentation [1], size calculations (especially multiplication) should not be performed in memory allocator (or similar) function arguments due to the risk of them overflowing. This could lead to values wrapping around and a smaller allocation being made than the caller was expecting. Using those allocations could lead to linear overflows of heap memory and other misbehaviors. So, use the purpose specific kcalloc() function instead of the argument size * count in the kzalloc() function. [1] https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments Link: https://lore.kernel.org/linux-trace-kernel/20240115181658.4562-1-erick.archer@gmx.com Cc: Masami Hiramatsu <mhiramat@kernel.org> Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com> Cc: Mark Rutland <mark.rutland@arm.com> Link: KSPP#162 Signed-off-by: Erick Archer <erick.archer@gmx.com> Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
1 parent 852e46e commit 1057066

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

fs/tracefs/event_inode.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ static int eventfs_set_attr(struct mnt_idmap *idmap, struct dentry *dentry,
9797
/* Preallocate the children mode array if necessary */
9898
if (!(dentry->d_inode->i_mode & S_IFDIR)) {
9999
if (!ei->entry_attrs) {
100-
ei->entry_attrs = kzalloc(sizeof(*ei->entry_attrs) * ei->nr_entries,
100+
ei->entry_attrs = kcalloc(ei->nr_entries, sizeof(*ei->entry_attrs),
101101
GFP_NOFS);
102102
if (!ei->entry_attrs) {
103103
ret = -ENOMEM;
@@ -874,7 +874,7 @@ struct eventfs_inode *eventfs_create_dir(const char *name, struct eventfs_inode
874874
}
875875

876876
if (size) {
877-
ei->d_children = kzalloc(sizeof(*ei->d_children) * size, GFP_KERNEL);
877+
ei->d_children = kcalloc(size, sizeof(*ei->d_children), GFP_KERNEL);
878878
if (!ei->d_children) {
879879
kfree_const(ei->name);
880880
kfree(ei);
@@ -941,7 +941,7 @@ struct eventfs_inode *eventfs_create_events_dir(const char *name, struct dentry
941941
goto fail;
942942

943943
if (size) {
944-
ei->d_children = kzalloc(sizeof(*ei->d_children) * size, GFP_KERNEL);
944+
ei->d_children = kcalloc(size, sizeof(*ei->d_children), GFP_KERNEL);
945945
if (!ei->d_children)
946946
goto fail;
947947
}

0 commit comments

Comments
 (0)