datapath: Don't rcu_dereference() objects in table.
authorJesse Gross <jesse@nicira.com>
Mon, 6 Dec 2010 19:26:16 +0000 (11:26 -0800)
committerJesse Gross <jesse@nicira.com>
Fri, 10 Dec 2010 01:43:37 +0000 (17:43 -0800)
commit79863c64f9085114759fb1125e35f377301441fb
tree7c0175a703caaa631e23bb75a4cebad4e96e30ab
parent1e71f10f38d2ad09ee854b7e926a63744a1883e1
datapath: Don't rcu_dereference() objects in table.

Each time that we modify the flow/port table, we reallocate the
array of pointers to objects in a particular bucket.  We then use
RCU to update the link to that bucket.  This means that we don't
need to use RCU to access the individual object pointers, since
they are constant for a given instance of the bucket data structure.
This doesn't cause a problem per se (though it does restrict the
optimizations that the compiler can perform and adds a memory barrier
on Alpha).  However, it is confusing and inconsistent since the
pointers are not protected by RCU and we don't use rcu_assign_pointer().

Found by sparse.

Signed-off-by: Jesse Gross <jesse@nicira.com>
Acked-by: Ben Pfaff <blp@nicira.com>
datapath/table.c