On 7/31/23 10:03, Akihiko Odaki wrote:
> 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")
> Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Reviewed-by: Helge Deller <deller@gmx.de>
Helge
> ---
> 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 ac429a185a..ebdc8c144c 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);