From: Olaf Hering <olaf@aepfle.de>
To: George Dunlap <george.dunlap@citrix.com>
Cc: "xen-devel@lists.xensource.com" <xen-devel@lists.xensource.com>
Subject: Re: [PATCH 2 of 3] xentrace: use tbuf_size for overflow check
Date: Thu, 7 Apr 2011 15:50:15 +0200 [thread overview]
Message-ID: <20110407135014.GA2222@aepfle.de> (raw)
In-Reply-To: <1301656691.9447.88.camel@elijah>
On Fri, Apr 01, George Dunlap wrote:
> On Wed, 2011-03-30 at 19:04 +0100, Olaf Hering wrote:
> > # HG changeset patch
> > # User Olaf Hering <olaf@aepfle.de>
> > # Date 1301424075 -7200
> > # Node ID 3e95e737bc51c2295926e4f23389b1cb161d6d7b
> > # Parent 8a2ce5e49b2c5f2e013734b5d53eae37572f4101
> > xentrace: use tbuf_size for overflow check
> >
> > The calculated number of per-cpu trace pages is stored in t_info and
> > shared with tools like xentrace. Since its an u16 the value may overflow
> > because the current check is based on u32.
>
> Hmm -- while this is true, it's possible this may change in the future.
> If we ever changed t_info.tbuf_size to be u32, then t_buf.prod/cons
> would again be the limiting factor.
>
> Should we perhaps add both checks?
I will test the change below.
diff -r 2b66b83b19b6 xen/common/trace.c
--- a/xen/common/trace.c Thu Apr 07 12:13:58 2011 +0100
+++ b/xen/common/trace.c Thu Apr 07 15:45:21 2011 +0200
@@ -104,25 +104,33 @@
* calculate_tbuf_size - check to make sure that the proposed size will fit
* in the currently sized struct t_info and allows prod and cons to
* reach double the value without overflow.
+ * The t_info layout is fixed and cant be changed without breaking xentrace.
* Initialize t_info_pages based on number of trace pages.
*/
static int calculate_tbuf_size(unsigned int pages)
{
- struct t_buf dummy;
- typeof(dummy.prod) size;
+ struct t_buf dummy_size;
+ typeof(dummy_size.prod) max_size;
+ struct t_info dummy_pages;
+ typeof(dummy_pages.tbuf_size) max_pages;
unsigned int t_info_words;
/* force maximum value for an unsigned type */
- size = -1;
+ max_size = -1;
+ max_pages = -1;
/* max size holds up to n pages */
- size /= PAGE_SIZE;
- if ( pages > size )
+ max_size /= PAGE_SIZE;
+
+ if ( max_size < max_pages )
+ max_pages = max_size;
+
+ if ( pages > max_pages )
{
printk(XENLOG_INFO "xentrace: requested number of %u pages "
"reduced to %u\n",
- pages, (unsigned int)size);
- pages = size;
+ pages, max_pages);
+ pages = max_pages;
}
t_info_words = num_online_cpus() * pages * sizeof(uint32_t);
next prev parent reply other threads:[~2011-04-07 13:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-30 18:04 [PATCH 0 of 3] xentrace updates Olaf Hering
2011-03-30 18:04 ` [PATCH 1 of 3] xentrace: correct formula to calculate t_info_pages Olaf Hering
2011-04-01 10:32 ` George Dunlap
2011-03-30 18:04 ` [PATCH 2 of 3] xentrace: use tbuf_size for overflow check Olaf Hering
2011-04-01 11:18 ` George Dunlap
2011-04-05 10:19 ` Olaf Hering
2011-04-07 13:50 ` Olaf Hering [this message]
2011-04-18 18:45 ` non-contiguous allocations Olaf Hering
2011-04-26 11:51 ` Jan Beulich
2011-05-06 10:25 ` Olaf Hering
2011-05-06 10:45 ` Jan Beulich
2011-05-06 18:12 ` Olaf Hering
2011-05-06 18:46 ` Keir Fraser
2011-05-07 8:39 ` Olaf Hering
2011-05-07 16:31 ` Keir Fraser
2011-05-09 8:30 ` Jan Beulich
2011-05-09 8:34 ` Keir Fraser
2011-05-09 12:43 ` Olaf Hering
2011-05-09 14:14 ` Keir Fraser
2011-03-30 18:04 ` [PATCH 3 of 3] xentrace: remove unneeded debug printk Olaf Hering
2011-04-01 11:18 ` George Dunlap
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20110407135014.GA2222@aepfle.de \
--to=olaf@aepfle.de \
--cc=george.dunlap@citrix.com \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).