diff options
author | Francesco Dolcini <francesco.dolcini@toradex.com> | 2023-04-28 09:48:09 +0200 |
---|---|---|
committer | Francesco Dolcini <francesco.dolcini@toradex.com> | 2023-04-28 09:48:09 +0200 |
commit | 3fd4c5f80236d70c761426c63b924165163a9b18 (patch) | |
tree | bb9f71b139fcd78ef9823419f7f50bf6451020e9 /kernel/irq/irqdesc.c | |
parent | 36cfec284d54155d2c2c7acc73e6b6b0a2aa0949 (diff) | |
parent | 2c23e6c538c879e380401ae4b236f54020618eaa (diff) |
Merge tag '08.06.00.007' into toradex_ti-linux-5.10.y_bringup_sync
Merge TI Linux Kernel Release 08.06.00.007
Diffstat (limited to 'kernel/irq/irqdesc.c')
-rw-r--r-- | kernel/irq/irqdesc.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/kernel/irq/irqdesc.c b/kernel/irq/irqdesc.c index ca36c6179aa7..9b0914a063f9 100644 --- a/kernel/irq/irqdesc.c +++ b/kernel/irq/irqdesc.c @@ -288,22 +288,25 @@ static void irq_sysfs_add(int irq, struct irq_desc *desc) if (irq_kobj_base) { /* * Continue even in case of failure as this is nothing - * crucial. + * crucial and failures in the late irq_sysfs_init() + * cannot be rolled back. */ if (kobject_add(&desc->kobj, irq_kobj_base, "%d", irq)) pr_warn("Failed to add kobject for irq %d\n", irq); + else + desc->istate |= IRQS_SYSFS; } } static void irq_sysfs_del(struct irq_desc *desc) { /* - * If irq_sysfs_init() has not yet been invoked (early boot), then - * irq_kobj_base is NULL and the descriptor was never added. - * kobject_del() complains about a object with no parent, so make - * it conditional. + * Only invoke kobject_del() when kobject_add() was successfully + * invoked for the descriptor. This covers both early boot, where + * sysfs is not initialized yet, and the case of a failed + * kobject_add() invocation. */ - if (irq_kobj_base) + if (desc->istate & IRQS_SYSFS) kobject_del(&desc->kobj); } |