All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Yajun Deng" <yajun.deng@linux.dev>
To: "Rafael J. Wysocki" <rafael@kernel.org>
Cc: viresh.kumar@linaro.org, linux-pm@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] cpufreq: Fix policy->freq_table is NULL in __cpufreq_driver_target()
Date: Thu, 30 Mar 2023 01:39:18 +0000	[thread overview]
Message-ID: <b0e52380c54775073d44bc97f823ec4f@linux.dev> (raw)
In-Reply-To: <CAJZ5v0iWkJw3KP7sfyDOyYsEkdOxxPhkYiYZMvd78geofGEECQ@mail.gmail.com>

March 29, 2023 10:21 PM, "Rafael J. Wysocki" <rafael@kernel.org> wrote:

> On Wed, Mar 29, 2023 at 3:36 PM Yajun Deng <yajun.deng@linux.dev> wrote:
> 
>> __resolve_freq() may be return target_freq if policy->freq_table is
>> NULL. In this case, it should return -EINVAL before __target_index().
> 
> Even so, __target_index() itself doesn't dereference freq_table
> AFAICS, so arguably the driver should be prepared to deal with a NULL
> freq_table which comes from it after all.
> 

But there is a statement 'unsigned int newfreq = policy->freq_table[index].frequency;'
in __target_index(), if driver doesn't provide freq_table, __target_index()
will fault before the driver itself.

> Or, if you want to argue that drivers providing ->target_index() must
> also provide freq_table that is not NULL, a check to that effect needs
> to be done at the driver registration time IMO.
> 
>> Signed-off-by: Yajun Deng <yajun.deng@linux.dev>
>> ---
>> drivers/cpufreq/cpufreq.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/drivers/cpufreq/cpufreq.c b/drivers/cpufreq/cpufreq.c
>> index c0e5be0fe2d6..308a3df1a940 100644
>> --- a/drivers/cpufreq/cpufreq.c
>> +++ b/drivers/cpufreq/cpufreq.c
>> @@ -2299,7 +2299,7 @@ int __cpufreq_driver_target(struct cpufreq_policy *policy,
>> return cpufreq_driver->target(policy, target_freq, relation);
>> }
>> 
>> - if (!cpufreq_driver->target_index)
>> + if (!cpufreq_driver->target_index || !policy->freq_table)
>> return -EINVAL;
>> 
>> return __target_index(policy, policy->cached_resolved_idx);
>> --

  parent reply	other threads:[~2023-03-30  1:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-03-29 13:36 [PATCH] cpufreq: Fix policy->freq_table is NULL in __cpufreq_driver_target() Yajun Deng
2023-03-29 14:21 ` Rafael J. Wysocki
2023-03-30  1:39 ` Yajun Deng [this message]
2023-03-30  3:57   ` Viresh Kumar
2023-03-30 10:10     ` Rafael J. Wysocki
2023-04-03  4:11 ` Viresh Kumar
2023-04-04  3:08 ` Yajun Deng

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=b0e52380c54775073d44bc97f823ec4f@linux.dev \
    --to=yajun.deng@linux.dev \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=rafael@kernel.org \
    --cc=viresh.kumar@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.