stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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).