net/virtio-user: fix run closing stdin and close callfd
When i < VIRTIO_MAX_VIRTQUEUES and j == i, dev->callfds[i] and dev->kickfds[i] are default 0. So it will close(0), close the standard input (stdin). And when the code fails in kickfd creation, it will leaves one callfd not closed. Fixes: e6e7ad8b3024 ("net/virtio-user: move eventfd open/close into init/uninit") Cc: stable@dpdk.org: Signed-off-by: Jiawei Zhu <zhujiawei12@huawei.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
This commit is contained in:
parent
05421ec938
commit
97ed740c34
@ -276,6 +276,7 @@ virtio_user_dev_init_notify(struct virtio_user_dev *dev)
|
||||
}
|
||||
kickfd = eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
|
||||
if (kickfd < 0) {
|
||||
close(callfd);
|
||||
PMD_DRV_LOG(ERR, "kickfd error, %s", strerror(errno));
|
||||
break;
|
||||
}
|
||||
@ -284,7 +285,7 @@ virtio_user_dev_init_notify(struct virtio_user_dev *dev)
|
||||
}
|
||||
|
||||
if (i < VIRTIO_MAX_VIRTQUEUES) {
|
||||
for (j = 0; j <= i; ++j) {
|
||||
for (j = 0; j < i; ++j) {
|
||||
close(dev->callfds[j]);
|
||||
close(dev->kickfds[j]);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user