On Fri, Nov 09, 2018 at 09:43:53AM +0100, Michal Hocko wrote: > On Thu 08-11-18 23:09:23, Kyungtae Kim wrote: > > We report a bug in v4.19-rc2 (4.20-rc1 as well, I guess): > > > > kernel config: https://kt0755.github.io/etc/config_v2-4.19 > > repro: https://kt0755.github.io/etc/repro.c4074.c > > > > In the middle of page request, this arose because order is too large to handle > > (mm/page_alloc.c:3119). It actually comes from that order is > > controllable by user input > > via raw_cmd_ioctl without its sanity check, thereby causing memory problem. > > To stop it, we can use like MAX_ORDER for bounds check before using it. > > Yes, we do only check the max order in the slow path. We have already > discussed something similar with Konstantin [1][2]. Basically kvmalloc > for a large size might get to the page allocator with an out of bound > order and warn during direct reclaim. > > I am wondering whether really want to check for the order in the fast > path instead. I have hard time to imagine this could cause a measurable > impact. > > The full patch is below > > [1] http://lkml.kernel.org/r/154109387197.925352.10499549042420271600.stgit@buzz > [2] http://lkml.kernel.org/r/154106356066.887821.4649178319705436373.stgit@buzz > I'm ok with such changes under the policy "there is no point being fast if we're broken". It's unfortunate and I know the original microoptimisation was mine but if the fast-path check ends up being a problem then I/we go back to finding ways of making the page allocator faster from a fundamental algorithmic point of view and not a microoptimisation approach. There is potential fruit there, just none that is low-hanging. -- Mel Gorman SUSE Labs