mirror of https://github.com/xqemu/xqemu.git
ivshmem: Inline check_shm_size() into its only caller
Improve the error messages while there. Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <1458066895-20632-34-git-send-email-armbru@redhat.com> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
This commit is contained in:
parent
c2d8019cd7
commit
8baeb22bfc
|
@ -343,29 +343,6 @@ static void watch_vector_notifier(IVShmemState *s, EventNotifier *n,
|
||||||
NULL, &s->msi_vectors[vector]);
|
NULL, &s->msi_vectors[vector]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int check_shm_size(IVShmemState *s, int fd, Error **errp)
|
|
||||||
{
|
|
||||||
/* check that the guest isn't going to try and map more memory than the
|
|
||||||
* the object has allocated return -1 to indicate error */
|
|
||||||
|
|
||||||
struct stat buf;
|
|
||||||
|
|
||||||
if (fstat(fd, &buf) < 0) {
|
|
||||||
error_setg(errp, "exiting: fstat on fd %d failed: %s",
|
|
||||||
fd, strerror(errno));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (s->ivshmem_size > buf.st_size) {
|
|
||||||
error_setg(errp, "Requested memory size greater"
|
|
||||||
" than shared object size (%zu > %" PRIu64")",
|
|
||||||
s->ivshmem_size, (uint64_t)buf.st_size);
|
|
||||||
return -1;
|
|
||||||
} else {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void ivshmem_add_eventfd(IVShmemState *s, int posn, int i)
|
static void ivshmem_add_eventfd(IVShmemState *s, int posn, int i)
|
||||||
{
|
{
|
||||||
memory_region_add_eventfd(&s->ivshmem_mmio,
|
memory_region_add_eventfd(&s->ivshmem_mmio,
|
||||||
|
@ -480,7 +457,7 @@ static void setup_interrupt(IVShmemState *s, int vector, Error **errp)
|
||||||
|
|
||||||
static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
|
static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
|
||||||
{
|
{
|
||||||
Error *err = NULL;
|
struct stat buf;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
|
|
||||||
if (s->ivshmem_bar2) {
|
if (s->ivshmem_bar2) {
|
||||||
|
@ -489,8 +466,16 @@ static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (check_shm_size(s, fd, &err) == -1) {
|
if (fstat(fd, &buf) < 0) {
|
||||||
error_propagate(errp, err);
|
error_setg_errno(errp, errno,
|
||||||
|
"can't determine size of shared memory sent by server");
|
||||||
|
close(fd);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s->ivshmem_size > buf.st_size) {
|
||||||
|
error_setg(errp, "server sent only %zd bytes of shared memory",
|
||||||
|
(size_t)buf.st_size);
|
||||||
close(fd);
|
close(fd);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue