Thread (32 messages) 32 messages, 7 authors, 2021-10-12

Re: [RFC][PATCH] rcu: Use typeof(p) instead of typeof(*p) *

flat view

From: Jan Engelhardt <hidden>
Date: 2021-10-05 21:09:13
Also in: lkml, netfilter-devel, rcu

On Tuesday 2021-10-05 22:37, Steven Rostedt wrote:
Really, thinking about abstraction, I don't believe there's anything wrong
with returning a pointer of one type, and then typecasting it to a pointer
of another type. Is there? As long as whoever uses the returned type does
nothing with it.
Illegal.
https://en.cppreference.com/w/c/language/conversion
subsection "Pointer conversion"
"No other guarantees are offered"
struct trace_pid_list *trace_pid_list_alloc(void)
{
struct pid_list *pid_list;

pid_list = kmalloc(sizeof(*pid_list), GFP_KERNEL);
[..]

return (struct trace_pid_list *)pid_list;
}
struct trace_pid_list { void *pid_list; };
struct trace_pid_list trace_pid_list_alloc(void)
{
	struct trace_pid_list t;
	t.pid_list = kmalloc(sizeof(t.orig), GFP_KERNEL);
	return t;
}
void freethat(struct strace_pid_list x)
{
	kfree(x.pid_list);
}

Might run afoul of -Waggregate-return in C.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help