Hello Amit Daniel Kachhap,
The patch e9b60476bea0: "kselftest/arm64: Add utilities and a test to validate mte memory" from Oct 2, 2020, leads to the following Smatch static checker warning:
./tools/testing/selftests/arm64/mte/mte_common_util.c:336 mte_default_setup() warn: bitwise AND condition is false here
./tools/testing/selftests/arm64/mte/mte_common_util.c 316 int mte_default_setup(void) 317 { 318 unsigned long hwcaps2 = getauxval(AT_HWCAP2); 319 unsigned long en = 0; 320 int ret; 321 322 if (!(hwcaps2 & HWCAP2_MTE)) { 323 ksft_print_msg("SKIP: MTE features unavailable\n"); 324 return KSFT_SKIP; 325 } 326 /* Get current mte mode */ 327 ret = prctl(PR_GET_TAGGED_ADDR_CTRL, en, 0, 0, 0); 328 if (ret < 0) { 329 ksft_print_msg("FAIL:prctl PR_GET_TAGGED_ADDR_CTRL with error =%d\n", ret); 330 return KSFT_FAIL; 331 } 332 if (ret & PR_MTE_TCF_SYNC) 333 mte_cur_mode = MTE_SYNC_ERR; 334 else if (ret & PR_MTE_TCF_ASYNC) 335 mte_cur_mode = MTE_ASYNC_ERR; --> 336 else if (ret & PR_MTE_TCF_NONE)
It looks like the intent was to make PR_MTE_TCF_NONE into an ifdef configurable thing but that never happened?
337 mte_cur_mode = MTE_NONE_ERR; 338 339 mte_cur_pstate_tco = mte_get_pstate_tco(); 340 /* Disable PSTATE.TCO */ 341 mte_disable_pstate_tco(); 342 return 0; 343 }
regards, dan carpenter