* Re: [PATCH] PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs
@ 2014-03-04 10:06 MyungJoo Ham
2014-03-04 20:25 ` Saravana Kannan
0 siblings, 1 reply; 4+ messages in thread
From: MyungJoo Ham @ 2014-03-04 10:06 UTC (permalink / raw)
To: Saravana Kannan, 박경민
Cc: linux-pm, linux-kernel, linux-arm-msm, linux-arm-kernel
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset=euc-kr, Size: 841 bytes --]
> The current devfreq_update_status() has the following bugs:
> - If previous frequency doesn't have a valid level, it does an out of bounds
> access into the trans_table and causes memory corruption.
> - When the new frequency doesn't have a valid level, the time spent in the
> new frequency is counted towards the next valid frequency switch instead of
> being ignored.
> - The time spent on the previous frequency is added to the new frequency's
> stats instead of the previous frequency's stats.
>
> This patch fixes all of this.
>
> Signed-off-by: Saravana Kannan <skannan@codeaurora.org>
Merged.
It appears to be Greg's LTS material as well.
Cheers,
MyungJoo
ÿôèº{.nÇ+·®+%Ëÿ±éݶ\x17¥wÿº{.nÇ+·¥{±þG«éÿ{ayº\x1dÊÚë,j\a¢f£¢·hïêÿêçz_è®\x03(éÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?¨èÚ&£ø§~á¶iOæ¬z·vØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?I¥
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs
2014-03-04 10:06 [PATCH] PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs MyungJoo Ham
@ 2014-03-04 20:25 ` Saravana Kannan
0 siblings, 0 replies; 4+ messages in thread
From: Saravana Kannan @ 2014-03-04 20:25 UTC (permalink / raw)
To: myungjoo.ham
Cc: 박경민,
linux-pm, linux-kernel, linux-arm-msm, linux-arm-kernel
On 03/04/2014 02:06 AM, MyungJoo Ham wrote:
>> The current devfreq_update_status() has the following bugs:
>> - If previous frequency doesn't have a valid level, it does an out of bounds
>> access into the trans_table and causes memory corruption.
>> - When the new frequency doesn't have a valid level, the time spent in the
>> new frequency is counted towards the next valid frequency switch instead of
>> being ignored.
>> - The time spent on the previous frequency is added to the new frequency's
>> stats instead of the previous frequency's stats.
>>
>> This patch fixes all of this.
>>
>> Signed-off-by: Saravana Kannan <skannan@codeaurora.org>
>
> Merged.
>
> It appears to be Greg's LTS material as well.
>
Thanks!
-Saravana
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs
2014-02-28 3:38 Saravana Kannan
@ 2014-03-04 0:35 ` Saravana Kannan
0 siblings, 0 replies; 4+ messages in thread
From: Saravana Kannan @ 2014-03-04 0:35 UTC (permalink / raw)
To: Saravana Kannan
Cc: MyungJoo Ham, Kyungmin Park, linux-pm, linux-kernel,
linux-arm-msm, linux-arm-kernel
On 02/27/2014 07:38 PM, Saravana Kannan wrote:
> The current devfreq_update_status() has the following bugs:
> - If previous frequency doesn't have a valid level, it does an out of bounds
> access into the trans_table and causes memory corruption.
> - When the new frequency doesn't have a valid level, the time spent in the
> new frequency is counted towards the next valid frequency switch instead of
> being ignored.
> - The time spent on the previous frequency is added to the new frequency's
> stats instead of the previous frequency's stats.
>
> This patch fixes all of this.
>
> Signed-off-by: Saravana Kannan <skannan@codeaurora.org>
> ---
MyungJoo/Kyungmin,
Can you please take a look and let me know if this looks ok? Any
possibility of getting this into 3.14?
Thanks,
Saravana
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs
@ 2014-02-28 3:38 Saravana Kannan
2014-03-04 0:35 ` Saravana Kannan
0 siblings, 1 reply; 4+ messages in thread
From: Saravana Kannan @ 2014-02-28 3:38 UTC (permalink / raw)
To: MyungJoo Ham, Kyungmin Park
Cc: linux-pm, linux-kernel, linux-arm-msm, linux-arm-kernel, Saravana Kannan
The current devfreq_update_status() has the following bugs:
- If previous frequency doesn't have a valid level, it does an out of bounds
access into the trans_table and causes memory corruption.
- When the new frequency doesn't have a valid level, the time spent in the
new frequency is counted towards the next valid frequency switch instead of
being ignored.
- The time spent on the previous frequency is added to the new frequency's
stats instead of the previous frequency's stats.
This patch fixes all of this.
Signed-off-by: Saravana Kannan <skannan@codeaurora.org>
---
drivers/devfreq/devfreq.c | 31 ++++++++++++++++++++-----------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/drivers/devfreq/devfreq.c b/drivers/devfreq/devfreq.c
index a0b2f7e..2042ec3 100644
--- a/drivers/devfreq/devfreq.c
+++ b/drivers/devfreq/devfreq.c
@@ -91,26 +91,35 @@ static int devfreq_get_freq_level(struct devfreq *devfreq, unsigned long freq)
*/
static int devfreq_update_status(struct devfreq *devfreq, unsigned long freq)
{
- int lev, prev_lev;
+ int lev, prev_lev, ret = 0;
unsigned long cur_time;
- lev = devfreq_get_freq_level(devfreq, freq);
- if (lev < 0)
- return lev;
-
cur_time = jiffies;
- devfreq->time_in_state[lev] +=
+
+ prev_lev = devfreq_get_freq_level(devfreq, devfreq->previous_freq);
+ if (prev_lev < 0) {
+ ret = prev_lev;
+ goto out;
+ }
+
+ devfreq->time_in_state[prev_lev] +=
cur_time - devfreq->last_stat_updated;
- if (freq != devfreq->previous_freq) {
- prev_lev = devfreq_get_freq_level(devfreq,
- devfreq->previous_freq);
+
+ lev = devfreq_get_freq_level(devfreq, freq);
+ if (lev < 0) {
+ ret = lev;
+ goto out;
+ }
+
+ if (lev != prev_lev) {
devfreq->trans_table[(prev_lev *
devfreq->profile->max_state) + lev]++;
devfreq->total_trans++;
}
- devfreq->last_stat_updated = cur_time;
- return 0;
+out:
+ devfreq->last_stat_updated = cur_time;
+ return ret;
}
/**
--
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-03-04 20:25 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-04 10:06 [PATCH] PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs MyungJoo Ham
2014-03-04 20:25 ` Saravana Kannan
-- strict thread matches above, loose matches on Subject: below --
2014-02-28 3:38 Saravana Kannan
2014-03-04 0:35 ` Saravana Kannan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).