Hi Greg,
Kindly review and consider following mm/OOM upstream fixes for stable 4.9.y.
88ed365ea227 ("mm: don't steal highatomic pageblock") 04c8716f7b00 ("mm: try to exhaust highatomic reserve before the OOM") 29fac03bef72 ("mm: make unreserve highatomic functions reliable")
The original 4 patch series is archived here https://lkml.org/lkml/2016/10/12/77 for review. One of the patch from this series: 4855e4a7f29d ("mm: prevent double decrease of nr_reserved_highatomic") has already been picked up for 4.9.y and 4.4.y.
I ran into these fixes in one of the msm-4.9(android) trees. Cherry-picked and build tested on Linux 4.9.148 for ARCH=arm/arm64 defconfig.
Only the first patch from this series can be applied cleanly on v4.4.y, while others fail to apply cleanly due to OOM rework done in v4.7 release cycle, 0a0337e0d1d1 ("mm, oom: rework oom detection"). Plus I don't see this series backported to v4.4 in any of the msm-4.4(android) trees either. So I'm skipping it for v4.4.y.
Regards, Amit Pundir