Message ID | 20190507225121.18676-1-ynorov@marvell.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | powerpc: restore current_thread_info() | expand |
On Tue, May 07, 2019 at 03:51:21PM -0700, Yury Norov wrote: > Commit ed1cd6deb013 ("powerpc: Activate CONFIG_THREAD_INFO_IN_TASK") > removes the function current_thread_info(). It's wrong because the > function is used in non-arch code and is part of API. In include/linux/thread_info.h: #ifdef CONFIG_THREAD_INFO_IN_TASK /* * For CONFIG_THREAD_INFO_IN_TASK kernels we need <asm/current.h> for the * definition of current, but for !CONFIG_THREAD_INFO_IN_TASK kernels, * including <asm/current.h> can cause a circular dependency on some platforms. */ #include <asm/current.h> #define current_thread_info() ((struct thread_info *)current) #endif
On Tue, May 07, 2019 at 11:58:56PM +0100, Al Viro wrote: > On Tue, May 07, 2019 at 03:51:21PM -0700, Yury Norov wrote: > > Commit ed1cd6deb013 ("powerpc: Activate CONFIG_THREAD_INFO_IN_TASK") > > removes the function current_thread_info(). It's wrong because the > > function is used in non-arch code and is part of API. > > In include/linux/thread_info.h: > > #ifdef CONFIG_THREAD_INFO_IN_TASK > /* > * For CONFIG_THREAD_INFO_IN_TASK kernels we need <asm/current.h> for the > * definition of current, but for !CONFIG_THREAD_INFO_IN_TASK kernels, > * including <asm/current.h> can cause a circular dependency on some platforms. > */ > #include <asm/current.h> > #define current_thread_info() ((struct thread_info *)current) > #endif Ah, sorry. Then it might be my rebase issue. I was confused because Christophe didn't remove the comment to current_thread_info(), so I decided he removed it erroneously.
Yury Norov <yury.norov@gmail.com> writes: > On Tue, May 07, 2019 at 11:58:56PM +0100, Al Viro wrote: >> On Tue, May 07, 2019 at 03:51:21PM -0700, Yury Norov wrote: >> > Commit ed1cd6deb013 ("powerpc: Activate CONFIG_THREAD_INFO_IN_TASK") >> > removes the function current_thread_info(). It's wrong because the >> > function is used in non-arch code and is part of API. >> >> In include/linux/thread_info.h: >> >> #ifdef CONFIG_THREAD_INFO_IN_TASK >> /* >> * For CONFIG_THREAD_INFO_IN_TASK kernels we need <asm/current.h> for the >> * definition of current, but for !CONFIG_THREAD_INFO_IN_TASK kernels, >> * including <asm/current.h> can cause a circular dependency on some platforms. >> */ >> #include <asm/current.h> >> #define current_thread_info() ((struct thread_info *)current) >> #endif > > Ah, sorry. Then it might be my rebase issue. I was confused because Christophe > didn't remove the comment to current_thread_info(), so I decided he > removed it erroneously. Yeah you're right, that comment should have been removed too. cheers
diff --git a/arch/powerpc/include/asm/thread_info.h b/arch/powerpc/include/asm/thread_info.h index 8e1d0195ac36..f700bc80a607 100644 --- a/arch/powerpc/include/asm/thread_info.h +++ b/arch/powerpc/include/asm/thread_info.h @@ -19,6 +19,7 @@ #ifndef __ASSEMBLY__ #include <linux/cache.h> +#include <asm/current.h> #include <asm/processor.h> #include <asm/page.h> #include <asm/accounting.h> @@ -57,6 +58,11 @@ struct thread_info { #define THREAD_SIZE_ORDER (THREAD_SHIFT - PAGE_SHIFT) /* how to get the thread information struct from C */ +static inline struct thread_info *current_thread_info(void) +{ + return (struct thread_info *)current; +} + extern int arch_dup_task_struct(struct task_struct *dst, struct task_struct *src); #ifdef CONFIG_PPC_BOOK3S_64
Commit ed1cd6deb013 ("powerpc: Activate CONFIG_THREAD_INFO_IN_TASK") removes the function current_thread_info(). It's wrong because the function is used in non-arch code and is part of API. For my series of arm64/ilp32, after applying the patch https://github.com/norov/linux/commit/b269e51eee66ffec3008a3effb12363b91754e49 it causes build break. This patch restores current_thread_info(). Signed-off-by: Yury Norov <ynorov@marvell.com> --- arch/powerpc/include/asm/thread_info.h | 6 ++++++ 1 file changed, 6 insertions(+)