summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRasmus Villemoes <linux@rasmusvillemoes.dk>2015-01-14 15:15:57 +0000
committerDavid Howells <dhowells@redhat.com>2015-01-14 15:15:57 +0000
commit7fe21291bad93458100fbbf0078d40cdb529a646 (patch)
treebbc85cda5a693a759053a999c5a6f22e57c0c4ca /lib
parentb2d1965dcea148100ffc4e7199470bf5fad13871 (diff)
downloadlwn-7fe21291bad93458100fbbf0078d40cdb529a646.tar.gz
lwn-7fe21291bad93458100fbbf0078d40cdb529a646.zip
MPILIB: Deobfuscate mpi_cmp
The condition preceding 'return 1;' makes my head hurt. At this point, we know that u and v have the same sign; if they are negative, they compare opposite to how their absolute values compare (which mpihelp_cmp found for us), otherwise cmp itself is the answer. Negating cmp is ok since mpihelp_cmp returns {-1,0,1}; -INT_MIN==INT_MIN won't bite us. Signed-off-by: Rasmus Villemoes <linux@rasmusvillemoes.dk> Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Dmitry Kasatkin <dmitry.kasatkin@gmail.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/mpi/mpi-cmp.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/lib/mpi/mpi-cmp.c b/lib/mpi/mpi-cmp.c
index 1871e7b61ca0..8ed36b8cbe02 100644
--- a/lib/mpi/mpi-cmp.c
+++ b/lib/mpi/mpi-cmp.c
@@ -61,10 +61,8 @@ int mpi_cmp(MPI u, MPI v)
if (!usize)
return 0;
cmp = mpihelp_cmp(u->d, v->d, usize);
- if (!cmp)
- return 0;
- if ((cmp < 0 ? 1 : 0) == (u->sign ? 1 : 0))
- return 1;
- return -1;
+ if (u->sign)
+ return -cmp;
+ return cmp;
}
EXPORT_SYMBOL_GPL(mpi_cmp);