Message ID | 1411016616-29879-1-git-send-email-jcmvbkbc@gmail.com |
---|---|
State | New |
Headers | show |
On 17 September 2014 22:03, Max Filippov <jcmvbkbc@gmail.com> wrote: > With commit 05068c0dfb5b 'exec.c: Relax restrictions on watchpoint length > and alignment' it's no longer possible to set 1-byte-long watchpoint > because of incorrect address range check. > Fix that by changing condition that checks for address wraparound. > > Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> > --- > exec.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/exec.c b/exec.c > index 2b24651..759055d 100644 > --- a/exec.c > +++ b/exec.c > @@ -595,7 +595,7 @@ int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, > CPUWatchpoint *wp; > > /* forbid ranges which are empty or run off the end of the address space */ > - if (len == 0 || (addr + len - 1) <= addr) { > + if (len == 0 || (addr + len - 1) < addr) { > error_report("tried to set invalid watchpoint at %" > VADDR_PRIx ", len=%" VADDR_PRIu, addr, len); > return -EINVAL; Reviewed-by: Peter Maydell <peter.maydell@linaro.org> and sorry for the breakage; I'll apply this to master in a bit. thanks -- PMM
On 18 September 2014 11:33, Peter Maydell <peter.maydell@linaro.org> wrote: > On 17 September 2014 22:03, Max Filippov <jcmvbkbc@gmail.com> wrote: >> With commit 05068c0dfb5b 'exec.c: Relax restrictions on watchpoint length >> and alignment' it's no longer possible to set 1-byte-long watchpoint >> because of incorrect address range check. >> Fix that by changing condition that checks for address wraparound. >> >> Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> >> --- >> exec.c | 2 +- >> 1 file changed, 1 insertion(+), 1 deletion(-) >> >> diff --git a/exec.c b/exec.c >> index 2b24651..759055d 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -595,7 +595,7 @@ int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, >> CPUWatchpoint *wp; >> >> /* forbid ranges which are empty or run off the end of the address space */ >> - if (len == 0 || (addr + len - 1) <= addr) { >> + if (len == 0 || (addr + len - 1) < addr) { >> error_report("tried to set invalid watchpoint at %" >> VADDR_PRIx ", len=%" VADDR_PRIu, addr, len); >> return -EINVAL; > > Reviewed-by: Peter Maydell <peter.maydell@linaro.org> > > and sorry for the breakage; I'll apply this to master in a bit. Applied to master; thanks. -- PMM
diff --git a/exec.c b/exec.c index 2b24651..759055d 100644 --- a/exec.c +++ b/exec.c @@ -595,7 +595,7 @@ int cpu_watchpoint_insert(CPUState *cpu, vaddr addr, vaddr len, CPUWatchpoint *wp; /* forbid ranges which are empty or run off the end of the address space */ - if (len == 0 || (addr + len - 1) <= addr) { + if (len == 0 || (addr + len - 1) < addr) { error_report("tried to set invalid watchpoint at %" VADDR_PRIx ", len=%" VADDR_PRIu, addr, len); return -EINVAL;
With commit 05068c0dfb5b 'exec.c: Relax restrictions on watchpoint length and alignment' it's no longer possible to set 1-byte-long watchpoint because of incorrect address range check. Fix that by changing condition that checks for address wraparound. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com> --- exec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)