Messages in this thread | | | Subject | Re: UBSAN: Undefined behaviour in mm/page_alloc.c | From | Tetsuo Handa <> | Date | Fri, 9 Nov 2018 18:41:53 +0900 |
| |
On 2018/11/09 17:43, Michal Hocko wrote: > @@ -4364,6 +4353,17 @@ __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, int preferred_nid, > gfp_t alloc_mask; /* The gfp_t that was actually used for allocation */ > struct alloc_context ac = { }; > > + /* > + * In the slowpath, we sanity check order to avoid ever trying to
Please keep the comment up to dated. I don't like that comments in OOM code is outdated.
> + * reclaim >= MAX_ORDER areas which will never succeed. Callers may > + * be using allocators in order of preference for an area that is > + * too large. > + */ > + if (order >= MAX_ORDER) {
Also, why not to add BUG_ON(gfp_mask & __GFP_NOFAIL); here?
> + WARN_ON_ONCE(!(gfp_mask & __GFP_NOWARN)); > + return NULL; > + } > + > gfp_mask &= gfp_allowed_mask; > alloc_mask = gfp_mask; > if (!prepare_alloc_pages(gfp_mask, order, preferred_nid, nodemask, &ac, &alloc_mask, &alloc_flags)) >
| |