• Stanimir Varbanov's avatar
    media: venus: hfi_parser: fix a regression in parser · a200c721
    Stanimir Varbanov authored
    This fixes the following data abort:
    
     Unable to handle kernel paging request at virtual address 0000078000000040
     Mem abort info:
       ESR = 0x96000004
       Exception class = DABT (current EL), IL = 32 bits
       SET = 0, FnV = 0
       EA = 0, S1PTW = 0
     Data abort info:
       ISV = 0, ISS = 0x00000004
       CM = 0, WnR = 0
     user pgtable: 4k pages, 48-bit VAs, pgdp = (____ptrval____)
     [0000078000000040] pgd=0000000000000000
     Internal error: Oops: 96000004 [#1] PREEMPT SMP
     Process irq/28-venus (pid: 292, stack limit = 0x(____ptrval____))
     CPU: 0 PID: 292 Comm: irq/28-venus Not tainted 5.2.0-rc1+ #60
     Hardware name: Qualcomm Technologies, Inc. APQ 8016 SBC (DT)
     pstate: 60000005 (nZCv daif -PAN -UAO)
     pc : __memcpy+0x100/0x180
     lr : parse_caps+0x94/0xc0 [venus_core]
     sp : ffff0000114e3990
     x29: ffff0000114e3990 x28: ffff80003a7d0148
     x27: 00000000000df018 x26: ffff000008bd4618
     x25: 0000000000020003 x24: 0000078000000040
     x23: 0000000000000002 x22: 0000000000000002
     x21: ffff80003b9b8080 x20: 0000000000000008
     x19: ffff000010f59000 x18: 0000000000000000
     x17: 0000000000000000 x16: ffff80003c0f9b80
     x15: 0000000000000000 x14: 0100000100000002
     x13: 000000010020100b x12: 000000010000100a
     x11: 0000100000000040 x10: 0000100000000004
     x9 : 0000000000000000 x8 : ffff0000114e3bd8
     x7 : 0000000000000000 x6 : ffff0000114e39d8
     x5 : 0000000000000040 x4 : 0000000000000000
     x3 : 0000000000000010 x2 : 0000000000000000
     x1 : 0000078000000040 x0 : ffff0000114e39d8
     Call trace:
      __memcpy+0x100/0x180
      hfi_parser+0x23c/0x3b8 [venus_core]
      hfi_session_init_done+0x40/0x60 [venus_core]
      hfi_process_msg_packet+0xd4/0x1d8 [venus_core]
      venus_isr_thread+0x1e0/0x230 [venus_core]
      hfi_isr_thread+0x18/0x20 [venus_core]
      irq_thread_fn+0x28/0x78
      irq_thread+0x124/0x1c0
      kthread+0x124/0x128
      ret_from_fork+0x10/0x18
     Code: d503201f d503201f d503201f d503201f (a8c12027)
     ---[ end trace fd253ebaeea05ffc ]---
     genirq: exiting task "irq/28-venus" (292) is an active IRQ thread (irq 28)
    
    by modifying structure members to flexible array members.
    
    Fixes: ded71626 media: hfi_parser: don't trick gcc with a wrong expected size
    Signed-off-by: default avatarStanimir Varbanov <stanimir.varbanov@linaro.org>
    Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+samsung@kernel.org>
    a200c721
hfi_helper.h 31.6 KB