* [PATCH] KVM: arm64: Use pointer from memcpy() call for assignment in init_hyp_mode()
@ 2025-10-30 17:11 Markus Elfring
2025-10-30 17:49 ` Mark Rutland
0 siblings, 1 reply; 3+ messages in thread
From: Markus Elfring @ 2025-10-30 17:11 UTC (permalink / raw)
To: kvmarm, linux-arm-kernel, Catalin Marinas, David Brazdil,
Joey Gouly, Marc Zyngier, Oliver Upton, Suzuki Poulouse,
Will Deacon, Zenghui Yu
Cc: LKML, kernel-janitors, Miaoqian Lin
From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 30 Oct 2025 18:01:41 +0100
A pointer was assigned to a variable. The same pointer was used for
the destination parameter of a memcpy() call.
This function is documented in the way that the same value is returned.
Thus convert two separate statements into a direct variable assignment for
the return value from a memory copy action.
The source code was transformed by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
arch/arm64/kvm/arm.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
index 870953b4a8a7..feab88c31703 100644
--- a/arch/arm64/kvm/arm.c
+++ b/arch/arm64/kvm/arm.c
@@ -2600,8 +2600,8 @@ static int __init init_hyp_mode(void)
goto out_err;
}
- page_addr = page_address(page);
- memcpy(page_addr, CHOOSE_NVHE_SYM(__per_cpu_start), nvhe_percpu_size());
+ page_addr = memcpy(page_address(page), CHOOSE_NVHE_SYM(__per_cpu_start),
+ nvhe_percpu_size());
kvm_nvhe_sym(kvm_arm_hyp_percpu_base)[cpu] = (unsigned long)page_addr;
}
--
2.51.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] KVM: arm64: Use pointer from memcpy() call for assignment in init_hyp_mode()
2025-10-30 17:11 [PATCH] KVM: arm64: Use pointer from memcpy() call for assignment in init_hyp_mode() Markus Elfring
@ 2025-10-30 17:49 ` Mark Rutland
2025-10-30 21:21 ` David Laight
0 siblings, 1 reply; 3+ messages in thread
From: Mark Rutland @ 2025-10-30 17:49 UTC (permalink / raw)
To: Markus Elfring
Cc: kvmarm, linux-arm-kernel, Catalin Marinas, David Brazdil,
Joey Gouly, Marc Zyngier, Oliver Upton, Suzuki Poulouse,
Will Deacon, Zenghui Yu, LKML, kernel-janitors, Miaoqian Lin
On Thu, Oct 30, 2025 at 06:11:03PM +0100, Markus Elfring wrote:
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Thu, 30 Oct 2025 18:01:41 +0100
>
> A pointer was assigned to a variable. The same pointer was used for
> the destination parameter of a memcpy() call.
> This function is documented in the way that the same value is returned.
> Thus convert two separate statements into a direct variable assignment for
> the return value from a memory copy action.
>
> The source code was transformed by using the Coccinelle software.
>
> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> ---
> arch/arm64/kvm/arm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
> index 870953b4a8a7..feab88c31703 100644
> --- a/arch/arm64/kvm/arm.c
> +++ b/arch/arm64/kvm/arm.c
> @@ -2600,8 +2600,8 @@ static int __init init_hyp_mode(void)
> goto out_err;
> }
>
> - page_addr = page_address(page);
> - memcpy(page_addr, CHOOSE_NVHE_SYM(__per_cpu_start), nvhe_percpu_size());
> + page_addr = memcpy(page_address(page), CHOOSE_NVHE_SYM(__per_cpu_start),
> + nvhe_percpu_size());
This change makes the code harder to read, and harder to modify. It
saves no space.
As Dan said [1]:
| No one will thank you for making these changes... :( Please don't do
| it.
[1] https://lore.kernel.org/lkml/aQNsecHJSO2U68Fc@stanley.mountain/
Mark.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] KVM: arm64: Use pointer from memcpy() call for assignment in init_hyp_mode()
2025-10-30 17:49 ` Mark Rutland
@ 2025-10-30 21:21 ` David Laight
0 siblings, 0 replies; 3+ messages in thread
From: David Laight @ 2025-10-30 21:21 UTC (permalink / raw)
To: Mark Rutland
Cc: Markus Elfring, kvmarm, linux-arm-kernel, Catalin Marinas,
David Brazdil, Joey Gouly, Marc Zyngier, Oliver Upton,
Suzuki Poulouse, Will Deacon, Zenghui Yu, LKML, kernel-janitors,
Miaoqian Lin
On Thu, 30 Oct 2025 17:49:51 +0000
Mark Rutland <mark.rutland@arm.com> wrote:
> On Thu, Oct 30, 2025 at 06:11:03PM +0100, Markus Elfring wrote:
> > From: Markus Elfring <elfring@users.sourceforge.net>
> > Date: Thu, 30 Oct 2025 18:01:41 +0100
> >
> > A pointer was assigned to a variable. The same pointer was used for
> > the destination parameter of a memcpy() call.
> > This function is documented in the way that the same value is returned.
> > Thus convert two separate statements into a direct variable assignment for
> > the return value from a memory copy action.
> >
> > The source code was transformed by using the Coccinelle software.
> >
> > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> > ---
> > arch/arm64/kvm/arm.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c
> > index 870953b4a8a7..feab88c31703 100644
> > --- a/arch/arm64/kvm/arm.c
> > +++ b/arch/arm64/kvm/arm.c
> > @@ -2600,8 +2600,8 @@ static int __init init_hyp_mode(void)
> > goto out_err;
> > }
> >
> > - page_addr = page_address(page);
> > - memcpy(page_addr, CHOOSE_NVHE_SYM(__per_cpu_start), nvhe_percpu_size());
> > + page_addr = memcpy(page_address(page), CHOOSE_NVHE_SYM(__per_cpu_start),
> > + nvhe_percpu_size());
>
> This change makes the code harder to read, and harder to modify. It
> saves no space.
It might save a register spill - but really isn't worth the effort.
memcpy() is really best treated as being 'void'.
Indeed most implementations would be better if it were 'void'.
Although you could define:
#define memcpy(d, s, l) ({ auto _d = d; void_memcpy(_d, s, l); _d})
so that the compiler would optimise away the save that memcpy() typically
has to do.
I even suspect that memcpy() is an old enough function that the return
value is 'what the implementation happened to leave in r0'.
David
>
> As Dan said [1]:
>
> | No one will thank you for making these changes... :( Please don't do
> | it.
>
> [1] https://lore.kernel.org/lkml/aQNsecHJSO2U68Fc@stanley.mountain/
>
> Mark.
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2025-10-30 21:22 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-30 17:11 [PATCH] KVM: arm64: Use pointer from memcpy() call for assignment in init_hyp_mode() Markus Elfring
2025-10-30 17:49 ` Mark Rutland
2025-10-30 21:21 ` David Laight
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).