• Vaibhav Jain's avatar
    powerpc: Avoid signed to unsigned conversion in set_thread_tidr() · aca7573f
    Vaibhav Jain authored
    There is an unsafe signed to unsigned conversion in set_thread_tidr()
    that may cause an error value to be assigned to SPRN_TIDR register and
    used as thread-id.
    
    The issue happens as assign_thread_tidr() returns an int and
    thread.tidr is an unsigned-long. So a negative error code returned
    from assign_thread_tidr() will fail the error check and gets assigned
    as tidr as a large positive value.
    
    To fix this the patch assigns the return value of assign_thread_tidr()
    to a temporary int and assigns it to thread.tidr iff its '> 0'.
    
    The patch shouldn't impact the calling convention of set_thread_tidr()
    i.e all -ve return-values are error codes and a return value of '0'
    indicates success.
    
    Fixes: ec233ede("powerpc: Add support for setting SPRN_TIDR")
    Signed-off-by: default avatarVaibhav Jain <vaibhav@linux.vnet.ibm.com>
    Reviewed-by: Christophe Lombard clombard@linux.vnet.ibm.com
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    aca7573f
process.c 55.9 KB