On Fri, Apr 12, 2024 at 02:05:47PM +0200, Thomas Gleixner wrote: > On Thu, Apr 11 2024 at 11:45, Nathan Chancellor wrote: > > I have based this change on timers/urgent, as the commit that introduces > > this particular warning is there and it is marked for stable, even > > though this appears to be a generic kselftest issue. I think it makes > > the most sense for this change to go via timers/urgent with Shuah's ack. > > While __noreturn with a return type other than 'void' does not make much > > sense semantically, there are many places that these functions are used > > as the return value for other functions such as main(), so I did not > > change the return type of these functions from 'int' to 'void' to > > minimize the necessary changes for a backport (it is an existing issue > > anyways). > > Hrmm. This really want's to be fixed once the change hits Linus tree as this: > > static inline __noreturn int ksft_exit_pass(void) > > looks seriously broken :) Yeah, I only realized this morning that prior to this change, making these functions return void instead of int would have broken int main(void) { <code> ksft_exit_pass(); } because without __noreturn, the compiler will complain that main() is missing a return value. So 'int' -> '__noreturn void' would have been the proper atomic change but the use of 'return ksft_exit_...();' made that seem rather difficult when I was writing/testing that change on top of this one. However, now that I am actually sitting down and looking at it with a fresh perspective, I am able to produce a pretty mechanical looking change with just two sed commands: sed -i 's;__noreturn\(.*\)int;__noreturn\1void;g' tools/testing/selftests/kselftest.h && sed -i 's/\(\s\+\)return\s\+\(.*ksft_exit_x\?\(fail\|pass\|skip\)\)/\1\2/g' $(git grep -lP 'return.*ksft_exit_x?(fail|pass|skip)' | sed s/:/-/g) Perhaps Shuah could just run that in the kselftest tree and commit the result once the change from Linus's tree is merged there? Otherwise, I am happy to send a formal patch once I have something proper to base on. Thanks for taking just the minimal change :) Cheers, Nathan