Hi Ming
On 3/19/19 12:24 PM, Ming Lei wrote:
> @@ -591,6 +591,15 @@ EXPORT_SYMBOL_GPL(sbitmap_queue_wake_up);
> void sbitmap_queue_clear(struct sbitmap_queue *sbq, unsigned int nr,
> unsigned int cpu)
> {
> + /*
> + * Once the clear bit is set, it will be visible to allocation
> + * side.
> + *
> + * This memory barrier orders any READ/WRITE on the to-be-freed
> + * asssociated instance for avoiding potential use-after-free, and
> + * its pair is the memory barrier implied in sbitmap_get().
which one ?
> + */
> + smp_mb();
smp_mb_before_atomic should be enough.
> sbitmap_deferred_clear_bit(&sbq->sb, nr);
Thanks
Jianchao