]> www.infradead.org Git - users/dwmw2/linux.git/commit
vhost: move smp_rmb() into vhost_get_avail_idx()
authorMichael S. Tsirkin <mst@redhat.com>
Mon, 29 Apr 2024 23:27:48 +0000 (09:27 +1000)
committerMichael S. Tsirkin <mst@redhat.com>
Tue, 9 Jul 2024 12:42:40 +0000 (08:42 -0400)
commit7ad4723976672b7d359403a555e0ce5c75529153
treefacd5a3970b5ffa5df8f945ef5312ea1006314e9
parentfdba68d2adf8d9ae680e23e8b8ba79330baa45bc
vhost: move smp_rmb() into vhost_get_avail_idx()

All callers of vhost_get_avail_idx() use smp_rmb() to
order the available ring entry read and avail_idx read.

Make vhost_get_avail_idx() call smp_rmb() itself whenever the avail_idx
is accessed. This way, the callers don't need to worry about the memory
barrier. As a side benefit, we also validate the index on all paths now,
which will hopefully help prevent/catch earlier future bugs.

Note that current code is inconsistent in how the errors are handled.
They are treated as an empty ring in some places, but as non-empty
ring in other places. This patch doesn't attempt to change the existing
behaviour.

No functional change intended.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Acked-by: Will Deacon <will@kernel.org>
Message-Id: <20240429232748.642356-1-gshan@redhat.com>
drivers/vhost/vhost.c