On Thu, Oct 24, 2024, at 19:55, André Almeida wrote: > Em 24/10/2024 15:03, André Almeida escreveu: >> Em 24/10/2024 12:57, Arnd Bergmann escreveu: >>> On Thu, Oct 24, 2024, at 14:57, André Almeida wrote: >>>> This new syscall allows to set multiple list to the same process. There >>>> are two list types: 32 and 64 bit lists. >>> Assuming we want them to behave the same way, did you intend >>> ROBUST_LIST_64BIT to refer to 64-bit pointers on 32-bit >>> tasks, or should they use normal word-size pointers? >> >> Oh right, I haven't covered that indeed. I think I would need to have >> something like: >> >> static void exit_robust_list_64() >> static void exit_robust_list_32() >> >> And then each function would use explicit sizes for pointers. Also, I >> would rewrite the conditions to make that every combination of 64/32bit >> kernel/app calls the appropriated function. > > Something like this: > > #ifdef CONFIG_64BIT > if (unlikely(tsk->robust_list)) { > exit_robust_list_64bit(tsk, tsk->robust_list); > tsk->robust_list = NULL; > } > #else > if (unlikely(tsk->robust_list)) { > exit_robust_list_32bit(tsk, tsk->robust_list); > tsk->robust_list = NULL; > } > #endif > > #ifdef CONFIG_COMPAT > if (unlikely(tsk->compat_robust_list)) { > exit_robust_32bit(tsk, tsk->compat_robust_list); > tsk->compat_robust_list = NULL; > } > #endif This should work, but I wonder if it ends up simpler to instead have tsk->robust_list64 and tsk->robust_list32 entries and just put the #ifdef CONFIG_64BIT around the code accessing robust_list64. Arnd