Commit e634d8fc792c ("x86-64: merge the standard and compat
start_thread() functions") removed exporting for the start_thread()
function in what seems like a typo. Add it back to
arch/x86/kernel/process_64.c for parity with process_32.c and other
arch.
Signed-off-by: Rian Hunter <[email protected]>
---
arch/x86/kernel/process_64.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 476e3ddf8890..a451bc374b9b 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -384,6 +384,7 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
start_thread_common(regs, new_ip, new_sp,
__USER_CS, __USER_DS, 0);
}
+EXPORT_SYMBOL_GPL(start_thread);
#ifdef CONFIG_COMPAT
void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp)
--
2.16.3
> On Aug 19, 2018, at 4:08 PM, Rian Hunter <[email protected]> wrote:
>
> Commit e634d8fc792c ("x86-64: merge the standard and compat
> start_thread() functions") removed exporting for the start_thread()
> function in what seems like a typo. Add it back to
> arch/x86/kernel/process_64.c for parity with process_32.c and other
> arch.
What for? Perhaps 32-bit could remove it instead?
>
> Signed-off-by: Rian Hunter <[email protected]>
> ---
> arch/x86/kernel/process_64.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
> index 476e3ddf8890..a451bc374b9b 100644
> --- a/arch/x86/kernel/process_64.c
> +++ b/arch/x86/kernel/process_64.c
> @@ -384,6 +384,7 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
> start_thread_common(regs, new_ip, new_sp,
> __USER_CS, __USER_DS, 0);
> }
> +EXPORT_SYMBOL_GPL(start_thread);
>
> #ifdef CONFIG_COMPAT
> void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp)
> --
> 2.16.3
>
On 2018-08-19 19:29, Andy Lutomirski wrote:
>> On Aug 19, 2018, at 4:08 PM, Rian Hunter <[email protected]> wrote:
>>
>> Commit e634d8fc792c ("x86-64: merge the standard and compat
>> start_thread() functions") removed exporting for the start_thread()
>> function in what seems like a typo. Add it back to
>> arch/x86/kernel/process_64.c for parity with process_32.c and other
>> arch.
>
> What for? Perhaps 32-bit could remove it instead?
>
Came across this while writing a binfmt module. Useful for me but
probably no one else on Earth, at least for another ~9 years on average.
>> Signed-off-by: Rian Hunter <[email protected]>
>> ---
>> arch/x86/kernel/process_64.c | 1 +
>> 1 file changed, 1 insertion(+)
>>
>> diff --git a/arch/x86/kernel/process_64.c
>> b/arch/x86/kernel/process_64.c
>> index 476e3ddf8890..a451bc374b9b 100644
>> --- a/arch/x86/kernel/process_64.c
>> +++ b/arch/x86/kernel/process_64.c
>> @@ -384,6 +384,7 @@ start_thread(struct pt_regs *regs, unsigned long
>> new_ip, unsigned long new_sp)
>> start_thread_common(regs, new_ip, new_sp,
>> __USER_CS, __USER_DS, 0);
>> }
>> +EXPORT_SYMBOL_GPL(start_thread);
>>
>> #ifdef CONFIG_COMPAT
>> void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp)
>> --
>> 2.16.3
>>
On Sun, 19 Aug 2018, Andy Lutomirski wrote:
> > On Aug 19, 2018, at 4:08 PM, Rian Hunter <[email protected]> wrote:
> >
> > Commit e634d8fc792c ("x86-64: merge the standard and compat
> > start_thread() functions") removed exporting for the start_thread()
> > function in what seems like a typo. Add it back to
> > arch/x86/kernel/process_64.c for parity with process_32.c and other
> > arch.
>
> What for? Perhaps 32-bit could remove it instead?
No. start_thread() is called from various binfmt implementations which can
be built as modules.
Thanks,
tglx
> On Aug 20, 2018, at 12:30 AM, Thomas Gleixner <[email protected]> wrote:
>
> On Sun, 19 Aug 2018, Andy Lutomirski wrote:
>>> On Aug 19, 2018, at 4:08 PM, Rian Hunter <[email protected]> wrote:
>>>
>>> Commit e634d8fc792c ("x86-64: merge the standard and compat
>>> start_thread() functions") removed exporting for the start_thread()
>>> function in what seems like a typo. Add it back to
>>> arch/x86/kernel/process_64.c for parity with process_32.c and other
>>> arch.
>>
>> What for? Perhaps 32-bit could remove it instead?
>
> No. start_thread() is called from various binfmt implementations which can
> be built as modules.
Fair enough. I’m fine with the patch.
>
> Thanks,
>
> tglx
Commit-ID: dc76803e57cc86589c4efcb5362918f9b0c0436f
Gitweb: https://git.kernel.org/tip/dc76803e57cc86589c4efcb5362918f9b0c0436f
Author: Rian Hunter <[email protected]>
AuthorDate: Sun, 19 Aug 2018 16:08:53 -0700
Committer: Thomas Gleixner <[email protected]>
CommitDate: Mon, 20 Aug 2018 18:04:42 +0200
x86/process: Re-export start_thread()
The consolidation of the start_thread() functions removed the export
unintentionally. This breaks binfmt handlers built as a module.
Add it back.
Fixes: e634d8fc792c ("x86-64: merge the standard and compat start_thread() functions")
Signed-off-by: Rian Hunter <[email protected]>
Signed-off-by: Thomas Gleixner <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Andy Lutomirski <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: Vitaly Kuznetsov <[email protected]>
Cc: Joerg Roedel <[email protected]>
Cc: Dmitry Safonov <[email protected]>
Cc: Josh Poimboeuf <[email protected]>
Cc: [email protected]
Link: https://lkml.kernel.org/r/[email protected]
---
arch/x86/kernel/process_64.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index 476e3ddf8890..a451bc374b9b 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -384,6 +384,7 @@ start_thread(struct pt_regs *regs, unsigned long new_ip, unsigned long new_sp)
start_thread_common(regs, new_ip, new_sp,
__USER_CS, __USER_DS, 0);
}
+EXPORT_SYMBOL_GPL(start_thread);
#ifdef CONFIG_COMPAT
void compat_start_thread(struct pt_regs *regs, u32 new_ip, u32 new_sp)