qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] exec-obsolete: fix length handling


From: Avi Kivity
Subject: Re: [Qemu-devel] [PATCH] exec-obsolete: fix length handling
Date: Sun, 29 Jan 2012 12:22:03 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:9.0) Gecko/20111222 Thunderbird/9.0

On 01/28/2012 08:13 PM, Blue Swirl wrote:
> Fix suspend/resume broken by off-by-one error in
> 59abb06198ee9471e29c970f294eae80c0b39be1.
>
> Adjust the loop so that it handles correctly the case
> start = (ram_addr_t)-TARGET_PAGE_SIZE, length = TARGET_PAGE_SIZE.

Is the ram_addr_t even legal? ram addresses start from 0 and end up
around ~(ram_addr_t)0 >> 1, max.


> Reported-by: Stefan Berger <address@hidden>
> Signed-off-by: Blue Swirl <address@hidden>
> ---
>  exec-obsolete.h |   10 ++++------
>  1 files changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/exec-obsolete.h b/exec-obsolete.h
> index 03cf35e..1bba970 100644
> --- a/exec-obsolete.h
> +++ b/exec-obsolete.h
> @@ -81,11 +81,10 @@ static inline void
> cpu_physical_memory_set_dirty_range(ram_addr_t start,
>                                                         int dirty_flags)
>  {
>      uint8_t *p;
> -    ram_addr_t addr, end;
> +    ram_addr_t cur;
>
> -    end = start + length;
>      p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS);
> -    for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) {
> +    for (cur = 0; cur < length; cur += TARGET_PAGE_SIZE) {
>          *p++ |= dirty_flags;
>      }
>  }
> @@ -96,12 +95,11 @@ static inline void
> cpu_physical_memory_mask_dirty_range(ram_addr_t start,
>  {
>      int mask;
>      uint8_t *p;
> -    ram_addr_t addr, end;
> +    ram_addr_t cur;
>
> -    end = start + length;
>      mask = ~dirty_flags;
>      p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS);
> -    for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) {
> +    for (cur = 0; cur < length; cur += TARGET_PAGE_SIZE) {
>          *p++ &= mask;
>      }
>  }


-- 
error compiling committee.c: too many arguments to function




reply via email to

[Prev in Thread] Current Thread [Next in Thread]