Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'irqchip-fixes-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent

Pull irqchip fixes from Marc Zyngier:

A small bunch of fixes from the irqchip department:

- Fix a couple of UAF on error paths (RZA1, GICv3 ITS)
- Fix iMX GPCv2 trigger setting
- Add missing of_node_put on error path in MBIGEN
- Add another bunch of /* fall-through */ to silence warnings

+13 -3
+1 -1
drivers/irqchip/irq-gic-v3-its.c
··· 3010 3010 3011 3011 if (!its_alloc_vpe_table(vpe_id)) { 3012 3012 its_vpe_id_free(vpe_id); 3013 - its_free_pending_table(vpe->vpt_page); 3013 + its_free_pending_table(vpt_page); 3014 3014 return -ENOMEM; 3015 3015 } 3016 3016
+4
drivers/irqchip/irq-gic-v3.c
··· 771 771 case 7: 772 772 write_gicreg(0, ICC_AP0R3_EL1); 773 773 write_gicreg(0, ICC_AP0R2_EL1); 774 + /* Fall through */ 774 775 case 6: 775 776 write_gicreg(0, ICC_AP0R1_EL1); 777 + /* Fall through */ 776 778 case 5: 777 779 case 4: 778 780 write_gicreg(0, ICC_AP0R0_EL1); ··· 788 786 case 7: 789 787 write_gicreg(0, ICC_AP1R3_EL1); 790 788 write_gicreg(0, ICC_AP1R2_EL1); 789 + /* Fall through */ 791 790 case 6: 792 791 write_gicreg(0, ICC_AP1R1_EL1); 792 + /* Fall through */ 793 793 case 5: 794 794 case 4: 795 795 write_gicreg(0, ICC_AP1R0_EL1);
+1
drivers/irqchip/irq-imx-gpcv2.c
··· 131 131 .irq_unmask = imx_gpcv2_irq_unmask, 132 132 .irq_set_wake = imx_gpcv2_irq_set_wake, 133 133 .irq_retrigger = irq_chip_retrigger_hierarchy, 134 + .irq_set_type = irq_chip_set_type_parent, 134 135 #ifdef CONFIG_SMP 135 136 .irq_set_affinity = irq_chip_set_affinity_parent, 136 137 #endif
+7 -2
drivers/irqchip/irq-mbigen.c
··· 241 241 242 242 parent = platform_bus_type.dev_root; 243 243 child = of_platform_device_create(np, NULL, parent); 244 - if (!child) 244 + if (!child) { 245 + of_node_put(np); 245 246 return -ENOMEM; 247 + } 246 248 247 249 if (of_property_read_u32(child->dev.of_node, "num-pins", 248 250 &num_pins) < 0) { 249 251 dev_err(&pdev->dev, "No num-pins property\n"); 252 + of_node_put(np); 250 253 return -EINVAL; 251 254 } 252 255 ··· 257 254 mbigen_write_msg, 258 255 &mbigen_domain_ops, 259 256 mgn_chip); 260 - if (!domain) 257 + if (!domain) { 258 + of_node_put(np); 261 259 return -ENOMEM; 260 + } 262 261 } 263 262 264 263 return 0;