• Horia Geant?'s avatar
    crypto: tcrypt - avoid mapping from module image addresses · f074f7b1
    Horia Geant? authored
    The output buffer in test_ahash_speed will point to an address located
    within the tcrypt module image.
    This causes problems when trying to DMA map the buffer.
    For e.g. on ARM-based LS1021A, a page fault occurs within the
    DMA API when trying to access the struct page returned by
    virt_to_page(output):
    
    insmod tcrypt.ko mode=403
    
    testing speed of async sha1 (sha1-caam)
    test  0 (   16 byte blocks,   16 bytes per update,   1 updates):
    Unable to handle kernel paging request at virtual address f07e9080
    pgd = e58d0e00
    [f07e9080] *pgd=80000080007003, *pmd=00000000
    Internal error: Oops: 206 [#1] SMP THUMB2
    Modules linked in: tcrypt(+)
    CPU: 1 PID: 1119 Comm: insmod Not tainted 4.2.0-rc1-256134-gbf433416 #1
    Hardware name: Freescale LS1021A
    task: ea063900 ti: e5a34000 task.ti: e5a34000
    PC is at dma_cache_maint_page+0x38/0xd0
    LR is at __dma_page_cpu_to_dev+0x15/0x64
    pc : [<800155a0>]    lr : [<8001564d>]    psr: 000f0033
    sp : e5a35ca0  ip : 8063df00  fp : f07e9080
    r10: 00000cd0  r9 : 8063df00  r8 : 805a2f04
    r7 : 0017f804  r6 : 00000002  r5 : ee7f9000  r4 : 00000014
    r3 : 80612d40  r2 : 01ff0080  r1 : 00000380  r0 : ee7f9000
    Flags: nzcv  IRQs on  FIQs on  Mode SVC_32  ISA Thumb  Segment user
    Control: 70c5387d  Table: e58d0e00  DAC: 9b7ede70
    Process insmod (pid: 1119, stack limit = 0xe5a34210)
    Stack: (0xe5a35ca0 to 0xe5a36000)
    [...]
    [<800155a0>] (dma_cache_maint_page) from [<8001564d>] (__dma_page_cpu_to_dev+0x15/0x64)
    [<8001564d>] (__dma_page_cpu_to_dev) from [<800156eb>] (arm_dma_map_page+0x1f/0x44)
    [<800156eb>] (arm_dma_map_page) from [<802935e3>] (ahash_digest+0x35f/0x510)
    [<802935e3>] (ahash_digest) from [<7f800d03>] (test_ahash_speed.constprop.6+0x24a/0x4e4 [tcrypt])
    [<7f800d03>] (test_ahash_speed.constprop.6 [tcrypt]) from [<7f802fd5>] (do_test+0x1898/0x2058 [tcrypt])
    [<7f802fd5>] (do_test [tcrypt]) from [<7f80802f>] (tcrypt_mod_init+0x2e/0x63 [tcrypt])
    [<7f80802f>] (tcrypt_mod_init [tcrypt]) from [<80009517>] (do_one_initcall+0xb3/0x134)
    [<80009517>] (do_one_initcall) from [<80351ec7>] (do_init_module+0x3b/0x13c)
    [<80351ec7>] (do_init_module) from [<8005cc3f>] (load_module+0x97b/0x9dc)
    [<8005cc3f>] (load_module) from [<8005cd8d>] (SyS_finit_module+0x35/0x3e)
    [<8005cd8d>] (SyS_finit_module) from [<8000d101>] (ret_fast_syscall+0x1/0x4c)
    Code: 1aba 0152 eb00 0b02 (5882) 0f92
    
    addr2line -f -i -e vmlinux 800155a0
    page_zonenum
    include/linux/mm.h:728
    page_zone
    include/linux/mm.h:881
    dma_cache_maint_page
    arch/arm/mm/dma-mapping.c:822
    Signed-off-by: default avatarHoria Geant? <horia.geanta@freescale.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    f074f7b1
tcrypt.c 53.2 KB