trivial patches for 2015-11-06
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQEcBAABAgAGBQJWPKBDAAoJEL7lnXSkw9fbvIUH/iQGqb1GKzTmXhZkOCWygG9u +XNwGjXsGI0gDSy/F8UFltvmcz5NdRVu2nf0g3PgNWneBMHeJ0LyuHnAZrYIqMAT eo0AMT3yX9Vg4pCMdA+u9ps39NfYGh3Lvmn9Lhy6T3fc1OicoV8B5Yw5Oln6DeZv VrKRum3Pxqkb8bENEvdY3RhpUEN60fL9bRHX0nf8VRGzXW3+WSNjvH3NYGoUg7r7 L+6SHfQWdFS6pUQbvP+VCrDkgw+MhbILEUnswXRiy501rMLj01mi5C1MG58IusKQ bFxLLv2eGy+Lpd6YThvNhR+y2uKQVzAwx1C/pen2wxvWGt7rrolLgdIc33HEKKU= =HJM2 -----END PGP SIGNATURE----- Merge remote-tracking branch 'remotes/mjt/tags/pull-trivial-patches-2015-11-06' into staging trivial patches for 2015-11-06 # gpg: Signature made Fri 06 Nov 2015 12:42:43 GMT using RSA key ID A4C3D7DB # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" * remotes/mjt/tags/pull-trivial-patches-2015-11-06: (24 commits) tap-bsd: use user-specified tap device if it already exists qemu-sockets: do not test path with access() before unlinking taget-ppc: Fix read access to IBAT registers higher than IBAT3 exec: avoid unnecessary cacheline bounce on ram_list.mru_block target-alpha: fix uninitialized variable ivshmem-server: fix possible OVERRUN pci-assign: do not test path with access() before opening qom/object: fix 2 comment typos configure: remove help string for 'vnc-tls' option usb: Use g_new() & friends where that makes obvious sense qxl: Use g_new() & friends where that makes obvious sense ui: Use g_new() & friends where that makes obvious sense bt: fix use of uninitialized variable seqlen hw/dma/pxa2xx: Remove superfluous memset linux-user/syscall: Replace g_malloc0 + memcpy with g_memdup tests/i44fx-test: No need for zeroing memory before memset hw/input/tsc210x: Remove superfluous memset xen: fix invalid assertion tests: ignore test-qga fix bad indentation in pcie_cap_slot_write_config() ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
commit
4b59f39bc9
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -24,6 +24,8 @@
|
||||||
/*-darwin-user
|
/*-darwin-user
|
||||||
/*-linux-user
|
/*-linux-user
|
||||||
/*-bsd-user
|
/*-bsd-user
|
||||||
|
/ivshmem-client
|
||||||
|
/ivshmem-server
|
||||||
/libdis*
|
/libdis*
|
||||||
/libuser
|
/libuser
|
||||||
/linux-headers/asm
|
/linux-headers/asm
|
||||||
|
|
1
configure
vendored
1
configure
vendored
|
@ -1348,7 +1348,6 @@ disabled with --disable-FEATURE, default is enabled if available:
|
||||||
vte vte support for the gtk UI
|
vte vte support for the gtk UI
|
||||||
curses curses UI
|
curses curses UI
|
||||||
vnc VNC UI support
|
vnc VNC UI support
|
||||||
vnc-tls TLS encryption for VNC server
|
|
||||||
vnc-sasl SASL encryption for VNC server
|
vnc-sasl SASL encryption for VNC server
|
||||||
vnc-jpeg JPEG lossy compression for VNC server
|
vnc-jpeg JPEG lossy compression for VNC server
|
||||||
vnc-png PNG compression for VNC server
|
vnc-png PNG compression for VNC server
|
||||||
|
|
|
@ -168,7 +168,9 @@ ivshmem_server_handle_new_conn(IvshmemServer *server)
|
||||||
}
|
}
|
||||||
if (i == G_MAXUINT16) {
|
if (i == G_MAXUINT16) {
|
||||||
IVSHMEM_SERVER_DEBUG(server, "cannot allocate new client id\n");
|
IVSHMEM_SERVER_DEBUG(server, "cannot allocate new client id\n");
|
||||||
goto fail;
|
close(newfd);
|
||||||
|
g_free(peer);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
peer->id = server->cur_id++;
|
peer->id = server->cur_id++;
|
||||||
|
|
||||||
|
|
2
exec.c
2
exec.c
|
@ -903,7 +903,7 @@ static RAMBlock *qemu_get_ram_block(ram_addr_t addr)
|
||||||
|
|
||||||
block = atomic_rcu_read(&ram_list.mru_block);
|
block = atomic_rcu_read(&ram_list.mru_block);
|
||||||
if (block && addr - block->offset < block->max_length) {
|
if (block && addr - block->offset < block->max_length) {
|
||||||
goto found;
|
return block;
|
||||||
}
|
}
|
||||||
QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
|
QLIST_FOREACH_RCU(block, &ram_list.blocks, next) {
|
||||||
if (addr - block->offset < block->max_length) {
|
if (addr - block->offset < block->max_length) {
|
||||||
|
|
18
gdbstub.c
18
gdbstub.c
|
@ -956,6 +956,13 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
|
||||||
if (*p == ',')
|
if (*p == ',')
|
||||||
p++;
|
p++;
|
||||||
len = strtoull(p, NULL, 16);
|
len = strtoull(p, NULL, 16);
|
||||||
|
|
||||||
|
/* memtohex() doubles the required space */
|
||||||
|
if (len > MAX_PACKET_LENGTH / 2) {
|
||||||
|
put_packet (s, "E22");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len, false) != 0) {
|
if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len, false) != 0) {
|
||||||
put_packet (s, "E14");
|
put_packet (s, "E14");
|
||||||
} else {
|
} else {
|
||||||
|
@ -970,6 +977,12 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
|
||||||
len = strtoull(p, (char **)&p, 16);
|
len = strtoull(p, (char **)&p, 16);
|
||||||
if (*p == ':')
|
if (*p == ':')
|
||||||
p++;
|
p++;
|
||||||
|
|
||||||
|
/* hextomem() reads 2*len bytes */
|
||||||
|
if (len > strlen(p) / 2) {
|
||||||
|
put_packet (s, "E22");
|
||||||
|
break;
|
||||||
|
}
|
||||||
hextomem(mem_buf, p, len);
|
hextomem(mem_buf, p, len);
|
||||||
if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len,
|
if (target_memory_rw_debug(s->g_cpu, addr, mem_buf, len,
|
||||||
true) != 0) {
|
true) != 0) {
|
||||||
|
@ -1107,7 +1120,8 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
|
||||||
cpu = find_cpu(thread);
|
cpu = find_cpu(thread);
|
||||||
if (cpu != NULL) {
|
if (cpu != NULL) {
|
||||||
cpu_synchronize_state(cpu);
|
cpu_synchronize_state(cpu);
|
||||||
len = snprintf((char *)mem_buf, sizeof(mem_buf),
|
/* memtohex() doubles the required space */
|
||||||
|
len = snprintf((char *)mem_buf, sizeof(buf) / 2,
|
||||||
"CPU#%d [%s]", cpu->cpu_index,
|
"CPU#%d [%s]", cpu->cpu_index,
|
||||||
cpu->halted ? "halted " : "running");
|
cpu->halted ? "halted " : "running");
|
||||||
memtohex(buf, mem_buf, len);
|
memtohex(buf, mem_buf, len);
|
||||||
|
@ -1136,8 +1150,8 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf)
|
||||||
put_packet(s, "E01");
|
put_packet(s, "E01");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
hextomem(mem_buf, p + 5, len);
|
|
||||||
len = len / 2;
|
len = len / 2;
|
||||||
|
hextomem(mem_buf, p + 5, len);
|
||||||
mem_buf[len++] = 0;
|
mem_buf[len++] = 0;
|
||||||
qemu_chr_be_write(s->mon_chr, mem_buf, len);
|
qemu_chr_be_write(s->mon_chr, mem_buf, len);
|
||||||
put_packet(s, "OK");
|
put_packet(s, "OK");
|
||||||
|
|
|
@ -1163,9 +1163,7 @@ void *acpi_data_push(GArray *table_data, unsigned size)
|
||||||
|
|
||||||
unsigned acpi_data_len(GArray *table)
|
unsigned acpi_data_len(GArray *table)
|
||||||
{
|
{
|
||||||
#if GLIB_CHECK_VERSION(2, 22, 0)
|
|
||||||
assert(g_array_get_element_size(table) == 1);
|
assert(g_array_get_element_size(table) == 1);
|
||||||
#endif
|
|
||||||
return table->len;
|
return table->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
29
hw/bt/sdp.c
29
hw/bt/sdp.c
|
@ -150,12 +150,14 @@ static ssize_t sdp_svc_search(struct bt_l2cap_sdp_state_s *sdp,
|
||||||
if (seqlen < 3 || len < seqlen)
|
if (seqlen < 3 || len < seqlen)
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
len -= seqlen;
|
len -= seqlen;
|
||||||
|
|
||||||
while (seqlen)
|
while (seqlen)
|
||||||
if (sdp_svc_match(sdp, &req, &seqlen))
|
if (sdp_svc_match(sdp, &req, &seqlen))
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
} else if (sdp_svc_match(sdp, &req, &seqlen))
|
} else {
|
||||||
return -SDP_INVALID_SYNTAX;
|
if (sdp_svc_match(sdp, &req, &len)) {
|
||||||
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (len < 3)
|
if (len < 3)
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
@ -278,8 +280,11 @@ static ssize_t sdp_attr_get(struct bt_l2cap_sdp_state_s *sdp,
|
||||||
while (seqlen)
|
while (seqlen)
|
||||||
if (sdp_attr_match(record, &req, &seqlen))
|
if (sdp_attr_match(record, &req, &seqlen))
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
} else if (sdp_attr_match(record, &req, &seqlen))
|
} else {
|
||||||
return -SDP_INVALID_SYNTAX;
|
if (sdp_attr_match(record, &req, &len)) {
|
||||||
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (len < 1)
|
if (len < 1)
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
@ -393,8 +398,11 @@ static ssize_t sdp_svc_search_attr_get(struct bt_l2cap_sdp_state_s *sdp,
|
||||||
while (seqlen)
|
while (seqlen)
|
||||||
if (sdp_svc_match(sdp, &req, &seqlen))
|
if (sdp_svc_match(sdp, &req, &seqlen))
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
} else if (sdp_svc_match(sdp, &req, &seqlen))
|
} else {
|
||||||
return -SDP_INVALID_SYNTAX;
|
if (sdp_svc_match(sdp, &req, &len)) {
|
||||||
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (len < 3)
|
if (len < 3)
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
@ -413,8 +421,11 @@ static ssize_t sdp_svc_search_attr_get(struct bt_l2cap_sdp_state_s *sdp,
|
||||||
while (seqlen)
|
while (seqlen)
|
||||||
if (sdp_svc_attr_match(sdp, &req, &seqlen))
|
if (sdp_svc_attr_match(sdp, &req, &seqlen))
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
} else if (sdp_svc_attr_match(sdp, &req, &seqlen))
|
} else {
|
||||||
return -SDP_INVALID_SYNTAX;
|
if (sdp_svc_attr_match(sdp, &req, &len)) {
|
||||||
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (len < 1)
|
if (len < 1)
|
||||||
return -SDP_INVALID_SYNTAX;
|
return -SDP_INVALID_SYNTAX;
|
||||||
|
|
|
@ -2156,7 +2156,7 @@ static int qxl_post_load(void *opaque, int version)
|
||||||
qxl_create_guest_primary(d, 1, QXL_SYNC);
|
qxl_create_guest_primary(d, 1, QXL_SYNC);
|
||||||
|
|
||||||
/* replay surface-create and cursor-set commands */
|
/* replay surface-create and cursor-set commands */
|
||||||
cmds = g_malloc0(sizeof(QXLCommandExt) * (d->ssd.num_surfaces + 1));
|
cmds = g_new0(QXLCommandExt, d->ssd.num_surfaces + 1);
|
||||||
for (in = 0, out = 0; in < d->ssd.num_surfaces; in++) {
|
for (in = 0, out = 0; in < d->ssd.num_surfaces; in++) {
|
||||||
if (d->guest_surfaces.cmds[in] == 0) {
|
if (d->guest_surfaces.cmds[in] == 0) {
|
||||||
continue;
|
continue;
|
||||||
|
|
|
@ -944,57 +944,55 @@ static void tcx_initfn(Object *obj)
|
||||||
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
SysBusDevice *sbd = SYS_BUS_DEVICE(obj);
|
||||||
TCXState *s = TCX(obj);
|
TCXState *s = TCX(obj);
|
||||||
|
|
||||||
memory_region_init_ram(&s->rom, OBJECT(s), "tcx.prom", FCODE_MAX_ROM_SIZE,
|
memory_region_init_ram(&s->rom, obj, "tcx.prom", FCODE_MAX_ROM_SIZE,
|
||||||
&error_fatal);
|
&error_fatal);
|
||||||
memory_region_set_readonly(&s->rom, true);
|
memory_region_set_readonly(&s->rom, true);
|
||||||
sysbus_init_mmio(sbd, &s->rom);
|
sysbus_init_mmio(sbd, &s->rom);
|
||||||
|
|
||||||
/* 2/STIP : Stippler */
|
/* 2/STIP : Stippler */
|
||||||
memory_region_init_io(&s->stip, OBJECT(s), &tcx_stip_ops, s, "tcx.stip",
|
memory_region_init_io(&s->stip, obj, &tcx_stip_ops, s, "tcx.stip",
|
||||||
TCX_STIP_NREGS);
|
TCX_STIP_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->stip);
|
sysbus_init_mmio(sbd, &s->stip);
|
||||||
|
|
||||||
/* 3/BLIT : Blitter */
|
/* 3/BLIT : Blitter */
|
||||||
memory_region_init_io(&s->blit, OBJECT(s), &tcx_blit_ops, s, "tcx.blit",
|
memory_region_init_io(&s->blit, obj, &tcx_blit_ops, s, "tcx.blit",
|
||||||
TCX_BLIT_NREGS);
|
TCX_BLIT_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->blit);
|
sysbus_init_mmio(sbd, &s->blit);
|
||||||
|
|
||||||
/* 5/RSTIP : Raw Stippler */
|
/* 5/RSTIP : Raw Stippler */
|
||||||
memory_region_init_io(&s->rstip, OBJECT(s), &tcx_rstip_ops, s, "tcx.rstip",
|
memory_region_init_io(&s->rstip, obj, &tcx_rstip_ops, s, "tcx.rstip",
|
||||||
TCX_RSTIP_NREGS);
|
TCX_RSTIP_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->rstip);
|
sysbus_init_mmio(sbd, &s->rstip);
|
||||||
|
|
||||||
/* 6/RBLIT : Raw Blitter */
|
/* 6/RBLIT : Raw Blitter */
|
||||||
memory_region_init_io(&s->rblit, OBJECT(s), &tcx_rblit_ops, s, "tcx.rblit",
|
memory_region_init_io(&s->rblit, obj, &tcx_rblit_ops, s, "tcx.rblit",
|
||||||
TCX_RBLIT_NREGS);
|
TCX_RBLIT_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->rblit);
|
sysbus_init_mmio(sbd, &s->rblit);
|
||||||
|
|
||||||
/* 7/TEC : ??? */
|
/* 7/TEC : ??? */
|
||||||
memory_region_init_io(&s->tec, OBJECT(s), &tcx_dummy_ops, s,
|
memory_region_init_io(&s->tec, obj, &tcx_dummy_ops, s, "tcx.tec",
|
||||||
"tcx.tec", TCX_TEC_NREGS);
|
TCX_TEC_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->tec);
|
sysbus_init_mmio(sbd, &s->tec);
|
||||||
|
|
||||||
/* 8/CMAP : DAC */
|
/* 8/CMAP : DAC */
|
||||||
memory_region_init_io(&s->dac, OBJECT(s), &tcx_dac_ops, s,
|
memory_region_init_io(&s->dac, obj, &tcx_dac_ops, s, "tcx.dac",
|
||||||
"tcx.dac", TCX_DAC_NREGS);
|
TCX_DAC_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->dac);
|
sysbus_init_mmio(sbd, &s->dac);
|
||||||
|
|
||||||
/* 9/THC : Cursor */
|
/* 9/THC : Cursor */
|
||||||
memory_region_init_io(&s->thc, OBJECT(s), &tcx_thc_ops, s, "tcx.thc",
|
memory_region_init_io(&s->thc, obj, &tcx_thc_ops, s, "tcx.thc",
|
||||||
TCX_THC_NREGS);
|
TCX_THC_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->thc);
|
sysbus_init_mmio(sbd, &s->thc);
|
||||||
|
|
||||||
/* 11/DHC : ??? */
|
/* 11/DHC : ??? */
|
||||||
memory_region_init_io(&s->dhc, OBJECT(s), &tcx_dummy_ops, s, "tcx.dhc",
|
memory_region_init_io(&s->dhc, obj, &tcx_dummy_ops, s, "tcx.dhc",
|
||||||
TCX_DHC_NREGS);
|
TCX_DHC_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->dhc);
|
sysbus_init_mmio(sbd, &s->dhc);
|
||||||
|
|
||||||
/* 12/ALT : ??? */
|
/* 12/ALT : ??? */
|
||||||
memory_region_init_io(&s->alt, OBJECT(s), &tcx_dummy_ops, s, "tcx.alt",
|
memory_region_init_io(&s->alt, obj, &tcx_dummy_ops, s, "tcx.alt",
|
||||||
TCX_ALT_NREGS);
|
TCX_ALT_NREGS);
|
||||||
sysbus_init_mmio(sbd, &s->alt);
|
sysbus_init_mmio(sbd, &s->alt);
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void tcx_realizefn(DeviceState *dev, Error **errp)
|
static void tcx_realizefn(DeviceState *dev, Error **errp)
|
||||||
|
|
|
@ -459,9 +459,8 @@ static int pxa2xx_dma_init(SysBusDevice *sbd)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
s->chan = g_malloc0(sizeof(PXA2xxDMAChannel) * s->channels);
|
s->chan = g_new0(PXA2xxDMAChannel, s->channels);
|
||||||
|
|
||||||
memset(s->chan, 0, sizeof(PXA2xxDMAChannel) * s->channels);
|
|
||||||
for (i = 0; i < s->channels; i ++)
|
for (i = 0; i < s->channels; i ++)
|
||||||
s->chan[i].state = DCSR_STOPINTR;
|
s->chan[i].state = DCSR_STOPINTR;
|
||||||
|
|
||||||
|
|
|
@ -45,14 +45,10 @@ void *pci_assign_dev_load_option_rom(PCIDevice *dev, struct Object *owner,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (access(rom_file, F_OK)) {
|
|
||||||
error_report("pci-assign: Insufficient privileges for %s", rom_file);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Write "1" to the ROM file to enable it */
|
/* Write "1" to the ROM file to enable it */
|
||||||
fp = fopen(rom_file, "r+");
|
fp = fopen(rom_file, "r+");
|
||||||
if (fp == NULL) {
|
if (fp == NULL) {
|
||||||
|
error_report("pci-assign: Cannot open %s: %s", rom_file, strerror(errno));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
val = 1;
|
val = 1;
|
||||||
|
|
|
@ -1086,9 +1086,7 @@ uWireSlave *tsc2102_init(qemu_irq pint)
|
||||||
{
|
{
|
||||||
TSC210xState *s;
|
TSC210xState *s;
|
||||||
|
|
||||||
s = (TSC210xState *)
|
s = g_new0(TSC210xState, 1);
|
||||||
g_malloc0(sizeof(TSC210xState));
|
|
||||||
memset(s, 0, sizeof(TSC210xState));
|
|
||||||
s->x = 160;
|
s->x = 160;
|
||||||
s->y = 160;
|
s->y = 160;
|
||||||
s->pressure = 0;
|
s->pressure = 0;
|
||||||
|
@ -1135,9 +1133,7 @@ uWireSlave *tsc2301_init(qemu_irq penirq, qemu_irq kbirq, qemu_irq dav)
|
||||||
{
|
{
|
||||||
TSC210xState *s;
|
TSC210xState *s;
|
||||||
|
|
||||||
s = (TSC210xState *)
|
s = g_new0(TSC210xState, 1);
|
||||||
g_malloc0(sizeof(TSC210xState));
|
|
||||||
memset(s, 0, sizeof(TSC210xState));
|
|
||||||
s->x = 400;
|
s->x = 400;
|
||||||
s->y = 240;
|
s->y = 240;
|
||||||
s->pressure = 0;
|
s->pressure = 0;
|
||||||
|
|
|
@ -426,13 +426,13 @@ void pcie_cap_slot_write_config(PCIDevice *dev,
|
||||||
*/
|
*/
|
||||||
if ((sltsta & PCI_EXP_SLTSTA_PDS) && (val & PCI_EXP_SLTCTL_PCC) &&
|
if ((sltsta & PCI_EXP_SLTSTA_PDS) && (val & PCI_EXP_SLTCTL_PCC) &&
|
||||||
((val & PCI_EXP_SLTCTL_PIC_OFF) == PCI_EXP_SLTCTL_PIC_OFF)) {
|
((val & PCI_EXP_SLTCTL_PIC_OFF) == PCI_EXP_SLTCTL_PIC_OFF)) {
|
||||||
PCIBus *sec_bus = pci_bridge_get_sec_bus(PCI_BRIDGE(dev));
|
PCIBus *sec_bus = pci_bridge_get_sec_bus(PCI_BRIDGE(dev));
|
||||||
pci_for_each_device(sec_bus, pci_bus_num(sec_bus),
|
pci_for_each_device(sec_bus, pci_bus_num(sec_bus),
|
||||||
pcie_unplug_device, NULL);
|
pcie_unplug_device, NULL);
|
||||||
|
|
||||||
pci_word_test_and_clear_mask(exp_cap + PCI_EXP_SLTSTA,
|
pci_word_test_and_clear_mask(exp_cap + PCI_EXP_SLTSTA,
|
||||||
PCI_EXP_SLTSTA_PDS);
|
PCI_EXP_SLTSTA_PDS);
|
||||||
pci_word_test_and_set_mask(exp_cap + PCI_EXP_SLTSTA,
|
pci_word_test_and_set_mask(exp_cap + PCI_EXP_SLTSTA,
|
||||||
PCI_EXP_SLTSTA_PDC);
|
PCI_EXP_SLTSTA_PDC);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -166,7 +166,7 @@ static void emulated_push_event(EmulatedState *card, EmulEvent *event)
|
||||||
|
|
||||||
static void emulated_push_type(EmulatedState *card, uint32_t type)
|
static void emulated_push_type(EmulatedState *card, uint32_t type)
|
||||||
{
|
{
|
||||||
EmulEvent *event = (EmulEvent *)g_malloc(sizeof(EmulEvent));
|
EmulEvent *event = g_new(EmulEvent, 1);
|
||||||
|
|
||||||
assert(event);
|
assert(event);
|
||||||
event->p.gen.type = type;
|
event->p.gen.type = type;
|
||||||
|
@ -175,7 +175,7 @@ static void emulated_push_type(EmulatedState *card, uint32_t type)
|
||||||
|
|
||||||
static void emulated_push_error(EmulatedState *card, uint64_t code)
|
static void emulated_push_error(EmulatedState *card, uint64_t code)
|
||||||
{
|
{
|
||||||
EmulEvent *event = (EmulEvent *)g_malloc(sizeof(EmulEvent));
|
EmulEvent *event = g_new(EmulEvent, 1);
|
||||||
|
|
||||||
assert(event);
|
assert(event);
|
||||||
event->p.error.type = EMUL_ERROR;
|
event->p.error.type = EMUL_ERROR;
|
||||||
|
|
|
@ -359,8 +359,7 @@ static void usb_mtp_object_readdir(MTPState *s, MTPObject *o)
|
||||||
}
|
}
|
||||||
while ((entry = readdir(dir)) != NULL) {
|
while ((entry = readdir(dir)) != NULL) {
|
||||||
if ((o->nchildren % 32) == 0) {
|
if ((o->nchildren % 32) == 0) {
|
||||||
o->children = g_realloc(o->children,
|
o->children = g_renew(MTPObject *, o->children, o->nchildren + 32);
|
||||||
(o->nchildren + 32) * sizeof(MTPObject *));
|
|
||||||
}
|
}
|
||||||
o->children[o->nchildren] =
|
o->children[o->nchildren] =
|
||||||
usb_mtp_object_alloc(s, s->next_handle++, o, entry->d_name);
|
usb_mtp_object_alloc(s, s->next_handle++, o, entry->d_name);
|
||||||
|
|
|
@ -2188,7 +2188,7 @@ static void xhci_kick_ep(XHCIState *xhci, unsigned int slotid,
|
||||||
xfer->trbs = NULL;
|
xfer->trbs = NULL;
|
||||||
}
|
}
|
||||||
if (!xfer->trbs) {
|
if (!xfer->trbs) {
|
||||||
xfer->trbs = g_malloc(sizeof(XHCITRB) * length);
|
xfer->trbs = g_new(XHCITRB, length);
|
||||||
xfer->trb_alloced = length;
|
xfer->trb_alloced = length;
|
||||||
}
|
}
|
||||||
xfer->trb_count = length;
|
xfer->trb_count = length;
|
||||||
|
|
|
@ -322,7 +322,7 @@ static void packet_id_queue_add(struct PacketIdQueue *q, uint64_t id)
|
||||||
|
|
||||||
DPRINTF("adding packet id %"PRIu64" to %s queue\n", id, q->name);
|
DPRINTF("adding packet id %"PRIu64" to %s queue\n", id, q->name);
|
||||||
|
|
||||||
e = g_malloc0(sizeof(struct PacketIdQueueEntry));
|
e = g_new0(struct PacketIdQueueEntry, 1);
|
||||||
e->id = id;
|
e->id = id;
|
||||||
QTAILQ_INSERT_TAIL(&q->head, e, next);
|
QTAILQ_INSERT_TAIL(&q->head, e, next);
|
||||||
q->size++;
|
q->size++;
|
||||||
|
@ -468,7 +468,7 @@ static void bufp_alloc(USBRedirDevice *dev, uint8_t *data, uint16_t len,
|
||||||
dev->endpoint[EP2I(ep)].bufpq_dropping_packets = 0;
|
dev->endpoint[EP2I(ep)].bufpq_dropping_packets = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bufp = g_malloc(sizeof(struct buf_packet));
|
bufp = g_new(struct buf_packet, 1);
|
||||||
bufp->data = data;
|
bufp->data = data;
|
||||||
bufp->len = len;
|
bufp->len = len;
|
||||||
bufp->offset = 0;
|
bufp->offset = 0;
|
||||||
|
@ -2234,7 +2234,7 @@ static int usbredir_get_bufpq(QEMUFile *f, void *priv, size_t unused)
|
||||||
|
|
||||||
endp->bufpq_size = qemu_get_be32(f);
|
endp->bufpq_size = qemu_get_be32(f);
|
||||||
for (i = 0; i < endp->bufpq_size; i++) {
|
for (i = 0; i < endp->bufpq_size; i++) {
|
||||||
bufp = g_malloc(sizeof(struct buf_packet));
|
bufp = g_new(struct buf_packet, 1);
|
||||||
bufp->len = qemu_get_be32(f);
|
bufp->len = qemu_get_be32(f);
|
||||||
bufp->status = qemu_get_be32(f);
|
bufp->status = qemu_get_be32(f);
|
||||||
bufp->offset = 0;
|
bufp->offset = 0;
|
||||||
|
|
|
@ -1937,7 +1937,7 @@ static int xen_pt_config_reg_init(XenPCIPassthroughState *s,
|
||||||
break;
|
break;
|
||||||
case 4: rc = xen_host_pci_get_long(&s->real_device, offset, &val);
|
case 4: rc = xen_host_pci_get_long(&s->real_device, offset, &val);
|
||||||
break;
|
break;
|
||||||
default: assert(1);
|
default: abort();
|
||||||
}
|
}
|
||||||
if (rc) {
|
if (rc) {
|
||||||
/* Serious issues when we cannot read the host values! */
|
/* Serious issues when we cannot read the host values! */
|
||||||
|
@ -1982,7 +1982,7 @@ static int xen_pt_config_reg_init(XenPCIPassthroughState *s,
|
||||||
break;
|
break;
|
||||||
case 4: pci_set_long(s->dev.config + offset, val);
|
case 4: pci_set_long(s->dev.config + offset, val);
|
||||||
break;
|
break;
|
||||||
default: assert(1);
|
default: abort();
|
||||||
}
|
}
|
||||||
/* set register value pointer to the data. */
|
/* set register value pointer to the data. */
|
||||||
reg_entry->ptr.byte = s->dev.config + offset;
|
reg_entry->ptr.byte = s->dev.config + offset;
|
||||||
|
|
|
@ -510,16 +510,16 @@ struct TypeInfo
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* OBJECT_CLASS_CHECK:
|
* OBJECT_CLASS_CHECK:
|
||||||
* @class: The C type to use for the return value.
|
* @class_type: The C type to use for the return value.
|
||||||
* @obj: A derivative of @type to cast.
|
* @class: A derivative class of @class_type to cast.
|
||||||
* @name: the QOM typename of @class.
|
* @name: the QOM typename of @class_type.
|
||||||
*
|
*
|
||||||
* A type safe version of @object_class_dynamic_cast_assert. This macro is
|
* A type safe version of @object_class_dynamic_cast_assert. This macro is
|
||||||
* typically wrapped by each type to perform type safe casts of a class to a
|
* typically wrapped by each type to perform type safe casts of a class to a
|
||||||
* specific class type.
|
* specific class type.
|
||||||
*/
|
*/
|
||||||
#define OBJECT_CLASS_CHECK(class, obj, name) \
|
#define OBJECT_CLASS_CHECK(class_type, class, name) \
|
||||||
((class *)object_class_dynamic_cast_assert(OBJECT_CLASS(obj), (name), \
|
((class_type *)object_class_dynamic_cast_assert(OBJECT_CLASS(class), (name), \
|
||||||
__FILE__, __LINE__, __func__))
|
__FILE__, __LINE__, __func__))
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -5325,8 +5325,7 @@ static abi_long do_open_by_handle_at(abi_long mount_fd, abi_long handle,
|
||||||
return -TARGET_EFAULT;
|
return -TARGET_EFAULT;
|
||||||
}
|
}
|
||||||
|
|
||||||
fh = g_malloc0(total_size);
|
fh = g_memdup(target_fh, total_size);
|
||||||
memcpy(fh, target_fh, total_size);
|
|
||||||
fh->handle_bytes = size;
|
fh->handle_bytes = size;
|
||||||
fh->handle_type = tswap32(target_fh->handle_type);
|
fh->handle_type = tswap32(target_fh->handle_type);
|
||||||
|
|
||||||
|
|
|
@ -109,8 +109,7 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
|
||||||
|
|
||||||
#define PATH_NET_TAP "/dev/tap"
|
#define PATH_NET_TAP "/dev/tap"
|
||||||
|
|
||||||
int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
|
static int tap_open_clone(char *ifname, int ifname_size, Error **errp)
|
||||||
int vnet_hdr_required, int mq_required, Error **errp)
|
|
||||||
{
|
{
|
||||||
int fd, s, ret;
|
int fd, s, ret;
|
||||||
struct ifreq ifr;
|
struct ifreq ifr;
|
||||||
|
@ -126,7 +125,8 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
|
||||||
ret = ioctl(fd, TAPGIFNAME, (void *)&ifr);
|
ret = ioctl(fd, TAPGIFNAME, (void *)&ifr);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg_errno(errp, errno, "could not get tap interface name");
|
error_setg_errno(errp, errno, "could not get tap interface name");
|
||||||
goto error;
|
close(fd);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ifname[0] != '\0') {
|
if (ifname[0] != '\0') {
|
||||||
|
@ -135,19 +135,47 @@ int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
|
||||||
if (s < 0) {
|
if (s < 0) {
|
||||||
error_setg_errno(errp, errno,
|
error_setg_errno(errp, errno,
|
||||||
"could not open socket to set interface name");
|
"could not open socket to set interface name");
|
||||||
goto error;
|
close(fd);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
ifr.ifr_data = ifname;
|
ifr.ifr_data = ifname;
|
||||||
ret = ioctl(s, SIOCSIFNAME, (void *)&ifr);
|
ret = ioctl(s, SIOCSIFNAME, (void *)&ifr);
|
||||||
close(s);
|
close(s);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
error_setg(errp, "could not set tap interface name");
|
error_setg(errp, "could not set tap interface name");
|
||||||
goto error;
|
close(fd);
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
pstrcpy(ifname, ifname_size, ifr.ifr_name);
|
pstrcpy(ifname, ifname_size, ifr.ifr_name);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return fd;
|
||||||
|
}
|
||||||
|
|
||||||
|
int tap_open(char *ifname, int ifname_size, int *vnet_hdr,
|
||||||
|
int vnet_hdr_required, int mq_required, Error **errp)
|
||||||
|
{
|
||||||
|
int fd = -1;
|
||||||
|
|
||||||
|
/* If the specified tap device already exists just use it. */
|
||||||
|
if (ifname[0] != '\0') {
|
||||||
|
char dname[100];
|
||||||
|
snprintf(dname, sizeof dname, "/dev/%s", ifname);
|
||||||
|
TFR(fd = open(dname, O_RDWR));
|
||||||
|
if (fd < 0 && errno != ENOENT) {
|
||||||
|
error_setg_errno(errp, errno, "could not open %s", dname);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fd < 0) {
|
||||||
|
/* Tap device not specified or does not exist. */
|
||||||
|
if ((fd = tap_open_clone(ifname, ifname_size, errp)) < 0) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (*vnet_hdr) {
|
if (*vnet_hdr) {
|
||||||
/* BSD doesn't have IFF_VNET_HDR */
|
/* BSD doesn't have IFF_VNET_HDR */
|
||||||
*vnet_hdr = 0;
|
*vnet_hdr = 0;
|
||||||
|
|
|
@ -204,7 +204,7 @@ static bool type_is_ancestor(TypeImpl *type, TypeImpl *target_type)
|
||||||
{
|
{
|
||||||
assert(target_type);
|
assert(target_type);
|
||||||
|
|
||||||
/* Check if typename is a direct ancestor of type */
|
/* Check if target_type is a direct ancestor of type */
|
||||||
while (type) {
|
while (type) {
|
||||||
if (type == target_type) {
|
if (type == target_type) {
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -2916,7 +2916,7 @@ void gen_intermediate_code(CPUAlphaState *env, struct TranslationBlock *tb)
|
||||||
num_insns++;
|
num_insns++;
|
||||||
|
|
||||||
if (unlikely(cpu_breakpoint_test(cs, ctx.pc, BP_ANY))) {
|
if (unlikely(cpu_breakpoint_test(cs, ctx.pc, BP_ANY))) {
|
||||||
gen_excp(&ctx, EXCP_DEBUG, 0);
|
ret = gen_excp(&ctx, EXCP_DEBUG, 0);
|
||||||
/* The address covered by the breakpoint must be included in
|
/* The address covered by the breakpoint must be included in
|
||||||
[tb->pc, tb->pc + tb->size) in order to for it to be
|
[tb->pc, tb->pc + tb->size) in order to for it to be
|
||||||
properly cleared -- thus we increment the PC here so that
|
properly cleared -- thus we increment the PC here so that
|
||||||
|
|
|
@ -305,7 +305,7 @@ static void spr_read_ibat (DisasContext *ctx, int gprn, int sprn)
|
||||||
|
|
||||||
static void spr_read_ibat_h (DisasContext *ctx, int gprn, int sprn)
|
static void spr_read_ibat_h (DisasContext *ctx, int gprn, int sprn)
|
||||||
{
|
{
|
||||||
tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env, offsetof(CPUPPCState, IBAT[sprn & 1][(sprn - SPR_IBAT4U) / 2]));
|
tcg_gen_ld_tl(cpu_gpr[gprn], cpu_env, offsetof(CPUPPCState, IBAT[sprn & 1][((sprn - SPR_IBAT4U) / 2) + 4]));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void spr_write_ibatu (DisasContext *ctx, int sprn, int gprn)
|
static void spr_write_ibatu (DisasContext *ctx, int sprn, int gprn)
|
||||||
|
|
1
tests/.gitignore
vendored
1
tests/.gitignore
vendored
|
@ -30,6 +30,7 @@ test-qapi-types.[ch]
|
||||||
test-qapi-visit.[ch]
|
test-qapi-visit.[ch]
|
||||||
test-qdev-global-props
|
test-qdev-global-props
|
||||||
test-qemu-opts
|
test-qemu-opts
|
||||||
|
test-qga
|
||||||
test-qmp-commands
|
test-qmp-commands
|
||||||
test-qmp-commands.h
|
test-qmp-commands.h
|
||||||
test-qmp-event
|
test-qmp-event
|
||||||
|
|
|
@ -191,7 +191,7 @@ static void write_area(uint32_t start, uint32_t end, uint8_t value)
|
||||||
uint32_t size = end - start + 1;
|
uint32_t size = end - start + 1;
|
||||||
uint8_t *data;
|
uint8_t *data;
|
||||||
|
|
||||||
data = g_malloc0(size);
|
data = g_malloc(size);
|
||||||
memset(data, value, size);
|
memset(data, value, size);
|
||||||
memwrite(start, data, size);
|
memwrite(start, data, size);
|
||||||
|
|
||||||
|
|
|
@ -450,7 +450,7 @@ static void text_console_resize(QemuConsole *s)
|
||||||
if (s->width < w1)
|
if (s->width < w1)
|
||||||
w1 = s->width;
|
w1 = s->width;
|
||||||
|
|
||||||
cells = g_malloc(s->width * s->total_height * sizeof(TextCell));
|
cells = g_new(TextCell, s->width * s->total_height);
|
||||||
for(y = 0; y < s->total_height; y++) {
|
for(y = 0; y < s->total_height; y++) {
|
||||||
c = &cells[y * s->width];
|
c = &cells[y * s->width];
|
||||||
if (w1 > 0) {
|
if (w1 > 0) {
|
||||||
|
|
|
@ -431,7 +431,7 @@ void curses_display_init(DisplayState *ds, int full_screen)
|
||||||
|
|
||||||
curses_winch_init();
|
curses_winch_init();
|
||||||
|
|
||||||
dcl = (DisplayChangeListener *) g_malloc0(sizeof(DisplayChangeListener));
|
dcl = g_new0(DisplayChangeListener, 1);
|
||||||
dcl->ops = &dcl_ops;
|
dcl->ops = &dcl_ops;
|
||||||
register_displaychangelistener(dcl);
|
register_displaychangelistener(dcl);
|
||||||
|
|
||||||
|
|
|
@ -206,7 +206,7 @@ QEMUPutMouseEntry *qemu_add_mouse_event_handler(QEMUPutMouseEvent *func,
|
||||||
{
|
{
|
||||||
QEMUPutMouseEntry *s;
|
QEMUPutMouseEntry *s;
|
||||||
|
|
||||||
s = g_malloc0(sizeof(QEMUPutMouseEntry));
|
s = g_new0(QEMUPutMouseEntry, 1);
|
||||||
|
|
||||||
s->qemu_put_mouse_event = func;
|
s->qemu_put_mouse_event = func;
|
||||||
s->qemu_put_mouse_event_opaque = opaque;
|
s->qemu_put_mouse_event_opaque = opaque;
|
||||||
|
@ -240,7 +240,7 @@ QEMUPutLEDEntry *qemu_add_led_event_handler(QEMUPutLEDEvent *func,
|
||||||
{
|
{
|
||||||
QEMUPutLEDEntry *s;
|
QEMUPutLEDEntry *s;
|
||||||
|
|
||||||
s = g_malloc0(sizeof(QEMUPutLEDEntry));
|
s = g_new0(QEMUPutLEDEntry, 1);
|
||||||
|
|
||||||
s->put_led = func;
|
s->put_led = func;
|
||||||
s->opaque = opaque;
|
s->opaque = opaque;
|
||||||
|
|
|
@ -109,7 +109,7 @@ static kbd_layout_t *parse_keyboard_layout(const name2keysym_t *table,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!k) {
|
if (!k) {
|
||||||
k = g_malloc0(sizeof(kbd_layout_t));
|
k = g_new0(kbd_layout_t, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(;;) {
|
for(;;) {
|
||||||
|
|
2
ui/sdl.c
2
ui/sdl.c
|
@ -985,7 +985,7 @@ void sdl_display_init(DisplayState *ds, int full_screen, int no_frame)
|
||||||
sdl_grab_start();
|
sdl_grab_start();
|
||||||
}
|
}
|
||||||
|
|
||||||
dcl = g_malloc0(sizeof(DisplayChangeListener));
|
dcl = g_new0(DisplayChangeListener, 1);
|
||||||
dcl->ops = &dcl_ops;
|
dcl->ops = &dcl_ops;
|
||||||
register_displaychangelistener(dcl);
|
register_displaychangelistener(dcl);
|
||||||
|
|
||||||
|
|
|
@ -79,7 +79,7 @@ static void vnc_unlock_queue(VncJobQueue *queue)
|
||||||
|
|
||||||
VncJob *vnc_job_new(VncState *vs)
|
VncJob *vnc_job_new(VncState *vs)
|
||||||
{
|
{
|
||||||
VncJob *job = g_malloc0(sizeof(VncJob));
|
VncJob *job = g_new0(VncJob, 1);
|
||||||
|
|
||||||
job->vs = vs;
|
job->vs = vs;
|
||||||
vnc_lock_queue(queue);
|
vnc_lock_queue(queue);
|
||||||
|
@ -90,7 +90,7 @@ VncJob *vnc_job_new(VncState *vs)
|
||||||
|
|
||||||
int vnc_job_add_rect(VncJob *job, int x, int y, int w, int h)
|
int vnc_job_add_rect(VncJob *job, int x, int y, int w, int h)
|
||||||
{
|
{
|
||||||
VncRectEntry *entry = g_malloc0(sizeof(VncRectEntry));
|
VncRectEntry *entry = g_new0(VncRectEntry, 1);
|
||||||
|
|
||||||
entry->rect.x = x;
|
entry->rect.x = x;
|
||||||
entry->rect.y = y;
|
entry->rect.y = y;
|
||||||
|
@ -298,7 +298,7 @@ disconnected:
|
||||||
|
|
||||||
static VncJobQueue *vnc_queue_init(void)
|
static VncJobQueue *vnc_queue_init(void)
|
||||||
{
|
{
|
||||||
VncJobQueue *queue = g_malloc0(sizeof(VncJobQueue));
|
VncJobQueue *queue = g_new0(VncJobQueue, 1);
|
||||||
|
|
||||||
qemu_cond_init(&queue->cond);
|
qemu_cond_init(&queue->cond);
|
||||||
qemu_mutex_init(&queue->mutex);
|
qemu_mutex_init(&queue->mutex);
|
||||||
|
|
4
ui/vnc.c
4
ui/vnc.c
|
@ -2982,7 +2982,7 @@ static void vnc_refresh(DisplayChangeListener *dcl)
|
||||||
static void vnc_connect(VncDisplay *vd, int csock,
|
static void vnc_connect(VncDisplay *vd, int csock,
|
||||||
bool skipauth, bool websocket)
|
bool skipauth, bool websocket)
|
||||||
{
|
{
|
||||||
VncState *vs = g_malloc0(sizeof(VncState));
|
VncState *vs = g_new0(VncState, 1);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
vs->csock = csock;
|
vs->csock = csock;
|
||||||
|
@ -3005,7 +3005,7 @@ static void vnc_connect(VncDisplay *vd, int csock,
|
||||||
|
|
||||||
vs->lossy_rect = g_malloc0(VNC_STAT_ROWS * sizeof (*vs->lossy_rect));
|
vs->lossy_rect = g_malloc0(VNC_STAT_ROWS * sizeof (*vs->lossy_rect));
|
||||||
for (i = 0; i < VNC_STAT_ROWS; ++i) {
|
for (i = 0; i < VNC_STAT_ROWS; ++i) {
|
||||||
vs->lossy_rect[i] = g_malloc0(VNC_STAT_COLS * sizeof (uint8_t));
|
vs->lossy_rect[i] = g_new0(uint8_t, VNC_STAT_COLS);
|
||||||
}
|
}
|
||||||
|
|
||||||
VNC_DEBUG("New client on socket %d\n", csock);
|
VNC_DEBUG("New client on socket %d\n", csock);
|
||||||
|
|
|
@ -751,8 +751,7 @@ int unix_listen_opts(QemuOpts *opts, Error **errp)
|
||||||
qemu_opt_set(opts, "path", un.sun_path, &error_abort);
|
qemu_opt_set(opts, "path", un.sun_path, &error_abort);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((access(un.sun_path, F_OK) == 0) &&
|
if (unlink(un.sun_path) < 0 && errno != ENOENT) {
|
||||||
unlink(un.sun_path) < 0) {
|
|
||||||
error_setg_errno(errp, errno,
|
error_setg_errno(errp, errno,
|
||||||
"Failed to unlink socket %s", un.sun_path);
|
"Failed to unlink socket %s", un.sun_path);
|
||||||
goto err;
|
goto err;
|
||||||
|
|
Loading…
Reference in a new issue