Thread (42 messages) 42 messages, 13 authors, 2025-03-13

Re: [PATCH *-next 00/18] Remove weird and needless 'return' for void APIs

From: Peter Zijlstra <peterz@infradead.org>
Date: 2025-02-27 13:04:15
Also in: linux-arch, linux-crypto, linux-gpio, linux-iommu, linux-mm, linux-pm, linux-rdma, linux-wireless, lkml

On Thu, Feb 27, 2025 at 08:48:19PM +0800, Zijun Hu wrote:
On 2025/2/21 21:02, Zijun Hu wrote:
quoted
void api_func_a(...);

static inline void api_func_b(...)
{
	return api_func_a(...);
}
The Usage : Return void function in void function

IMO, perhaps, the usage is not good since:

A) STD C does not like the usage, and i find GCC has no description
about the usage.
   C11/C17: 6.8.6.4 The return statement
   "A return statement with an expression shall not appear in a
function whose return type is void"
We really don't use STD C, the kernel is littered with extensions.
B) According to discussion, the usage have function that return type
   of the callee api_func_a() is monitored. but this function has below
shortcoming as well:

the monitor is not needed if the caller api_func_b() is in the same
module with the callee api_func_a(), otherwise, provided the callee is
a API and provided by author of other module. the author needs to clean
up lot of usages of the API if he/she changes the API's return type from
void to any other type, so it is not nice to API provider.

C) perhaps, most ordinary developers don't known the function mentioned
   by B), and also feel strange for the usage
It is quite common to do kernel wide updates using scripts / cocinelle.

If you have a specialization that wraps a function to fill out a default
value, then you want the return types to keep matching.

Ex.

return_type foo(type1 a1, type2 a2);

return_type my_foo(type1 a1)
{
	return foo(a1, value);
}

is a normal thing to do. The whole STD C cannot return void bollocks
breaks that when return_type := void, so in that regards I would call
this a STD C defect.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help