diff mbox series

[RT] locking/rwsem-rt: Remove might_sleep() in __up_read()

Message ID 20210406221952.50399-1-ahalaney@redhat.com
State New
Headers show
Series [RT] locking/rwsem-rt: Remove might_sleep() in __up_read() | expand

Commit Message

Andrew Halaney April 6, 2021, 10:19 p.m. UTC
There's no chance of sleeping here, the reader is giving up the
lock and possibly waking up the writer who is waiting on it.

Reported-by: Chunyu Hu <chuhu@redhat.com>
Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
---
Hello,

I ran into a warning caused by this, and I think the warning is
incorrect. Please let me know if I'm wrong!
I'm working off of linux-5.12.y-rt, but this applies cleanly to older
stable branches as well.

Thanks,
Andrew

 kernel/locking/rwsem-rt.c | 1 -
 1 file changed, 1 deletion(-)

Comments

Andrew Halaney April 26, 2021, 4:42 p.m. UTC | #1
On Tue, Apr 06, 2021 at 05:19:52PM -0500, Andrew Halaney wrote:
> There's no chance of sleeping here, the reader is giving up the

> lock and possibly waking up the writer who is waiting on it.

> 

> Reported-by: Chunyu Hu <chuhu@redhat.com>

> Signed-off-by: Andrew Halaney <ahalaney@redhat.com>

> ---

> Hello,

> 

> I ran into a warning caused by this, and I think the warning is

> incorrect. Please let me know if I'm wrong!

> I'm working off of linux-5.12.y-rt, but this applies cleanly to older

> stable branches as well.

> 

> Thanks,

> Andrew

> 

>  kernel/locking/rwsem-rt.c | 1 -

>  1 file changed, 1 deletion(-)

> 

> diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c

> index 274172d5bb3a..b61edc4dcb73 100644

> --- a/kernel/locking/rwsem-rt.c

> +++ b/kernel/locking/rwsem-rt.c

> @@ -198,7 +198,6 @@ void __up_read(struct rw_semaphore *sem)

>  	if (!atomic_dec_and_test(&sem->readers))

>  		return;

>  

> -	might_sleep();

>  	raw_spin_lock_irq(&m->wait_lock);

>  	/*

>  	 * Wake the writer, i.e. the rtmutex owner. It might release the

> -- 

> 2.30.2

> 


Just a gentle follow up, any feedback?

Thanks,
Andrew
Thomas Gleixner April 26, 2021, 6:16 p.m. UTC | #2
On Mon, Apr 26 2021 at 11:42, Andrew Halaney wrote:
> On Tue, Apr 06, 2021 at 05:19:52PM -0500, Andrew Halaney wrote:

>> There's no chance of sleeping here, the reader is giving up the

>> lock and possibly waking up the writer who is waiting on it.

>> 

>> Reported-by: Chunyu Hu <chuhu@redhat.com>

>> Signed-off-by: Andrew Halaney <ahalaney@redhat.com>

>> ---

>> Hello,

>> 

>> I ran into a warning caused by this, and I think the warning is

>> incorrect. Please let me know if I'm wrong!

>> I'm working off of linux-5.12.y-rt, but this applies cleanly to older

>> stable branches as well.

>> 

>> Thanks,

>> Andrew

>> 

>>  kernel/locking/rwsem-rt.c | 1 -

>>  1 file changed, 1 deletion(-)

>> 

>> diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c

>> index 274172d5bb3a..b61edc4dcb73 100644

>> --- a/kernel/locking/rwsem-rt.c

>> +++ b/kernel/locking/rwsem-rt.c

>> @@ -198,7 +198,6 @@ void __up_read(struct rw_semaphore *sem)

>>  	if (!atomic_dec_and_test(&sem->readers))

>>  		return;

>>  

>> -	might_sleep();

>>  	raw_spin_lock_irq(&m->wait_lock);

>>  	/*

>>  	 * Wake the writer, i.e. the rtmutex owner. It might release the

>> -- 

>> 2.30.2

>

> Just a gentle follow up, any feedback?


Looks correct. Will go into the next rt-release.

Thanks,

        tglx
Andrew Halaney July 8, 2021, 7:51 p.m. UTC | #3
On Mon, Apr 26, 2021 at 08:16:34PM +0200, Thomas Gleixner wrote:
> On Mon, Apr 26 2021 at 11:42, Andrew Halaney wrote:

> > On Tue, Apr 06, 2021 at 05:19:52PM -0500, Andrew Halaney wrote:

> >> There's no chance of sleeping here, the reader is giving up the

> >> lock and possibly waking up the writer who is waiting on it.

> >> 

> >> Reported-by: Chunyu Hu <chuhu@redhat.com>

> >> Signed-off-by: Andrew Halaney <ahalaney@redhat.com>

> >> ---

> >> Hello,

> >> 

> >> I ran into a warning caused by this, and I think the warning is

> >> incorrect. Please let me know if I'm wrong!

> >> I'm working off of linux-5.12.y-rt, but this applies cleanly to older

> >> stable branches as well.

> >> 

> >> Thanks,

> >> Andrew

> >> 

> >>  kernel/locking/rwsem-rt.c | 1 -

> >>  1 file changed, 1 deletion(-)

> >> 

> >> diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c

> >> index 274172d5bb3a..b61edc4dcb73 100644

> >> --- a/kernel/locking/rwsem-rt.c

> >> +++ b/kernel/locking/rwsem-rt.c

> >> @@ -198,7 +198,6 @@ void __up_read(struct rw_semaphore *sem)

> >>  	if (!atomic_dec_and_test(&sem->readers))

> >>  		return;

> >>  

> >> -	might_sleep();

> >>  	raw_spin_lock_irq(&m->wait_lock);

> >>  	/*

> >>  	 * Wake the writer, i.e. the rtmutex owner. It might release the

> >> -- 

> >> 2.30.2

> >

> > Just a gentle follow up, any feedback?

> 

> Looks correct. Will go into the next rt-release.

> 

> Thanks,

> 

>         tglx

> 


Hi Thomas,

I see a new release (v5.13-rt1) was created, and with it rwsem
was overhauled entirely making this patch pointless for linux-rt-devel.

That being said, it's a little unclear to me how RT only patches
make their way to the maintained branches over in linux-stable-rt.
I think it should be applied to:
 v4.9-rt
 v4.14-rt
 v4.19-rt
 v5.4-rt
 v5.10-rt
to remove the incorrect warning, unless those branches plan to backport
the latest RT patchset with the new rwsem implementation. Is there a
proper way for me signal that?

Thanks,
Andrew
Thomas Gleixner July 9, 2021, 1:48 p.m. UTC | #4
Andrew,

On Thu, Jul 08 2021 at 14:51, Andrew Halaney wrote:

Cc+ stable-rt folks and leave context untrimmed.

> On Mon, Apr 26, 2021 at 08:16:34PM +0200, Thomas Gleixner wrote:

>> On Mon, Apr 26 2021 at 11:42, Andrew Halaney wrote:

>> > On Tue, Apr 06, 2021 at 05:19:52PM -0500, Andrew Halaney wrote:

>> >> There's no chance of sleeping here, the reader is giving up the

>> >> lock and possibly waking up the writer who is waiting on it.

>> >> 

>> >> Reported-by: Chunyu Hu <chuhu@redhat.com>

>> >> Signed-off-by: Andrew Halaney <ahalaney@redhat.com>

>> >> ---

>> >> Hello,

>> >> 

>> >> I ran into a warning caused by this, and I think the warning is

>> >> incorrect. Please let me know if I'm wrong!

>> >> I'm working off of linux-5.12.y-rt, but this applies cleanly to older

>> >> stable branches as well.

>> >>

>> >> Thanks,

>> >> Andrew

>> >> 

>> >>  kernel/locking/rwsem-rt.c | 1 -

>> >>  1 file changed, 1 deletion(-)

>> >> 

>> >> diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c

>> >> index 274172d5bb3a..b61edc4dcb73 100644

>> >> --- a/kernel/locking/rwsem-rt.c

>> >> +++ b/kernel/locking/rwsem-rt.c

>> >> @@ -198,7 +198,6 @@ void __up_read(struct rw_semaphore *sem)

>> >>  	if (!atomic_dec_and_test(&sem->readers))

>> >>  		return;

>> >>  

>> >> -	might_sleep();

>> >>  	raw_spin_lock_irq(&m->wait_lock);

>> >>  	/*

>> >>  	 * Wake the writer, i.e. the rtmutex owner. It might release the

>> >> -- 

>> >> 2.30.2

>> >

>> > Just a gentle follow up, any feedback?

>> 

>> Looks correct. Will go into the next rt-release.

>> 

>> Thanks,

>> 

>>         tglx

>> 

>

> Hi Thomas,

>

> I see a new release (v5.13-rt1) was created, and with it rwsem

> was overhauled entirely making this patch pointless for linux-rt-devel.

>

> That being said, it's a little unclear to me how RT only patches

> make their way to the maintained branches over in linux-stable-rt.

> I think it should be applied to:

>  v4.9-rt

>  v4.14-rt

>  v4.19-rt

>  v5.4-rt

>  v5.10-rt

> to remove the incorrect warning, unless those branches plan to backport

> the latest RT patchset with the new rwsem implementation. Is there a

> proper way for me signal that?


See Cc.

Thanks,

        tglx
diff mbox series

Patch

diff --git a/kernel/locking/rwsem-rt.c b/kernel/locking/rwsem-rt.c
index 274172d5bb3a..b61edc4dcb73 100644
--- a/kernel/locking/rwsem-rt.c
+++ b/kernel/locking/rwsem-rt.c
@@ -198,7 +198,6 @@  void __up_read(struct rw_semaphore *sem)
 	if (!atomic_dec_and_test(&sem->readers))
 		return;
 
-	might_sleep();
 	raw_spin_lock_irq(&m->wait_lock);
 	/*
 	 * Wake the writer, i.e. the rtmutex owner. It might release the