|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] xen/xenoprof: avoid division by 0
At 17:05 +0000 on 14 Feb (1360861530), Jan Beulich wrote:
> >>> On 14.02.13 at 17:50, Tim Deegan <tim@xxxxxxx> wrote:
> > At 16:34 +0000 on 14 Feb (1360859678), Jan Beulich wrote:
> >> >>> On 14.02.13 at 17:16, Tim Deegan <tim@xxxxxxx> wrote:
> >> > --- a/xen/common/xenoprof.c Thu Feb 14 15:46:56 2013 +0000
> >> > +++ b/xen/common/xenoprof.c Thu Feb 14 16:16:17 2013 +0000
> >> > @@ -225,7 +225,7 @@ static int alloc_xenoprof_struct(
> >> > #endif
> >> >
> >> > /* reduce max_samples if necessary to limit pages allocated */
> >> > - max_bufsize = (MAX_OPROF_SHARED_PAGES * PAGE_SIZE) / nvcpu;
> >> > + max_bufsize = (MAX_OPROF_SHARED_PAGES * PAGE_SIZE) / (nvcpu ?: 1);
> >> > max_max_samples = ( (max_bufsize - bufsize) / i ) + 1;
> >> > if ( (unsigned)max_samples > max_max_samples )
> >> > max_samples = max_max_samples;
> >>
> >> I think the function would better return an error in that case. After
> >> all there's little point in setting up anything when we for sure don't
> >> know how many vCPU-s a domain is going to have.
> >
> > Grand so:
> >
> > # HG changeset patch
> > # Parent 5a84cc531072378e6e5ff89b4c0e9a35000dc56f
> > xen/xenoprof: avoid division by 0.
> >
> > Signed-off-by: Tim Deegan <tim@xxxxxxx>
> >
> > diff -r 5a84cc531072 xen/common/xenoprof.c
> > --- a/xen/common/xenoprof.c Thu Feb 14 15:46:56 2013 +0000
> > +++ b/xen/common/xenoprof.c Thu Feb 14 16:48:49 2013 +0000
> > @@ -213,6 +213,9 @@ static int alloc_xenoprof_struct(
> > for_each_vcpu ( d, v )
> > nvcpu++;
> >
> > + if ( !nvcpu )
> > + return -EINVAL;
>
> Missing some cleanup here? Or move the preceding loop and this
> addition to the top of the function?
D'oh, yes. Trying again:
# HG changeset patch
# Parent 5a84cc531072378e6e5ff89b4c0e9a35000dc56f
xen/xenoprof: avoid division by 0.
Signed-off-by: Tim Deegan <tim@xxxxxxx>
diff -r 5a84cc531072 xen/common/xenoprof.c
--- a/xen/common/xenoprof.c Thu Feb 14 15:46:56 2013 +0000
+++ b/xen/common/xenoprof.c Thu Feb 14 17:07:41 2013 +0000
@@ -193,6 +193,13 @@ static int alloc_xenoprof_struct(
unsigned max_max_samples;
int i;
+ nvcpu = 0;
+ for_each_vcpu ( d, v )
+ nvcpu++;
+
+ if ( !nvcpu )
+ return -EINVAL;
+
d->xenoprof = xzalloc(struct xenoprof);
if ( d->xenoprof == NULL )
{
@@ -209,10 +216,6 @@ static int alloc_xenoprof_struct(
return -ENOMEM;
}
- nvcpu = 0;
- for_each_vcpu ( d, v )
- nvcpu++;
-
bufsize = sizeof(struct xenoprof_buf);
i = sizeof(struct event_log);
#ifdef CONFIG_COMPAT
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |