Message ID | 20250222-sched-kcalloc-v1-1-4dee15fd8241@ethancedwards.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | sched/topology: replace kzalloc() with kcalloc() in sched_init_numa() | expand |
Hi Ethan, On 23/02/25 01:16, Ethan Carter Edwards wrote: > We are trying to get rid of all multiplications from allocation > functions to prevent integer overflows[1]. Here the multiplication is > obviously safe, but using kcalloc() is more appropriate and improves > readability. This patch has no effect on runtime behavior. > > Link: https://github.com/KSPP/linux/issues/162 [1] > Link: https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments > > Signed-off-by: Ethan Carter Edwards <ethan@ethancedwards.com> > --- > kernel/sched/topology.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c > index c49aea8c10254dec985bba47b18f61be954d23f6..b4539b29fb36f6b2f0c5ca310620ebda29755e5c 100644 > --- a/kernel/sched/topology.c > +++ b/kernel/sched/topology.c > @@ -1918,7 +1918,7 @@ void sched_init_numa(int offline_node) > */ > sched_domains_numa_levels = 0; > > - masks = kzalloc(sizeof(void *) * nr_levels, GFP_KERNEL); > + masks = kcalloc(nr_levels, sizeof(void *), GFP_KERNEL); Even though an overflow is very unlikely here, using kcalloc() improves readability and adds a safeguard since its built-in overflow check has minimal overhead. Reviewed-by: Madadi Vineeth Reddy <vineethr@linux.ibm.com> Thanks, Madadi Vineeth Reddy > if (!masks) > return; > > @@ -1927,7 +1927,7 @@ void sched_init_numa(int offline_node) > * CPUs of nodes that are that many hops away from us. > */ > for (i = 0; i < nr_levels; i++) { > - masks[i] = kzalloc(nr_node_ids * sizeof(void *), GFP_KERNEL); > + masks[i] = kcalloc(nr_node_ids, sizeof(void *), GFP_KERNEL); > if (!masks[i]) > return; > > > --- > base-commit: 5cf80612d3f72c46ad53ef5042b4c609c393122f > change-id: 20250222-sched-kcalloc-1d5acea7249b > > Best regards,
… > We are trying to get rid of all multiplications from allocation > functions to prevent integer overflows[1]. … Is an imperative wording more desirable for such a change description? https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.14-rc3#n94 … > --- > kernel/sched/topology.c | 4 ++-- … How do you think about to improve your version management? https://lore.kernel.org/all/?q=%22This+looks+like+a+new+version+of+a+previously+submitted+patch%22 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.14-rc3#n780 … > +++ b/kernel/sched/topology.c > @@ -1918,7 +1918,7 @@ void sched_init_numa(int offline_node) > */ > sched_domains_numa_levels = 0; > > - masks = kzalloc(sizeof(void *) * nr_levels, GFP_KERNEL); > + masks = kcalloc(nr_levels, sizeof(void *), GFP_KERNEL); … See also: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/coding-style.rst?h=v6.14-rc3#n941 Regards, Markus
diff --git a/kernel/sched/topology.c b/kernel/sched/topology.c index c49aea8c10254dec985bba47b18f61be954d23f6..b4539b29fb36f6b2f0c5ca310620ebda29755e5c 100644 --- a/kernel/sched/topology.c +++ b/kernel/sched/topology.c @@ -1918,7 +1918,7 @@ void sched_init_numa(int offline_node) */ sched_domains_numa_levels = 0; - masks = kzalloc(sizeof(void *) * nr_levels, GFP_KERNEL); + masks = kcalloc(nr_levels, sizeof(void *), GFP_KERNEL); if (!masks) return; @@ -1927,7 +1927,7 @@ void sched_init_numa(int offline_node) * CPUs of nodes that are that many hops away from us. */ for (i = 0; i < nr_levels; i++) { - masks[i] = kzalloc(nr_node_ids * sizeof(void *), GFP_KERNEL); + masks[i] = kcalloc(nr_node_ids, sizeof(void *), GFP_KERNEL); if (!masks[i]) return;
We are trying to get rid of all multiplications from allocation functions to prevent integer overflows[1]. Here the multiplication is obviously safe, but using kcalloc() is more appropriate and improves readability. This patch has no effect on runtime behavior. Link: https://github.com/KSPP/linux/issues/162 [1] Link: https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments Signed-off-by: Ethan Carter Edwards <ethan@ethancedwards.com> --- kernel/sched/topology.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) --- base-commit: 5cf80612d3f72c46ad53ef5042b4c609c393122f change-id: 20250222-sched-kcalloc-1d5acea7249b Best regards,