From mboxrd@z Thu Jan 1 00:00:00 1970 From: George Dunlap Subject: Re: [PATCH 2 of 4] xentrace: replace ASSERT with printk in __trace_var Date: Fri, 15 Jul 2011 17:31:34 +0100 Message-ID: <1310747494.448.95.camel@elijah> References: Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: Olaf Hering Cc: George Dunlap , "xen-devel@lists.xensource.com" List-Id: xen-devel@lists.xenproject.org This seems likely to spam the console if there is a trace which violates this; and this may happen in production environments if the loglevel is increased. I think putting in something to warn just once would be a better idea. -George On Fri, 2011-07-15 at 16:38 +0100, Olaf Hering wrote: > # HG changeset patch > # User Olaf Hering > # Date 1310741871 -7200 > # Node ID e0ff4eea0432e0af3210e090a47414a0126e9904 > # Parent d0dcdddf5285eba0605a95dfda79b794803fa733 > xentrace: replace ASSERT with printk in __trace_var > > If trace_var gets called with large extra_data, do not crash the hypervisor. > Instead print a warning and truncate the buffer. > > Signed-off-by: Olaf Hering > > diff -r d0dcdddf5285 -r e0ff4eea0432 xen/common/trace.c > --- a/xen/common/trace.c > +++ b/xen/common/trace.c > @@ -683,7 +683,10 @@ void __trace_var(u32 event, bool_t cycle > if ( (extra % sizeof(u32)) != 0 ) > extra_word++; > > - ASSERT(extra_word <= TRACE_EXTRA_MAX); > + if ( unlikely(extra_word > TRACE_EXTRA_MAX) ) > + printk(XENLOG_WARNING "xentrace: event %x extra_data %u too large.\n", > + event, extra); > + > extra_word = min_t(int, extra_word, TRACE_EXTRA_MAX); > > /* Round size up to nearest word */