Hey Stefan, Marc-Andre, MST, David -
As promised here is a series cleaning up error handling in the
libvhost-user memory mapping path. Most of these cleanups are
straightforward and have been discussed on the mailing list in threads
[1] and [2].
[1] https://lore.kernel.org/qemu-devel/20211018143319.GA11006@raphael-debian-dev/
[2] https://lore.kernel.org/qemu-devel/9391f500-70be-26cf-bcfc-591d3ee84d4e@redhat.com/
Changes since V1:
* Checks for a single fd vu_add_mem_reg and vu_rem_mem_reg return false
instead of true.
* Check for over-running max ram slots in vu_add_mem_reg returns false
instead of true.
* vu_rem_mem_reg unmaps all matching regions.
* Decriment iterator variable when looping through regions in
vu_rem_mem_reg to ensure matching regions aren’t missed.
Changes since V2:
* Fixed FD leaks on all input validation failures
* Added comment David suggested to explain removing duplicate regions
* Added David’s patch to close message FDs on VHOST_USER_REM_MEM_REG
* Expanded commit message for patches checking FD numbers
* Fixed vmsg->size <= sizeof(vmsg->payload.memreg) validation check
* Improved error message when a backend has no free slots
* Improved error messages when the backend receives invalid vmsg->fd_num
and/or vmeg->size
Dropped R-b tags due to non-trivial changes.
Thanks,
Raphael
David Hildenbrand (2):
libvhost-user: Simplify VHOST_USER_REM_MEM_REG
libvhost-user: fix VHOST_USER_REM_MEM_REG not closing the fd
Raphael Norwitz (4):
libvhost-user: Add vu_rem_mem_reg input validation
libvhost-user: Add vu_add_mem_reg input validation
libvhost-user: prevent over-running max RAM slots
libvhost-user: handle removal of identical regions
subprojects/libvhost-user/libvhost-user.c | 76 ++++++++++++++++++-----
subprojects/libvhost-user/libvhost-user.h | 2 +
2 files changed, 61 insertions(+), 17 deletions(-)
--
2.20.1