• Mika Westerberg's avatar
    thunderbolt: Initialize Thunderbolt bus earlier · acb40d84
    Mika Westerberg authored
    The 0day kbuild robot reports following crash:
    
      BUG: unable to handle kernel NULL pointer dereference at 00000004
      IP: tb_property_find+0xe/0x41
      *pde = 00000000
      Oops: 0000 [#1]
      CPU: 0 PID: 1 Comm: swapper Not tainted 4.14.0-rc1-00741-ge69b6c02 #412
      Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
      task: 89c80000 task.stack: 89c7c000
      EIP: tb_property_find+0xe/0x41
      EFLAGS: 00210246 CPU: 0
      EAX: 00000000 EBX: 7a368f47 ECX: 00000044 EDX: 7a368f47
      ESI: 8851d340 EDI: 7a368f47 EBP: 89c7df0c ESP: 89c7defc
       DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
      CR0: 80050033 CR2: 00000004 CR3: 027a2000 CR4: 00000690
      Call Trace:
       tb_register_property_dir+0x49/0xb9
       ? cdc_mbim_driver_init+0x1b/0x1b
       tbnet_init+0x77/0x9f
       ? cdc_mbim_driver_init+0x1b/0x1b
       do_one_initcall+0x7e/0x145
       ? parse_args+0x10c/0x1b3
       ? kernel_init_freeable+0xbe/0x159
       kernel_init_freeable+0xd1/0x159
       ? rest_init+0x110/0x110
       kernel_init+0xd/0xd0
       ret_from_fork+0x19/0x30
    
    The reason is that both Thunderbolt bus and thunderbolt-net are build
    into the kernel image, and the latter is linked first because
    drivers/net comes before drivers/thunderbolt. Since both use
    module_init() thunderbolt-net ends up calling Thunderbolt bus functions
    too early triggering the above crash.
    
    Fix this by moving Thunderbolt bus initialization to happen earlier to
    make sure all the data structures are ready when Thunderbolt service
    drivers are initialized. To be on the safe side also add a check for
    properly initialized xdomain_property_dir to tb_register_property_dir().
    Reported-by: default avatarkernel test robot <fengguang.wu@intel.com>
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    acb40d84
xdomain.c 38.9 KB