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 000000000..dcc6b84b6 --- /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 +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@vger.kernel.org +Signed-off-by: Josh Boyer +--- + 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 654a74b24..0976a97c2 100644 --- a/kernel.spec +++ b/kernel.spec @@ -754,6 +754,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 @@ -1466,6 +1469,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 @@ -2270,6 +2276,7 @@ fi # || || %changelog * Fri Oct 11 2013 Josh Boyer - 3.12.0-0.rc4.git3.1 +- Fix segfault in cpupower set (rhbz 1000439) - Linux v3.12-rc4-62-g2fe80d3 * Thu Oct 10 2013 Josh Boyer