* [PATCH v2] ipc/sem: do not sleep with a spin lock held
[not found] <63840bf3-2199-3240-bdfa-abb55518b5f9@colorfullife.com>
@ 2021-12-23 2:37 ` cgel.zte
2021-12-23 2:56 ` cgel.zte
2021-12-23 3:12 ` cgel.zte
2 siblings, 0 replies; 8+ messages in thread
From: cgel.zte @ 2021-12-23 2:37 UTC (permalink / raw)
To: manfred
Cc: stable, akpm, arnd, cgel.zte, chi.minghao, dbueso, linux-kernel,
rdunlap, shakeelb, unixbhaskar, vvs, zealci
From: Minghao Chi <chi.minghao@zte.com.cn>
We can't call kvfree() with a spin lock held, so defer it.
Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
allocation")
Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
---
changelog since v2:
+ Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
+ allocation")
ipc/sem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ipc/sem.c b/ipc/sem.c
index 6693daf4fe11..0dbdb98fdf2d 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1964,6 +1964,7 @@ static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid)
*/
un = lookup_undo(ulp, semid);
if (un) {
+ spin_unlock(&ulp->lock);
kvfree(new);
goto success;
}
@@ -1976,9 +1977,8 @@ static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid)
ipc_assert_locked_object(&sma->sem_perm);
list_add(&new->list_id, &sma->list_id);
un = new;
-
-success:
spin_unlock(&ulp->lock);
+success:
sem_unlock(sma, -1);
out:
return un;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2] ipc/sem: do not sleep with a spin lock held
[not found] <63840bf3-2199-3240-bdfa-abb55518b5f9@colorfullife.com>
2021-12-23 2:37 ` [PATCH v2] ipc/sem: do not sleep with a spin lock held cgel.zte
@ 2021-12-23 2:56 ` cgel.zte
2021-12-23 3:12 ` cgel.zte
2 siblings, 0 replies; 8+ messages in thread
From: cgel.zte @ 2021-12-23 2:56 UTC (permalink / raw)
To: manfred
Cc: stable, akpm, arnd, cgel.zte, chi.minghao, dbueso, linux-kernel,
rdunlap, shakeelb, unixbhaskar, vvs, zealci
From: Minghao Chi <chi.minghao@zte.com.cn>
We can't call kvfree() with a spin lock held, so defer it.
Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
allocation")
Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
---
changelog since v2:
+ Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
+ allocation")
ipc/sem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ipc/sem.c b/ipc/sem.c
index 6693daf4fe11..0dbdb98fdf2d 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1964,6 +1964,7 @@ static struct sem_undo *find_alloc_undo(struct
ipc_namespace *ns, int semid)
*/
un = lookup_undo(ulp, semid);
if (un) {
+ spin_unlock(&ulp->lock);
kvfree(new);
goto success;
}
@@ -1976,9 +1977,8 @@ static struct sem_undo *find_alloc_undo(struct
ipc_namespace *ns, int semid)
ipc_assert_locked_object(&sma->sem_perm);
list_add(&new->list_id, &sma->list_id);
un = new;
-
-success:
spin_unlock(&ulp->lock);
+success:
sem_unlock(sma, -1);
out:
return un;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v2] ipc/sem: do not sleep with a spin lock held
[not found] <63840bf3-2199-3240-bdfa-abb55518b5f9@colorfullife.com>
2021-12-23 2:37 ` [PATCH v2] ipc/sem: do not sleep with a spin lock held cgel.zte
2021-12-23 2:56 ` cgel.zte
@ 2021-12-23 3:12 ` cgel.zte
2022-01-03 9:27 ` Jiri Slaby
2022-01-04 18:20 ` Shakeel Butt
2 siblings, 2 replies; 8+ messages in thread
From: cgel.zte @ 2021-12-23 3:12 UTC (permalink / raw)
To: manfred
Cc: stable, akpm, arnd, cgel.zte, chi.minghao, dbueso, linux-kernel,
rdunlap, shakeelb, unixbhaskar, vvs, zealci
From: Minghao Chi <chi.minghao@zte.com.cn>
We can't call kvfree() with a spin lock held, so defer it.
Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
allocation")
Reported-by: Zeal Robot <zealci@zte.com.cn>
Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
---
changelog since v2:
+ Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
+ allocation")
ipc/sem.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/ipc/sem.c b/ipc/sem.c
index 6693daf4fe11..0dbdb98fdf2d 100644
--- a/ipc/sem.c
+++ b/ipc/sem.c
@@ -1964,6 +1964,7 @@ static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid)
*/
un = lookup_undo(ulp, semid);
if (un) {
+ spin_unlock(&ulp->lock);
kvfree(new);
goto success;
}
@@ -1976,9 +1977,8 @@ static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid)
ipc_assert_locked_object(&sma->sem_perm);
list_add(&new->list_id, &sma->list_id);
un = new;
-
-success:
spin_unlock(&ulp->lock);
+success:
sem_unlock(sma, -1);
out:
return un;
--
2.25.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ipc/sem: do not sleep with a spin lock held
2021-12-23 3:12 ` cgel.zte
@ 2022-01-03 9:27 ` Jiri Slaby
2022-01-03 17:17 ` Manfred Spraul
2022-01-04 18:20 ` Shakeel Butt
1 sibling, 1 reply; 8+ messages in thread
From: Jiri Slaby @ 2022-01-03 9:27 UTC (permalink / raw)
To: cgel.zte, manfred
Cc: stable, akpm, arnd, chi.minghao, dbueso, linux-kernel, rdunlap,
shakeelb, unixbhaskar, vvs, zealci
On 23. 12. 21, 4:12, cgel.zte@gmail.com wrote:
> From: Minghao Chi <chi.minghao@zte.com.cn>
>
> We can't call kvfree() with a spin lock held, so defer it.
Sorry, defer what?
There are attempts to fix kvfree instead, not sure which of these
approaches (fix kvfree or its callers) won in the end?
> Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
> allocation")
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
> ---
> changelog since v2:
> + Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
> + allocation")
> ipc/sem.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/ipc/sem.c b/ipc/sem.c
> index 6693daf4fe11..0dbdb98fdf2d 100644
> --- a/ipc/sem.c
> +++ b/ipc/sem.c
> @@ -1964,6 +1964,7 @@ static struct sem_undo *find_alloc_undo(struct ipc_namespace *ns, int semid)
> */
> un = lookup_undo(ulp, semid);
> if (un) {
> + spin_unlock(&ulp->lock);
> kvfree(new);
> goto success;
> }
--
js
suse labs
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ipc/sem: do not sleep with a spin lock held
2022-01-03 9:27 ` Jiri Slaby
@ 2022-01-03 17:17 ` Manfred Spraul
2022-01-04 18:20 ` Shakeel Butt
0 siblings, 1 reply; 8+ messages in thread
From: Manfred Spraul @ 2022-01-03 17:17 UTC (permalink / raw)
To: Jiri Slaby, cgel.zte, Andrew Morton
Cc: stable, arnd, chi.minghao, dbueso, linux-kernel, rdunlap,
shakeelb, unixbhaskar, vvs, zealci
Hi Jiri,
On 1/3/22 10:27, Jiri Slaby wrote:
> On 23. 12. 21, 4:12, cgel.zte@gmail.com wrote:
>> From: Minghao Chi <chi.minghao@zte.com.cn>
>>
>> We can't call kvfree() with a spin lock held, so defer it.
>
> Sorry, defer what?
>
First drop the spinlock, then call kvfree().
> There are attempts to fix kvfree instead, not sure which of these
> approaches (fix kvfree or its callers) won in the end?
>
Exactly. We have three options - but noone volunteered yet to decide:
- change ipc/sem.c [minimal change]
- change kvfree() to use vfree_atomic() [would also fix other changes
that did s/kfree/kvfree/]
- Modify the vma handling so that it becomes safe to call vfree() while
holding a spinlock. [perfect approach, but I'm concerned about side effects]
--
Manfred
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ipc/sem: do not sleep with a spin lock held
2022-01-03 17:17 ` Manfred Spraul
@ 2022-01-04 18:20 ` Shakeel Butt
0 siblings, 0 replies; 8+ messages in thread
From: Shakeel Butt @ 2022-01-04 18:20 UTC (permalink / raw)
To: Manfred Spraul
Cc: Jiri Slaby, cgel.zte, Andrew Morton, stable, Arnd Bergmann,
chi.minghao, Davidlohr Bueso, LKML, Randy Dunlap, unixbhaskar,
Vasily Averin, zealci
On Mon, Jan 3, 2022 at 9:18 AM Manfred Spraul <manfred@colorfullife.com> wrote:
>
> Hi Jiri,
>
> On 1/3/22 10:27, Jiri Slaby wrote:
> > On 23. 12. 21, 4:12, cgel.zte@gmail.com wrote:
> >> From: Minghao Chi <chi.minghao@zte.com.cn>
> >>
> >> We can't call kvfree() with a spin lock held, so defer it.
> >
> > Sorry, defer what?
> >
> First drop the spinlock, then call kvfree().
>
>
> > There are attempts to fix kvfree instead, not sure which of these
> > approaches (fix kvfree or its callers) won in the end?
> >
> Exactly. We have three options - but noone volunteered yet to decide:
>
> - change ipc/sem.c [minimal change]
Let's go with the minimal change for now which can easily be
cherry-picked for the stable tree. It seems other approaches need more
work/discussion.
>
> - change kvfree() to use vfree_atomic() [would also fix other changes
> that did s/kfree/kvfree/]
>
> - Modify the vma handling so that it becomes safe to call vfree() while
> holding a spinlock. [perfect approach, but I'm concerned about side effects]
>
>
> --
>
> Manfred
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ipc/sem: do not sleep with a spin lock held
2021-12-23 3:12 ` cgel.zte
2022-01-03 9:27 ` Jiri Slaby
@ 2022-01-04 18:20 ` Shakeel Butt
2022-01-04 20:18 ` Manfred Spraul
1 sibling, 1 reply; 8+ messages in thread
From: Shakeel Butt @ 2022-01-04 18:20 UTC (permalink / raw)
To: cgel.zte
Cc: Manfred Spraul, stable, Andrew Morton, Arnd Bergmann,
chi.minghao, Davidlohr Bueso, LKML, Randy Dunlap, unixbhaskar,
Vasily Averin, zealci
On Wed, Dec 22, 2021 at 7:12 PM <cgel.zte@gmail.com> wrote:
>
> From: Minghao Chi <chi.minghao@zte.com.cn>
>
> We can't call kvfree() with a spin lock held, so defer it.
> Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
> allocation")
>
> Reported-by: Zeal Robot <zealci@zte.com.cn>
> Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
Reviewed-by: Shakeel Butt <shakeelb@google.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v2] ipc/sem: do not sleep with a spin lock held
2022-01-04 18:20 ` Shakeel Butt
@ 2022-01-04 20:18 ` Manfred Spraul
0 siblings, 0 replies; 8+ messages in thread
From: Manfred Spraul @ 2022-01-04 20:18 UTC (permalink / raw)
To: Shakeel Butt, cgel.zte
Cc: stable, Andrew Morton, Arnd Bergmann, chi.minghao,
Davidlohr Bueso, LKML, Randy Dunlap, unixbhaskar, Vasily Averin,
zealci
On 1/4/22 19:20, Shakeel Butt wrote:
> On Wed, Dec 22, 2021 at 7:12 PM <cgel.zte@gmail.com> wrote:
>> From: Minghao Chi <chi.minghao@zte.com.cn>
>>
>> We can't call kvfree() with a spin lock held, so defer it.
>> Fixes: fc37a3b8b438 ("[PATCH] ipc sem: use kvmalloc for sem_undo
>> allocation")
>>
>> Reported-by: Zeal Robot <zealci@zte.com.cn>
>> Signed-off-by: Minghao Chi <chi.minghao@zte.com.cn>
> Reviewed-by: Shakeel Butt <shakeelb@google.com>
Reviewed-by: Manfred Spraul <manfred@colorfullife.com>
--
Manfred
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-01-04 20:19 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <63840bf3-2199-3240-bdfa-abb55518b5f9@colorfullife.com>
2021-12-23 2:37 ` [PATCH v2] ipc/sem: do not sleep with a spin lock held cgel.zte
2021-12-23 2:56 ` cgel.zte
2021-12-23 3:12 ` cgel.zte
2022-01-03 9:27 ` Jiri Slaby
2022-01-03 17:17 ` Manfred Spraul
2022-01-04 18:20 ` Shakeel Butt
2022-01-04 18:20 ` Shakeel Butt
2022-01-04 20:18 ` Manfred Spraul
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).