* [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free
@ 2023-05-15 12:29 Esina Ekaterina
2023-05-15 12:33 ` Greg KH
2023-05-15 13:02 ` Greg Kroah-Hartman
0 siblings, 2 replies; 5+ messages in thread
From: Esina Ekaterina @ 2023-05-15 12:29 UTC (permalink / raw)
To: Rob Springer
Cc: Esina Ekaterina, Todd Poynor, Ben Chan, Richard Yeh,
Greg Kroah-Hartman, John Joseph, Simon Que, linux-staging,
linux-kernel, lvc-project
Add interrupt_data = NULL after kfree(interrupt_data) in
gasket_interrupt_init. It is needed to avoid double free
in gasket_interrupt_cleanup, there is a check for NULL
before kfree(interrupt_data).
Found by Astra Linux on behalf of Linux Verification Center
(linuxtesting.org) with SVACE.
Fixes: 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver")
Signed-off-by: Esina Ekaterina <eesina@astralinux.ru>
---
drivers/staging/gasket/gasket_interrupt.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/staging/gasket/gasket_interrupt.c b/drivers/staging/gasket/gasket_interrupt.c
index 864342acfd86..48b664b9134a 100644
--- a/drivers/staging/gasket/gasket_interrupt.c
+++ b/drivers/staging/gasket/gasket_interrupt.c
@@ -337,6 +337,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev)
sizeof(*interrupt_data->eventfd_ctxs), GFP_KERNEL);
if (!interrupt_data->eventfd_ctxs) {
kfree(interrupt_data);
+ interrupt_data = NULL;
return -ENOMEM;
}
@@ -346,6 +347,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev)
if (!interrupt_data->interrupt_counts) {
kfree(interrupt_data->eventfd_ctxs);
kfree(interrupt_data);
+ interrupt_data = NULL;
return -ENOMEM;
}
--
2.40.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free 2023-05-15 12:29 [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free Esina Ekaterina @ 2023-05-15 12:33 ` Greg KH 2023-05-15 13:02 ` Greg Kroah-Hartman 1 sibling, 0 replies; 5+ messages in thread From: Greg KH @ 2023-05-15 12:33 UTC (permalink / raw) To: Esina Ekaterina Cc: Rob Springer, Todd Poynor, Ben Chan, Richard Yeh, John Joseph, Simon Que, linux-staging, linux-kernel, lvc-project On Mon, May 15, 2023 at 03:29:50PM +0300, Esina Ekaterina wrote: > Add interrupt_data = NULL after kfree(interrupt_data) in > gasket_interrupt_init. It is needed to avoid double free > in gasket_interrupt_cleanup, there is a check for NULL > before kfree(interrupt_data). > > Found by Astra Linux on behalf of Linux Verification Center > (linuxtesting.org) with SVACE. > > Fixes: 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver") > Signed-off-by: Esina Ekaterina <eesina@astralinux.ru> > --- > drivers/staging/gasket/gasket_interrupt.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/staging/gasket/gasket_interrupt.c b/drivers/staging/gasket/gasket_interrupt.c > index 864342acfd86..48b664b9134a 100644 > --- a/drivers/staging/gasket/gasket_interrupt.c > +++ b/drivers/staging/gasket/gasket_interrupt.c > @@ -337,6 +337,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) > sizeof(*interrupt_data->eventfd_ctxs), GFP_KERNEL); > if (!interrupt_data->eventfd_ctxs) { > kfree(interrupt_data); > + interrupt_data = NULL; > return -ENOMEM; > } > > @@ -346,6 +347,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) > if (!interrupt_data->interrupt_counts) { > kfree(interrupt_data->eventfd_ctxs); > kfree(interrupt_data); > + interrupt_data = NULL; > return -ENOMEM; > } > > -- > 2.40.1 > <formletter> This is not the correct way to submit patches for inclusion in the stable kernel tree. Please read: https://www.kernel.org/doc/html/latest/process/stable-kernel-rules.html for how to do this properly. </formletter> ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free 2023-05-15 12:29 [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free Esina Ekaterina 2023-05-15 12:33 ` Greg KH @ 2023-05-15 13:02 ` Greg Kroah-Hartman 2023-05-16 10:44 ` Ekaterina Esina 1 sibling, 1 reply; 5+ messages in thread From: Greg Kroah-Hartman @ 2023-05-15 13:02 UTC (permalink / raw) To: Esina Ekaterina Cc: Rob Springer, Todd Poynor, Ben Chan, Richard Yeh, John Joseph, Simon Que, linux-staging, linux-kernel, lvc-project On Mon, May 15, 2023 at 03:29:50PM +0300, Esina Ekaterina wrote: > Add interrupt_data = NULL after kfree(interrupt_data) in > gasket_interrupt_init. It is needed to avoid double free > in gasket_interrupt_cleanup, there is a check for NULL > before kfree(interrupt_data). > > Found by Astra Linux on behalf of Linux Verification Center > (linuxtesting.org) with SVACE. > > Fixes: 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver") > Signed-off-by: Esina Ekaterina <eesina@astralinux.ru> > --- > drivers/staging/gasket/gasket_interrupt.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/staging/gasket/gasket_interrupt.c b/drivers/staging/gasket/gasket_interrupt.c > index 864342acfd86..48b664b9134a 100644 > --- a/drivers/staging/gasket/gasket_interrupt.c > +++ b/drivers/staging/gasket/gasket_interrupt.c > @@ -337,6 +337,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) > sizeof(*interrupt_data->eventfd_ctxs), GFP_KERNEL); > if (!interrupt_data->eventfd_ctxs) { > kfree(interrupt_data); > + interrupt_data = NULL; > return -ENOMEM; > } > > @@ -346,6 +347,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) > if (!interrupt_data->interrupt_counts) { > kfree(interrupt_data->eventfd_ctxs); > kfree(interrupt_data); > + interrupt_data = NULL; > return -ENOMEM; > } > > -- > 2.40.1 Also, your tool is wrong, this is not a correct fix at all. How did you test it? Why is your tool spitting out incorrect code? Why are you not verifying it's output before asking others to do so? Please don't do this anymore, it's wasteful on our side, right? Please take the time to review existing changes for problems, that would be more useful overall to everyone. thanks, greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free 2023-05-15 13:02 ` Greg Kroah-Hartman @ 2023-05-16 10:44 ` Ekaterina Esina 2023-05-16 11:02 ` Greg Kroah-Hartman 0 siblings, 1 reply; 5+ messages in thread From: Ekaterina Esina @ 2023-05-16 10:44 UTC (permalink / raw) To: Greg Kroah-Hartman Cc: Rob Springer, Todd Poynor, Ben Chan, Richard Yeh, John Joseph, Simon Que, linux-staging, linux-kernel, lvc-project On 15.05.2023 16:02, Greg Kroah-Hartman wrote: > On Mon, May 15, 2023 at 03:29:50PM +0300, Esina Ekaterina wrote: >> Add interrupt_data = NULL after kfree(interrupt_data) in >> gasket_interrupt_init. It is needed to avoid double free >> in gasket_interrupt_cleanup, there is a check for NULL >> before kfree(interrupt_data). >> >> Found by Astra Linux on behalf of Linux Verification Center >> (linuxtesting.org) with SVACE. >> >> Fixes: 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver") >> Signed-off-by: Esina Ekaterina <eesina@astralinux.ru> >> --- >> drivers/staging/gasket/gasket_interrupt.c | 2 ++ >> 1 file changed, 2 insertions(+) >> >> diff --git a/drivers/staging/gasket/gasket_interrupt.c b/drivers/staging/gasket/gasket_interrupt.c >> index 864342acfd86..48b664b9134a 100644 >> --- a/drivers/staging/gasket/gasket_interrupt.c >> +++ b/drivers/staging/gasket/gasket_interrupt.c >> @@ -337,6 +337,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) >> sizeof(*interrupt_data->eventfd_ctxs), GFP_KERNEL); >> if (!interrupt_data->eventfd_ctxs) { >> kfree(interrupt_data); >> + interrupt_data = NULL; >> return -ENOMEM; >> } >> >> @@ -346,6 +347,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) >> if (!interrupt_data->interrupt_counts) { >> kfree(interrupt_data->eventfd_ctxs); >> kfree(interrupt_data); >> + interrupt_data = NULL; >> return -ENOMEM; >> } >> >> -- >> 2.40.1 > > Also, your tool is wrong, this is not a correct fix at all. > > How did you test it? Why is your tool spitting out incorrect code? Why > are you not verifying it's output before asking others to do so? > > Please don't do this anymore, it's wasteful on our side, right? Please > take the time to review existing changes for problems, that would be > more useful overall to everyone. > > thanks, > > greg k-h I apologize, there is a mistake. It should've been gasket_dev->interrupt_data = NULL istead of interrupt_data = NULL Best regards, Ekaterina Esina ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free 2023-05-16 10:44 ` Ekaterina Esina @ 2023-05-16 11:02 ` Greg Kroah-Hartman 0 siblings, 0 replies; 5+ messages in thread From: Greg Kroah-Hartman @ 2023-05-16 11:02 UTC (permalink / raw) To: Ekaterina Esina Cc: Rob Springer, Todd Poynor, Ben Chan, Richard Yeh, John Joseph, Simon Que, linux-staging, linux-kernel, lvc-project On Tue, May 16, 2023 at 01:44:06PM +0300, Ekaterina Esina wrote: > > > On 15.05.2023 16:02, Greg Kroah-Hartman wrote: > > On Mon, May 15, 2023 at 03:29:50PM +0300, Esina Ekaterina wrote: > > > Add interrupt_data = NULL after kfree(interrupt_data) in > > > gasket_interrupt_init. It is needed to avoid double free > > > in gasket_interrupt_cleanup, there is a check for NULL > > > before kfree(interrupt_data). > > > > > > Found by Astra Linux on behalf of Linux Verification Center > > > (linuxtesting.org) with SVACE. > > > > > > Fixes: 9a69f5087ccc ("drivers/staging: Gasket driver framework + Apex driver") > > > Signed-off-by: Esina Ekaterina <eesina@astralinux.ru> > > > --- > > > drivers/staging/gasket/gasket_interrupt.c | 2 ++ > > > 1 file changed, 2 insertions(+) > > > > > > diff --git a/drivers/staging/gasket/gasket_interrupt.c b/drivers/staging/gasket/gasket_interrupt.c > > > index 864342acfd86..48b664b9134a 100644 > > > --- a/drivers/staging/gasket/gasket_interrupt.c > > > +++ b/drivers/staging/gasket/gasket_interrupt.c > > > @@ -337,6 +337,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) > > > sizeof(*interrupt_data->eventfd_ctxs), GFP_KERNEL); > > > if (!interrupt_data->eventfd_ctxs) { > > > kfree(interrupt_data); > > > + interrupt_data = NULL; > > > return -ENOMEM; > > > } > > > @@ -346,6 +347,7 @@ int gasket_interrupt_init(struct gasket_dev *gasket_dev) > > > if (!interrupt_data->interrupt_counts) { > > > kfree(interrupt_data->eventfd_ctxs); > > > kfree(interrupt_data); > > > + interrupt_data = NULL; > > > return -ENOMEM; > > > } > > > -- > > > 2.40.1 > > > > Also, your tool is wrong, this is not a correct fix at all. > > > > How did you test it? Why is your tool spitting out incorrect code? Why > > are you not verifying it's output before asking others to do so? > > > > Please don't do this anymore, it's wasteful on our side, right? Please > > take the time to review existing changes for problems, that would be > > more useful overall to everyone. > > > > thanks, > > > > greg k-h > > I apologize, there is a mistake. It should've been > gasket_dev->interrupt_data = NULL istead of interrupt_data = NULL Which implies that your tools are broken, right? Please do better testing before sending anymore patches. greg k-h ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-05-16 11:02 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-05-15 12:29 [PATCH 5.10] staging: gasket: interrupt: Clean interrupt_data after free Esina Ekaterina 2023-05-15 12:33 ` Greg KH 2023-05-15 13:02 ` Greg Kroah-Hartman 2023-05-16 10:44 ` Ekaterina Esina 2023-05-16 11:02 ` Greg Kroah-Hartman
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox