[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2] xen/irq: Propagate the error from init_one_desc_irq() in init_*_irq_data()


  • To: Julien Grall <julien@xxxxxxx>
  • From: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Date: Mon, 30 Nov 2020 23:04:11 +0000
  • Accept-language: en-US
  • Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none
  • Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9tzVg79mVUHo83Th6q8ZOxTYt3jNAhvCCF0EbqMBuFg=; b=RfeNPkOjKuKfiu2dUArLIFCwKEnORNfDqS0uJpm96XwIDz1fTf8pdIreSB26kgUU/y6pwh5Gg8+tgic0aZGkYeewpqPIatTH9mGDn6BGMsS/fgQVgOaUGyJCizH96HE+hkyVuXjaBwMICd/he/PmBLwJf5ENS1D31Mmb0+pPCLfeaLuRCc4CPOT8veCYZTGUq3IpUIdof49ahGyrareNCcKLV2hTW24Gfz7jWhXJO0Eo/6GxIafnSRMH4p6I08gw2kgweh5Qk/+5CJJ3ABNNb++86tChXw6BNXMQbDRzPtUmAayldvxjL9de/JfuF9KFhuZFvxIH6b9jRbz1KWrYTA==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WfxhZJdF6H7GHZy9u+aT6v+Hwqr0yijwGp/DrH8rc3hrUR3jfSJtPfmurXRVNKfF6QZ2Y8gT7Fci13MHiTZgnKF+WsAyOAnkCFy4rML0C+dxUAavCL4i5p3xQ93OBhcHNOR1CwV2nynO8B07GYXq/kXqtRIYNi0yNUBobvyDDVyLCZePv+TPWu71edk+lIjYj6R6T6Eb5VTMzq28R8j7ibml6aDj46CoCklrH0Vlu1K/eccXYSvC/dTFT0m/812KOE/2HgxgbsnSVigKfslDHOuAWNDUxyt7zEggTzpkRpvNADfiCVXE71OHEZeoS/R2zdiYDQTQEieSBATz4NeA6w==
  • Authentication-results: xen.org; dkim=none (message not signed) header.d=none;xen.org; dmarc=none action=none header.from=epam.com;
  • Cc: "xen-devel@xxxxxxxxxxxxxxxxxxxx" <xen-devel@xxxxxxxxxxxxxxxxxxxx>, Julien Grall <jgrall@xxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>, Wei Liu <wl@xxxxxxx>
  • Delivery-date: Mon, 30 Nov 2020 23:04:31 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
  • Thread-index: AQHWxXrGmX4mPPsRQ02tfcrd+7CSaanhT0MA
  • Thread-topic: [PATCH v2] xen/irq: Propagate the error from init_one_desc_irq() in init_*_irq_data()

Hi Julien,

Julien Grall writes:

> From: Julien Grall <jgrall@xxxxxxxxxx>
>
> init_one_desc_irq() can return an error if it is unable to allocate
> memory. While this is unlikely to happen during boot (called from
> init_{,local_}irq_data()), it is better to harden the code by
> propagting the return value.
>
> Spotted by coverity.
>
> CID: 106529
>
> Signed-off-by: Julien Grall <jgrall@xxxxxxxxxx>
> Reviewed-by: Roger Paul Monné <roger.pau@xxxxxxxxxx>

Reviewed-by: Volodymyr Babchuk <volodymyr_babchuk@xxxxxxxx>

For ARM part, obviously.

>
> ---
>     Changes in v2:
>         - Add Roger's reviewed-by for x86
>         - Handle
> ---
>  xen/arch/arm/irq.c | 12 ++++++++++--
>  xen/arch/x86/irq.c |  7 ++++++-
>  2 files changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/xen/arch/arm/irq.c b/xen/arch/arm/irq.c
> index 3877657a5277..b71b099e6fa2 100644
> --- a/xen/arch/arm/irq.c
> +++ b/xen/arch/arm/irq.c
> @@ -88,7 +88,11 @@ static int __init init_irq_data(void)
>      for ( irq = NR_LOCAL_IRQS; irq < NR_IRQS; irq++ )
>      {
>          struct irq_desc *desc = irq_to_desc(irq);
> -        init_one_irq_desc(desc);
> +        int rc = init_one_irq_desc(desc);
> +
> +        if ( rc )
> +            return rc;
> +
>          desc->irq = irq;
>          desc->action  = NULL;
>      }
> @@ -105,7 +109,11 @@ static int init_local_irq_data(void)
>      for ( irq = 0; irq < NR_LOCAL_IRQS; irq++ )
>      {
>          struct irq_desc *desc = irq_to_desc(irq);
> -        init_one_irq_desc(desc);
> +        int rc = init_one_irq_desc(desc);
> +
> +        if ( rc )
> +            return rc;
> +
>          desc->irq = irq;
>          desc->action  = NULL;
>  
> diff --git a/xen/arch/x86/irq.c b/xen/arch/x86/irq.c
> index 45966947919e..3ebd684415ac 100644
> --- a/xen/arch/x86/irq.c
> +++ b/xen/arch/x86/irq.c
> @@ -428,9 +428,14 @@ int __init init_irq_data(void)
>  
>      for ( irq = 0; irq < nr_irqs_gsi; irq++ )
>      {
> +        int rc;
> +
>          desc = irq_to_desc(irq);
>          desc->irq = irq;
> -        init_one_irq_desc(desc);
> +
> +        rc = init_one_irq_desc(desc);
> +        if ( rc )
> +            return rc;
>      }
>      for ( ; irq < nr_irqs; irq++ )
>          irq_to_desc(irq)->irq = irq;


-- 
Volodymyr Babchuk at EPAM

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.