2019-09-28 15:20:55

by Ivan Safonov

[permalink] [raw]
Subject: [PATCH] genirq: replace notify with old_notify in irq_set_affinity_notifier()

This patch is for Linux 4.19 with a RT patch.

The second 'if' block does not check notify for NULL,
this leads to a system crash.

Most likely, there is a typo here.

With old_notify system works as expected.

Signed-off-by: Ivan Safonov <[email protected]>
---
kernel/irq/manage.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
index 290cd520dba1..79a7072dfb3c 100644
--- a/kernel/irq/manage.c
+++ b/kernel/irq/manage.c
@@ -412,7 +412,7 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify)

if (old_notify) {
#ifdef CONFIG_PREEMPT_RT_BASE
- kthread_cancel_work_sync(&notify->work);
+ kthread_cancel_work_sync(&old_notify->work);
#else
cancel_work_sync(&old_notify->work);
#endif
--
2.21.0


2019-09-28 21:26:37

by Steven Rostedt

[permalink] [raw]
Subject: Re: [PATCH] genirq: replace notify with old_notify in irq_set_affinity_notifier()

On Sat, 28 Sep 2019 18:19:20 +0300
Ivan Safonov <[email protected]> wrote:

> This patch is for Linux 4.19 with a RT patch.
>
> The second 'if' block does not check notify for NULL,
> this leads to a system crash.
>
> Most likely, there is a typo here.
>
> With old_notify system works as expected.
>
> Signed-off-by: Ivan Safonov <[email protected]>
> ---
> kernel/irq/manage.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c
> index 290cd520dba1..79a7072dfb3c 100644
> --- a/kernel/irq/manage.c
> +++ b/kernel/irq/manage.c
> @@ -412,7 +412,7 @@ irq_set_affinity_notifier(unsigned int irq, struct irq_affinity_notify *notify)
>
> if (old_notify) {
> #ifdef CONFIG_PREEMPT_RT_BASE
> - kthread_cancel_work_sync(&notify->work);
> + kthread_cancel_work_sync(&old_notify->work);

Thanks for the patch, but I currently have an RFC out that rewrites all
this code. I'm hoping to apply the RFC patch next week.

-- Steve


> #else
> cancel_work_sync(&old_notify->work);
> #endif