[dpdk-dev] [PATCH] eal: fix bug in x86 cmpset

Christian Ehrhardt christian.ehrhardt at canonical.com
Thu Sep 29 15:05:42 CEST 2016


The patch misses a fixed: line which it should get I think.

But in general If applied -> stable for this one?


On Thu, Sep 29, 2016 at 11:24 PM, Nikhil Rao <nikhil.rao at intel.com> wrote:

> The original code used movl instead of xchgl, this caused
> rte_atomic64_cmpset to use ebx as the lower dword of the source
> to cmpxchg8b instead of the lower dword of function argument "src".
>
> Reported-by: Job Abraham <job.abraham at intel.com>
> Tested-by: Job Abraham <job.abraham at intel.com>
> Signed-off-by: Nikhil Rao <nikhil.rao at intel.com>
> ---
>  lib/librte_eal/common/include/arch/x86/rte_atomic_32.h | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
> b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
> index 2e04c75..fb3abf1 100644
> --- a/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
> +++ b/lib/librte_eal/common/include/arch/x86/rte_atomic_32.h
> @@ -81,7 +81,7 @@ rte_atomic64_cmpset(volatile uint64_t *dst, uint64_t
> exp, uint64_t src)
>                         : "memory" );           /* no-clobber list */
>  #else
>         asm volatile (
> -            "mov %%ebx, %%edi\n"
> +            "xchgl %%ebx, %%edi;\n"
>                         MPLOCKED
>                         "cmpxchg8b (%[dst]);"
>                         "setz %[res];"
> --
> 2.7.4
>
>


-- 
Christian Ehrhardt
Software Engineer, Ubuntu Server
Canonical Ltd


More information about the dev mailing list