• Rui Miguel Silva's avatar
    greybus: power_supply: rework get descriptors · 9d15134d
    Rui Miguel Silva authored
    Rework the get property descriptors function to fix a memory handling
    error for the response structure. This could corrupt the stack and
    throw nonalignment PC or SP error:
    
    Internal error: SP or PC abort: 8a000000 1 PREEMPT SMP
    Modules linked in: gb_power_supply(O) gb_arche(O) gb_camera(O) gb_es2(O) gb_vibrator(O) gb_raw(O) g]
    CPU: 3 PID: 51 Comm: kworker/u16:2 Tainted: G W O 3.10.73-g8a6af60-00118-g599a5c1 #1
    Workqueue: greybus1:svc gb_svc_connection_destroy [greybus]
    task: ffffffc0ba249580 ti: ffffffc0ba294000 task.ti: ffffffc0ba294000
    PC is at gb_power_supply_connection_init+0x81/0x1dc [gb_power_supply]
    LR is at gb_power_supply_connection_init+0x81/0x1dc [gb_power_supply]
    pc : [<ffffffbffc03b901>] lr : [<ffffffbffc03b901>] pstate: 80000145
    sp : ffffffc0ba297a00
    x29: 32002e002a001100 x28: ffffffc042cb2c80
    
    To fix this, allocate firstly the operation and handle request and
    response using operation payload.
    Signed-off-by: default avatarRui Miguel Silva <rui.silva@linaro.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
    9d15134d
power_supply.c 18.7 KB