• AKASHI Takahiro's avatar
    arm64: avoid multiple evaluation of ptr in get_user/put_user() · 1f65c13e
    AKASHI Takahiro authored
    get_user() is defined as a function macro in arm64, and trace_get_user()
    calls it as followed:
         get_user(ch, ptr++);
    Since the second parameter occurs twice in the definition, 'ptr++' is
    unexpectedly evaluated twice and trace_get_user() will generate a bogus
    string from user-provided one. As a result, some ftrace sysfs operations,
    like "echo FUNCNAME > set_ftrace_filter," hit this case and eventually fail.
    This patch fixes the issue both in get_user() and put_user().
    Signed-off-by: default avatarAKASHI Takahiro <takahiro.akashi@linaro.org>
    [catalin.marinas@arm.com: added __user type annotation and s/optr/__p/]
    Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
    1f65c13e
uaccess.h 8.09 KB