ivshmem: remove unnecessary dup()
qemu_chr_fe_get_msgfd() transfers ownership, there is no need to dup the fd. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Reviewed-by: Claudio Fontana <claudio.fontana@huawei.com>
This commit is contained in:
parent
0f14fd71c1
commit
dee2151e72
@ -480,7 +480,7 @@ static bool fifo_update_and_get(IVShmemState *s, const uint8_t *buf, int size,
|
|||||||
static void ivshmem_read(void *opaque, const uint8_t *buf, int size)
|
static void ivshmem_read(void *opaque, const uint8_t *buf, int size)
|
||||||
{
|
{
|
||||||
IVShmemState *s = opaque;
|
IVShmemState *s = opaque;
|
||||||
int incoming_fd, tmp_fd;
|
int incoming_fd;
|
||||||
int guest_max_eventfd;
|
int guest_max_eventfd;
|
||||||
long incoming_posn;
|
long incoming_posn;
|
||||||
|
|
||||||
@ -495,21 +495,21 @@ static void ivshmem_read(void *opaque, const uint8_t *buf, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* pick off s->server_chr->msgfd and store it, posn should accompany msg */
|
/* pick off s->server_chr->msgfd and store it, posn should accompany msg */
|
||||||
tmp_fd = qemu_chr_fe_get_msgfd(s->server_chr);
|
incoming_fd = qemu_chr_fe_get_msgfd(s->server_chr);
|
||||||
IVSHMEM_DPRINTF("posn is %ld, fd is %d\n", incoming_posn, tmp_fd);
|
IVSHMEM_DPRINTF("posn is %ld, fd is %d\n", incoming_posn, incoming_fd);
|
||||||
|
|
||||||
/* make sure we have enough space for this guest */
|
/* make sure we have enough space for this guest */
|
||||||
if (incoming_posn >= s->nb_peers) {
|
if (incoming_posn >= s->nb_peers) {
|
||||||
if (increase_dynamic_storage(s, incoming_posn) < 0) {
|
if (increase_dynamic_storage(s, incoming_posn) < 0) {
|
||||||
error_report("increase_dynamic_storage() failed");
|
error_report("increase_dynamic_storage() failed");
|
||||||
if (tmp_fd != -1) {
|
if (incoming_fd != -1) {
|
||||||
close(tmp_fd);
|
close(incoming_fd);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tmp_fd == -1) {
|
if (incoming_fd == -1) {
|
||||||
/* if posn is positive and unseen before then this is our posn*/
|
/* if posn is positive and unseen before then this is our posn*/
|
||||||
if ((incoming_posn >= 0) &&
|
if ((incoming_posn >= 0) &&
|
||||||
(s->peers[incoming_posn].eventfds == NULL)) {
|
(s->peers[incoming_posn].eventfds == NULL)) {
|
||||||
@ -524,15 +524,6 @@ static void ivshmem_read(void *opaque, const uint8_t *buf, int size)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* because of the implementation of get_msgfd, we need a dup */
|
|
||||||
incoming_fd = dup(tmp_fd);
|
|
||||||
|
|
||||||
if (incoming_fd == -1) {
|
|
||||||
error_report("could not allocate file descriptor %s", strerror(errno));
|
|
||||||
close(tmp_fd);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* if the position is -1, then it's shared memory region fd */
|
/* if the position is -1, then it's shared memory region fd */
|
||||||
if (incoming_posn == -1) {
|
if (incoming_posn == -1) {
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user