Ftarget, Fret, n and m are unsigned so the tests did not work.
Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Cc: Andres Salomon <dilinger@debian.org>
Cc: Krzysztof Helt <krzysztof.h1@poczta.fm>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
 
                /* 3 <= m <= 257 */
                if (m >= 3 && m <= 257) {
-                       unsigned new_error = ((Ftarget * n) - (Fref * m)) >= 0 ?
+                       unsigned new_error = Ftarget * n >= Fref * m ?
                                               ((Ftarget * n) - (Fref * m)) : ((Fref * m) - (Ftarget * n));
                        if (new_error < best_error) {
                                best_n = n;
                else if (m <= 1028) {
                        /* remember there are still only 8-bits of precision in m, so
                         * avoid over-optimistic error calculations */
-                       unsigned new_error = ((Ftarget * n) - (Fref * (m & ~3))) >= 0 ?
+                       unsigned new_error = Ftarget * n >= Fref * (m & ~3) ?
                                               ((Ftarget * n) - (Fref * (m & ~3))) : ((Fref * (m & ~3)) - (Ftarget * n));
                        if (new_error < best_error) {
                                best_n = n;