Re: kernel 4.6-rc unbootable due to module changes

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Tue, 5 Apr 2016, Mikulas Patocka wrote:

> 
> 
> On Tue, 5 Apr 2016, Helge Deller wrote:
> 
> > On 05.04.2016 19:36, Mikulas Patocka wrote:
> > > On Tue, 5 Apr 2016, Mikulas Patocka wrote:
> > > 
> > >> Hi
> > >>
> > >> The patch "parisc: Use generic extable search and sort routines" makes the 
> > >> kernel unable to load any modules. It fails with:
> > >>
> > >> module unix: Unknown relocation: 9
> > >> modprobe: FATAL: Error inserting unix (/lib/modules/4.6.0-rc2/kernel/net/unix/unix.ko): Invalid module format
> > >>
> > >> When I revert the patch, the kernel 4.6-rc2 boots fine.
> > >>
> > >> Apparently, the function apply_relocate_add in arch/parisc/kernel/module.c 
> > >> doesn't handle the new relocation type.
> > >>
> > >> Mikulas
> > > 
> > > BTW. I'm using hppa64 binutils 2.21 to build the kernel. It generates the 
> > > R_PARISC_PCREL32 relocation that the kernel module loader doesn't handle:
> > 
> > 
> > Can you try attached patch (untested) ?
> > 
> > Helge
> 
> I tried a similar patch, the system booted fine ... but then I discovered 
> that the system boots fine no matter what value is written to *loc.
> 
> Apparently, none of the modules trigger any exceptions in my 
> configuration.
> 
> I'll have to create a test module that triggers some exception.
> 
> Mikulas

Hmm - it's even more strange.

I created a test kernel module that triggers an exception by using 
get_user with an invalid address (see the attached file exception.tar)

On x86-64 the module loads fine, but on pa-risc it always crashes, even 
with older kernel version (I tried versions 2.6.39, 4.5 and 4.6-rc2 and I 
always get a crash).

When I write a userspace code that triggers a fault in module unix.ko, by 
passing an invalid address to the ioctl syscall, the kernel also crashes.

So, it seems that handling exceptions from modules never worked on 
pa-risc, it was just masked by the fact that exceptions from modules don't 
happen during normal use.

Mikulas


/* this will crash pa-risc kernel if it is compiled with CONFIG_UNIX=m */

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>

int main(void)
{
        int s, r;
        s = socket(PF_UNIX, SOCK_STREAM, 0);
        if (s == -1) perror("socket"), exit(1);
        r = ioctl(s, SIOCOUTQ, 0x124);
        if (r == -1) perror("ioctl"), exit(1);
        return 0;
}

Attachment: exception.tar
Description: exception module


[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux