On Wed, Feb 21, 2018 at 11:02 AM, Viresh Kumar <viresh.ku...@linaro.org> wrote: > On 21-02-18, 10:27, Rafael J. Wysocki wrote: >> To be precise, ->init() should fail as that's where the table is >> created. The registration fails as a result then. >> >> But what if the bug is that ->init() doesn't fail when it should? >> >> I guess the core could double check the frequency table after ->init() >> if ->target_index is not NULL. >> >> The overall point here is that if you get a negative index in >> ->fast_switch(), that's way too late anyway and we should be able to >> catch that error much earlier. > > I don't want to end up doing double checking as some of it is already > done at init, but let me check on what can be done.
The driver is expected to call cpufreq_table_validate_and_show() at ->init() time and fail ->init() if that fails. That's kind of fragile, because it depends on the driver to do the right thing.