diff mbox series

futex: fix dead code in attach_to_pi_owner()

Message ID 20210222125352.110124-1-nixiaoming@huawei.com
State Superseded
Headers show
Series futex: fix dead code in attach_to_pi_owner() | expand

Commit Message

Xiaoming Ni Feb. 22, 2021, 12:53 p.m. UTC
From: Thomas Gleixner <tglx@linutronix.de>

The handle_exit_race() function is defined in commit c158b461306df82
 ("futex: Cure exit race"), which never returns -EBUSY. This results
in a small piece of dead code in the attach_to_pi_owner() function:

	int ret = handle_exit_race(uaddr, uval, p); /* Never return -EBUSY */
	...
	if (ret == -EBUSY)
		*exiting = p; /* dead code */

The return value -EBUSY is added to handle_exit_race() in upsteam
commit ac31c7ff8624409 ("futex: Provide distinct return value when
owner is exiting"). This commit was incorporated into v4.9.255, before
the function handle_exit_race() was introduced, whitout Modify
handle_exit_race().

To fix dead code, extract the change of handle_exit_race() from
commit ac31c7ff8624409 ("futex: Provide distinct return value when owner
 is exiting"), re-incorporated.

Fixes: c158b461306df82 ("futex: Cure exit race")
Cc: stable@vger.kernel.org # 4.9.258-rc1
Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>
---
 kernel/futex.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Greg Kroah-Hartman Feb. 25, 2021, 8:25 a.m. UTC | #1
On Mon, Feb 22, 2021 at 08:53:52PM +0800, Xiaoming Ni wrote:
> From: Thomas Gleixner <tglx@linutronix.de>

> 

> The handle_exit_race() function is defined in commit c158b461306df82

>  ("futex: Cure exit race"), which never returns -EBUSY. This results

> in a small piece of dead code in the attach_to_pi_owner() function:

> 

> 	int ret = handle_exit_race(uaddr, uval, p); /* Never return -EBUSY */

> 	...

> 	if (ret == -EBUSY)

> 		*exiting = p; /* dead code */

> 

> The return value -EBUSY is added to handle_exit_race() in upsteam

> commit ac31c7ff8624409 ("futex: Provide distinct return value when

> owner is exiting"). This commit was incorporated into v4.9.255, before

> the function handle_exit_race() was introduced, whitout Modify

> handle_exit_race().

> 

> To fix dead code, extract the change of handle_exit_race() from

> commit ac31c7ff8624409 ("futex: Provide distinct return value when owner

>  is exiting"), re-incorporated.

> 

> Fixes: c158b461306df82 ("futex: Cure exit race")

> Cc: stable@vger.kernel.org # 4.9.258-rc1

> Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>

> ---

>  kernel/futex.c | 6 +++---

>  1 file changed, 3 insertions(+), 3 deletions(-)


What is the git commit id of this patch in Linus's tree?

Also, what kernel tree(s) is this supposed to go to?

thanks,

greg k-h
Xiaoming Ni Feb. 25, 2021, 8:56 a.m. UTC | #2
On 2021/2/25 16:25, Greg KH wrote:
> On Mon, Feb 22, 2021 at 08:53:52PM +0800, Xiaoming Ni wrote:

>> From: Thomas Gleixner <tglx@linutronix.de>

>>

>> The handle_exit_race() function is defined in commit c158b461306df82

>>   ("futex: Cure exit race"), which never returns -EBUSY. This results

>> in a small piece of dead code in the attach_to_pi_owner() function:

>>

>> 	int ret = handle_exit_race(uaddr, uval, p); /* Never return -EBUSY */

>> 	...

>> 	if (ret == -EBUSY)

>> 		*exiting = p; /* dead code */

>>

>> The return value -EBUSY is added to handle_exit_race() in upsteam

>> commit ac31c7ff8624409 ("futex: Provide distinct return value when

>> owner is exiting"). This commit was incorporated into v4.9.255, before

>> the function handle_exit_race() was introduced, whitout Modify

>> handle_exit_race().

>>

>> To fix dead code, extract the change of handle_exit_race() from

>> commit ac31c7ff8624409 ("futex: Provide distinct return value when owner

>>   is exiting"), re-incorporated.

mainline:
ac31c7ff8624 futex: Provide distinct return value when owner is exiting

>>

>> Fixes: c158b461306df82 ("futex: Cure exit race")


stable linux-4.9.y
9c3f39860367 futex: Cure exit race
c27f392040e2 futex: Provide distinct return value when owner is exiting

>> Cc: stable@vger.kernel.org # 4.9.258-rc1

>> Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>

>> ---

>>   kernel/futex.c | 6 +++---

>>   1 file changed, 3 insertions(+), 3 deletions(-)

> 

> What is the git commit id of this patch in Linus's tree?

> 

> Also, what kernel tree(s) is this supposed to go to?

> 

> thanks,

> 

> greg k-h

> .

> 

Sorry, the commit id c158b461306df82 in the patch does not exist in the 
linux-stable repository.
The commit ID is from linux-stable-rc.

I corrected the commit id in a subsequent email, and added a branch 
label. 
https://lore.kernel.org/lkml/20210224100923.51315-1-nixiaoming@huawei.com/

Sorry, I forgot to use "--in-reply-to=" when I sent the update patch.

This issue occurs only in the linux-4.9.y branch v4.9.258

Thanks
xiaoming Ni
Lee Jones Feb. 25, 2021, 9:31 a.m. UTC | #3
On Thu, 25 Feb 2021, Xiaoming Ni wrote:

> On 2021/2/25 16:25, Greg KH wrote:

> > On Mon, Feb 22, 2021 at 08:53:52PM +0800, Xiaoming Ni wrote:

> > > From: Thomas Gleixner <tglx@linutronix.de>

> > > 

> > > The handle_exit_race() function is defined in commit c158b461306df82

> > >   ("futex: Cure exit race"), which never returns -EBUSY. This results

> > > in a small piece of dead code in the attach_to_pi_owner() function:

> > > 

> > > 	int ret = handle_exit_race(uaddr, uval, p); /* Never return -EBUSY */

> > > 	...

> > > 	if (ret == -EBUSY)

> > > 		*exiting = p; /* dead code */

> > > 

> > > The return value -EBUSY is added to handle_exit_race() in upsteam

> > > commit ac31c7ff8624409 ("futex: Provide distinct return value when

> > > owner is exiting"). This commit was incorporated into v4.9.255, before

> > > the function handle_exit_race() was introduced, whitout Modify

> > > handle_exit_race().

> > > 

> > > To fix dead code, extract the change of handle_exit_race() from

> > > commit ac31c7ff8624409 ("futex: Provide distinct return value when owner

> > >   is exiting"), re-incorporated.

> mainline:

> ac31c7ff8624 futex: Provide distinct return value when owner is exiting

> 

> > > 

> > > Fixes: c158b461306df82 ("futex: Cure exit race")

> 

> stable linux-4.9.y

> 9c3f39860367 futex: Cure exit race

> c27f392040e2 futex: Provide distinct return value when owner is exiting

> 

> > > Cc: stable@vger.kernel.org # 4.9.258-rc1

> > > Signed-off-by: Xiaoming Ni <nixiaoming@huawei.com>

> > > ---

> > >   kernel/futex.c | 6 +++---

> > >   1 file changed, 3 insertions(+), 3 deletions(-)

> > 

> > What is the git commit id of this patch in Linus's tree?

> > 

> > Also, what kernel tree(s) is this supposed to go to?

> > 

> > thanks,

> > 

> > greg k-h

> > .

> > 

> Sorry, the commit id c158b461306df82 in the patch does not exist in the

> linux-stable repository.

> The commit ID is from linux-stable-rc.

> 

> I corrected the commit id in a subsequent email, and added a branch label.

> https://lore.kernel.org/lkml/20210224100923.51315-1-nixiaoming@huawei.com/


Replied to the follow-up.

> Sorry, I forgot to use "--in-reply-to=" when I sent the update patch.

> 

> This issue occurs only in the linux-4.9.y branch v4.9.258


-- 
Lee Jones [李琼斯]
Senior Technical Lead - Developer Services
Linaro.org │ Open source software for Arm SoCs
Follow Linaro: Facebook | Twitter | Blog
diff mbox series

Patch

diff --git a/kernel/futex.c b/kernel/futex.c
index b65dbb5d60bb..0fd785410150 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1207,11 +1207,11 @@  static int handle_exit_race(u32 __user *uaddr, u32 uval,
 	u32 uval2;
 
 	/*
-	 * If the futex exit state is not yet FUTEX_STATE_DEAD, wait
-	 * for it to finish.
+	 * If the futex exit state is not yet FUTEX_STATE_DEAD, tell the
+	 * caller that the alleged owner is busy.
 	 */
 	if (tsk && tsk->futex_state != FUTEX_STATE_DEAD)
-		return -EAGAIN;
+		return -EBUSY;
 
 	/*
 	 * Reread the user space value to handle the following situation: