Messages in this thread | | | Subject | question on read_barrier_depends | From | Oliver Neukum <> | Date | Wed, 16 Apr 2014 09:47:09 +0200 |
| |
Hi,
I am looking at memory ordering and a question hit me. I was looking at the kfifo code. kfifo_put() has a barrier:
)[__kfifo->in & __tmp->kfifo.mask] = \ (typeof(*__tmp->type))__val; \ smp_wmb(); \ __kfifo->in++; \
Looking at kfifo_get()
__ret = !kfifo_is_empty(__tmp); \ if (__ret) { \ *(typeof(__tmp->type))__val = \ (__is_kfifo_ptr(__tmp) ? \
A thought struck me. There is no corresponding barrier. I cannot help myself, but I think there needs to be a smp_read_barrier_depends() between reading kfifo->in (in kfifo_is empty) and reading val. What do you think?
Regards Oliver
| |