[irqbalance/f17] Resolves: bz859572

Petr Holasek pholasek at fedoraproject.org
Tue Mar 5 12:52:07 UTC 2013


commit 6b73c521aa1a773fb6ae422a382e67099b1748b2
Author: Petr Holasek <pholasek at redhat.com>
Date:   Tue Mar 5 13:50:41 2013 +0100

    Resolves: bz859572

 ...uma-Reset-unassigned-node-on-tree-rebuild.patch |   35 ++++++++++++++++++++
 irqbalance.spec                                    |    7 +++-
 2 files changed, 41 insertions(+), 1 deletions(-)
---
diff --git a/0009-numa-Reset-unassigned-node-on-tree-rebuild.patch b/0009-numa-Reset-unassigned-node-on-tree-rebuild.patch
new file mode 100644
index 0000000..d589453
--- /dev/null
+++ b/0009-numa-Reset-unassigned-node-on-tree-rebuild.patch
@@ -0,0 +1,35 @@
+diff -up irqbalance-1.0.3/numa.c.orig irqbalance-1.0.3/numa.c
+--- irqbalance-1.0.3/numa.c.orig	2011-12-02 17:07:50.000000000 +0100
++++ irqbalance-1.0.3/numa.c	2013-02-21 20:27:04.808423358 +0100
+@@ -37,7 +37,7 @@
+ 
+ GList *numa_nodes = NULL;
+ 
+-static struct topo_obj unspecified_node = {
++static struct topo_obj unspecified_node_template = {
+ 	.load = 0,
+ 	.number = -1,
+ 	.obj_type = OBJ_TYPE_NODE,
+@@ -48,6 +48,8 @@ static struct topo_obj unspecified_node
+ 	.obj_type_list = &numa_nodes,
+ };
+ 
++static struct topo_obj unspecified_node;
++
+ static void add_one_node(const char *nodename)
+ {
+ 	char path[PATH_MAX];
+@@ -85,6 +87,13 @@ void build_numa_node_list(void)
+ 	struct dirent *entry;
+ 
+ 	/*
++	 * Note that we copy the unspcified node from the template here
++	 * in the event we just freed the object tree during a rescan.
++	 * This ensures we don't get stale list pointers anywhere
++	 */
++	memcpy(&unspecified_node, &unspecified_node_template, sizeof (struct topo_obj));
++
++	/*
+ 	 * Add the unspecified node
+ 	 */
+ 	numa_nodes = g_list_append(numa_nodes, &unspecified_node);
diff --git a/irqbalance.spec b/irqbalance.spec
index b9620f3..cf4c36f 100644
--- a/irqbalance.spec
+++ b/irqbalance.spec
@@ -1,6 +1,6 @@
 Name:           irqbalance
 Version:        1.0.3
-Release:        6%{?dist}
+Release:        7%{?dist}
 Epoch:          2
 Summary:        IRQ balancing daemon
 
@@ -32,6 +32,7 @@ Patch6: 0006-irqbalance-cpu-powersave-code-disabled-when-power_th.patch
 Patch7: 0007-apply-affinity-hint-also-if-the-current-policy-is-su.patch
 Patch8: 0008-irqlist-added-check-for-avoidance-of-division-by-zer.patch
 Patch9: irqbalance-1.0.3-unit-file-proper-paths.patch
+Patch10: 0009-numa-Reset-unassigned-node-on-tree-rebuild.patch
 
 %description
 irqbalance is a daemon that evenly distributes IRQ load across
@@ -48,6 +49,7 @@ multiple CPUs for enhanced performance.
 %patch7 -p1
 %patch8 -p1
 %patch9 -p1
+%patch10 -p1
 
 %build
 %{configure}
@@ -96,6 +98,9 @@ fi
 /sbin/chkconfig --del irqbalance >/dev/null 2>&1 || :
 
 %changelog
+* Tue Mar 5 2013 Petr Holasek <pholasek at redhat.com> - 2:1.0.3-7
+- Fixes SIGSEGV (bz859572)
+
 * Wed Aug 29 2012 Petr Holasek <pholasek at redhat.com> - 2:1.0.3-6
 - Systemd unit file paths was edited in proper way.
 


More information about the scm-commits mailing list