From: Akihiko Odaki <akihiko.od...@daynix.com> Linux 6.4.7 does nothing when a value smaller than the initial brk is specified.
Fixes: 86f04735ac ("linux-user: Fix brk() to release pages") Reviewed-by: Helge Deller <del...@gmx.de> Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com> Message-Id: <20230802071754.14876-6-akihiko.od...@daynix.com> Signed-off-by: Richard Henderson <richard.hender...@linaro.org> --- linux-user/syscall.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index f64024273f..e1436a3962 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -820,14 +820,14 @@ abi_long do_brk(abi_ulong brk_val) /* brk pointers are always untagged */ - /* return old brk value if brk_val unchanged or zero */ - if (!brk_val || brk_val == target_brk) { + /* return old brk value if brk_val unchanged */ + if (brk_val == target_brk) { return target_brk; } /* do not allow to shrink below initial brk value */ if (brk_val < initial_target_brk) { - brk_val = initial_target_brk; + return target_brk; } new_brk = TARGET_PAGE_ALIGN(brk_val); -- 2.34.1