This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
Home Products Support Community News


[Xen-devel] [PATCH 3 of 4] xentrace: reduce size of extradata in trace_i

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 3 of 4] xentrace: reduce size of extradata in trace_irq_mask()
From: Olaf Hering <olaf@xxxxxxxxx>
Date: Fri, 15 Jul 2011 17:38:07 +0200
Cc: George Dunlap <George.Dunlap@xxxxxxxxxxxxx>
Delivery-date: Fri, 15 Jul 2011 08:42:31 -0700
Dkim-signature: v=1; a=rsa-sha1; c=relaxed/relaxed; t=1310744291; l=1644; s=domk; d=aepfle.de; h=Cc:To:From:Date:References:In-Reply-To:Subject: Content-Transfer-Encoding:MIME-Version:Content-Type:X-RZG-CLASS-ID: X-RZG-AUTH; bh=0QcfcqLd49kk9zPGS/88J/bRutk=; b=w0jRL/Urc/0l5upL/omkZLU9zKlqiq323EZc6bClHh6Z9DsmM/tKknnc2JSbgNpm0uO A1JSg6IMAXLBTuWUtObf6qORbE4AJVZIvHYUnG1AeAQbxQqRlAgRiNlahd1d8wZAAkk/b Xj6c/MdEsWINDNIkF4iNwe6lFKVor7mh1S4=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1310744284@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <patchbomb.1310744284@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mercurial-patchbomb/1.7.5
# HG changeset patch
# User Olaf Hering <olaf@xxxxxxxxx>
# Date 1310743144 -7200
# Node ID 6e4aef7b5051e18f19f2367a4439bba8f495335c
# Parent  e0ff4eea0432e0af3210e090a47414a0126e9904
xentrace: reduce size of extradata in trace_irq_mask()

Reduce size of extra_data in to avoid possible crash in trace_var.

(XEN) Assertion 'extra_word <= TRACE_EXTRA_MAX' failed at trace.c:687
(XEN) Xen call trace:
(XEN)    [<ffff82c480128783>] __trace_var+0x4d/0x3b8
(XEN)    [<ffff82c480162172>] trace_irq_mask+0x49/0x4b
(XEN)    [<ffff82c4801631ae>] __assign_irq_vector+0x241/0x374
(XEN)    [<ffff82c48015d813>] set_desc_affinity+0x5d/0xd4
(XEN)    [<ffff82c480160708>] set_msi_affinity+0x44/0x1c1
(XEN)    [<ffff82c480162938>] move_masked_irq+0x9c/0xcd
(XEN)    [<ffff82c4801629a7>] move_native_irq+0x3e/0x53
(XEN)    [<ffff82c48015d969>] ack_msi_irq+0x2c/0x6e
(XEN)    [<ffff82c4801622e3>] do_IRQ+0x16f/0x66d

Signed-off-by: Olaf Hering <olaf@xxxxxxxxx>

diff -r e0ff4eea0432 -r 6e4aef7b5051 xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c
+++ b/xen/arch/x86/irq.c
@@ -77,10 +77,14 @@ void unlock_vector_lock(void)
 static void trace_irq_mask(u32 event, int irq, int vector, cpumask_t *mask)
     struct {
-        int irq, vec;
-        cpumask_t mask;
-    } d = { irq, vector, *mask };
-    trace_var(event, 1, sizeof(d), (unsigned char *)&d);
+        unsigned int irq:16, vec:16;
+        unsigned int mask[6];
+    } d;
+    d.irq = irq;
+    d.vec = vector;
+    memset(d.mask, 0, sizeof(d.mask));
+    memcpy(d.mask, mask, min(sizeof(d.mask), sizeof(cpumask_t)));
+    trace_var(event, 1, sizeof(d), &d);
 static int __init __bind_irq_vector(int irq, int vector, cpumask_t cpu_mask)

Xen-devel mailing list

<Prev in Thread] Current Thread [Next in Thread>