lkml.org 
[lkml]   [2020]   [Aug]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.8 065/464] irqchip/loongson-pch-pic: Check return value of irq_domain_translate_twocell()
    Date
    From: Tiezhu Yang <yangtiezhu@loongson.cn>

    [ Upstream commit 66a535c495f72e1deacc37dfa34acca2a06e3578 ]

    Check the return value of irq_domain_translate_twocell() due to
    it may returns -EINVAL if failed and use variable fwspec for it,
    and then use a new variable parent_fwspec which is proper for
    irq_domain_alloc_irqs_parent().

    Fixes: ef8c01eb64ca ("irqchip: Add Loongson PCH PIC controller")
    Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
    Signed-off-by: Marc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/1594087972-21715-6-git-send-email-yangtiezhu@loongson.cn
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/irqchip/irq-loongson-pch-pic.c | 15 +++++++++------
    1 file changed, 9 insertions(+), 6 deletions(-)

    diff --git a/drivers/irqchip/irq-loongson-pch-pic.c b/drivers/irqchip/irq-loongson-pch-pic.c
    index 2a05b9305012b..016f32c4cbe18 100644
    --- a/drivers/irqchip/irq-loongson-pch-pic.c
    +++ b/drivers/irqchip/irq-loongson-pch-pic.c
    @@ -135,16 +135,19 @@ static int pch_pic_alloc(struct irq_domain *domain, unsigned int virq,
    int err;
    unsigned int type;
    unsigned long hwirq;
    - struct irq_fwspec fwspec;
    + struct irq_fwspec *fwspec = arg;
    + struct irq_fwspec parent_fwspec;
    struct pch_pic *priv = domain->host_data;

    - irq_domain_translate_twocell(domain, arg, &hwirq, &type);
    + err = irq_domain_translate_twocell(domain, fwspec, &hwirq, &type);
    + if (err)
    + return err;

    - fwspec.fwnode = domain->parent->fwnode;
    - fwspec.param_count = 1;
    - fwspec.param[0] = hwirq + priv->ht_vec_base;
    + parent_fwspec.fwnode = domain->parent->fwnode;
    + parent_fwspec.param_count = 1;
    + parent_fwspec.param[0] = hwirq + priv->ht_vec_base;

    - err = irq_domain_alloc_irqs_parent(domain, virq, 1, &fwspec);
    + err = irq_domain_alloc_irqs_parent(domain, virq, 1, &parent_fwspec);
    if (err)
    return err;

    --
    2.25.1


    \
     
     \ /
      Last update: 2020-08-17 21:47    [W:2.617 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site