macvtap: fix a possible race between queue selection and changing queues
authorJason Wang <jasowang@redhat.com>
Wed, 5 Jun 2013 23:54:33 +0000 (23:54 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 8 Jun 2013 06:49:08 +0000 (23:49 -0700)
commited0483fa06e0efb86a82e382a00dbad02b62807c
tree2a0c920af1a2a7f748d81248cb027ca12f7f0bb5
parente403d295817cf9f8be3110eb7ee1a03981287495
macvtap: fix a possible race between queue selection and changing queues

Complier may generate codes that re-read the vlan->numvtaps during
macvtap_get_queue(). This may lead a race if vlan->numvtaps were changed in the
same time and which can lead unexpected result (e.g. very huge value).

We need prevent the compiler from generating such codes by adding an
ACCESS_ONCE() to make sure vlan->numvtaps were only read once.

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/macvtap.c