[kernel/f19] Fix segfault in cpupower set (rhbz 1000439)

Josh Boyer jwboyer at fedoraproject.org
Fri Oct 11 12:56:50 UTC 2013


commit 3a677fbd4414c54334faaa694e3dd30f5baf69a9
Author: Josh Boyer <jwboyer at fedoraproject.org>
Date:   Fri Oct 11 08:53:10 2013 -0400

    Fix segfault in cpupower set (rhbz 1000439)

 ...x-segfault-due-to-incorrect-getopt_long-a.patch |   40 ++++++++++++++++++++
 kernel.spec                                        |    9 ++++
 2 files changed, 49 insertions(+), 0 deletions(-)
---
diff --git a/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch b/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
new file mode 100644
index 0000000..dcc6b84
--- /dev/null
+++ b/cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
@@ -0,0 +1,40 @@
+From cb8e390d258b7f8073afafcbb163976e27346e9d Mon Sep 17 00:00:00 2001
+From: Josh Boyer <jwboyer at fedoraproject.org>
+Date: Fri, 11 Oct 2013 08:37:53 -0400
+Subject: [PATCH] cpupower: Fix segfault due to incorrect getopt_long arugments
+
+If a user calls 'cpupower set --perf-bias 15', the process will end with a
+SIGSEGV in libc because cpupower-set passes a NULL optarg to the atoi call.
+This is because the getopt_long structure currently has all of the options
+as having an optional_argument when they really have a required argument.
+We change the structure to use required_argument to match the short options
+and it resolves the issue.
+
+This fixes https://bugzilla.redhat.com/show_bug.cgi?id=1000439
+
+Cc: stable at vger.kernel.org
+Signed-off-by: Josh Boyer <jwboyer at fedoraproject.org>
+---
+ tools/power/cpupower/utils/cpupower-set.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/tools/power/cpupower/utils/cpupower-set.c b/tools/power/cpupower/utils/cpupower-set.c
+index dc4de37..bcf1d2f 100644
+--- a/tools/power/cpupower/utils/cpupower-set.c
++++ b/tools/power/cpupower/utils/cpupower-set.c
+@@ -18,9 +18,9 @@
+ #include "helpers/bitmask.h"
+ 
+ static struct option set_opts[] = {
+-	{ .name = "perf-bias",	.has_arg = optional_argument,	.flag = NULL,	.val = 'b'},
+-	{ .name = "sched-mc",	.has_arg = optional_argument,	.flag = NULL,	.val = 'm'},
+-	{ .name = "sched-smt",	.has_arg = optional_argument,	.flag = NULL,	.val = 's'},
++	{ .name = "perf-bias",	.has_arg = required_argument,	.flag = NULL,	.val = 'b'},
++	{ .name = "sched-mc",	.has_arg = required_argument,	.flag = NULL,	.val = 'm'},
++	{ .name = "sched-smt",	.has_arg = required_argument,	.flag = NULL,	.val = 's'},
+ 	{ },
+ };
+ 
+-- 
+1.8.3.1
+
diff --git a/kernel.spec b/kernel.spec
index 2c90271..0693711 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -782,6 +782,9 @@ Patch25127: 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
 #rhbz 993744
 Patch25128: dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
 
+#rhbz 1000439
+Patch25129: cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1512,6 +1515,9 @@ ApplyPatch 0002-iwlwifi-don-t-WARN-on-bad-firmware-state.patch
 #rhbz 993744
 ApplyPatch dm-cache-policy-mq_fix-large-scale-table-allocation-bug.patch
 
+#rhbz 1000439
+ApplyPatch cpupower-Fix-segfault-due-to-incorrect-getopt_long-a.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2324,6 +2330,9 @@ fi
 # and build.
 
 %changelog
+* Fri Oct 11 2013 Josh Boyer <jwboyer at fedoraproject.org>
+- Fix segfault in cpupower set (rhbz 1000439)
+
 * Thu Oct 10 2013 Justin M. Forbes <jforbes at fedoraproject.org> - 3.11.4-201
 - Tag for build
 


More information about the scm-commits mailing list