Since the start addr is already checked, to make sure the range is
aligned, checking the length is enough.
Signed-off-by: Wei Yang <richardw.yang@linux.intel.com>
---
exec.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/exec.c b/exec.c
index 50ea9c5aaa..8fa980baae 100644
--- a/exec.c
+++ b/exec.c
@@ -4067,10 +4067,9 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length)
if ((start + length) <= rb->used_length) {
bool need_madvise, need_fallocate;
- uint8_t *host_endaddr = host_startaddr + length;
- if ((uintptr_t)host_endaddr & (rb->page_size - 1)) {
- error_report("ram_block_discard_range: Unaligned end address: %p",
- host_endaddr);
+ if (length & (rb->page_size - 1)) {
+ error_report("ram_block_discard_range: Unaligned length: %lx",
+ length);
goto err;
}
--
2.17.1
* Wei Yang (richardw.yang@linux.intel.com) wrote: > Since the start addr is already checked, to make sure the range is > aligned, checking the length is enough. > > Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> > --- > exec.c | 7 +++---- > 1 file changed, 3 insertions(+), 4 deletions(-) > > diff --git a/exec.c b/exec.c > index 50ea9c5aaa..8fa980baae 100644 > --- a/exec.c > +++ b/exec.c > @@ -4067,10 +4067,9 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) > > if ((start + length) <= rb->used_length) { > bool need_madvise, need_fallocate; > - uint8_t *host_endaddr = host_startaddr + length; > - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { > - error_report("ram_block_discard_range: Unaligned end address: %p", > - host_endaddr); > + if (length & (rb->page_size - 1)) { > + error_report("ram_block_discard_range: Unaligned length: %lx", > + length); Yes, I *think* this is safe, we'll need to watch out for any warnings; David Gibson's balloon fix from February means that the balloon code should now warn in it's case. rth: Want to pick this up? Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > goto err; > } > > -- > 2.17.1 > -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On 19/07/19 19:54, Dr. David Alan Gilbert wrote: >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { >> - error_report("ram_block_discard_range: Unaligned end address: %p", >> - host_endaddr); >> + if (length & (rb->page_size - 1)) { >> + error_report("ram_block_discard_range: Unaligned length: %lx", >> + length); > Yes, I *think* this is safe, we'll need to watch out for any warnings; Do you mean compiler or QEMU warning? The patch is safe since there's an if ((uintptr_t)host_startaddr & (rb->page_size - 1)) { error_report("ram_block_discard_range: Unaligned start address: %p", host_startaddr); goto err; } just before this context. Paolo
* Paolo Bonzini (pbonzini@redhat.com) wrote: > On 19/07/19 19:54, Dr. David Alan Gilbert wrote: > >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { > >> - error_report("ram_block_discard_range: Unaligned end address: %p", > >> - host_endaddr); > >> + if (length & (rb->page_size - 1)) { > >> + error_report("ram_block_discard_range: Unaligned length: %lx", > >> + length); > > Yes, I *think* this is safe, we'll need to watch out for any warnings; > > Do you mean compiler or QEMU warning? No, I mean lots of these error reports being printed out in some common case. Dave The patch is safe since there's an > > if ((uintptr_t)host_startaddr & (rb->page_size - 1)) { > error_report("ram_block_discard_range: Unaligned start address: %p", > host_startaddr); > goto err; > } > > just before this context. > > Paolo -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On Fri, Jul 19, 2019 at 07:06:51PM +0100, Dr. David Alan Gilbert wrote: >* Paolo Bonzini (pbonzini@redhat.com) wrote: >> On 19/07/19 19:54, Dr. David Alan Gilbert wrote: >> >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { >> >> - error_report("ram_block_discard_range: Unaligned end address: %p", >> >> - host_endaddr); >> >> + if (length & (rb->page_size - 1)) { >> >> + error_report("ram_block_discard_range: Unaligned length: %lx", >> >> + length); >> > Yes, I *think* this is safe, we'll need to watch out for any warnings; >> >> Do you mean compiler or QEMU warning? > >No, I mean lots of these error reports being printed out in some common >case. > >Dave > > The patch is safe since there's an Dave, Any further comment for this patch? or What should I do next? >> >> if ((uintptr_t)host_startaddr & (rb->page_size - 1)) { >> error_report("ram_block_discard_range: Unaligned start address: %p", >> host_startaddr); >> goto err; >> } >> >> just before this context. >> >> Paolo >-- >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- Wei Yang Help you, Help me
On Fri, Jul 19, 2019 at 07:06:51PM +0100, Dr. David Alan Gilbert wrote: >* Paolo Bonzini (pbonzini@redhat.com) wrote: >> On 19/07/19 19:54, Dr. David Alan Gilbert wrote: >> >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { >> >> - error_report("ram_block_discard_range: Unaligned end address: %p", >> >> - host_endaddr); >> >> + if (length & (rb->page_size - 1)) { >> >> + error_report("ram_block_discard_range: Unaligned length: %lx", >> >> + length); >> > Yes, I *think* this is safe, we'll need to watch out for any warnings; >> >> Do you mean compiler or QEMU warning? > >No, I mean lots of these error reports being printed out in some common >case. > Hi, Dave Haven't see you for a period of time :-) >Dave > > The patch is safe since there's an >> >> if ((uintptr_t)host_startaddr & (rb->page_size - 1)) { >> error_report("ram_block_discard_range: Unaligned start address: %p", >> host_startaddr); >> goto err; >> } >> >> just before this context. >> >> Paolo >-- >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- Wei Yang Help you, Help me
* Wei Yang (richardw.yang@linux.intel.com) wrote: > On Fri, Jul 19, 2019 at 07:06:51PM +0100, Dr. David Alan Gilbert wrote: > >* Paolo Bonzini (pbonzini@redhat.com) wrote: > >> On 19/07/19 19:54, Dr. David Alan Gilbert wrote: > >> >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { > >> >> - error_report("ram_block_discard_range: Unaligned end address: %p", > >> >> - host_endaddr); > >> >> + if (length & (rb->page_size - 1)) { > >> >> + error_report("ram_block_discard_range: Unaligned length: %lx", > >> >> + length); > >> > Yes, I *think* this is safe, we'll need to watch out for any warnings; > >> > >> Do you mean compiler or QEMU warning? > > > >No, I mean lots of these error reports being printed out in some common > >case. > > > > Hi, Dave > > Haven't see you for a period of time :-) I'm here (although been busy with virtiofs) - but this patch is exec.c so I think it needs to be picked by Paolo or rth. Dave > >Dave > > > > The patch is safe since there's an > >> > >> if ((uintptr_t)host_startaddr & (rb->page_size - 1)) { > >> error_report("ram_block_discard_range: Unaligned start address: %p", > >> host_startaddr); > >> goto err; > >> } > >> > >> just before this context. > >> > >> Paolo > >-- > >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK > > -- > Wei Yang > Help you, Help me -- Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
On Tue, Oct 29, 2019 at 07:04:19AM +0000, Dr. David Alan Gilbert wrote: >* Wei Yang (richardw.yang@linux.intel.com) wrote: >> On Fri, Jul 19, 2019 at 07:06:51PM +0100, Dr. David Alan Gilbert wrote: >> >* Paolo Bonzini (pbonzini@redhat.com) wrote: >> >> On 19/07/19 19:54, Dr. David Alan Gilbert wrote: >> >> >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { >> >> >> - error_report("ram_block_discard_range: Unaligned end address: %p", >> >> >> - host_endaddr); >> >> >> + if (length & (rb->page_size - 1)) { >> >> >> + error_report("ram_block_discard_range: Unaligned length: %lx", >> >> >> + length); >> >> > Yes, I *think* this is safe, we'll need to watch out for any warnings; >> >> >> >> Do you mean compiler or QEMU warning? >> > >> >No, I mean lots of these error reports being printed out in some common >> >case. >> > >> >> Hi, Dave >> >> Haven't see you for a period of time :-) > >I'm here (although been busy with virtiofs) - but this patch is exec.c >so I think it needs to be picked by Paolo or rth. > Thanks Dave Paolo Do you feel comfortable with this? >Dave > >> >Dave >> > >> > The patch is safe since there's an >> >> >> >> if ((uintptr_t)host_startaddr & (rb->page_size - 1)) { >> >> error_report("ram_block_discard_range: Unaligned start address: %p", >> >> host_startaddr); >> >> goto err; >> >> } >> >> >> >> just before this context. >> >> >> >> Paolo >> >-- >> >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK >> >> -- >> Wei Yang >> Help you, Help me >-- >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- Wei Yang Help you, Help me
On 29/10/19 09:21, Wei Yang wrote: > Thanks Dave > > Paolo > > Do you feel comfortable with this? > Queued now, thanks. Paolo
On Fri, Jul 19, 2019 at 06:54:00PM +0100, Dr. David Alan Gilbert wrote: >* Wei Yang (richardw.yang@linux.intel.com) wrote: >> Since the start addr is already checked, to make sure the range is >> aligned, checking the length is enough. >> >> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> >> --- >> exec.c | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) >> >> diff --git a/exec.c b/exec.c >> index 50ea9c5aaa..8fa980baae 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -4067,10 +4067,9 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) >> >> if ((start + length) <= rb->used_length) { >> bool need_madvise, need_fallocate; >> - uint8_t *host_endaddr = host_startaddr + length; >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { >> - error_report("ram_block_discard_range: Unaligned end address: %p", >> - host_endaddr); >> + if (length & (rb->page_size - 1)) { >> + error_report("ram_block_discard_range: Unaligned length: %lx", >> + length); > >Yes, I *think* this is safe, we'll need to watch out for any warnings; >David Gibson's balloon fix from February means that the balloon code >should now warn in it's case. > >rth: Want to pick this up? > >Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > Any other task I should do for progress? >> goto err; >> } >> >> -- >> 2.17.1 >> >-- >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- Wei Yang Help you, Help me
On Fri, Jul 19, 2019 at 06:54:00PM +0100, Dr. David Alan Gilbert wrote: >* Wei Yang (richardw.yang@linux.intel.com) wrote: >> Since the start addr is already checked, to make sure the range is >> aligned, checking the length is enough. >> >> Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> >> --- >> exec.c | 7 +++---- >> 1 file changed, 3 insertions(+), 4 deletions(-) >> >> diff --git a/exec.c b/exec.c >> index 50ea9c5aaa..8fa980baae 100644 >> --- a/exec.c >> +++ b/exec.c >> @@ -4067,10 +4067,9 @@ int ram_block_discard_range(RAMBlock *rb, uint64_t start, size_t length) >> >> if ((start + length) <= rb->used_length) { >> bool need_madvise, need_fallocate; >> - uint8_t *host_endaddr = host_startaddr + length; >> - if ((uintptr_t)host_endaddr & (rb->page_size - 1)) { >> - error_report("ram_block_discard_range: Unaligned end address: %p", >> - host_endaddr); >> + if (length & (rb->page_size - 1)) { >> + error_report("ram_block_discard_range: Unaligned length: %lx", >> + length); > >Yes, I *think* this is safe, we'll need to watch out for any warnings; >David Gibson's balloon fix from February means that the balloon code >should now warn in it's case. > >rth: Want to pick this up? > >Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > Hi, David Do you like this one? >> goto err; >> } >> >> -- >> 2.17.1 >> >-- >Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK -- Wei Yang Help you, Help me
© 2016 - 2024 Red Hat, Inc.