Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
Am Thu, 1 Sep 2016 17:39:02 +0200 schrieb Paolo Bonzini: > > > On 01/09/2016 12:32, Heiko Carstens wrote: > > On Thu, Sep 01, 2016 at 11:38:15AM +0200, SF Markus Elfring wrote: > >> From: Markus Elfring > >> Date: Thu, 1 Sep 2016 11:30:58 +0200 > >> > >> A multiplication for the size determination of a memory allocation > >> indicated that an array data structure should be processed. > >> Thus use the corresponding function "kmalloc_array". > >> > >> This issue was detected by using the Coccinelle software. > >> > >> Signed-off-by: Markus Elfring > >> --- > >> arch/s390/hypfs/hypfs_diag0c.c | 4 +++- > >> 1 file changed, 3 insertions(+), 1 deletion(-) > >> > >> diff --git a/arch/s390/hypfs/hypfs_diag0c.c > >> b/arch/s390/hypfs/hypfs_diag0c.c index 0f1927c..61418a8 100644 > >> --- a/arch/s390/hypfs/hypfs_diag0c.c > >> +++ b/arch/s390/hypfs/hypfs_diag0c.c > >> @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) > >> > >>get_online_cpus(); > >>cpu_count = num_online_cpus(); > >> - cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), > >> GFP_KERNEL); > >> + cpu_vec = kmalloc_array(num_possible_cpus(), > >> + sizeof(*cpu_vec), > >> + GFP_KERNEL); > > > > How does this improve the situation? For any real life scenario > > this can't overflow, but it does add an extra (pointless) runtime > > check, since num_possible_cpus() is not a compile time constant. > > > > So, why is this an "issue"? > > It's not an issue but I for one still prefer consistent use of > kmalloc_array and kcalloc. Hello Paolo, I will keep this in mind for future code, but would prefer not changing this now. Michael
Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
Am Thu, 1 Sep 2016 17:39:02 +0200 schrieb Paolo Bonzini : > > > On 01/09/2016 12:32, Heiko Carstens wrote: > > On Thu, Sep 01, 2016 at 11:38:15AM +0200, SF Markus Elfring wrote: > >> From: Markus Elfring > >> Date: Thu, 1 Sep 2016 11:30:58 +0200 > >> > >> A multiplication for the size determination of a memory allocation > >> indicated that an array data structure should be processed. > >> Thus use the corresponding function "kmalloc_array". > >> > >> This issue was detected by using the Coccinelle software. > >> > >> Signed-off-by: Markus Elfring > >> --- > >> arch/s390/hypfs/hypfs_diag0c.c | 4 +++- > >> 1 file changed, 3 insertions(+), 1 deletion(-) > >> > >> diff --git a/arch/s390/hypfs/hypfs_diag0c.c > >> b/arch/s390/hypfs/hypfs_diag0c.c index 0f1927c..61418a8 100644 > >> --- a/arch/s390/hypfs/hypfs_diag0c.c > >> +++ b/arch/s390/hypfs/hypfs_diag0c.c > >> @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) > >> > >>get_online_cpus(); > >>cpu_count = num_online_cpus(); > >> - cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), > >> GFP_KERNEL); > >> + cpu_vec = kmalloc_array(num_possible_cpus(), > >> + sizeof(*cpu_vec), > >> + GFP_KERNEL); > > > > How does this improve the situation? For any real life scenario > > this can't overflow, but it does add an extra (pointless) runtime > > check, since num_possible_cpus() is not a compile time constant. > > > > So, why is this an "issue"? > > It's not an issue but I for one still prefer consistent use of > kmalloc_array and kcalloc. Hello Paolo, I will keep this in mind for future code, but would prefer not changing this now. Michael
Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
On 01/09/2016 12:32, Heiko Carstens wrote: > On Thu, Sep 01, 2016 at 11:38:15AM +0200, SF Markus Elfring wrote: >> From: Markus Elfring>> Date: Thu, 1 Sep 2016 11:30:58 +0200 >> >> A multiplication for the size determination of a memory allocation >> indicated that an array data structure should be processed. >> Thus use the corresponding function "kmalloc_array". >> >> This issue was detected by using the Coccinelle software. >> >> Signed-off-by: Markus Elfring >> --- >> arch/s390/hypfs/hypfs_diag0c.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c >> index 0f1927c..61418a8 100644 >> --- a/arch/s390/hypfs/hypfs_diag0c.c >> +++ b/arch/s390/hypfs/hypfs_diag0c.c >> @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) >> >> get_online_cpus(); >> cpu_count = num_online_cpus(); >> -cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), GFP_KERNEL); >> +cpu_vec = kmalloc_array(num_possible_cpus(), >> +sizeof(*cpu_vec), >> +GFP_KERNEL); > > How does this improve the situation? For any real life scenario this can't > overflow, but it does add an extra (pointless) runtime check, since > num_possible_cpus() is not a compile time constant. > > So, why is this an "issue"? It's not an issue but I for one still prefer consistent use of kmalloc_array and kcalloc. Paolo
Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
On 01/09/2016 12:32, Heiko Carstens wrote: > On Thu, Sep 01, 2016 at 11:38:15AM +0200, SF Markus Elfring wrote: >> From: Markus Elfring >> Date: Thu, 1 Sep 2016 11:30:58 +0200 >> >> A multiplication for the size determination of a memory allocation >> indicated that an array data structure should be processed. >> Thus use the corresponding function "kmalloc_array". >> >> This issue was detected by using the Coccinelle software. >> >> Signed-off-by: Markus Elfring >> --- >> arch/s390/hypfs/hypfs_diag0c.c | 4 +++- >> 1 file changed, 3 insertions(+), 1 deletion(-) >> >> diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c >> index 0f1927c..61418a8 100644 >> --- a/arch/s390/hypfs/hypfs_diag0c.c >> +++ b/arch/s390/hypfs/hypfs_diag0c.c >> @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) >> >> get_online_cpus(); >> cpu_count = num_online_cpus(); >> -cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), GFP_KERNEL); >> +cpu_vec = kmalloc_array(num_possible_cpus(), >> +sizeof(*cpu_vec), >> +GFP_KERNEL); > > How does this improve the situation? For any real life scenario this can't > overflow, but it does add an extra (pointless) runtime check, since > num_possible_cpus() is not a compile time constant. > > So, why is this an "issue"? It's not an issue but I for one still prefer consistent use of kmalloc_array and kcalloc. Paolo
Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
On Thu, Sep 01, 2016 at 11:38:15AM +0200, SF Markus Elfring wrote: > From: Markus Elfring> Date: Thu, 1 Sep 2016 11:30:58 +0200 > > A multiplication for the size determination of a memory allocation > indicated that an array data structure should be processed. > Thus use the corresponding function "kmalloc_array". > > This issue was detected by using the Coccinelle software. > > Signed-off-by: Markus Elfring > --- > arch/s390/hypfs/hypfs_diag0c.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c > index 0f1927c..61418a8 100644 > --- a/arch/s390/hypfs/hypfs_diag0c.c > +++ b/arch/s390/hypfs/hypfs_diag0c.c > @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) > > get_online_cpus(); > cpu_count = num_online_cpus(); > - cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), GFP_KERNEL); > + cpu_vec = kmalloc_array(num_possible_cpus(), > + sizeof(*cpu_vec), > + GFP_KERNEL); How does this improve the situation? For any real life scenario this can't overflow, but it does add an extra (pointless) runtime check, since num_possible_cpus() is not a compile time constant. So, why is this an "issue"?
Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
On Thu, Sep 01, 2016 at 11:38:15AM +0200, SF Markus Elfring wrote: > From: Markus Elfring > Date: Thu, 1 Sep 2016 11:30:58 +0200 > > A multiplication for the size determination of a memory allocation > indicated that an array data structure should be processed. > Thus use the corresponding function "kmalloc_array". > > This issue was detected by using the Coccinelle software. > > Signed-off-by: Markus Elfring > --- > arch/s390/hypfs/hypfs_diag0c.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c > index 0f1927c..61418a8 100644 > --- a/arch/s390/hypfs/hypfs_diag0c.c > +++ b/arch/s390/hypfs/hypfs_diag0c.c > @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) > > get_online_cpus(); > cpu_count = num_online_cpus(); > - cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), GFP_KERNEL); > + cpu_vec = kmalloc_array(num_possible_cpus(), > + sizeof(*cpu_vec), > + GFP_KERNEL); How does this improve the situation? For any real life scenario this can't overflow, but it does add an extra (pointless) runtime check, since num_possible_cpus() is not a compile time constant. So, why is this an "issue"?
[PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
From: Markus ElfringDate: Thu, 1 Sep 2016 11:30:58 +0200 A multiplication for the size determination of a memory allocation indicated that an array data structure should be processed. Thus use the corresponding function "kmalloc_array". This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- arch/s390/hypfs/hypfs_diag0c.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c index 0f1927c..61418a8 100644 --- a/arch/s390/hypfs/hypfs_diag0c.c +++ b/arch/s390/hypfs/hypfs_diag0c.c @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) get_online_cpus(); cpu_count = num_online_cpus(); - cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), GFP_KERNEL); + cpu_vec = kmalloc_array(num_possible_cpus(), + sizeof(*cpu_vec), + GFP_KERNEL); if (!cpu_vec) goto fail_put_online_cpus; /* Note: Diag 0c needs 8 byte alignment and real storage */ -- 2.9.3
[PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store()
From: Markus Elfring Date: Thu, 1 Sep 2016 11:30:58 +0200 A multiplication for the size determination of a memory allocation indicated that an array data structure should be processed. Thus use the corresponding function "kmalloc_array". This issue was detected by using the Coccinelle software. Signed-off-by: Markus Elfring --- arch/s390/hypfs/hypfs_diag0c.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/arch/s390/hypfs/hypfs_diag0c.c b/arch/s390/hypfs/hypfs_diag0c.c index 0f1927c..61418a8 100644 --- a/arch/s390/hypfs/hypfs_diag0c.c +++ b/arch/s390/hypfs/hypfs_diag0c.c @@ -48,7 +48,9 @@ static void *diag0c_store(unsigned int *count) get_online_cpus(); cpu_count = num_online_cpus(); - cpu_vec = kmalloc(sizeof(*cpu_vec) * num_possible_cpus(), GFP_KERNEL); + cpu_vec = kmalloc_array(num_possible_cpus(), + sizeof(*cpu_vec), + GFP_KERNEL); if (!cpu_vec) goto fail_put_online_cpus; /* Note: Diag 0c needs 8 byte alignment and real storage */ -- 2.9.3