Subject: [RFC][PATCH] futex: Hide false positive about uninit var usage

In exit_robust_list, there was this warning shown:

kernel/futex.c: In function 'exit_robust_list':
kernel/futex.c:2492: warning: 'next_pi' may be used uninitialized in this function

Which is a false positive, since in the function, the only scenario
possible in which the var is read, is after a successful excecution of
fetch_robust_entry, which populates the variable.

So there's no real possibility of it being used uninitialized.

Signed-off-by: Sergio Aguirre <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Peter Zijlstra <[email protected]>
Cc: Darren Hart <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Namhyung Kim <[email protected]>
---
kernel/futex.c | 3 ++-
1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/kernel/futex.c b/kernel/futex.c
index 6c683b3..3646157 100644
--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -2489,7 +2489,8 @@ void exit_robust_list(struct task_struct *curr)
{
struct robust_list_head __user *head = curr->robust_list;
struct robust_list __user *entry, *next_entry, *pending;
- unsigned int limit = ROBUST_LIST_LIMIT, pi, next_pi, pip;
+ unsigned int limit = ROBUST_LIST_LIMIT, pi;
+ unsigned int uninitialized_var(next_pi), pip;
unsigned long futex_offset;
int rc;

--
1.7.0.4


2010-11-16 16:43:26

by Darren Hart

[permalink] [raw]
Subject: Re: [RFC][PATCH] futex: Hide false positive about uninit var usage

On 11/16/2010 08:32 AM, Sergio Aguirre wrote:
> In exit_robust_list, there was this warning shown:
>
> kernel/futex.c: In function 'exit_robust_list':
> kernel/futex.c:2492: warning: 'next_pi' may be used uninitialized in this function
>
> Which is a false positive, since in the function, the only scenario
> possible in which the var is read, is after a successful excecution of
> fetch_robust_entry, which populates the variable.
>
> So there's no real possibility of it being used uninitialized.

Hi Sergio,

You are correct. Thomas has recently pulled my fix for this into tip, it
should be queued for mainline already.

Thanks,

Darren Hart

>
> Signed-off-by: Sergio Aguirre<[email protected]>
> Cc: Thomas Gleixner<[email protected]>
> Cc: Peter Zijlstra<[email protected]>
> Cc: Darren Hart<[email protected]>
> Cc: Ingo Molnar<[email protected]>
> Cc: Namhyung Kim<[email protected]>
> ---
> kernel/futex.c | 3 ++-
> 1 files changed, 2 insertions(+), 1 deletions(-)
>
> diff --git a/kernel/futex.c b/kernel/futex.c
> index 6c683b3..3646157 100644
> --- a/kernel/futex.c
> +++ b/kernel/futex.c
> @@ -2489,7 +2489,8 @@ void exit_robust_list(struct task_struct *curr)
> {
> struct robust_list_head __user *head = curr->robust_list;
> struct robust_list __user *entry, *next_entry, *pending;
> - unsigned int limit = ROBUST_LIST_LIMIT, pi, next_pi, pip;
> + unsigned int limit = ROBUST_LIST_LIMIT, pi;
> + unsigned int uninitialized_var(next_pi), pip;
> unsigned long futex_offset;
> int rc;
>


--
Darren Hart
Yocto Linux Kernel

Subject: RE: [RFC][PATCH] futex: Hide false positive about uninit var usage

Hi Darren,

> -----Original Message-----
> From: Darren Hart [mailto:[email protected]]
> Sent: Tuesday, November 16, 2010 10:43 AM
> To: Aguirre, Sergio
> Cc: LKML; Thomas Gleixner; Peter Zijlstra; Ingo Molnar; Namhyung Kim
> Subject: Re: [RFC][PATCH] futex: Hide false positive about uninit var
> usage
>
> On 11/16/2010 08:32 AM, Sergio Aguirre wrote:
> > In exit_robust_list, there was this warning shown:
> >
> > kernel/futex.c: In function 'exit_robust_list':
> > kernel/futex.c:2492: warning: 'next_pi' may be used uninitialized in
> this function
> >
> > Which is a false positive, since in the function, the only scenario
> > possible in which the var is read, is after a successful excecution of
> > fetch_robust_entry, which populates the variable.
> >
> > So there's no real possibility of it being used uninitialized.
>
> Hi Sergio,
>
> You are correct. Thomas has recently pulled my fix for this into tip, it
> should be queued for mainline already.

Oh ok. Sorry, I didn't know that. Please ignore this patch then.

Regards,
Sergio

>
> Thanks,
>
> Darren Hart
>
> >
> > Signed-off-by: Sergio Aguirre<[email protected]>
> > Cc: Thomas Gleixner<[email protected]>
> > Cc: Peter Zijlstra<[email protected]>
> > Cc: Darren Hart<[email protected]>
> > Cc: Ingo Molnar<[email protected]>
> > Cc: Namhyung Kim<[email protected]>
> > ---
> > kernel/futex.c | 3 ++-
> > 1 files changed, 2 insertions(+), 1 deletions(-)
> >
> > diff --git a/kernel/futex.c b/kernel/futex.c
> > index 6c683b3..3646157 100644
> > --- a/kernel/futex.c
> > +++ b/kernel/futex.c
> > @@ -2489,7 +2489,8 @@ void exit_robust_list(struct task_struct *curr)
> > {
> > struct robust_list_head __user *head = curr->robust_list;
> > struct robust_list __user *entry, *next_entry, *pending;
> > - unsigned int limit = ROBUST_LIST_LIMIT, pi, next_pi, pip;
> > + unsigned int limit = ROBUST_LIST_LIMIT, pi;
> > + unsigned int uninitialized_var(next_pi), pip;
> > unsigned long futex_offset;
> > int rc;
> >
>
>
> --
> Darren Hart
> Yocto Linux Kernel

2010-11-16 17:31:26

by Darren Hart

[permalink] [raw]
Subject: Re: [RFC][PATCH] futex: Hide false positive about uninit var usage

On 11/16/2010 08:59 AM, Aguirre, Sergio wrote:
> Hi Darren,
>
>> -----Original Message-----
>> From: Darren Hart [mailto:[email protected]]
>> Sent: Tuesday, November 16, 2010 10:43 AM
>> To: Aguirre, Sergio
>> Cc: LKML; Thomas Gleixner; Peter Zijlstra; Ingo Molnar; Namhyung Kim
>> Subject: Re: [RFC][PATCH] futex: Hide false positive about uninit var
>> usage
>>
>> On 11/16/2010 08:32 AM, Sergio Aguirre wrote:
>>> In exit_robust_list, there was this warning shown:
>>>
>>> kernel/futex.c: In function 'exit_robust_list':
>>> kernel/futex.c:2492: warning: 'next_pi' may be used uninitialized in
>> this function
>>>
>>> Which is a false positive, since in the function, the only scenario
>>> possible in which the var is read, is after a successful excecution of
>>> fetch_robust_entry, which populates the variable.
>>>
>>> So there's no real possibility of it being used uninitialized.
>>
>> Hi Sergio,
>>
>> You are correct. Thomas has recently pulled my fix for this into tip, it
>> should be queued for mainline already.
>
> Oh ok. Sorry, I didn't know that. Please ignore this patch then.

No problem. In the future, if you run into problems with futexes, check
the linux-2.6-tip repository for fixes as that is where they are queued
up before going into mainline.

git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git
branch: core/futexes

Thanks,

Darren

>
> Regards,
> Sergio
>
>>
>> Thanks,
>>
>> Darren Hart
>>
>>>
>>> Signed-off-by: Sergio Aguirre<[email protected]>
>>> Cc: Thomas Gleixner<[email protected]>
>>> Cc: Peter Zijlstra<[email protected]>
>>> Cc: Darren Hart<[email protected]>
>>> Cc: Ingo Molnar<[email protected]>
>>> Cc: Namhyung Kim<[email protected]>
>>> ---
>>> kernel/futex.c | 3 ++-
>>> 1 files changed, 2 insertions(+), 1 deletions(-)
>>>
>>> diff --git a/kernel/futex.c b/kernel/futex.c
>>> index 6c683b3..3646157 100644
>>> --- a/kernel/futex.c
>>> +++ b/kernel/futex.c
>>> @@ -2489,7 +2489,8 @@ void exit_robust_list(struct task_struct *curr)
>>> {
>>> struct robust_list_head __user *head = curr->robust_list;
>>> struct robust_list __user *entry, *next_entry, *pending;
>>> - unsigned int limit = ROBUST_LIST_LIMIT, pi, next_pi, pip;
>>> + unsigned int limit = ROBUST_LIST_LIMIT, pi;
>>> + unsigned int uninitialized_var(next_pi), pip;
>>> unsigned long futex_offset;
>>> int rc;
>>>
>>
>>
>> --
>> Darren Hart
>> Yocto Linux Kernel


--
Darren Hart
Yocto Linux Kernel