[media] drxj: don't do math if not needed
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>
Sat, 27 Feb 2016 10:51:08 +0000 (07:51 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Tue, 1 Mar 2016 13:55:55 +0000 (10:55 -0300)
While there's no risk of divison by zero, the logic there is akward, as it
does the calculus for the numerator and denominator before checking
if this will be used.

Change the order to check first if the denominator is zero, and only
calculating the numerator/denominator if not.

This should also avoid those smatch errors:
drivers/media/dvb-frontends/drx39xyj/drxj.c:9605 ctrl_get_qam_sig_quality() debug: sval_binop_unsigned: divide by zero
drivers/media/dvb-frontends/drx39xyj/drxj.c:9605 ctrl_get_qam_sig_quality() debug: sval_binop_unsigned: divide by zero
drivers/media/dvb-frontends/drx39xyj/drxj.c:9605 ctrl_get_qam_sig_quality() debug: sval_binop_unsigned: divide by zero
drivers/media/dvb-frontends/drx39xyj/drxj.c:9605 ctrl_get_qam_sig_quality() debug: sval_binop_unsigned: divide by zero
drivers/media/dvb-frontends/drx39xyj/drxj.c:9605 ctrl_get_qam_sig_quality() debug: sval_binop_unsigned: divide by zero

Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/dvb-frontends/drx39xyj/drxj.c

index 51715421bc4fbbebcabda60edfe5d0086ad16622..e48b741d439e33c8778c1a0ee10c3bade1da115a 100644 (file)
@@ -9597,12 +9597,13 @@ ctrl_get_qam_sig_quality(struct drx_demod_instance *demod)
 
           Precision errors still possible.
         */
-       e = post_bit_err_rs * 742686;
-       m = fec_oc_period * 100;
-       if (fec_oc_period == 0)
+       if (!fec_oc_period) {
                qam_post_rs_ber = 0xFFFFFFFF;
-       else
+       } else {
+               e = post_bit_err_rs * 742686;
+               m = fec_oc_period * 100;
                qam_post_rs_ber = e / m;
+       }
 
        /* fill signal quality data structure */
        p->pre_bit_count.stat[0].scale = FE_SCALE_COUNTER;