Thread (3 messages) 3 messages, 3 authors, 2025-10-30

Re: [PATCH] KVM: arm64: Use pointer from memcpy() call for assignment in init_hyp_mode()

From: David Laight <hidden>
Date: 2025-10-30 21:21:54
Also in: kernel-janitors, kvmarm, lkml

On Thu, 30 Oct 2025 17:49:51 +0000
Mark Rutland [off-list ref] wrote:
On Thu, Oct 30, 2025 at 06:11:03PM +0100, Markus Elfring wrote:
quoted
From: Markus Elfring <redacted>
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 <redacted>
---
 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/ (local)

Mark.
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help