• Christophe Leroy's avatar
    gpio: max730x: set gpiochip data pointer before using it · 6f4deb18
    Christophe Leroy authored
    gpiochip_add_data() has to be called before calling
    max7301_direction_input()
    
    [    4.389883] Unable to handle kernel paging request for data at address 0x00000018
    [    4.397282] Faulting instruction address: 0xc01a8cbc
    [    4.402023] Oops: Kernel access of bad area, sig: 11 [#1]
    [    4.407331] PREEMPT CMPC885
    [    4.410131] CPU: 0 PID: 6 Comm: kworker/u2:0 Not tainted 4.5.0-gacdfdee #39
    [    4.418592] Workqueue: deferwq deferred_probe_work_func
    [    4.423711] task: c60798b0 ti: c608a000 task.ti: c608a000
    [    4.429038] NIP: c01a8cbc LR: c01a8e24 CTR: c01ff028
    [    4.433953] REGS: c608bad0 TRAP: 0300   Not tainted  (4.5.0-s3k-dev-gacdfdee-svn-dirty)
    [    4.441847] MSR: 00009032 <EE,ME,IR,DR,RI>  CR: 33039553  XER: a000f940
    [    4.448395] DAR: 00000018 DSISR: c0000000
    GPR00: c01a8e24 c608bb80 c60798b0 c60d6f6c 00000004 00000002 07de2900 00700000
    GPR08: 00000000 00000000 c608a000 00001032 35039553 00000000 c002f37c c6010b64
    GPR16: c6010a48 c6010a14 c6010a00 00000000 c0450000 c0453568 c0453438 c050db14
    GPR24: c62662bc 00000009 ffffffaa c60d6f5d 00000001 00000000 00000000 00000000
    [    4.480371] NIP [c01a8cbc] max7301_direction_input+0x20/0x9c
    [    4.485951] LR [c01a8e24] __max730x_probe+0xec/0x138
    [    4.490812] Call Trace:
    [    4.493268] [c608bba0] [c01a8e24] __max730x_probe+0xec/0x138
    [    4.498878] [c608bbc0] [c01cc368] driver_probe_device+0x190/0x38c
    [    4.504895] [c608bbf0] [c01ca918] bus_for_each_drv+0x58/0xb4
    [    4.510489] [c608bc20] [c01cc04c] __device_attach+0x8c/0x110
    [    4.516082] [c608bc50] [c01cab80] bus_probe_device+0x34/0xb8
    [    4.521673] [c608bc70] [c01c96c8] device_add+0x3c0/0x598
    [    4.526925] [c608bcb0] [c0200f90] spi_add_device+0x114/0x160
    [    4.532512] [c608bcd0] [c02018d0] spi_register_master+0x6e0/0x7c8
    [    4.538537] [c608bd20] [c02019fc] devm_spi_register_master+0x44/0x8c
    [    4.544824] [c608bd40] [c0203854] of_fsl_spi_probe+0x458/0x57c
    [    4.550587] [c608bda0] [c01cd828] platform_drv_probe+0x30/0x74
    [    4.556366] [c608bdb0] [c01cc368] driver_probe_device+0x190/0x38c
    [    4.562383] [c608bde0] [c01ca918] bus_for_each_drv+0x58/0xb4
    [    4.567977] [c608be10] [c01cc04c] __device_attach+0x8c/0x110
    [    4.573572] [c608be40] [c01cab80] bus_probe_device+0x34/0xb8
    [    4.579170] [c608be60] [c01cb9b4] deferred_probe_work_func+0xa4/0xc4
    [    4.585438] [c608be80] [c0029c04] process_one_work+0x22c/0x414
    [    4.591201] [c608bea0] [c002a100] worker_thread+0x314/0x5c0
    [    4.596722] [c608bef0] [c002f444] kthread+0xc8/0xcc
    [    4.601538] [c608bf40] [c000af84] ret_from_kernel_thread+0x5c/0x64
    [    4.607596] Instruction dump:
    [    4.610530] 7c0803a6 bba10014 38210020 4e800020 7c0802a6 9421ffe0 38840004 bf810010
    [    4.618188] 90010024 549cf0be 83c30010 549d0f7c <813e0018> 7fc3f378 7d3f2430 57ff07fe
    [    4.626041] ---[ end trace 303adb021dd4caf2 ]---
    
    Cc: stable@vger.kernel.org
    fixes: 5e45e019 ("gpio: max730x: use gpiochip data pointer")
    Signed-off-by: 's avatarChristophe Leroy <christophe.leroy@c-s.fr>
    Signed-off-by: 's avatarLinus Walleij <linus.walleij@linaro.org>
    6f4deb18