For powerpc the __jump_table section in modules is not aligned, this
causes a WARN_ON() splat when loading a module containing a __jump_table.
Strict alignment became necessary with commit 3821fd35b58d
("jump_label: Reduce the size of struct static_key"), currently in
linux-next, which uses the two least significant bits of pointers to
__jump_table elements.
Fix by forcing __jump_table to 8, which is the same alignment used for
this section in the kernel proper.
Signed-off-by: David Daney <[email protected]>
Tested-by: Sachin Sant <[email protected]>
---
scripts/module-common.lds | 2 ++
1 file changed, 2 insertions(+)
diff --git a/scripts/module-common.lds b/scripts/module-common.lds
index 73a2c7d..53234e8 100644
--- a/scripts/module-common.lds
+++ b/scripts/module-common.lds
@@ -19,4 +19,6 @@ SECTIONS {
. = ALIGN(8);
.init_array 0 : { *(SORT(.init_array.*)) *(.init_array) }
+
+ __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
}
--
2.9.3
David Daney <[email protected]> writes:
> For powerpc the __jump_table section in modules is not aligned, this
> causes a WARN_ON() splat when loading a module containing a __jump_table.
Thanks for doing the patch.
If it helps:
Acked-by: Michael Ellerman <[email protected]> (powerpc)
> Strict alignment became necessary with commit 3821fd35b58d
> ("jump_label: Reduce the size of struct static_key"), currently in
> linux-next, which uses the two least significant bits of pointers to
> __jump_table elements.
It would obviously be nice if this could go in before the commit that
exposes the breakage, but I guess that's problematic because Steve
doesn't want to rebase the tracing tree.
Steve I think you've already sent your pull request for this cycle? So I
guess if this can go in your first batch of fixes?
Or we could just send it directly to Linus?
cheers
> Fix by forcing __jump_table to 8, which is the same alignment used for
> this section in the kernel proper.
>
> Signed-off-by: David Daney <[email protected]>
> Tested-by: Sachin Sant <[email protected]>
> ---
> scripts/module-common.lds | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/scripts/module-common.lds b/scripts/module-common.lds
> index 73a2c7d..53234e8 100644
> --- a/scripts/module-common.lds
> +++ b/scripts/module-common.lds
> @@ -19,4 +19,6 @@ SECTIONS {
>
> . = ALIGN(8);
> .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) }
> +
> + __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
> }
> --
> 2.9.3
Michael Ellerman <[email protected]> writes:
> David Daney <[email protected]> writes:
>> Strict alignment became necessary with commit 3821fd35b58d
>> ("jump_label: Reduce the size of struct static_key"), currently in
>> linux-next, which uses the two least significant bits of pointers to
>> __jump_table elements.
>
> It would obviously be nice if this could go in before the commit that
> exposes the breakage, but I guess that's problematic because Steve
> doesn't want to rebase the tracing tree.
>
> Steve I think you've already sent your pull request for this cycle? So I
> guess if this can go in your first batch of fixes?
Ugh. Was looking at the wrong tree - Linus has already merged the commit
in question, so the above is all moot.
cheers
On 03/01/2017 05:04 PM, David Daney wrote:
> For powerpc the __jump_table section in modules is not aligned, this
> causes a WARN_ON() splat when loading a module containing a __jump_table.
>
> Strict alignment became necessary with commit 3821fd35b58d
> ("jump_label: Reduce the size of struct static_key"), currently in
> linux-next, which uses the two least significant bits of pointers to
> __jump_table elements.
>
> Fix by forcing __jump_table to 8, which is the same alignment used for
> this section in the kernel proper.
>
> Signed-off-by: David Daney <[email protected]>
> Tested-by: Sachin Sant <[email protected]>
> ---
Looks good to me.
Reviewed-by: Jason Baron <[email protected]>
Thanks,
-Jason
On Thu, 02 Mar 2017 22:18:30 +1100
Michael Ellerman <[email protected]> wrote:
> Michael Ellerman <[email protected]> writes:
> > David Daney <[email protected]> writes:
> >> Strict alignment became necessary with commit 3821fd35b58d
> >> ("jump_label: Reduce the size of struct static_key"), currently in
> >> linux-next, which uses the two least significant bits of pointers to
> >> __jump_table elements.
> >
> > It would obviously be nice if this could go in before the commit that
> > exposes the breakage, but I guess that's problematic because Steve
> > doesn't want to rebase the tracing tree.
> >
> > Steve I think you've already sent your pull request for this cycle? So I
> > guess if this can go in your first batch of fixes?
>
> Ugh. Was looking at the wrong tree - Linus has already merged the commit
> in question, so the above is all moot.
No problem. I've got some other "fixes" to push to Linus. That's what
the -rc releases are for. To fix up breakage from the merge window ;-)
I'll pull this into my tree.
Thanks!
-- Steve
Can I get an Ack from a module maintainer?
Thanks!
-- Steve
On Wed, 1 Mar 2017 14:04:53 -0800
David Daney <[email protected]> wrote:
> For powerpc the __jump_table section in modules is not aligned, this
> causes a WARN_ON() splat when loading a module containing a __jump_table.
>
> Strict alignment became necessary with commit 3821fd35b58d
> ("jump_label: Reduce the size of struct static_key"), currently in
> linux-next, which uses the two least significant bits of pointers to
> __jump_table elements.
>
> Fix by forcing __jump_table to 8, which is the same alignment used for
> this section in the kernel proper.
>
> Signed-off-by: David Daney <[email protected]>
> Tested-by: Sachin Sant <[email protected]>
> ---
> scripts/module-common.lds | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/scripts/module-common.lds b/scripts/module-common.lds
> index 73a2c7d..53234e8 100644
> --- a/scripts/module-common.lds
> +++ b/scripts/module-common.lds
> @@ -19,4 +19,6 @@ SECTIONS {
>
> . = ALIGN(8);
> .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) }
> +
> + __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
> }
+++ Steven Rostedt [02/03/17 13:11 -0500]:
>
>Can I get an Ack from a module maintainer?
Acked-by: Jessica Yu <[email protected]>
Thanks!
Jessica
>On Wed, 1 Mar 2017 14:04:53 -0800
>David Daney <[email protected]> wrote:
>
>> For powerpc the __jump_table section in modules is not aligned, this
>> causes a WARN_ON() splat when loading a module containing a __jump_table.
>>
>> Strict alignment became necessary with commit 3821fd35b58d
>> ("jump_label: Reduce the size of struct static_key"), currently in
>> linux-next, which uses the two least significant bits of pointers to
>> __jump_table elements.
>>
>> Fix by forcing __jump_table to 8, which is the same alignment used for
>> this section in the kernel proper.
>>
>> Signed-off-by: David Daney <[email protected]>
>> Tested-by: Sachin Sant <[email protected]>
>> ---
>> scripts/module-common.lds | 2 ++
>> 1 file changed, 2 insertions(+)
>>
>> diff --git a/scripts/module-common.lds b/scripts/module-common.lds
>> index 73a2c7d..53234e8 100644
>> --- a/scripts/module-common.lds
>> +++ b/scripts/module-common.lds
>> @@ -19,4 +19,6 @@ SECTIONS {
>>
>> . = ALIGN(8);
>> .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) }
>> +
>> + __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
>> }
>
On 03/02/2017 10:26 AM, Jessica Yu wrote:
> +++ Steven Rostedt [02/03/17 13:11 -0500]:
>>
>> Can I get an Ack from a module maintainer?
>
> Acked-by: Jessica Yu <[email protected]>
>
> Thanks!
>
> Jessica
Thanks Jessica,
Can you also add scripts/module-common.lds to MAINTAINERS so that
get_maintainers.pl will indicate that Jessica Yu and Rusty Russell be
CCed on things like this in the future?
>
>> On Wed, 1 Mar 2017 14:04:53 -0800
>> David Daney <[email protected]> wrote:
>>
>>> For powerpc the __jump_table section in modules is not aligned, this
>>> causes a WARN_ON() splat when loading a module containing a
>>> __jump_table.
>>>
>>> Strict alignment became necessary with commit 3821fd35b58d
>>> ("jump_label: Reduce the size of struct static_key"), currently in
>>> linux-next, which uses the two least significant bits of pointers to
>>> __jump_table elements.
>>>
>>> Fix by forcing __jump_table to 8, which is the same alignment used for
>>> this section in the kernel proper.
>>>
>>> Signed-off-by: David Daney <[email protected]>
>>> Tested-by: Sachin Sant <[email protected]>
>>> ---
>>> scripts/module-common.lds | 2 ++
>>> 1 file changed, 2 insertions(+)
>>>
>>> diff --git a/scripts/module-common.lds b/scripts/module-common.lds
>>> index 73a2c7d..53234e8 100644
>>> --- a/scripts/module-common.lds
>>> +++ b/scripts/module-common.lds
>>> @@ -19,4 +19,6 @@ SECTIONS {
>>>
>>> . = ALIGN(8);
>>> .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) }
>>> +
>>> + __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
>>> }
>>
+++ David Daney [02/03/17 11:24 -0800]:
>On 03/02/2017 10:26 AM, Jessica Yu wrote:
>>+++ Steven Rostedt [02/03/17 13:11 -0500]:
>>>
>>>Can I get an Ack from a module maintainer?
>>
>>Acked-by: Jessica Yu <[email protected]>
>>
>>Thanks!
>>
>>Jessica
>
>Thanks Jessica,
>
>Can you also add scripts/module-common.lds to MAINTAINERS so that
>get_maintainers.pl will indicate that Jessica Yu and Rusty Russell be
>CCed on things like this in the future?
Sure thing. Thanks for the heads up!
Jessica
>>>On Wed, 1 Mar 2017 14:04:53 -0800
>>>David Daney <[email protected]> wrote:
>>>
>>>>For powerpc the __jump_table section in modules is not aligned, this
>>>>causes a WARN_ON() splat when loading a module containing a
>>>>__jump_table.
>>>>
>>>>Strict alignment became necessary with commit 3821fd35b58d
>>>>("jump_label: Reduce the size of struct static_key"), currently in
>>>>linux-next, which uses the two least significant bits of pointers to
>>>>__jump_table elements.
>>>>
>>>>Fix by forcing __jump_table to 8, which is the same alignment used for
>>>>this section in the kernel proper.
>>>>
>>>>Signed-off-by: David Daney <[email protected]>
>>>>Tested-by: Sachin Sant <[email protected]>
>>>>---
>>>> scripts/module-common.lds | 2 ++
>>>> 1 file changed, 2 insertions(+)
>>>>
>>>>diff --git a/scripts/module-common.lds b/scripts/module-common.lds
>>>>index 73a2c7d..53234e8 100644
>>>>--- a/scripts/module-common.lds
>>>>+++ b/scripts/module-common.lds
>>>>@@ -19,4 +19,6 @@ SECTIONS {
>>>>
>>>> . = ALIGN(8);
>>>> .init_array 0 : { *(SORT(.init_array.*)) *(.init_array) }
>>>>+
>>>>+ __jump_table 0 : ALIGN(8) { KEEP(*(__jump_table)) }
>>>> }
>>>
>
Steven Rostedt <[email protected]> writes:
> On Thu, 02 Mar 2017 22:18:30 +1100
> Michael Ellerman <[email protected]> wrote:
>> Michael Ellerman <[email protected]> writes:
>> > David Daney <[email protected]> writes:
>> >> Strict alignment became necessary with commit 3821fd35b58d
>> >> ("jump_label: Reduce the size of struct static_key"), currently in
>> >> linux-next, which uses the two least significant bits of pointers to
>> >> __jump_table elements.
>> >
>> > It would obviously be nice if this could go in before the commit that
>> > exposes the breakage, but I guess that's problematic because Steve
>> > doesn't want to rebase the tracing tree.
>> >
>> > Steve I think you've already sent your pull request for this cycle? So I
>> > guess if this can go in your first batch of fixes?
>>
>> Ugh. Was looking at the wrong tree - Linus has already merged the commit
>> in question, so the above is all moot.
>
> No problem. I've got some other "fixes" to push to Linus. That's what
> the -rc releases are for. To fix up breakage from the merge window ;-)
Yep, no drama.
> I'll pull this into my tree.
Thanks.
cheers