Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932937AbbG1Jx3 (ORCPT ); Tue, 28 Jul 2015 05:53:29 -0400 Received: from mx2.suse.de ([195.135.220.15]:57954 "EHLO mx2.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932102AbbG1JxR (ORCPT ); Tue, 28 Jul 2015 05:53:17 -0400 X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" From: Jiri Slaby To: stable@vger.kernel.org Cc: linux-kernel@vger.kernel.org, Lukasz Majewski , Zhang Rui , Mason , Jiri Slaby Subject: [PATCH 3.12 114/124] thermal: step_wise: fix: Prevent from binary overflow when trend is dropping Date: Tue, 28 Jul 2015 11:52:55 +0200 Message-Id: <928f39912355b55521452cb6491fe0c0bd39c3f5.1438076484.git.jslaby@suse.cz> X-Mailer: git-send-email 2.4.6 In-Reply-To: References: In-Reply-To: References: Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1625 Lines: 45 From: Lukasz Majewski 3.12-stable review patch. If anyone has any objections, please let me know. =============== commit 26bb0e9a1a938ec98ee07aa76533f1a711fba706 upstream. It turns out that some boards can have instance->lower greater than 0 and when thermal trend is dropping it results with next_target equal to -1. Since the next_target is defined as unsigned long it is interpreted as 0xFFFFFFFF and larger than instance->upper. As a result the next_target is set to instance->upper which ramps up to maximal cooling device target when the temperature is steadily decreasing. Signed-off-by: Lukasz Majewski Signed-off-by: Zhang Rui Cc: Mason Signed-off-by: Jiri Slaby --- drivers/thermal/step_wise.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/step_wise.c b/drivers/thermal/step_wise.c index 769bfa3a4360..26d3aff18277 100644 --- a/drivers/thermal/step_wise.c +++ b/drivers/thermal/step_wise.c @@ -75,7 +75,7 @@ static unsigned long get_target_state(struct thermal_instance *instance, next_target = instance->upper; break; case THERMAL_TREND_DROPPING: - if (cur_state == instance->lower) { + if (cur_state <= instance->lower) { if (!throttle) next_target = THERMAL_NO_TARGET; } else { -- 2.4.6 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/