arch/arm64/kvm/hyp/nvhe/ffa.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 30 Oct 2025 18:25:55 +0100
A pointer was assigned to a variable in three function implementations.
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 separate statements into direct variable assignments for
the return values from memory copy actions.
The source code was transformed by using the Coccinelle software.
Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
arch/arm64/kvm/hyp/nvhe/ffa.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c
index 4e16f9b96f63..4820a9e96f80 100644
--- a/arch/arm64/kvm/hyp/nvhe/ffa.c
+++ b/arch/arm64/kvm/hyp/nvhe/ffa.c
@@ -431,8 +431,7 @@ static void do_ffa_mem_frag_tx(struct arm_smccc_1_2_regs *res,
if (!host_buffers.tx)
goto out_unlock;
- buf = hyp_buffers.tx;
- memcpy(buf, host_buffers.tx, fraglen);
+ buf = memcpy(hyp_buffers.tx, host_buffers.tx, fraglen);
nr_ranges = fraglen / sizeof(*buf);
ret = ffa_host_share_ranges(buf, nr_ranges);
@@ -505,8 +504,7 @@ static void __do_ffa_mem_xfer(const u64 func_id,
goto out_unlock;
}
- buf = hyp_buffers.tx;
- memcpy(buf, host_buffers.tx, fraglen);
+ buf = memcpy(hyp_buffers.tx, host_buffers.tx, fraglen);
ep_mem_access = (void *)buf +
ffa_mem_desc_offset(buf, 0, hyp_ffa_version);
@@ -615,8 +613,7 @@ static void do_ffa_mem_reclaim(struct arm_smccc_1_2_regs *res,
goto out_unlock;
}
- buf = ffa_desc_buf.buf;
- memcpy(buf, hyp_buffers.rx, fraglen);
+ buf = memcpy(ffa_desc_buf.buf, hyp_buffers.rx, fraglen);
ffa_rx_release(res);
for (fragoff = fraglen; fragoff < len; fragoff += fraglen) {
--
2.51.1
On Thu, 30 Oct 2025 17:40:39 +0000, Markus Elfring <Markus.Elfring@web.de> wrote: > > From: Markus Elfring <elfring@users.sourceforge.net> > Date: Thu, 30 Oct 2025 18:25:55 +0100 > > A pointer was assigned to a variable in three function implementations. > 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 separate statements into direct variable assignments for > the return values from memory copy actions. > > The source code was transformed by using the Coccinelle software. > > Signed-off-by: Markus Elfring <elfring@users.sourceforge.net> > --- > arch/arm64/kvm/hyp/nvhe/ffa.c | 9 +++------ > 1 file changed, 3 insertions(+), 6 deletions(-) > > diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c > index 4e16f9b96f63..4820a9e96f80 100644 > --- a/arch/arm64/kvm/hyp/nvhe/ffa.c > +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c > @@ -431,8 +431,7 @@ static void do_ffa_mem_frag_tx(struct arm_smccc_1_2_regs *res, > if (!host_buffers.tx) > goto out_unlock; > > - buf = hyp_buffers.tx; > - memcpy(buf, host_buffers.tx, fraglen); > + buf = memcpy(hyp_buffers.tx, host_buffers.tx, fraglen); > nr_ranges = fraglen / sizeof(*buf); This is unreadable. And even if memcpy() behaves has you describe, you are breaking a pattern that people are relying on. I'm not planning to take anything of the sort. Thanks, M. -- Without deviation from the norm, progress is not possible.
© 2016 - 2026 Red Hat, Inc.