media: ABS macro parameter parenthesization
authorDan Gopstein <dgopstein@nyu.edu>
Mon, 25 Dec 2017 21:16:14 +0000 (16:16 -0500)
committerMauro Carvalho Chehab <mchehab@s-opensource.com>
Tue, 6 Mar 2018 09:08:17 +0000 (04:08 -0500)
Replace usages of the locally defined ABS() macro with calls to the
canonical abs() from kernel.h and remove the old definitions of ABS()

This change was originally motivated by two local definitions of the
ABS (absolute value) macro that fail to parenthesize their parameter
properly. This can lead to a bad expansion for low-precedence
expression arguments.

For example: ABS(1-2) currently expands to ((1-2) < 0 ? (-1-2) : (1-2))
which evaluates to -3. But the correct expansion would be
((1-2) < 0 ? -(1-2) : (1-2)) which evaluates to 1.

Signed-off-by: Dan Gopstein <dgopstein@nyu.edu>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
drivers/media/dvb-frontends/dib0090.c
drivers/media/dvb-frontends/dib7000p.c
drivers/media/dvb-frontends/dib8000.c
drivers/media/dvb-frontends/dibx000_common.h
drivers/media/dvb-frontends/mb86a16.c
drivers/media/dvb-frontends/stv0367_priv.h
drivers/media/dvb-frontends/stv0900_priv.h
drivers/media/dvb-frontends/stv0900_sw.c

index 64f49c8eb1fbcb028f7445a75b2a9da333c68f30..ee7af34979edcf5d862779f81b33778d9d55b584 100644 (file)
@@ -1285,7 +1285,7 @@ int dib0090_gain_control(struct dvb_frontend *fe)
 #endif
 
                        if (*tune_state == CT_AGC_STEP_1) {     /* quickly go to the correct range of the ADC power */
-                               if (ABS(adc_error) < 50 || state->agc_step++ > 5) {
+                               if (abs(adc_error) < 50 || state->agc_step++ > 5) {
 
 #ifdef CONFIG_STANDARD_DAB
                                        if (state->fe->dtv_property_cache.delivery_system == STANDARD_DAB) {
@@ -1754,7 +1754,7 @@ static int dib0090_dc_offset_calibration(struct dib0090_state *state, enum front
                        *tune_state = CT_TUNER_STEP_1;
                } else {
                        /* the minimum was what we have seen in the step before */
-                       if (ABS(state->adc_diff) > ABS(state->min_adc_diff)) {
+                       if (abs(state->adc_diff) > abs(state->min_adc_diff)) {
                                dprintk("Since adc_diff N = %d  > adc_diff step N-1 = %d, Come back one step\n", state->adc_diff, state->min_adc_diff);
                                state->step--;
                        }
index 90ace707a80d7eb9660e0d1d8bcfa78c38a94cc6..902af482448ea5d2c6a552ae6065369f8f61af47 100644 (file)
@@ -809,7 +809,7 @@ static int dib7000p_set_dds(struct dib7000p_state *state, s32 offset_khz)
 {
        u32 internal = dib7000p_get_internal_freq(state);
        s32 unit_khz_dds_val;
-       u32 abs_offset_khz = ABS(offset_khz);
+       u32 abs_offset_khz = abs(offset_khz);
        u32 dds = state->cfg.bw->ifreq & 0x1ffffff;
        u8 invert = !!(state->cfg.bw->ifreq & (1 << 25));
        if (internal == 0) {
index e64014f338fbd5352207c8797487513c63ebc82b..6f35173d2968d9e820badbf6be7f4246441202aa 100644 (file)
@@ -2677,7 +2677,7 @@ static void dib8000_viterbi_state(struct dib8000_state *state, u8 onoff)
 static void dib8000_set_dds(struct dib8000_state *state, s32 offset_khz)
 {
        s16 unit_khz_dds_val;
-       u32 abs_offset_khz = ABS(offset_khz);
+       u32 abs_offset_khz = abs(offset_khz);
        u32 dds = state->cfg.pll->ifreq & 0x1ffffff;
        u8 invert = !!(state->cfg.pll->ifreq & (1 << 25));
        u8 ratio;
index 8784af962eba1c32bfc69d5267ea8ebc6b4270f0..12b58f5c677d81491fa2735d86d870963aa65d4f 100644 (file)
@@ -223,8 +223,6 @@ struct dvb_frontend_parametersContext {
 
 #define FE_CALLBACK_TIME_NEVER 0xffffffff
 
-#define ABS(x) ((x < 0) ? (-x) : (x))
-
 #define DATA_BUS_ACCESS_MODE_8BIT                 0x01
 #define DATA_BUS_ACCESS_MODE_16BIT                0x02
 #define DATA_BUS_ACCESS_MODE_NO_ADDRESS_INCREMENT 0x10
index 2969ba6ed9e103890f7d2764c8e5f148b6492077..377cd984b06992239626d11b81b3b715d5e07368 100644 (file)
@@ -31,8 +31,6 @@
 static unsigned int verbose = 5;
 module_param(verbose, int, 0644);
 
-#define ABS(x)         ((x) < 0 ? (-x) : (x))
-
 struct mb86a16_state {
        struct i2c_adapter              *i2c_adap;
        const struct mb86a16_config     *config;
@@ -1202,12 +1200,12 @@ static int mb86a16_set_fe(struct mb86a16_state *state)
 
                        signal_dupl = 0;
                        for (j = 0; j < prev_freq_num; j++) {
-                               if ((ABS(prev_swp_freq[j] - swp_freq)) < (swp_ofs * 3 / 2)) {
+                               if ((abs(prev_swp_freq[j] - swp_freq)) < (swp_ofs * 3 / 2)) {
                                        signal_dupl = 1;
                                        dprintk(verbose, MB86A16_INFO, 1, "Probably Duplicate Signal, j = %d", j);
                                }
                        }
-                       if ((signal_dupl == 0) && (swp_freq > 0) && (ABS(swp_freq - state->frequency * 1000) < fcp + state->srate / 6)) {
+                       if ((signal_dupl == 0) && (swp_freq > 0) && (abs(swp_freq - state->frequency * 1000) < fcp + state->srate / 6)) {
                                dprintk(verbose, MB86A16_DEBUG, 1, "------ Signal detect ------ [swp_freq=[%07d, srate=%05d]]", swp_freq, state->srate);
                                prev_swp_freq[prev_freq_num] = swp_freq;
                                prev_freq_num++;
@@ -1381,7 +1379,7 @@ static int mb86a16_set_fe(struct mb86a16_state *state)
                        dprintk(verbose, MB86A16_INFO, 1, "SWEEP Frequency = %d", swp_freq);
                        swp_freq += delta_freq;
                        dprintk(verbose, MB86A16_INFO, 1, "Adjusting .., DELTA Freq = %d, SWEEP Freq=%d", delta_freq, swp_freq);
-                       if (ABS(state->frequency * 1000 - swp_freq) > 3800) {
+                       if (abs(state->frequency * 1000 - swp_freq) > 3800) {
                                dprintk(verbose, MB86A16_INFO, 1, "NO  --  SIGNAL !");
                        } else {
 
index 8abc451dd5243e11950e47dc7bec81c35d78214e..460066a391b7e8b30927cdbb109bc117616670fa 100644 (file)
@@ -35,7 +35,6 @@
 #endif
 
 /* MACRO definitions */
-#define ABS(X) ((X) < 0 ? (-1 * (X)) : (X))
 #define MAX(X, Y) ((X) >= (Y) ? (X) : (Y))
 #define MIN(X, Y) ((X) <= (Y) ? (X) : (Y))
 #define INRANGE(X, Y, Z) \
index d1fc06ff27d38b421182c15cd1d7aed2d18f3655..09a46477eae4d6561b647f70d740aa1054ed6903 100644 (file)
@@ -24,7 +24,6 @@
 
 #include <linux/i2c.h>
 
-#define ABS(X) ((X) < 0 ? (-1 * (X)) : (X))
 #define INRANGE(X, Y, Z) ((((X) <= (Y)) && ((Y) <= (Z))) \
                || (((Z) <= (Y)) && ((Y) <= (X))) ? 1 : 0)
 
index c97a39120ea5eaa77cfe21a264dc915d49954bfd..d406c83e4744d0988189c90f12c0c33c68235ab6 100644 (file)
@@ -1255,14 +1255,14 @@ fe_stv0900_signal_type stv0900_get_signal_params(struct dvb_frontend *fe)
                else
                        intp->freq[d] = stv0900_get_tuner_freq(fe);
 
-               if (ABS(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500))
+               if (abs(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500))
                        range = STV0900_RANGEOK;
-               else if (ABS(offsetFreq) <=
+               else if (abs(offsetFreq) <=
                                (stv0900_carrier_width(result->symbol_rate,
                                                result->rolloff) / 2000))
                        range = STV0900_RANGEOK;
 
-       } else if (ABS(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500))
+       } else if (abs(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500))
                range = STV0900_RANGEOK;
 
        dprintk("%s: range %d\n", __func__, range);