Re: 4.1.28: memory leak introduced by "mm/swap.c: flush lru pvecs on compound page arrival"

From: Jens Rottmann
Date: Sat Jul 16 2016 - 10:10:36 EST

Hi again,

took lack of response to express reluctance examining vendor kernels. Therefore reproduced and can confirm memory leak on 4.1.28 vanilla x86. Identical symptoms.

From: Jens Rottmann <Jens.Rottmann@xxxxxxxxxxxxxx>
Sent: Friday, July 15, 2016 21:27
To: Lukasz Odzioba; Sasha Levin
Cc: stable@xxxxxxxxxxxxxxx; Michal Hocko; linux-mm@xxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
Subject: 4.1.28: memory leak introduced by "mm/swap.c: flush lru pvecs on compound page arrival"


4.1.y stable commit c5ad33184354260be6d05de57e46a5498692f6d6 (Upstream
commit 8f182270dfec432e93fae14f9208a6b9af01009f) "mm/swap.c: flush lru
pvecs on compound page arrival" in 4.1.28 introduces a memory leak.

Simply running

while sleep 0.1; do clear; free; done

shows mem continuously going down, eventually system panics with no
killable processes left. Replacing "sleep" with "unxz -t some.xz" brings
system down within minutes.

Kmemleak did not report anything. Bisect ended at named commit, and
reverting only this commit is indeed sufficient to fix the leak. Swap
partition on/off makes no difference.

My set-up:
i.MX6 (ARM Cortex-A9) dual-core, 2 GB RAM. Kernel sources are from i.e. heavily modified by Freescale for i.MX SoCs, stable patches up to 4.1.28 manually added.

I tried to reproduce with vanilla 4.1.28, but that wouldn't boot at all
on my i.MX hardware, hangs immediately after "Starting kernel", sorry.
However there is not a single difference between Freescale and vanilla
in the whole mm/ subdirectory, so I don't think it's i.MX-specific. I
didn't cross-check with an x86 system (yet).