Hi Ming On 3/19/19 3:58 PM, Ming Lei wrote: > On Tue, Mar 19, 2019 at 01:17:31PM +0800, jianchao.wang wrote: >> 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 ? > > test_and_set_bit_lock() in __sbitmap_get_word(). Yes, thanks for your pointing out. Would you perhaps detail this in the comment ? Thanks Jianchao > >> >>> + */ >>> + smp_mb(); >> >> smp_mb_before_atomic should be enough. > > Right, will change to it in V2. > > Thanks, > Ming >