• Joel Stanley's avatar
    fsi: core: register with postcore_initcall · 496f8931
    Joel Stanley authored
    When testing an i2c driver that is a fsi bus driver, I saw the following
    oops:
    
     kernel BUG at drivers/base/driver.c:153!
     Internal error: Oops - BUG: 0 [#1] ARM
    
     [<8027cb1c>] (driver_register) from [<80344e88>] (fsi_driver_register+0x2c/0x38)
     [<80344e88>] (fsi_driver_register) from [<805f5ebc>] (fsi_i2c_driver_init+0x1c/0x24)
     [<805f5ebc>] (fsi_i2c_driver_init) from [<805d1f14>] (do_one_initcall+0xb4/0x170)
     [<805d1f14>] (do_one_initcall) from [<805d20f0>] (kernel_init_freeable+0x120/0x1dc)
     [<805d20f0>] (kernel_init_freeable) from [<8043f4a8>] (kernel_init+0x18/0x104)
     [<8043f4a8>] (kernel_init) from [<8000a5e8>] (ret_from_fork+0x14/0x2c)
    
    This is because the fsi bus had not been registered. This fix registers the bus
    with postcore_initcall instead, to ensure it is registered earlier on.
    
    When the fsi core is used as a module this should not be a problem as the fsi
    driver will depend on the fsi bus type symbol, and will therefore load the core
    before the driver.
    
    Fixes: 0508ad1f ("drivers/fsi: Add empty fsi bus definitions")
    Signed-off-by: default avatarJoel Stanley <joel@jms.id.au>
    Acked-by: default avatarJeremy Kerr <jk@ozlabs.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    496f8931
fsi-core.c 20.7 KB