2017-04-12 03:21:21

by Bob Tracy

[permalink] [raw]
Subject: [BUG] alpha: module xxx: Unknown relocation: 1

(Adding linux-kernel to the distribution. The issue seems to be
architecture-specific, but I'm trying to understand what broke.)

The 4.10-rc1 patch set made fairly extensive modifications to
"a/kernel/module.c" (I'm leaving the "a" there so there's no doubt I
mean the top-level "kernel/module.c" file and not any of the
architecture-specific ones).

One of the changes was to replace an include of <asm/uaccess.h> with
<linux/uaccess.h>. This is potentially significant because of the
mod we made to alpha's <asm/uaccess.h> to fix the BRSGP relocation
error on __copy_user() issue.

Bottom line is, no kernel I've built since 4.9 can load a module. All
attempts to load a module result in the error message emitted by
"arch/alpha/kernel/module.c" as follows:

module XXX: Unknown relocation: 1

I'll start attempting to revert the recent module patches to see if that
helps. If anyone reading this knows what's happening, feel free to
weigh-in before I spend too much time rebuilding kernels on a slow
machine.

--Bob


2017-04-12 05:58:15

by Helge Deller

[permalink] [raw]
Subject: Re: [BUG] alpha: module xxx: Unknown relocation: 1

On 12.04.2017 04:59, Bob Tracy wrote:
> (Adding linux-kernel to the distribution. The issue seems to be
> architecture-specific, but I'm trying to understand what broke.)
>
> The 4.10-rc1 patch set made fairly extensive modifications to
> "a/kernel/module.c" (I'm leaving the "a" there so there's no doubt I
> mean the top-level "kernel/module.c" file and not any of the
> architecture-specific ones).
>
> One of the changes was to replace an include of <asm/uaccess.h> with
> <linux/uaccess.h>. This is potentially significant because of the
> mod we made to alpha's <asm/uaccess.h> to fix the BRSGP relocation
> error on __copy_user() issue.
>
> Bottom line is, no kernel I've built since 4.9 can load a module. All
> attempts to load a module result in the error message emitted by
> "arch/alpha/kernel/module.c" as follows:
>
> module XXX: Unknown relocation: 1
>
> I'll start attempting to revert the recent module patches to see if that
> helps. If anyone reading this knows what's happening, feel free to
> weigh-in before I spend too much time rebuilding kernels on a slow
> machine.

I assume it's due this commmit "modversions: treat symbol CRCs as 32 bit quantities":
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71810db27c1c853b335675bee335d893bc3d324b

For parisc this patch solves it:
parisc: support R_PARISC_SECREL32 relocation in modules
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f655322b1ba4bd46e26e307d04098f9c84df764

> module XXX: Unknown relocation: 1

For alpha it seems you need to add similar code to handle R_ALPHA_REFLONG
to apply_relocate_add() in arch/alpha/kernel/module.c

Helge

2017-04-12 07:46:20

by Michael Cree

[permalink] [raw]
Subject: Re: [BUG] alpha: module xxx: Unknown relocation: 1

On Wed, Apr 12, 2017 at 07:57:52AM +0200, Helge Deller wrote:
> On 12.04.2017 04:59, Bob Tracy wrote:
> > Bottom line is, no kernel I've built since 4.9 can load a module. All
> > attempts to load a module result in the error message emitted by
> > "arch/alpha/kernel/module.c" as follows:
> >
> > module XXX: Unknown relocation: 1
> >
>
> I assume it's due this commmit "modversions: treat symbol CRCs as 32 bit quantities":
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71810db27c1c853b335675bee335d893bc3d324b
>
> For parisc this patch solves it:
> parisc: support R_PARISC_SECREL32 relocation in modules
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f655322b1ba4bd46e26e307d04098f9c84df764
>
> > module XXX: Unknown relocation: 1
>
> For alpha it seems you need to add similar code to handle R_ALPHA_REFLONG
> to apply_relocate_add() in arch/alpha/kernel/module.c

Would the attached patch fix it? Untested because I don't see the
above issue.

Cheers
Michael.


Attachments:
(No filename) (1.02 kB)
alpha-fix-missing-reflong.patch (486.00 B)
Download all attachments

2017-04-13 03:46:32

by Bob Tracy

[permalink] [raw]
Subject: Re: [BUG] alpha: module xxx: Unknown relocation: 1

On Wed, Apr 12, 2017 at 07:36:36PM +1200, Michael Cree wrote:
> On Wed, Apr 12, 2017 at 07:57:52AM +0200, Helge Deller wrote:
> > On 12.04.2017 04:59, Bob Tracy wrote:
> > > Bottom line is, no kernel I've built since 4.9 can load a module. All
> > > attempts to load a module result in the error message emitted by
> > > "arch/alpha/kernel/module.c" as follows:
> > >
> > > module XXX: Unknown relocation: 1
> >
> > I assume it's due this commmit "modversions: treat symbol CRCs as 32 bit quantities":
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=71810db27c1c853b335675bee335d893bc3d324b
> >
> > For parisc this patch solves it:
> > parisc: support R_PARISC_SECREL32 relocation in modules
> > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5f655322b1ba4bd46e26e307d04098f9c84df764
> >
> > > module XXX: Unknown relocation: 1
> >
> > For alpha it seems you need to add similar code to handle R_ALPHA_REFLONG
> > to apply_relocate_add() in arch/alpha/kernel/module.c
>
> Would the attached patch fix it? Untested because I don't see the
> above issue.

I'm up and running on 4.11.0-rc6. The patch works. Feel free to add me
as the "Tested-by". Much appreciated!

--Bob