• Steffen Klassert's avatar
    padata: Fix race on sequence number wrap · 2dc9b5db
    Steffen Klassert authored
    When padata_do_parallel() is called from multiple cpus for the same
    padata instance, we can get object reordering on sequence number wrap
    because testing for sequence number wrap and reseting the sequence
    number must happen atomically but is implemented with two atomic
    operations. This patch fixes this by converting the sequence number
    from atomic_t to an unsigned int and protect the access with a
    spin_lock. As a side effect, we get rid of the sequence number wrap
    handling because the seqence number wraps back to null now without
    the need to do anything.
    Signed-off-by: default avatarSteffen Klassert <steffen.klassert@secunet.com>
    Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
    2dc9b5db
padata.c 27 KB