Hello Jagath Jog J, The patch 961db2da159d: "iio: accel: bma400: Add support for single and double tap events" from Aug 31, 2022, leads to the following Smatch static checker warning: drivers/iio/accel/bma400_core.c:1287 bma400_tap_event_en() error: uninitialized symbol 'field_value'. drivers/iio/accel/bma400_core.c 1242 static int bma400_tap_event_en(struct bma400_data *data, 1243 enum iio_event_direction dir, int state) 1244 { 1245 unsigned int mask, field_value; ^^^^^^^^^^^^ This is uninitialized. 1246 int ret; 1247 1248 /* 1249 * Tap interrupts can be configured only in normal mode. 1250 * See table in section 4.3 "Power modes - performance modes" of 1251 * datasheet v1.2. 1252 */ 1253 if (data->power_mode != POWER_MODE_NORMAL) 1254 return -EINVAL; 1255 1256 /* 1257 * Tap interrupts are operating with a data rate of 200Hz. 1258 * See section 4.7 "Tap sensing interrupt" in datasheet v1.2. 1259 */ 1260 if (data->sample_freq.hz != 200 && state) { 1261 dev_err(data->dev, "Invalid data rate for tap interrupts.\n"); 1262 return -EINVAL; 1263 } 1264 1265 ret = regmap_update_bits(data->regmap, BMA400_INT12_MAP_REG, 1266 BMA400_S_TAP_MSK, 1267 FIELD_PREP(BMA400_S_TAP_MSK, state)); 1268 if (ret) 1269 return ret; 1270 1271 switch (dir) { 1272 case IIO_EV_DIR_SINGLETAP: 1273 mask = BMA400_S_TAP_MSK; 1274 set_mask_bits(&field_value, BMA400_S_TAP_MSK, ^^^^^^^^^^^^ Smatch ought to print a warning here but these macros use a bunch of *(&(*(&field_value))) permutations that confuse Smatch. Smatch does not print a warning if you're just taking the address of a variable. This initializes BIT(3)? I believe that KMSan will detect this as a bug an issue a warning here. 1275 FIELD_PREP(BMA400_S_TAP_MSK, state)); 1276 break; 1277 case IIO_EV_DIR_DOUBLETAP: 1278 mask = BMA400_D_TAP_MSK; 1279 set_mask_bits(&field_value, BMA400_D_TAP_MSK, 1280 FIELD_PREP(BMA400_D_TAP_MSK, state)); 1281 break; 1282 default: 1283 return -EINVAL; 1284 } 1285 1286 ret = regmap_update_bits(data->regmap, BMA400_INT_CONFIG1_REG, mask, --> 1287 field_value); This uses BIT(3). The function only cares about BIT(3) but the other bits are uninitialized. 1288 if (ret) 1289 return ret; 1290 1291 set_mask_bits(&data->tap_event_en_bitmask, mask, field_value); 1292 1293 return 0; 1294 } regards, dan carpenter