vhost: catch overflow causing mmap of size 0
authorMaxime Coquelin <maxime.coquelin@redhat.com>
Thu, 16 Jan 2020 10:44:27 +0000 (11:44 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 5 Feb 2020 10:47:18 +0000 (11:47 +0100)
commitc6420a36328b9c6b71770aaa982abacd0e2440b8
tree90afe1c625ce24de783915e2357c1b50f8e7b2ed
parentc5a910dd92ecbad24f86b4c59b4ff8105b5149fd
vhost: catch overflow causing mmap of size 0

This patch catches an overflow that could happen if an
invalid region size or page alignment is provided by the
guest via the VHOST_USER_SET_MEM_TABLE request.

If the sum of the size to mmap and the alignment overflows
uint64_t, then RTE_ALIGN_CEIL(mmap_size, alignment) macro
will return 0. This value was passed as is as size argument
to mmap().

While kernel handling of mmap() syscall returns an error
if size is 0, it is better to catch it earlier and provide
a meaningful error log.

Fixes: ec09c280b839 ("vhost: fix mmap not aligned with hugepage size")
Cc: stable@dpdk.org
Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
Reviewed-by: Tiwei Bie <tiwei.bie@intel.com>
lib/librte_vhost/vhost_user.c