In Linux Kernel Development (3rd Edition), Kernel Synchronization Methods, Ordering and Barriers. There is an example:
And I'm confused about the statement in this book:
Again, without memory barriers, it would be possible for b to be set to pp before pp was set to p.
So, does the author mean if there is no read_barrier_depends(), b = *pp would be executed before pp = p? How could this be possible?

b to be set to *pbeforepp was set to p, while it's possible thatpcould change its value in between.read_barrier_depends()do?all the reads and writes beforeorall the reads before? 2,read_barrier_dependsonly affect compiler but do not affect processor reordering?