All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <nathan@kernel.org>
To: "Thomas Weißschuh" <linux@weissschuh.net>
Cc: Huang Rui <ray.huang@amd.com>,
	"Rafael J. Wysocki" <rafael@kernel.org>,
	Viresh Kumar <viresh.kumar@linaro.org>,
	linux-pm@vger.kernel.org, linux-kernel@vger.kernel.org,
	Jannik Glueckert <jannik.glueckert@gmail.com>,
	Bagas Sanjaya <bagasdotme@gmail.com>,
	Linux LLVM Build Support <llvm@lists.linux.dev>,
	Nick Desaulniers <ndesaulniers@google.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org
Subject: Re: [PATCH] cpufreq: amd-pstate: fix global sysfs attribute type
Date: Mon, 7 Aug 2023 09:06:35 -0700	[thread overview]
Message-ID: <20230807160635.GA3061@dev-arch.thelio-3990X> (raw)
In-Reply-To: <20230807-amd-pstate-cfi-v1-1-0263daa13bc3@weissschuh.net>

Hi Thomas,

On Mon, Aug 07, 2023 at 08:37:45AM +0200, Thomas Weißschuh wrote:
> In commit 3666062b87ec ("cpufreq: amd-pstate: move to use bus_get_dev_root()")
> the "amd_pstate" attributes where moved from a dedicated kobject to the
> cpu root kobject.
> While the dedicated kobject expects to contain kobj_attributes the root
> kobject needs device_attributes.
> 
> As the changed arguments are not used by the callbacks it works most of
> the time.
> However CFI will detect this issue:
> 
> [ 4947.849350] CFI failure at dev_attr_show+0x24/0x60 (target: show_status+0x0/0x70; expected type: 0x8651b1de)
> ...
> [ 4947.849409] Call Trace:
> [ 4947.849410]  <TASK>
> [ 4947.849411]  ? __warn+0xcf/0x1c0
> [ 4947.849414]  ? dev_attr_show+0x24/0x60
> [ 4947.849415]  ? report_cfi_failure+0x4e/0x60
> [ 4947.849417]  ? handle_cfi_failure+0x14c/0x1d0
> [ 4947.849419]  ? __cfi_show_status+0x10/0x10
> [ 4947.849420]  ? handle_bug+0x4f/0x90
> [ 4947.849421]  ? exc_invalid_op+0x1a/0x60
> [ 4947.849422]  ? asm_exc_invalid_op+0x1a/0x20
> [ 4947.849424]  ? __cfi_show_status+0x10/0x10
> [ 4947.849425]  ? dev_attr_show+0x24/0x60
> [ 4947.849426]  sysfs_kf_seq_show+0xa6/0x110
> [ 4947.849433]  seq_read_iter+0x16c/0x4b0
> [ 4947.849436]  vfs_read+0x272/0x2d0
> [ 4947.849438]  ksys_read+0x72/0xe0
> [ 4947.849439]  do_syscall_64+0x76/0xb0
> [ 4947.849440]  ? do_user_addr_fault+0x252/0x650
> [ 4947.849442]  ? exc_page_fault+0x7a/0x1b0
> [ 4947.849443]  entry_SYSCALL_64_after_hwframe+0x72/0xdc
> 
> Reported-by: Jannik Glückert <jannik.glueckert@gmail.com>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=217765
> Link: https://lore.kernel.org/lkml/c7f1bf9b-b183-bf6e-1cbb-d43f72494083@gmail.com/
> Fixes: 3666062b87ec ("cpufreq: amd-pstate: move to use bus_get_dev_root()")
> Cc: stable@vger.kernel.org
> Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>

Thanks a lot for the quick patch! Unfortunately, it seems like neither
of my AMD machines support amd-pstate so I can't test this but it seems
like the right fix to me.

Reviewed-by: Nathan Chancellor <nathan@kernel.org>

> ---
> Note:
> 
> This was not tested with CFI as I don't have the toolchain available.

For the record, I have LLVM toolchains on kernel.org that should be
relatively standalone enough to have them somewhere on your hard drive
then use the LLVM=<prefix>/bin/ syntax that has been supported since
5.18:

https://mirrors.edge.kernel.org/pub/tools/llvm/

> Jannik, could you give it a spin?
> ---
>  drivers/cpufreq/amd-pstate.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c
> index 81fba0dcbee9..9a1e194d5cf8 100644
> --- a/drivers/cpufreq/amd-pstate.c
> +++ b/drivers/cpufreq/amd-pstate.c
> @@ -1012,8 +1012,8 @@ static int amd_pstate_update_status(const char *buf, size_t size)
>  	return 0;
>  }
>  
> -static ssize_t show_status(struct kobject *kobj,
> -			   struct kobj_attribute *attr, char *buf)
> +static ssize_t status_show(struct device *dev,
> +			   struct device_attribute *attr, char *buf)
>  {
>  	ssize_t ret;
>  
> @@ -1024,7 +1024,7 @@ static ssize_t show_status(struct kobject *kobj,
>  	return ret;
>  }
>  
> -static ssize_t store_status(struct kobject *a, struct kobj_attribute *b,
> +static ssize_t status_store(struct device *a, struct device_attribute *b,
>  			    const char *buf, size_t count)
>  {
>  	char *p = memchr(buf, '\n', count);
> @@ -1043,7 +1043,7 @@ cpufreq_freq_attr_ro(amd_pstate_lowest_nonlinear_freq);
>  cpufreq_freq_attr_ro(amd_pstate_highest_perf);
>  cpufreq_freq_attr_rw(energy_performance_preference);
>  cpufreq_freq_attr_ro(energy_performance_available_preferences);
> -define_one_global_rw(status);
> +static DEVICE_ATTR_RW(status);
>  
>  static struct freq_attr *amd_pstate_attr[] = {
>  	&amd_pstate_max_freq,
> @@ -1062,7 +1062,7 @@ static struct freq_attr *amd_pstate_epp_attr[] = {
>  };
>  
>  static struct attribute *pstate_global_attributes[] = {
> -	&status.attr,
> +	&dev_attr_status.attr,
>  	NULL
>  };
>  
> 
> ---
> base-commit: 52a93d39b17dc7eb98b6aa3edb93943248e03b2f
> change-id: 20230807-amd-pstate-cfi-8302498c54f5
> 
> Best regards,
> -- 
> Thomas Weißschuh <linux@weissschuh.net>
> 

  parent reply	other threads:[~2023-08-07 16:06 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-07  6:37 [PATCH] cpufreq: amd-pstate: fix global sysfs attribute type Thomas Weißschuh
2023-08-07  6:47 ` Greg Kroah-Hartman
2023-08-07 16:06 ` Nathan Chancellor [this message]
2023-08-07 17:44   ` Rafael J. Wysocki
2023-08-07 17:19 ` Jannik Glückert

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=20230807160635.GA3061@dev-arch.thelio-3990X \
    --to=nathan@kernel.org \
    --cc=bagasdotme@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jannik.glueckert@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=linux@weissschuh.net \
    --cc=llvm@lists.linux.dev \
    --cc=ndesaulniers@google.com \
    --cc=rafael@kernel.org \
    --cc=ray.huang@amd.com \
    --cc=stable@vger.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.