Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

media: ABS macro parameter parenthesization

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>

authored by

Dan Gopstein and committed by
Mauro Carvalho Chehab
7aa92c42 62474660

+10 -16
+2 -2
drivers/media/dvb-frontends/dib0090.c
··· 1285 1285 #endif 1286 1286 1287 1287 if (*tune_state == CT_AGC_STEP_1) { /* quickly go to the correct range of the ADC power */ 1288 - if (ABS(adc_error) < 50 || state->agc_step++ > 5) { 1288 + if (abs(adc_error) < 50 || state->agc_step++ > 5) { 1289 1289 1290 1290 #ifdef CONFIG_STANDARD_DAB 1291 1291 if (state->fe->dtv_property_cache.delivery_system == STANDARD_DAB) { ··· 1754 1754 *tune_state = CT_TUNER_STEP_1; 1755 1755 } else { 1756 1756 /* the minimum was what we have seen in the step before */ 1757 - if (ABS(state->adc_diff) > ABS(state->min_adc_diff)) { 1757 + if (abs(state->adc_diff) > abs(state->min_adc_diff)) { 1758 1758 dprintk("Since adc_diff N = %d > adc_diff step N-1 = %d, Come back one step\n", state->adc_diff, state->min_adc_diff); 1759 1759 state->step--; 1760 1760 }
+1 -1
drivers/media/dvb-frontends/dib7000p.c
··· 809 809 { 810 810 u32 internal = dib7000p_get_internal_freq(state); 811 811 s32 unit_khz_dds_val; 812 - u32 abs_offset_khz = ABS(offset_khz); 812 + u32 abs_offset_khz = abs(offset_khz); 813 813 u32 dds = state->cfg.bw->ifreq & 0x1ffffff; 814 814 u8 invert = !!(state->cfg.bw->ifreq & (1 << 25)); 815 815 if (internal == 0) {
+1 -1
drivers/media/dvb-frontends/dib8000.c
··· 2677 2677 static void dib8000_set_dds(struct dib8000_state *state, s32 offset_khz) 2678 2678 { 2679 2679 s16 unit_khz_dds_val; 2680 - u32 abs_offset_khz = ABS(offset_khz); 2680 + u32 abs_offset_khz = abs(offset_khz); 2681 2681 u32 dds = state->cfg.pll->ifreq & 0x1ffffff; 2682 2682 u8 invert = !!(state->cfg.pll->ifreq & (1 << 25)); 2683 2683 u8 ratio;
-2
drivers/media/dvb-frontends/dibx000_common.h
··· 223 223 224 224 #define FE_CALLBACK_TIME_NEVER 0xffffffff 225 225 226 - #define ABS(x) ((x < 0) ? (-x) : (x)) 227 - 228 226 #define DATA_BUS_ACCESS_MODE_8BIT 0x01 229 227 #define DATA_BUS_ACCESS_MODE_16BIT 0x02 230 228 #define DATA_BUS_ACCESS_MODE_NO_ADDRESS_INCREMENT 0x10
+3 -5
drivers/media/dvb-frontends/mb86a16.c
··· 31 31 static unsigned int verbose = 5; 32 32 module_param(verbose, int, 0644); 33 33 34 - #define ABS(x) ((x) < 0 ? (-x) : (x)) 35 - 36 34 struct mb86a16_state { 37 35 struct i2c_adapter *i2c_adap; 38 36 const struct mb86a16_config *config; ··· 1200 1202 1201 1203 signal_dupl = 0; 1202 1204 for (j = 0; j < prev_freq_num; j++) { 1203 - if ((ABS(prev_swp_freq[j] - swp_freq)) < (swp_ofs * 3 / 2)) { 1205 + if ((abs(prev_swp_freq[j] - swp_freq)) < (swp_ofs * 3 / 2)) { 1204 1206 signal_dupl = 1; 1205 1207 dprintk(verbose, MB86A16_INFO, 1, "Probably Duplicate Signal, j = %d", j); 1206 1208 } 1207 1209 } 1208 - if ((signal_dupl == 0) && (swp_freq > 0) && (ABS(swp_freq - state->frequency * 1000) < fcp + state->srate / 6)) { 1210 + if ((signal_dupl == 0) && (swp_freq > 0) && (abs(swp_freq - state->frequency * 1000) < fcp + state->srate / 6)) { 1209 1211 dprintk(verbose, MB86A16_DEBUG, 1, "------ Signal detect ------ [swp_freq=[%07d, srate=%05d]]", swp_freq, state->srate); 1210 1212 prev_swp_freq[prev_freq_num] = swp_freq; 1211 1213 prev_freq_num++; ··· 1379 1381 dprintk(verbose, MB86A16_INFO, 1, "SWEEP Frequency = %d", swp_freq); 1380 1382 swp_freq += delta_freq; 1381 1383 dprintk(verbose, MB86A16_INFO, 1, "Adjusting .., DELTA Freq = %d, SWEEP Freq=%d", delta_freq, swp_freq); 1382 - if (ABS(state->frequency * 1000 - swp_freq) > 3800) { 1384 + if (abs(state->frequency * 1000 - swp_freq) > 3800) { 1383 1385 dprintk(verbose, MB86A16_INFO, 1, "NO -- SIGNAL !"); 1384 1386 } else { 1385 1387
-1
drivers/media/dvb-frontends/stv0367_priv.h
··· 35 35 #endif 36 36 37 37 /* MACRO definitions */ 38 - #define ABS(X) ((X) < 0 ? (-1 * (X)) : (X)) 39 38 #define MAX(X, Y) ((X) >= (Y) ? (X) : (Y)) 40 39 #define MIN(X, Y) ((X) <= (Y) ? (X) : (Y)) 41 40 #define INRANGE(X, Y, Z) \
-1
drivers/media/dvb-frontends/stv0900_priv.h
··· 24 24 25 25 #include <linux/i2c.h> 26 26 27 - #define ABS(X) ((X) < 0 ? (-1 * (X)) : (X)) 28 27 #define INRANGE(X, Y, Z) ((((X) <= (Y)) && ((Y) <= (Z))) \ 29 28 || (((Z) <= (Y)) && ((Y) <= (X))) ? 1 : 0) 30 29
+3 -3
drivers/media/dvb-frontends/stv0900_sw.c
··· 1255 1255 else 1256 1256 intp->freq[d] = stv0900_get_tuner_freq(fe); 1257 1257 1258 - if (ABS(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500)) 1258 + if (abs(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500)) 1259 1259 range = STV0900_RANGEOK; 1260 - else if (ABS(offsetFreq) <= 1260 + else if (abs(offsetFreq) <= 1261 1261 (stv0900_carrier_width(result->symbol_rate, 1262 1262 result->rolloff) / 2000)) 1263 1263 range = STV0900_RANGEOK; 1264 1264 1265 - } else if (ABS(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500)) 1265 + } else if (abs(offsetFreq) <= ((intp->srch_range[d] / 2000) + 500)) 1266 1266 range = STV0900_RANGEOK; 1267 1267 1268 1268 dprintk("%s: range %d\n", __func__, range);