Fix vhost user assertion when sending more than one fd
If the client sends more than one region this assert triggers. The reason is that two fd's are 8 bytes and VHOST_MEMORY_BASELINE_NREGIONS is exactly 8. The assert is wrong because it should not test for the size of the fd array, but for the numbers of regions. Signed-off-by: Christian Pötzsch <christian.poetzsch@kernkonzept.com> Message-Id: <20240426083313.3081272-1-christian.poetzsch@kernkonzept.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
b937fa8963
commit
5093bee0fa
@ -568,7 +568,7 @@ vu_message_read_default(VuDev *dev, int conn_fd, VhostUserMsg *vmsg)
|
|||||||
if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) {
|
if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_RIGHTS) {
|
||||||
fd_size = cmsg->cmsg_len - CMSG_LEN(0);
|
fd_size = cmsg->cmsg_len - CMSG_LEN(0);
|
||||||
vmsg->fd_num = fd_size / sizeof(int);
|
vmsg->fd_num = fd_size / sizeof(int);
|
||||||
assert(fd_size < VHOST_MEMORY_BASELINE_NREGIONS);
|
assert(vmsg->fd_num <= VHOST_MEMORY_BASELINE_NREGIONS);
|
||||||
memcpy(vmsg->fds, CMSG_DATA(cmsg), fd_size);
|
memcpy(vmsg->fds, CMSG_DATA(cmsg), fd_size);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user