Re: [RFC] nodemask: Consider MAX_NUMNODES inside node_isset

From: Michal Hocko
Date: Tue Jan 03 2017 - 04:17:57 EST


On Tue 03-01-17 14:37:09, Anshuman Khandual wrote:
> On 01/03/2017 02:14 PM, Michal Hocko wrote:
> > On Tue 03-01-17 13:57:53, Anshuman Khandual wrote:
> >> node_isset can give incorrect result if the node number is beyond the
> >> bitmask size (MAX_NUMNODES in this case) which is not checked inside
> >> test_bit. Hence check for the bit limits (MAX_NUMNODES) inside the
> >> node_isset function before calling test_bit.
> > Could you be more specific when such a thing might happen? Have you seen
> > any in-kernel user who would give such a bogus node?
>
> Have not seen this through any in-kernel use case. While rebasing the CDM
> zonelist rebuilding series,

Then fix this particular code path...

> I came across this through an error path when
> a bogus node value of 256 (MAX_NUMNODES on POWER) is received when we call
> first_node() on an empty nodemask (which itself seems weird as well).

Does calling first_node on an empty nodemask make any sense? If there is
a risk then I would expect nodes_empty() check before doing any mask
related operations.

--
Michal Hocko
SUSE Labs