Add upstream patch to fix ThermalMonitor (rhbz#1464548)

Add several fixes from upstream
This commit is contained in:
Björn Esser 2017-06-30 09:43:06 +02:00
parent e9f703a035
commit 5edf9f427d
8 changed files with 478 additions and 1 deletions

View File

@ -0,0 +1,37 @@
From 18989faac5138213a99f63346e49f4279caad9fb Mon Sep 17 00:00:00 2001
From: Colin Ian King <colin.king@canonical.com>
Date: Thu, 20 Apr 2017 18:40:47 +0100
Subject: [PATCH] Don't terminate the thermald engine if thd_engine is null
It is possible for a signal to occur before the thermald engine
is up and running and hence trying to call the terminate method
will result in a segmentation fault. Check to see if thd_engine
is non-null before invoking thd_engine_terminate.
Fixes bug http://bugs.launchpad.net/bugs/1677427
Note: I was able to reproduce the bug by inserting a
kill(getpid(), SIGTERM) after the signal handler was installed
and before the thermald engine is started to reliably trip the
issue. There is just a very small window where this bug can
actually can occur.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
src/main.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/main.cpp b/src/main.cpp
index 14bd912..36abe7b 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -137,7 +137,8 @@ bool check_thermald_running() {
// SIGTERM & SIGINT handler
void sig_int_handler(int signum) {
- thd_engine->thd_engine_terminate();
+ if (thd_engine)
+ thd_engine->thd_engine_terminate();
sleep(1);
if (g_main_loop)
g_main_loop_quit(g_main_loop);

View File

@ -0,0 +1,40 @@
From 9c5d8354dd8efff340a030c05f7beda03061cd0a Mon Sep 17 00:00:00 2001
From: testuser <testuser>
Date: Thu, 29 Jun 2017 17:24:51 -0700
Subject: [PATCH] Fix dbus re-init accessing deleted pointer
As Colin King found, there is issue during reinit.
thd_engine is deleted and then getting accessed.
So store the parameters before deleting the thd_engine.
---
src/thd_dbus_interface.cpp | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/src/thd_dbus_interface.cpp b/src/thd_dbus_interface.cpp
index b8e4ab0..6d0265d 100644
--- a/src/thd_dbus_interface.cpp
+++ b/src/thd_dbus_interface.cpp
@@ -199,10 +199,6 @@ gboolean thd_dbus_interface_terminate(PrefObject *obj, GError **error) {
gboolean thd_dbus_interface_reinit(PrefObject *obj, GError **error) {
bool exclusive_control = false;
- thd_engine->thd_engine_terminate();
- sleep(1);
- delete thd_engine;
- sleep(2);
if (thd_engine->get_control_mode() == EXCLUSIVE)
exclusive_control = true;
@@ -211,6 +207,12 @@ gboolean thd_dbus_interface_reinit(PrefObject *obj, GError **error) {
if (!config_file.empty())
conf_file = config_file.c_str();
+ thd_engine->thd_engine_terminate();
+ sleep(1);
+ delete thd_engine;
+ sleep(2);
+
+
if (thd_engine_create_default_engine(true, exclusive_control,
conf_file) != THD_SUCCESS) {
return FALSE;

View File

@ -0,0 +1,69 @@
From 8f7d49be960dd19edaef452a89b541e4509caef7 Mon Sep 17 00:00:00 2001
From: Colin Ian King <colin.king@canonical.com>
Date: Tue, 18 Apr 2017 17:16:09 +0100
Subject: [PATCH] fix typo on field name default_prefernce
Fix typo, default_prefernce should be default_preference
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
src/thd_parse.cpp | 10 +++++-----
src/thd_parse.h | 2 +-
2 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/thd_parse.cpp b/src/thd_parse.cpp
index e96f9d0..b2828d1 100644
--- a/src/thd_parse.cpp
+++ b/src/thd_parse.cpp
@@ -467,7 +467,7 @@ int cthd_parse::parse_new_platform_info(xmlNode * a_node, xmlDoc *doc,
xmlNode *cur_node = NULL;
char *tmp_value;
- info_ptr->default_prefernce = PREF_ENERGY_CONSERVE;
+ info_ptr->default_preference = PREF_ENERGY_CONSERVE;
for (cur_node = a_node; cur_node; cur_node = cur_node->next) {
if (cur_node->type == XML_ELEMENT_NODE) {
@@ -488,9 +488,9 @@ int cthd_parse::parse_new_platform_info(xmlNode * a_node, xmlDoc *doc,
"Preference")) {
char *pref_val = char_trim(tmp_value);
if (pref_val && !strcasecmp(pref_val, "PERFORMANCE"))
- info_ptr->default_prefernce = PREF_PERFORMANCE;
+ info_ptr->default_preference = PREF_PERFORMANCE;
else
- info_ptr->default_prefernce = PREF_ENERGY_CONSERVE;
+ info_ptr->default_preference = PREF_ENERGY_CONSERVE;
} else if (!strcasecmp((const char*) cur_node->name,
"ThermalZones")) {
parse_thermal_zones(cur_node->children, doc, info_ptr);
@@ -592,7 +592,7 @@ void cthd_parse::dump_thermal_conf() {
thd_log_info(" *** Index %u ***\n", i);
thd_log_info("Name: %s\n", thermal_info_list[i].name.c_str());
thd_log_info("UUID: %s\n", thermal_info_list[i].uuid.c_str());
- thd_log_info("type: %d\n", thermal_info_list[i].default_prefernce);
+ thd_log_info("type: %d\n", thermal_info_list[i].default_preference);
for (unsigned int j = 0; j < thermal_info_list[i].sensors.size(); ++j) {
thd_log_info("\tSensor %u \n", j);
@@ -807,7 +807,7 @@ int cthd_parse::set_default_preference() {
cthd_preference thd_pref;
int ret;
- if (thermal_info_list[matched_thermal_info_index].default_prefernce
+ if (thermal_info_list[matched_thermal_info_index].default_preference
== PREF_PERFORMANCE)
ret = thd_pref.set_preference("PERFORMANCE");
else
diff --git a/src/thd_parse.h b/src/thd_parse.h
index 3b19a8e..6d7e890 100644
--- a/src/thd_parse.h
+++ b/src/thd_parse.h
@@ -115,7 +115,7 @@ typedef struct {
std::string name;
std::string uuid;
std::string product_name;
- int default_prefernce;
+ int default_preference;
std::vector<thermal_sensor_t> sensors;
std::vector<thermal_zone_t> zones;
std::vector<cooling_dev_t> cooling_devs;

View File

@ -0,0 +1,25 @@
From e311dc88d3acac7eca593efea5d95507b02608da Mon Sep 17 00:00:00 2001
From: Colin Ian King <colin.king@canonical.com>
Date: Thu, 13 Apr 2017 12:03:53 +0100
Subject: [PATCH] remove duplicate assignment to critical_temp
critical_temp is being assigned to zero twice, remove one of them
as it is redundant.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
src/thd_zone_cpu.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/src/thd_zone_cpu.cpp b/src/thd_zone_cpu.cpp
index b6da9bf..051cbf8 100644
--- a/src/thd_zone_cpu.cpp
+++ b/src/thd_zone_cpu.cpp
@@ -51,7 +51,6 @@ cthd_zone_cpu::cthd_zone_cpu(int index, std::string path, int package_id) :
}
int cthd_zone_cpu::init() {
- critical_temp = 0;
int temp = 0;
bool found = false;

View File

@ -0,0 +1,37 @@
From 90169f80a70efd4d5b6101e87666cd355dbd786f Mon Sep 17 00:00:00 2001
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
Date: Fri, 2 Jun 2017 08:04:57 -0700
Subject: [PATCH] Removed compile flags
Removed -fpermissive and -fopenmp.
---
Android.mk | 2 +-
Makefile.am | 2 --
2 files changed, 1 insertion(+), 3 deletions(-)
diff --git a/Android.mk b/Android.mk
index 092053d..8ef9cf3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -43,7 +43,7 @@ LOCAL_C_INCLUDES += $(LOCAL_PATH) $(thermald_src_path) \
system/core/include/
LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS := -fpermissive -DTDRUNDIR='"/data/thermal-daemon"' -DTDCONFDIR='"/system/etc/thermal-daemon"'
+LOCAL_CFLAGS := -DTDRUNDIR='"/data/thermal-daemon"' -DTDCONFDIR='"/system/etc/thermal-daemon"'
LOCAL_STATIC_LIBRARIES := libxml2
LOCAL_SHARED_LIBRARIES := liblog libcutils libdl libc++ libicuuc libicui18n libbinder libutils
LOCAL_PRELINK_MODULE := false
diff --git a/Makefile.am b/Makefile.am
index 1ac26ed..ee96893 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -11,8 +11,6 @@ AM_CXXFLAGS = ${DBUS_CFLAGS}\
-DTDRUNDIR=\"$(tdrundir)\" \
-DTDCONFDIR=\"$(tdconfdir)\" \
-I src \
- -fpermissive \
- -fopenmp \
-Wreorder \
-Wsign-compare \
-Wreturn-type \

View File

@ -0,0 +1,12 @@
Index: thermal_daemon-1.6/tools/thermal_monitor/thermaldinterface.cpp
===================================================================
--- thermal_daemon-1.6.orig/tools/thermal_monitor/thermaldinterface.cpp
+++ thermal_daemon-1.6/tools/thermal_monitor/thermaldinterface.cpp
@@ -453,6 +453,7 @@ int ThermaldInterface::getZoneInformatio
info.name = result.arguments().at(0).toString();
info.sensor_count = result.arguments().at(1).toInt();
info.trip_count = result.arguments().at(2).toInt();
+ info.lowest_valid_index = 0;
return 0;
} else {
qCritical() << "error from" << iface->interface() << result.errorMessage();

View File

@ -0,0 +1,243 @@
From 7ee77cce542b2ed0421133b01904d5ad0ecdab6f Mon Sep 17 00:00:00 2001
From: Colin Ian King <colin.king@canonical.com>
Date: Thu, 13 Apr 2017 12:27:53 +0100
Subject: [PATCH] thd_parse: check for xmlNodeListGetString NULL returns
Although it is unlikely, it is possible for xmlNodeListGetString to return
NULL, so null check the return and only parse the returned string if it
is non-null.
Signed-off-by: Colin Ian King <colin.king@canonical.com>
---
src/thd_parse.cpp | 185 ++++++++++++++++++++++++++++--------------------------
1 file changed, 95 insertions(+), 90 deletions(-)
diff --git a/src/thd_parse.cpp b/src/thd_parse.cpp
index f5e0870..e96f9d0 100644
--- a/src/thd_parse.cpp
+++ b/src/thd_parse.cpp
@@ -112,20 +112,21 @@ int cthd_parse::parse_new_trip_cdev(xmlNode * a_node, xmlDoc *doc,
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
tmp_value = (char *) xmlNodeListGetString(doc,
cur_node->xmlChildrenNode, 1);
- if (!strcasecmp((const char*) cur_node->name, "type")) {
- trip_cdev->type.assign((const char*) tmp_value);
- string_trim(trip_cdev->type);
- } else if (!strcasecmp((const char*) cur_node->name, "influence")) {
- trip_cdev->influence = atoi(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name,
- "SamplingPeriod")) {
- trip_cdev->sampling_period = atoi(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name,
- "TargetState")) {
- trip_cdev->target_state = atoi(tmp_value);
- }
- if (tmp_value)
+ if (tmp_value) {
+ if (!strcasecmp((const char*) cur_node->name, "type")) {
+ trip_cdev->type.assign((const char*) tmp_value);
+ string_trim(trip_cdev->type);
+ } else if (!strcasecmp((const char*) cur_node->name, "influence")) {
+ trip_cdev->influence = atoi(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name,
+ "SamplingPeriod")) {
+ trip_cdev->sampling_period = atoi(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name,
+ "TargetState")) {
+ trip_cdev->target_state = atoi(tmp_value);
+ }
xmlFree(tmp_value);
+ }
}
}
@@ -223,15 +224,16 @@ int cthd_parse::parse_pid_values(xmlNode * a_node, xmlDoc *doc,
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
tmp_value = (char*) xmlNodeListGetString(doc,
cur_node->xmlChildrenNode, 1);
- if (!strcasecmp((const char*) cur_node->name, "Kp")) {
- pid_ptr->Kp = atof(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name, "Kd")) {
- pid_ptr->Kd = atof(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name, "Ki")) {
- pid_ptr->Ki = atof(tmp_value);
- }
- if (tmp_value)
+ if (tmp_value) {
+ if (!strcasecmp((const char*) cur_node->name, "Kp")) {
+ pid_ptr->Kp = atof(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name, "Kd")) {
+ pid_ptr->Kd = atof(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name, "Ki")) {
+ pid_ptr->Ki = atof(tmp_value);
+ }
xmlFree(tmp_value);
+ }
}
}
@@ -281,47 +283,48 @@ int cthd_parse::parse_new_cooling_dev(xmlNode * a_node, xmlDoc *doc,
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
tmp_value = (char*) xmlNodeListGetString(doc,
cur_node->xmlChildrenNode, 1);
- if (!strcasecmp((const char *) cur_node->name, "Index")) {
- cdev->index = atoi(tmp_value);
- } else if (!strcasecmp((const char *) cur_node->name, "Type")) {
- cdev->type_string.assign((const char*) tmp_value);
- string_trim(cdev->type_string);
- } else if (!strcasecmp((const char *) cur_node->name, "Path")) {
- cdev->mask |= CDEV_DEF_BIT_PATH;
- cdev->path_str.assign((const char*) tmp_value);
- string_trim(cdev->path_str);
- } else if (!strcasecmp((const char *) cur_node->name, "MinState")) {
- cdev->mask |= CDEV_DEF_BIT_MIN_STATE;
- cdev->min_state = atoi(tmp_value);
- } else if (!strcasecmp((const char *) cur_node->name, "MaxState")) {
- cdev->mask |= CDEV_DEF_BIT_MAX_STATE;
- cdev->max_state = atoi(tmp_value);
- } else if (!strcasecmp((const char *) cur_node->name,
- "IncDecStep")) {
- cdev->mask |= CDEV_DEF_BIT_STEP;
- cdev->inc_dec_step = atoi(tmp_value);
- } else if (!strcasecmp((const char *) cur_node->name, "ReadBack")) {
- cdev->mask |= CDEV_DEF_BIT_READ_BACK;
- cdev->read_back = atoi(tmp_value);
- } else if (!strcasecmp((const char *) cur_node->name,
- "DebouncePeriod")) {
- cdev->mask |= CDEV_DEF_BIT_DEBOUNCE_VAL;
- cdev->debounce_interval = atoi(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name,
- "PidControl")) {
- cdev->mask |= CDEV_DEF_BIT_PID_PARAMS;
- cdev->pid_enable = true;
- parse_pid_values(cur_node->children, doc, &cdev->pid);
- } else if (!strcasecmp((const char *) cur_node->name,
- "AutoOffMode")) {
- cdev->mask |= CDEV_DEF_BIT_AUTO_DOWN;
- if (atoi(tmp_value))
- cdev->auto_down_control = true;
- else
- cdev->auto_down_control = false;
- }
- if (tmp_value)
+ if (tmp_value) {
+ if (!strcasecmp((const char *) cur_node->name, "Index")) {
+ cdev->index = atoi(tmp_value);
+ } else if (!strcasecmp((const char *) cur_node->name, "Type")) {
+ cdev->type_string.assign((const char*) tmp_value);
+ string_trim(cdev->type_string);
+ } else if (!strcasecmp((const char *) cur_node->name, "Path")) {
+ cdev->mask |= CDEV_DEF_BIT_PATH;
+ cdev->path_str.assign((const char*) tmp_value);
+ string_trim(cdev->path_str);
+ } else if (!strcasecmp((const char *) cur_node->name, "MinState")) {
+ cdev->mask |= CDEV_DEF_BIT_MIN_STATE;
+ cdev->min_state = atoi(tmp_value);
+ } else if (!strcasecmp((const char *) cur_node->name, "MaxState")) {
+ cdev->mask |= CDEV_DEF_BIT_MAX_STATE;
+ cdev->max_state = atoi(tmp_value);
+ } else if (!strcasecmp((const char *) cur_node->name,
+ "IncDecStep")) {
+ cdev->mask |= CDEV_DEF_BIT_STEP;
+ cdev->inc_dec_step = atoi(tmp_value);
+ } else if (!strcasecmp((const char *) cur_node->name, "ReadBack")) {
+ cdev->mask |= CDEV_DEF_BIT_READ_BACK;
+ cdev->read_back = atoi(tmp_value);
+ } else if (!strcasecmp((const char *) cur_node->name,
+ "DebouncePeriod")) {
+ cdev->mask |= CDEV_DEF_BIT_DEBOUNCE_VAL;
+ cdev->debounce_interval = atoi(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name,
+ "PidControl")) {
+ cdev->mask |= CDEV_DEF_BIT_PID_PARAMS;
+ cdev->pid_enable = true;
+ parse_pid_values(cur_node->children, doc, &cdev->pid);
+ } else if (!strcasecmp((const char *) cur_node->name,
+ "AutoOffMode")) {
+ cdev->mask |= CDEV_DEF_BIT_AUTO_DOWN;
+ if (atoi(tmp_value))
+ cdev->auto_down_control = true;
+ else
+ cdev->auto_down_control = false;
+ }
xmlFree(tmp_value);
+ }
}
}
@@ -381,17 +384,18 @@ int cthd_parse::parse_new_sensor_link(xmlNode * a_node, xmlDoc *doc,
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
tmp_value = (char*) xmlNodeListGetString(doc,
cur_node->xmlChildrenNode, 1);
- if (!strcasecmp((const char*) cur_node->name, "SensorType")) {
- info_ptr->name.assign(tmp_value);
- string_trim(info_ptr->name);
- } else if (!strcasecmp((const char*) cur_node->name,
- "Multiplier")) {
- info_ptr->multiplier = atof(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name, "Offset")) {
- info_ptr->offset = atof(tmp_value);
- }
- if (tmp_value)
+ if (tmp_value) {
+ if (!strcasecmp((const char*) cur_node->name, "SensorType")) {
+ info_ptr->name.assign(tmp_value);
+ string_trim(info_ptr->name);
+ } else if (!strcasecmp((const char*) cur_node->name,
+ "Multiplier")) {
+ info_ptr->multiplier = atof(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name, "Offset")) {
+ info_ptr->offset = atof(tmp_value);
+ }
xmlFree(tmp_value);
+ }
}
}
@@ -408,26 +412,27 @@ int cthd_parse::parse_new_sensor(xmlNode * a_node, xmlDoc *doc,
DEBUG_PARSER_PRINT("node type: Element, name: %s value: %s\n", cur_node->name, xmlNodeListGetString(doc, cur_node->xmlChildrenNode, 1));
tmp_value = (char*) xmlNodeListGetString(doc,
cur_node->xmlChildrenNode, 1);
- if (!strcasecmp((const char*) cur_node->name, "Type")) {
- info_ptr->name.assign(tmp_value);
- string_trim(info_ptr->name);
- } else if (!strcasecmp((const char*) cur_node->name, "Path")) {
- info_ptr->mask |= SENSOR_DEF_BIT_PATH;
- info_ptr->path.assign(tmp_value);
- string_trim(info_ptr->path);
- } else if (!strcasecmp((const char*) cur_node->name,
- "AsyncCapable")) {
- info_ptr->async_capable = atoi(tmp_value);
- info_ptr->mask |= SENSOR_DEF_BIT_ASYNC_CAPABLE;
- } else if (!strcasecmp((const char*) cur_node->name, "Virtual")) {
- info_ptr->virtual_sensor = atoi(tmp_value);
- } else if (!strcasecmp((const char*) cur_node->name,
- "SensorLink")) {
- parse_new_sensor_link(cur_node->children, doc,
- &info_ptr->sensor_link);
- }
- if (tmp_value)
+ if (tmp_value) {
+ if (!strcasecmp((const char*) cur_node->name, "Type")) {
+ info_ptr->name.assign(tmp_value);
+ string_trim(info_ptr->name);
+ } else if (!strcasecmp((const char*) cur_node->name, "Path")) {
+ info_ptr->mask |= SENSOR_DEF_BIT_PATH;
+ info_ptr->path.assign(tmp_value);
+ string_trim(info_ptr->path);
+ } else if (!strcasecmp((const char*) cur_node->name,
+ "AsyncCapable")) {
+ info_ptr->async_capable = atoi(tmp_value);
+ info_ptr->mask |= SENSOR_DEF_BIT_ASYNC_CAPABLE;
+ } else if (!strcasecmp((const char*) cur_node->name, "Virtual")) {
+ info_ptr->virtual_sensor = atoi(tmp_value);
+ } else if (!strcasecmp((const char*) cur_node->name,
+ "SensorLink")) {
+ parse_new_sensor_link(cur_node->children, doc,
+ &info_ptr->sensor_link);
+ }
xmlFree(tmp_value);
+ }
}
}

View File

@ -8,7 +8,7 @@
Name: thermald
Version: 1.6
Release: 3%{?dist}
Release: 4%{?dist}
Summary: Thermal Management daemon
License: GPLv2+
@ -21,6 +21,16 @@ Patch1: %{url}/commit/6a2344b4a55acc0cba356d0f7c521c0cdb6632e0.patch#/%{name}-1
Patch2: %{url}/commit/2a00d1745161c6d11b927f025ff1f4bb44f61d15.patch#/%{name}-1.6-load_preference_from_xml_file.patch
Patch3: %{url}/commit/37a25879239466f2d096fd1a58b2ac7bbc3958f5.patch#/%{name}-1.6-set_default_preference.patch
Patch4: %{url}/commit/35bda2d052b8820cbfce6c1918e3866c6fa3fd76.patch#/%{name}-1.6-update_QCustomPlot_2_0_0_beta.patch
Patch5: %{url}/commit/e311dc88d3acac7eca593efea5d95507b02608da.patch#/%{name}-1.6-remove_duplicate_assignment_to_critical_temp.patch
Patch6: %{url}/commit/7ee77cce542b2ed0421133b01904d5ad0ecdab6f.patch#/%{name}-1.6-thd_parse_check_for_xmlNodeListGetString_NULL_returns.patch
Patch7: %{url}/commit/8f7d49be960dd19edaef452a89b541e4509caef7.patch#/%{name}-1.6-fix_typo_on_field_name_default_prefernce.patch
Patch8: %{url}/commit/18989faac5138213a99f63346e49f4279caad9fb.patch#/%{name}-1.6-dont_terminate_the_thermald_engine_if_thd_engine_is_null.patch
Patch9: %{url}/commit/90169f80a70efd4d5b6101e87666cd355dbd786f.patch#/%{name}-1.6-removed_compile_flags.patch
Patch10: %{url}/commit/9c5d8354dd8efff340a030c05f7beda03061cd0a.patch#/%{name}-1.6-fix_dbus_re-init_accessing_deleted_pointer.patch
# See: https://bugzilla.redhat.com/show_bug.cgi?id=1464548
# https://github.com/intel/thermal_daemon/issues/132
Patch1000: %{name}-1.6-rhbz1464548.patch
# No cpuid.h on other arches.
ExclusiveArch: %{ix86} x86_64
@ -265,6 +275,10 @@ fi
%changelog
* Fri Jun 30 2017 Björn Esser <besser82@fedoraproject.org> - 1.6-4
- Add upstream patch to fix ThermalMonitor (rhbz#1464548)
- Add several fixes from upstream
* Tue Apr 11 2017 Björn Esser <besser82@fedoraproject.org> - 1.6-3
- Explicitly turn on hardening, if required