Skip to content
  • Gilles Chanteperdrix's avatar
    arm/ipipe: forbid UACCESS_WITH_MEMCPY · 7056fb83
    Gilles Chanteperdrix authored
    The implementation of copy to/from user-space with memcpy requires
    pinning the user-space pages and holding the page table spinlock.
    Enabling this option with I-pipe debug option results in the following
    trace during the execution of the mutex-torture-native unit test:
    
    [  146.850000] I-pipe: Detected illicit call from head domain 'Xenomai'
    [  146.850000]         into a regular Linux service
    [  146.850000] CPU: 0 PID: 760 Comm: main_task Not tainted 3.18.20-ipipe
    [  146.850000] [<c0011fb9>] (unwind_backtrace) from [<c00100fd>]
    (show_stack+0x11/0x14)
    [  146.850000] [<c00100fd>] (show_stack) from [<c00557d5>]
    (ipipe_root_only+0x71/0xa8)
    [  146.850000] [<c00557d5>] (ipipe_root_only) from [<c002e83f>]
    (preempt_count_add+0x1b/0xe0)
    [  146.850000] [<c002e83f>] (preempt_count_add) from [<c0442309>]
    (_raw_spin_lock+0x11/0x1c)
    [  146.850000] [<c0442309>] (_raw_spin_lock) from [<c020e911>]
    (pin_page_for_write+0x49/0x78)
    [  146.850000] [<c020e911>] (pin_page_for_write) from [<c020e999>]
    (__copy_to_user_memcpy+0x59/0xf0)
    [  146.850000] [<c020e999>] (__copy_to_user_memcpy) from [<c0099e61>]
    (__rt_task_inquire+0x69/0x8c)
    [  146.850000] [<c0099e61>] (__rt_task_inquire) from [<c0083cfd>]
    (hisyscall_event+0x131/0x27c)
    [  146.850000] [<c0083cfd>] (hisyscall_event) from [<c00568ab>]
    (__ipipe_notify_syscall+0x5f/0x178)
    [  146.850000] [<c00568ab>] (__ipipe_notify_syscall) from [<c000d6e9>]
    (pipeline_syscall+0x7/0x22)
    [  146.850000] [<c000d6e9>] (pipeline_syscall) from [<bed2ebc8>]
    (0xbed2ebc8)
    7056fb83