powerpc/perf/hv-24x7: Fix incorrect comparison in memord

Message ID 1507546364-27628-1-git-send-email-mpe@ellerman.id.au
State Accepted
Commit 05c14c03138532a3cb2aa29c2960445c8753343b
Headers show
Series
  • powerpc/perf/hv-24x7: Fix incorrect comparison in memord
Related show

Commit Message

Michael Ellerman Oct. 9, 2017, 10:52 a.m.
In the hv-24x7 code there is a function memord() which tries to
implement a sort function return -1, 0, 1. However one of the
conditions is incorrect, such that it can never be true, because we
will have already returned.

I don't believe there is a bug in practice though, because the
comparisons are an optimisation prior to calling memcmp().

Fix it by swapping the second comparision, so it can be true.

Reported-by: David Binderman <dcb314@hotmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
---
 arch/powerpc/perf/hv-24x7.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Michael Ellerman Oct. 24, 2017, 8:08 a.m. | #1
On Mon, 2017-10-09 at 10:52:44 UTC, Michael Ellerman wrote:
> In the hv-24x7 code there is a function memord() which tries to
> implement a sort function return -1, 0, 1. However one of the
> conditions is incorrect, such that it can never be true, because we
> will have already returned.
> 
> I don't believe there is a bug in practice though, because the
> comparisons are an optimisation prior to calling memcmp().
> 
> Fix it by swapping the second comparision, so it can be true.
> 
> Reported-by: David Binderman <dcb314@hotmail.com>
> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>

Applied to powerpc next.

https://git.kernel.org/powerpc/c/05c14c03138532a3cb2aa29c296044

cheers

Patch

diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
index 9c88b82f6229..72238eedc360 100644
--- a/arch/powerpc/perf/hv-24x7.c
+++ b/arch/powerpc/perf/hv-24x7.c
@@ -540,7 +540,7 @@  static int memord(const void *d1, size_t s1, const void *d2, size_t s2)
 {
 	if (s1 < s2)
 		return 1;
-	if (s2 > s1)
+	if (s1 > s2)
 		return -1;
 
 	return memcmp(d1, d2, s1);