lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <ZuHJUN4GDw7vU3Vv@PC2K9PVX.TheFacebook.com>
Date: Wed, 11 Sep 2024 12:46:08 -0400
From: Gregory Price <gourry@...rry.net>
To: Ackerley Tng <ackerleytng@...gle.com>
Cc: tabba@...gle.com, quic_eberman@...cinc.com, roypat@...zon.co.uk,
	jgg@...dia.com, peterx@...hat.com, david@...hat.com,
	rientjes@...gle.com, fvdl@...gle.com, jthoughton@...gle.com,
	seanjc@...gle.com, pbonzini@...hat.com, zhiquan1.li@...el.com,
	fan.du@...el.com, jun.miao@...el.com, isaku.yamahata@...el.com,
	muchun.song@...ux.dev, mike.kravetz@...cle.com,
	erdemaktas@...gle.com, vannapurve@...gle.com, qperret@...gle.com,
	jhubbard@...dia.com, willy@...radead.org, shuah@...nel.org,
	brauner@...nel.org, bfoster@...hat.com, kent.overstreet@...ux.dev,
	pvorel@...e.cz, rppt@...nel.org, richard.weiyang@...il.com,
	anup@...infault.org, haibo1.xu@...el.com, ajones@...tanamicro.com,
	vkuznets@...hat.com, maciej.wieczor-retman@...el.com,
	pgonda@...gle.com, oliver.upton@...ux.dev,
	linux-kernel@...r.kernel.org, linux-mm@...ck.org,
	kvm@...r.kernel.org, linux-kselftest@...r.kernel.org,
	linux-fsdevel@...ck.org
Subject: Re: [RFC PATCH 04/39] mm: mempolicy: Refactor out
 policy_node_nodemask()

On Tue, Sep 10, 2024 at 11:43:35PM +0000, Ackerley Tng wrote:
> This was refactored out of huge_node().
> 
> huge_node()'s interpretation of vma for order assumes the
> hugetlb-specific storage of the hstate information in the
> inode. policy_node_nodemask() does not assume that, and can be used
> more generically.
> 
> This refactoring also enforces that nid default to the current node
> id, which was not previously enforced.
> 
> alloc_pages_mpol_noprof() is the last remaining direct user of
> policy_nodemask(). All its callers begin with nid being the current
> node id as well. More refactoring is required for to simplify that.
> 
> Signed-off-by: Ackerley Tng <ackerleytng@...gle.com>

Reviewed-by: Gregory Price <gourry@...rry.net>

> +/**
> + * policy_node_nodemask(@mpol, @gfp_flags, @ilx, @nodemask)
> + * @mpol: the memory policy to interpret. Reference must be taken.
> + * @gfp_flags: for this request
> + * @ilx: interleave index, for use only when MPOL_INTERLEAVE or
> + *       MPOL_WEIGHTED_INTERLEAVE
> + * @nodemask: (output) pointer to nodemask pointer for 'bind' and 'prefer-many'
> + *            policy
> + *
> + * Returns a nid suitable for a page allocation and a pointer. If the effective
> + * policy is 'bind' or 'prefer-many', returns a pointer to the mempolicy's
> + * @nodemask for filtering the zonelist.

Technically it's possible for nid to contain MAX_NUMNODES upon return
if weighted interleave is used and the nodemask is somehow invalid
(contains no nodes, including the local node). I would expect this to
be indicative of a larger problem (i.e. should functionally never happen).

Now that I'm looking at it, it's possible the weighted interleave path
should default to returning numa_node_id() if node == MAX_NUMNODES, which
would not require any changes to this patch.

> + */
> +int policy_node_nodemask(struct mempolicy *mpol, gfp_t gfp_flags,
> +			 pgoff_t ilx, nodemask_t **nodemask)
> +{
> +	int nid = numa_node_id();
> +	*nodemask = policy_nodemask(gfp_flags, mpol, ilx, &nid);
> +	return nid;
> +}
> +
>  #ifdef CONFIG_HUGETLBFS
>  /*
>   * huge_node(@vma, @addr, @gfp_flags, @mpol)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ