* [PATCH] mm/mempolicy: Avoid use uninitialized preferred_node
[not found] <CAG_fn=VW5tfzT6cHJd+jF=t3WO6XS3HqSF_TYnKdycX_M_48vw@mail.gmail.com>
@ 2018-03-09 5:21 ` Yisheng Xie
2018-03-09 10:49 ` Alexander Potapenko
0 siblings, 1 reply; 3+ messages in thread
From: Yisheng Xie @ 2018-03-09 5:21 UTC (permalink / raw)
To: Alexander Potapenko, akpm
Cc: Linux Memory Management List, Dmitriy Vyukov, vbabka, mhocko,
Linux Kernel Mailing List
Alexander reported an use of uninitialized memory in __mpol_equal(),
which is caused by incorrect use of preferred_node.
When mempolicy in mode MPOL_PREFERRED with flags MPOL_F_LOCAL, it use
numa_node_id() instead of preferred_node, however, __mpol_equeue() use
preferred_node without check whether it is MPOL_F_LOCAL or not.
Reported-by: Alexander Potapenko <glider@google.com>
Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
---
mm/mempolicy.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/mm/mempolicy.c b/mm/mempolicy.c
index d879f1d..641545e 100644
--- a/mm/mempolicy.c
+++ b/mm/mempolicy.c
@@ -2124,6 +2124,9 @@ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b)
case MPOL_INTERLEAVE:
return !!nodes_equal(a->v.nodes, b->v.nodes);
case MPOL_PREFERRED:
+ /* a's flags is the same as b's */
+ if (a->flags & MPOL_F_LOCAL)
+ return true;
return a->v.preferred_node == b->v.preferred_node;
default:
BUG();
--
1.8.3.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] mm/mempolicy: Avoid use uninitialized preferred_node
2018-03-09 5:21 ` [PATCH] mm/mempolicy: Avoid use uninitialized preferred_node Yisheng Xie
@ 2018-03-09 10:49 ` Alexander Potapenko
2018-03-09 11:10 ` Yisheng Xie
0 siblings, 1 reply; 3+ messages in thread
From: Alexander Potapenko @ 2018-03-09 10:49 UTC (permalink / raw)
To: Yisheng Xie
Cc: Andrew Morton, Linux Memory Management List, Dmitriy Vyukov,
Vlastimil Babka, mhocko, Linux Kernel Mailing List
On Fri, Mar 9, 2018 at 6:21 AM, Yisheng Xie <xieyisheng1@huawei.com> wrote:
> Alexander reported an use of uninitialized memory in __mpol_equal(),
> which is caused by incorrect use of preferred_node.
>
> When mempolicy in mode MPOL_PREFERRED with flags MPOL_F_LOCAL, it use
> numa_node_id() instead of preferred_node, however, __mpol_equeue() use
> preferred_node without check whether it is MPOL_F_LOCAL or not.
>
> Reported-by: Alexander Potapenko <glider@google.com>
> Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
Tested-by: Alexander Potapenko <glider@google.com>
I confirm that the patch fixes the problem. Thanks for the quick turnaround!
Any idea which commit had introduced the bug in the first place?
> ---
> mm/mempolicy.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
> index d879f1d..641545e 100644
> --- a/mm/mempolicy.c
> +++ b/mm/mempolicy.c
> @@ -2124,6 +2124,9 @@ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b)
> case MPOL_INTERLEAVE:
> return !!nodes_equal(a->v.nodes, b->v.nodes);
> case MPOL_PREFERRED:
> + /* a's flags is the same as b's */
> + if (a->flags & MPOL_F_LOCAL)
> + return true;
> return a->v.preferred_node == b->v.preferred_node;
> default:
> BUG();
> --
> 1.8.3.1
>
--
Alexander Potapenko
Software Engineer
Google Germany GmbH
Erika-Mann-Straße, 33
80636 München
Geschäftsführer: Paul Manicle, Halimah DeLaine Prado
Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] mm/mempolicy: Avoid use uninitialized preferred_node
2018-03-09 10:49 ` Alexander Potapenko
@ 2018-03-09 11:10 ` Yisheng Xie
0 siblings, 0 replies; 3+ messages in thread
From: Yisheng Xie @ 2018-03-09 11:10 UTC (permalink / raw)
To: Alexander Potapenko
Cc: Andrew Morton, Linux Memory Management List, Dmitriy Vyukov,
Vlastimil Babka, mhocko, Linux Kernel Mailing List
Hi Alexander ,
On 2018/3/9 18:49, Alexander Potapenko wrote:
> On Fri, Mar 9, 2018 at 6:21 AM, Yisheng Xie <xieyisheng1@huawei.com> wrote:
>> Alexander reported an use of uninitialized memory in __mpol_equal(),
>> which is caused by incorrect use of preferred_node.
>>
>> When mempolicy in mode MPOL_PREFERRED with flags MPOL_F_LOCAL, it use
>> numa_node_id() instead of preferred_node, however, __mpol_equeue() use
>> preferred_node without check whether it is MPOL_F_LOCAL or not.
>>
>> Reported-by: Alexander Potapenko <glider@google.com>
>> Signed-off-by: Yisheng Xie <xieyisheng1@huawei.com>
> Tested-by: Alexander Potapenko <glider@google.com>
Thanks,
>
> I confirm that the patch fixes the problem. Thanks for the quick turnaround!
> Any idea which commit had introduced the bug in the first place?
IIUC, It is introduce by:
Fixes: fc36b8d3d819 (mempolicy: use MPOL_F_LOCAL to Indicate Preferred Local Policy)
Thanks
Yisheng
>> ---
>> mm/mempolicy.c | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/mm/mempolicy.c b/mm/mempolicy.c
>> index d879f1d..641545e 100644
>> --- a/mm/mempolicy.c
>> +++ b/mm/mempolicy.c
>> @@ -2124,6 +2124,9 @@ bool __mpol_equal(struct mempolicy *a, struct mempolicy *b)
>> case MPOL_INTERLEAVE:
>> return !!nodes_equal(a->v.nodes, b->v.nodes);
>> case MPOL_PREFERRED:
>> + /* a's flags is the same as b's */
>> + if (a->flags & MPOL_F_LOCAL)
>> + return true;
>> return a->v.preferred_node == b->v.preferred_node;
>> default:
>> BUG();
>> --
>> 1.8.3.1
>>
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-03-09 11:10 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <CAG_fn=VW5tfzT6cHJd+jF=t3WO6XS3HqSF_TYnKdycX_M_48vw@mail.gmail.com>
2018-03-09 5:21 ` [PATCH] mm/mempolicy: Avoid use uninitialized preferred_node Yisheng Xie
2018-03-09 10:49 ` Alexander Potapenko
2018-03-09 11:10 ` Yisheng Xie
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).