lkml.org 
[lkml]   [2022]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 039/200] powerpc/audit: Fix syscall_get_arch()
    Date
    From: Christophe Leroy <christophe.leroy@csgroup.eu>

    commit 252745240ba0ae774d2f80c5e185ed59fbc4fb41 upstream.

    Commit 770cec16cdc9 ("powerpc/audit: Simplify syscall_get_arch()")
    and commit 898a1ef06ad4 ("powerpc/audit: Avoid unneccessary #ifdef
    in syscall_get_arguments()")
    replaced test_tsk_thread_flag(task, TIF_32BIT)) by is_32bit_task().

    But is_32bit_task() applies on current task while be want the test
    done on task 'task'

    So add a new macro is_tsk_32bit_task() to check any task.

    Fixes: 770cec16cdc9 ("powerpc/audit: Simplify syscall_get_arch()")
    Fixes: 898a1ef06ad4 ("powerpc/audit: Avoid unneccessary #ifdef in syscall_get_arguments()")
    Cc: stable@vger.kernel.org
    Reported-by: Dmitry V. Levin <ldv@altlinux.org>
    Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
    Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/c55cddb8f65713bf5859ed675d75a50cb37d5995.1642159570.git.christophe.leroy@csgroup.eu
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/powerpc/include/asm/syscall.h | 4 ++--
    arch/powerpc/include/asm/thread_info.h | 2 ++
    2 files changed, 4 insertions(+), 2 deletions(-)

    --- a/arch/powerpc/include/asm/syscall.h
    +++ b/arch/powerpc/include/asm/syscall.h
    @@ -90,7 +90,7 @@ static inline void syscall_get_arguments
    unsigned long val, mask = -1UL;
    unsigned int n = 6;

    - if (is_32bit_task())
    + if (is_tsk_32bit_task(task))
    mask = 0xffffffff;

    while (n--) {
    @@ -105,7 +105,7 @@ static inline void syscall_get_arguments

    static inline int syscall_get_arch(struct task_struct *task)
    {
    - if (is_32bit_task())
    + if (is_tsk_32bit_task(task))
    return AUDIT_ARCH_PPC;
    else if (IS_ENABLED(CONFIG_CPU_LITTLE_ENDIAN))
    return AUDIT_ARCH_PPC64LE;
    --- a/arch/powerpc/include/asm/thread_info.h
    +++ b/arch/powerpc/include/asm/thread_info.h
    @@ -168,8 +168,10 @@ static inline bool test_thread_local_fla

    #ifdef CONFIG_COMPAT
    #define is_32bit_task() (test_thread_flag(TIF_32BIT))
    +#define is_tsk_32bit_task(tsk) (test_tsk_thread_flag(tsk, TIF_32BIT))
    #else
    #define is_32bit_task() (IS_ENABLED(CONFIG_PPC32))
    +#define is_tsk_32bit_task(tsk) (IS_ENABLED(CONFIG_PPC32))
    #endif

    #if defined(CONFIG_PPC64)

    \
     
     \ /
      Last update: 2022-01-31 13:09    [W:4.065 / U:0.360 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site