From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933587AbcIAPjM (ORCPT ); Thu, 1 Sep 2016 11:39:12 -0400 Received: from mx1.redhat.com ([209.132.183.28]:42030 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756029AbcIAPjK (ORCPT ); Thu, 1 Sep 2016 11:39:10 -0400 Subject: Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store() To: Heiko Carstens , SF Markus Elfring References: <5fd5f9ef-923f-4655-54f0-874114dc9428@users.sourceforge.net> <20160901103245.GA3624@osiris> Cc: linux-s390@vger.kernel.org, Martin Schwidefsky , Michael Holzheu , LKML , kernel-janitors@vger.kernel.org, Julia Lawall From: Paolo Bonzini Message-ID: Date: Thu, 1 Sep 2016 17:39:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 MIME-Version: 1.0 In-Reply-To: <20160901103245.GA3624@osiris> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.28]); Thu, 01 Sep 2016 15:39:09 +0000 (UTC) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paolo Bonzini Date: Thu, 01 Sep 2016 15:39:02 +0000 Subject: Re: [PATCH] s390/hypfs: Use kmalloc_array() in diag0c_store() Message-Id: List-Id: References: <5fd5f9ef-923f-4655-54f0-874114dc9428@users.sourceforge.net> <20160901103245.GA3624@osiris> In-Reply-To: <20160901103245.GA3624@osiris> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Heiko Carstens , SF Markus Elfring Cc: linux-s390@vger.kernel.org, Martin Schwidefsky , Michael Holzheu , LKML , kernel-janitors@vger.kernel.org, Julia Lawall 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