Message ID | 20240930154433.521715-1-aleksander.lobakin@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | firmware/psci: fix missing '%u' format literal in kthread_create_on_cpu() | expand |
On Mon, Sep 30, 2024 at 05:44:33PM +0200, Alexander Lobakin wrote: > kthread_create_on_cpu() always requires format string to contain one > '%u' at the end, as it automatically adds the CPU ID when passing it > to kthread_create_on_node(). The former isn't marked as __printf() > as it's not printf-like itself, which effectively hides this from > the compiler. > If you convert this function to printf-like, you'll see the following: > > In file included from drivers/firmware/psci/psci_checker.c:15: > drivers/firmware/psci/psci_checker.c: In function 'suspend_tests': > drivers/firmware/psci/psci_checker.c:401:48: warning: too many arguments for format [-Wformat-extra-args] > 401 | "psci_suspend_test"); > | ^~~~~~~~~~~~~~~~~~~ > drivers/firmware/psci/psci_checker.c:400:32: warning: data argument not used by format string [-Wformat-extra-args] > 400 | (void *)(long)cpu, cpu, > | ^ > 401 | "psci_suspend_test"); > | ~~~~~~~~~~~~~~~~~~~ > > Add the missing format literal to fix this. Now the corresponding > kthread will be named as "psci_suspend_test-<cpuid>", as it's meant by > kthread_create_on_cpu(). > > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202408141012.KhvKaxoh-lkp@intel.com > Closes: https://lore.kernel.org/oe-kbuild-all/202408141243.eQiEOQQe-lkp@intel.com > Fixes: ea8b1c4a6019 ("drivers: psci: PSCI checker module") > Cc: stable@vger.kernel.org # 4.10+ > Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com> > --- > drivers/firmware/psci/psci_checker.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) Acked-by: Lorenzo Pieralisi <lpieralisi@kernel.org> > diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c > index 116eb465cdb4..ecc511c745ce 100644 > --- a/drivers/firmware/psci/psci_checker.c > +++ b/drivers/firmware/psci/psci_checker.c > @@ -398,7 +398,7 @@ static int suspend_tests(void) > > thread = kthread_create_on_cpu(suspend_test_thread, > (void *)(long)cpu, cpu, > - "psci_suspend_test"); > + "psci_suspend_test-%u"); > if (IS_ERR(thread)) > pr_err("Failed to create kthread on CPU %d\n", cpu); > else > -- > 2.46.2 >
From: Alexander Lobakin <aleksander.lobakin@intel.com> Date: Mon, 30 Sep 2024 17:44:33 +0200 > kthread_create_on_cpu() always requires format string to contain one > '%u' at the end, as it automatically adds the CPU ID when passing it > to kthread_create_on_node(). The former isn't marked as __printf() > as it's not printf-like itself, which effectively hides this from > the compiler. > If you convert this function to printf-like, you'll see the following: > > In file included from drivers/firmware/psci/psci_checker.c:15: > drivers/firmware/psci/psci_checker.c: In function 'suspend_tests': > drivers/firmware/psci/psci_checker.c:401:48: warning: too many arguments for format [-Wformat-extra-args] > 401 | "psci_suspend_test"); > | ^~~~~~~~~~~~~~~~~~~ > drivers/firmware/psci/psci_checker.c:400:32: warning: data argument not used by format string [-Wformat-extra-args] > 400 | (void *)(long)cpu, cpu, > | ^ > 401 | "psci_suspend_test"); > | ~~~~~~~~~~~~~~~~~~~ > > Add the missing format literal to fix this. Now the corresponding > kthread will be named as "psci_suspend_test-<cpuid>", as it's meant by > kthread_create_on_cpu(). > > Reported-by: kernel test robot <lkp@intel.com> > Closes: https://lore.kernel.org/oe-kbuild-all/202408141012.KhvKaxoh-lkp@intel.com > Closes: https://lore.kernel.org/oe-kbuild-all/202408141243.eQiEOQQe-lkp@intel.com > Fixes: ea8b1c4a6019 ("drivers: psci: PSCI checker module") > Cc: stable@vger.kernel.org # 4.10+ > Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com> Ping? Who's taking this? > --- > drivers/firmware/psci/psci_checker.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c > index 116eb465cdb4..ecc511c745ce 100644 > --- a/drivers/firmware/psci/psci_checker.c > +++ b/drivers/firmware/psci/psci_checker.c > @@ -398,7 +398,7 @@ static int suspend_tests(void) > > thread = kthread_create_on_cpu(suspend_test_thread, > (void *)(long)cpu, cpu, > - "psci_suspend_test"); > + "psci_suspend_test-%u"); > if (IS_ERR(thread)) > pr_err("Failed to create kthread on CPU %d\n", cpu); > else Thanks, Olek
On Wed, Oct 09, 2024 at 05:26:18PM +0200, Alexander Lobakin wrote: > From: Alexander Lobakin <aleksander.lobakin@intel.com> > Date: Mon, 30 Sep 2024 17:44:33 +0200 > > > kthread_create_on_cpu() always requires format string to contain one > > '%u' at the end, as it automatically adds the CPU ID when passing it > > to kthread_create_on_node(). The former isn't marked as __printf() > > as it's not printf-like itself, which effectively hides this from > > the compiler. > > If you convert this function to printf-like, you'll see the following: > > > > In file included from drivers/firmware/psci/psci_checker.c:15: > > drivers/firmware/psci/psci_checker.c: In function 'suspend_tests': > > drivers/firmware/psci/psci_checker.c:401:48: warning: too many arguments for format [-Wformat-extra-args] > > 401 | "psci_suspend_test"); > > | ^~~~~~~~~~~~~~~~~~~ > > drivers/firmware/psci/psci_checker.c:400:32: warning: data argument not used by format string [-Wformat-extra-args] > > 400 | (void *)(long)cpu, cpu, > > | ^ > > 401 | "psci_suspend_test"); > > | ~~~~~~~~~~~~~~~~~~~ > > > > Add the missing format literal to fix this. Now the corresponding > > kthread will be named as "psci_suspend_test-<cpuid>", as it's meant by > > kthread_create_on_cpu(). > > > > Reported-by: kernel test robot <lkp@intel.com> > > Closes: https://lore.kernel.org/oe-kbuild-all/202408141012.KhvKaxoh-lkp@intel.com > > Closes: https://lore.kernel.org/oe-kbuild-all/202408141243.eQiEOQQe-lkp@intel.com > > Fixes: ea8b1c4a6019 ("drivers: psci: PSCI checker module") > > Cc: stable@vger.kernel.org # 4.10+ > > Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com> > > Ping? Who's taking this? I would expect this to go through the soc tree. Arnd, are you happy to pick this up? FWIW: Acked-by: Mark Rutland <mark.rutland@arm.com> Mark. > > > --- > > drivers/firmware/psci/psci_checker.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c > > index 116eb465cdb4..ecc511c745ce 100644 > > --- a/drivers/firmware/psci/psci_checker.c > > +++ b/drivers/firmware/psci/psci_checker.c > > @@ -398,7 +398,7 @@ static int suspend_tests(void) > > > > thread = kthread_create_on_cpu(suspend_test_thread, > > (void *)(long)cpu, cpu, > > - "psci_suspend_test"); > > + "psci_suspend_test-%u"); > > if (IS_ERR(thread)) > > pr_err("Failed to create kthread on CPU %d\n", cpu); > > else > > Thanks, > Olek
diff --git a/drivers/firmware/psci/psci_checker.c b/drivers/firmware/psci/psci_checker.c index 116eb465cdb4..ecc511c745ce 100644 --- a/drivers/firmware/psci/psci_checker.c +++ b/drivers/firmware/psci/psci_checker.c @@ -398,7 +398,7 @@ static int suspend_tests(void) thread = kthread_create_on_cpu(suspend_test_thread, (void *)(long)cpu, cpu, - "psci_suspend_test"); + "psci_suspend_test-%u"); if (IS_ERR(thread)) pr_err("Failed to create kthread on CPU %d\n", cpu); else
kthread_create_on_cpu() always requires format string to contain one '%u' at the end, as it automatically adds the CPU ID when passing it to kthread_create_on_node(). The former isn't marked as __printf() as it's not printf-like itself, which effectively hides this from the compiler. If you convert this function to printf-like, you'll see the following: In file included from drivers/firmware/psci/psci_checker.c:15: drivers/firmware/psci/psci_checker.c: In function 'suspend_tests': drivers/firmware/psci/psci_checker.c:401:48: warning: too many arguments for format [-Wformat-extra-args] 401 | "psci_suspend_test"); | ^~~~~~~~~~~~~~~~~~~ drivers/firmware/psci/psci_checker.c:400:32: warning: data argument not used by format string [-Wformat-extra-args] 400 | (void *)(long)cpu, cpu, | ^ 401 | "psci_suspend_test"); | ~~~~~~~~~~~~~~~~~~~ Add the missing format literal to fix this. Now the corresponding kthread will be named as "psci_suspend_test-<cpuid>", as it's meant by kthread_create_on_cpu(). Reported-by: kernel test robot <lkp@intel.com> Closes: https://lore.kernel.org/oe-kbuild-all/202408141012.KhvKaxoh-lkp@intel.com Closes: https://lore.kernel.org/oe-kbuild-all/202408141243.eQiEOQQe-lkp@intel.com Fixes: ea8b1c4a6019 ("drivers: psci: PSCI checker module") Cc: stable@vger.kernel.org # 4.10+ Signed-off-by: Alexander Lobakin <aleksander.lobakin@intel.com> --- drivers/firmware/psci/psci_checker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)