Message ID | 20250107035141.2858582-1-chao.shun.cheng.tw@gmail.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | mm: avoid implicit type conversion | expand |
On Tue, Jan 07, 2025 at 11:51:41AM +0800, Kenny Cheng wrote: > The function 'task_in_memcg_oom' returns a 'struct mem_cgroup *' type. > If the compiler does not inline this function, a compile error occurs, > as shown below: > > ./include/linux/memcontrol.h:961:9: error: incompatible pointer to > integer conversion returning 'struct mem_cgroup *' from a function with > result type 'unsigned char' [-Wint-conversion] What does inlining have to do with anything? And where has unsigned char come from in that? > This patch avoids the implicit type conversion by ensuring the return > type is correct. > > Signed-off-by: Kenny Cheng <chao.shun.cheng.tw@gmail.com> > --- > include/linux/memcontrol.h | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h > index 5502aa8e138e..47acf1e4f5a7 100644 > --- a/include/linux/memcontrol.h > +++ b/include/linux/memcontrol.h > @@ -1826,7 +1826,7 @@ bool mem_cgroup_oom_synchronize(bool wait); > > static inline bool task_in_memcg_oom(struct task_struct *p) > { > - return p->memcg_in_oom; > + return !!p->memcg_in_oom; > } That makes no sense. Do you have bool (or _Bool) defined or typedefed to unsigned char somewhere? If so, that's the bug that needs to be fixed.
> That makes no sense. Do you have bool (or _Bool) defined or typedefed > to unsigned char somewhere? If so, that's the bug that needs to be > fixed. Yes, you're right! It has defined in the other header file which is the root cause of compiled error. This patch can be ignored, thank you.
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 5502aa8e138e..47acf1e4f5a7 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h @@ -1826,7 +1826,7 @@ bool mem_cgroup_oom_synchronize(bool wait); static inline bool task_in_memcg_oom(struct task_struct *p) { - return p->memcg_in_oom; + return !!p->memcg_in_oom; } static inline void mem_cgroup_enter_user_fault(void)
The function 'task_in_memcg_oom' returns a 'struct mem_cgroup *' type. If the compiler does not inline this function, a compile error occurs, as shown below: ./include/linux/memcontrol.h:961:9: error: incompatible pointer to integer conversion returning 'struct mem_cgroup *' from a function with result type 'unsigned char' [-Wint-conversion] This patch avoids the implicit type conversion by ensuring the return type is correct. Signed-off-by: Kenny Cheng <chao.shun.cheng.tw@gmail.com> --- include/linux/memcontrol.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)