diff mbox series

[4/5] linux-user: Do nothing if too small brk is specified

Message ID 20230731080317.112658-5-akihiko.odaki@daynix.com
State New
Headers show
Series linux-user: brk/mmap fixes | expand

Commit Message

Akihiko Odaki July 31, 2023, 8:03 a.m. UTC
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>
---
 linux-user/syscall.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Helge Deller July 31, 2023, 3:16 p.m. UTC | #1
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);
diff mbox series

Patch

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);