Message ID | 1327848467-13137-1-git-send-email-avi@redhat.com |
---|---|
State | New |
Headers | show |
Thanks, applied. On Sun, Jan 29, 2012 at 14:47, Avi Kivity <avi@redhat.com> wrote: > Reported-by: Stefan Berger <stefanb@linux.vnet.ibm.com> > Signed-off-by: Avi Kivity <avi@redhat.com> > --- > exec-obsolete.h | 10 ++++++---- > 1 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/exec-obsolete.h b/exec-obsolete.h > index 03cf35e..d2749d3 100644 > --- a/exec-obsolete.h > +++ b/exec-obsolete.h > @@ -83,9 +83,10 @@ static inline void cpu_physical_memory_set_dirty_range(ram_addr_t start, > uint8_t *p; > ram_addr_t addr, end; > > - end = start + length; > + end = TARGET_PAGE_ALIGN(start + length); > + start &= TARGET_PAGE_MASK; > p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS); > - for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) { > + for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { > *p++ |= dirty_flags; > } > } > @@ -98,10 +99,11 @@ static inline void cpu_physical_memory_mask_dirty_range(ram_addr_t start, > uint8_t *p; > ram_addr_t addr, end; > > - end = start + length; > + end = TARGET_PAGE_ALIGN(start + length); > + start &= TARGET_PAGE_MASK; > mask = ~dirty_flags; > p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS); > - for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) { > + for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { > *p++ &= mask; > } > } > -- > 1.7.7.1 >
diff --git a/exec-obsolete.h b/exec-obsolete.h index 03cf35e..d2749d3 100644 --- a/exec-obsolete.h +++ b/exec-obsolete.h @@ -83,9 +83,10 @@ static inline void cpu_physical_memory_set_dirty_range(ram_addr_t start, uint8_t *p; ram_addr_t addr, end; - end = start + length; + end = TARGET_PAGE_ALIGN(start + length); + start &= TARGET_PAGE_MASK; p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS); - for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) { + for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { *p++ |= dirty_flags; } } @@ -98,10 +99,11 @@ static inline void cpu_physical_memory_mask_dirty_range(ram_addr_t start, uint8_t *p; ram_addr_t addr, end; - end = start + length; + end = TARGET_PAGE_ALIGN(start + length); + start &= TARGET_PAGE_MASK; mask = ~dirty_flags; p = ram_list.phys_dirty + (start >> TARGET_PAGE_BITS); - for (addr = start; addr <= end; addr += TARGET_PAGE_SIZE) { + for (addr = start; addr < end; addr += TARGET_PAGE_SIZE) { *p++ &= mask; } }
Reported-by: Stefan Berger <stefanb@linux.vnet.ibm.com> Signed-off-by: Avi Kivity <avi@redhat.com> --- exec-obsolete.h | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)