Go to file
Anatoly Burakov dd0024ccbc mempool: make tailq fully local
Since the data structures such as rings are shared in their entirety,
those TAILQ pointers are shared as well. Meaning that, after a
successful rte_ring creation, the tailq_next pointer of the last
ring in the TAILQ will be updated with a pointer to a ring which may
not be present in the address space of another process (i.e. a ring
that may be host-local or guest-local, and not shared over IVSHMEM).
Any successive ring create/lookup on the other side of IVSHMEM will
result in trying to dereference an invalid pointer.

This patchset fixes this problem by creating a default tailq entry
that may be used by any data structure that chooses to use TAILQs.
This default TAILQ entry will consist of a tailq_next/tailq_prev
pointers, and an opaque pointer to arbitrary data. All TAILQ
pointers from data structures themselves will be removed and
replaced by those generic TAILQ entries, thus fixing the problem
of potentially exposing local address space to shared structures.

Technically, only rte_ring structure require modification, because
IVSHMEM is only using memzones (which aren't in TAILQs) and rings,
but for consistency's sake other TAILQ-based data structures were
adapted as well.

Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
2014-07-22 19:42:23 +02:00
app tailq: change rte_dummy to rte_tailq_entry 2014-07-22 19:15:01 +02:00
config vmxnet3: enable for FreeBSD 2014-07-22 16:38:01 +02:00
doc doc: remove extraneous comma 2014-07-16 09:45:47 +02:00
examples virtio: fix incorrect parens 2014-07-22 15:00:00 +02:00
lib mempool: make tailq fully local 2014-07-22 19:42:23 +02:00
mk mk: add clang toolchain 2014-07-19 01:54:26 +02:00
pkg version: 1.7.0 2014-07-04 10:18:07 +02:00
scripts scripts: fix filtering of config comments on bsd 2014-06-19 00:57:50 +02:00
tools tools: allow nic status query without igb_uio 2014-06-27 03:08:18 +02:00
.gitignore init DPDK repository 2013-03-07 10:57:42 +01:00
GNUmakefile remove trailing whitespaces 2014-06-11 00:29:34 +02:00
LICENSE.GPL doc: GPL/LGPL licenses 2013-07-25 14:43:06 +02:00
LICENSE.LGPL doc: fix file format (dos to unix) 2013-09-06 11:43:07 +02:00
Makefile remove trailing whitespaces 2014-06-11 00:29:34 +02:00