[CPUFREQ] fix show_trans_table
Fix show_trans_table when it overflows PAGE_SIZE. * Not all snprintf calls were protected against being passed a negative length. * When show_trans_table overflows, len might be > PAGE_SIZE. In that case, returns PAGE_SIZE. Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net> Signed-off-by: Dave Jones <davej@codemonkey.org.uk>
This commit is contained in:
parent
74212ca432
commit
25aca347d4
1 changed files with 5 additions and 1 deletions
|
@ -114,7 +114,7 @@ show_trans_table(struct cpufreq_policy *policy, char *buf)
|
||||||
stat->freq_table[i]);
|
stat->freq_table[i]);
|
||||||
}
|
}
|
||||||
if (len >= PAGE_SIZE)
|
if (len >= PAGE_SIZE)
|
||||||
return len;
|
return PAGE_SIZE;
|
||||||
|
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
||||||
|
|
||||||
|
@ -131,8 +131,12 @@ show_trans_table(struct cpufreq_policy *policy, char *buf)
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "%9u ",
|
len += snprintf(buf + len, PAGE_SIZE - len, "%9u ",
|
||||||
stat->trans_table[i*stat->max_state+j]);
|
stat->trans_table[i*stat->max_state+j]);
|
||||||
}
|
}
|
||||||
|
if (len >= PAGE_SIZE)
|
||||||
|
break;
|
||||||
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
len += snprintf(buf + len, PAGE_SIZE - len, "\n");
|
||||||
}
|
}
|
||||||
|
if (len >= PAGE_SIZE)
|
||||||
|
return PAGE_SIZE;
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
CPUFREQ_STATDEVICE_ATTR(trans_table,0444,show_trans_table);
|
CPUFREQ_STATDEVICE_ATTR(trans_table,0444,show_trans_table);
|
||||||
|
|
Loading…
Reference in a new issue