From 24f6ff863bce236f39ea597206e0a8df2e9537e6 Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sat, 15 Jun 2013 14:44:20 +0400 Subject: [PATCH 01/17] vl: reformat SDL ifdeffery a bit This reformats #ifdef..#endif and case statement a bit, to make it a bit shorter and matching other cases like that (no code changes). Signed-off-by: Michael Tokarev --- vl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/vl.c b/vl.c index 767e0204db..0a8f056cc2 100644 --- a/vl.c +++ b/vl.c @@ -3472,12 +3472,11 @@ int main(int argc, char **argv, char **envp) case QEMU_OPTION_no_quit: no_quit = 1; break; -#ifdef CONFIG_SDL case QEMU_OPTION_sdl: +#ifdef CONFIG_SDL display_type = DT_SDL; break; #else - case QEMU_OPTION_sdl: fprintf(stderr, "SDL support is disabled\n"); exit(1); #endif From f17e4eaafc9d89a841fd30be93512b4973e53e31 Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Sat, 15 Jun 2013 13:47:32 +0400 Subject: [PATCH 02/17] qemu-options: trivial fix for -mon args help It is the (implied sub)option name which is optional, not the value of that (sub)option, make it so in the help output. (Introduced by commit 22a0e04b9bb) Cc: Gerd Hoffmann Signed-off-by: Michael Tokarev --- qemu-options.hx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qemu-options.hx b/qemu-options.hx index 8355f9bd8e..688040ef72 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -2539,9 +2539,9 @@ Like -monitor but opens in 'control' mode. ETEXI DEF("mon", HAS_ARG, QEMU_OPTION_mon, \ - "-mon chardev=[name][,mode=readline|control][,default]\n", QEMU_ARCH_ALL) + "-mon [chardev=]name[,mode=readline|control][,default]\n", QEMU_ARCH_ALL) STEXI -@item -mon chardev=[name][,mode=readline|control][,default] +@item -mon [chardev=]name[,mode=readline|control][,default] @findex -mon Setup monitor on chardev @var{name}. ETEXI From 7c30f65703fc4698ea9794126f1b978f34ac93b9 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 16 Jun 2013 17:01:05 +0200 Subject: [PATCH 03/17] qemu-img: Add missing GCC_FMT_ATTR Signed-off-by: Stefan Weil Reviewed-by: Stefan Hajnoczi Signed-off-by: Michael Tokarev --- qemu-img.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qemu-img.c b/qemu-img.c index 809b4f1c00..f8c97d34d1 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -128,7 +128,7 @@ static void help(void) exit(1); } -static int qprintf(bool quiet, const char *fmt, ...) +static int GCC_FMT_ATTR(2, 3) qprintf(bool quiet, const char *fmt, ...) { int ret = 0; if (!quiet) { From 90527d2a8bb08ca5b4774eacfdd6b8fe9671c077 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 16 Jun 2013 13:37:25 +0200 Subject: [PATCH 04/17] kvm: Fix potential resource leak (missing fclose) This leak was detected by cppcheck. Signed-off-by: Stefan Weil Signed-off-by: Michael Tokarev --- hw/i386/kvm/pci-assign.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/i386/kvm/pci-assign.c b/hw/i386/kvm/pci-assign.c index ff855904ba..1fb7ad44ab 100644 --- a/hw/i386/kvm/pci-assign.c +++ b/hw/i386/kvm/pci-assign.c @@ -548,6 +548,7 @@ static int get_real_id(const char *devpath, const char *idname, uint16_t *val) if (fscanf(f, "%li\n", &id) == 1) { *val = id; } else { + fclose(f); return -1; } fclose(f); From 4f080057767a684aab60998659e18f98c5fbefc7 Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 16 Jun 2013 13:33:05 +0200 Subject: [PATCH 05/17] savevm: Fix potential memory leak The leak was reported by cppcheck. Fix it by moving the g_malloc0 after the argument validity check. Signed-off-by: Stefan Weil Signed-off-by: Michael Tokarev --- savevm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/savevm.c b/savevm.c index ff5ece651a..48cc2a995f 100644 --- a/savevm.c +++ b/savevm.c @@ -479,7 +479,7 @@ static const QEMUFileOps socket_write_ops = { QEMUFile *qemu_fopen_socket(int fd, const char *mode) { - QEMUFileSocket *s = g_malloc0(sizeof(QEMUFileSocket)); + QEMUFileSocket *s; if (mode == NULL || (mode[0] != 'r' && mode[0] != 'w') || @@ -488,6 +488,7 @@ QEMUFile *qemu_fopen_socket(int fd, const char *mode) return NULL; } + s = g_malloc0(sizeof(QEMUFileSocket)); s->fd = fd; if (mode[0] == 'w') { qemu_set_block(s->fd); From 48f0475f813dfa5ceb0e1f10c2ac3f28a8af583b Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 16 Jun 2013 11:08:52 +0200 Subject: [PATCH 06/17] libcacard: Fix cppcheck warning and remove unneeded code The local function vcard_emul_alloc_arrays always returned PR_TRUE. Therefore cppcheck complained about code which handled the non-existent PR_FALSE case. Remove the function's return value and the dead code. Signed-off-by: Stefan Weil Signed-off-by: Michael Tokarev --- libcacard/vcard_emul_nss.c | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/libcacard/vcard_emul_nss.c b/libcacard/vcard_emul_nss.c index 1a3e5683bc..fb429b1f82 100644 --- a/libcacard/vcard_emul_nss.c +++ b/libcacard/vcard_emul_nss.c @@ -90,17 +90,13 @@ static int nss_emul_init; /* * allocate the set of arrays for certs, cert_len, key */ -static PRBool +static void vcard_emul_alloc_arrays(unsigned char ***certsp, int **cert_lenp, VCardKey ***keysp, int cert_count) { - *certsp = NULL; - *cert_lenp = NULL; - *keysp = NULL; *certsp = (unsigned char **)g_malloc(sizeof(unsigned char *)*cert_count); *cert_lenp = (int *)g_malloc(sizeof(int)*cert_count); *keysp = (VCardKey **)g_malloc(sizeof(VCardKey *)*cert_count); - return PR_TRUE; } /* @@ -601,7 +597,6 @@ vcard_emul_mirror_card(VReader *vreader) int *cert_len; VCardKey **keys; PK11SlotInfo *slot; - PRBool ret; VCard *card; slot = vcard_emul_reader_get_slot(vreader); @@ -627,10 +622,7 @@ vcard_emul_mirror_card(VReader *vreader) } /* allocate the arrays */ - ret = vcard_emul_alloc_arrays(&certs, &cert_len, &keys, cert_count); - if (ret == PR_FALSE) { - return NULL; - } + vcard_emul_alloc_arrays(&certs, &cert_len, &keys, cert_count); /* fill in the arrays */ cert_count = 0; @@ -878,7 +870,7 @@ VCardEmulError vcard_emul_init(const VCardEmulOptions *options) { SECStatus rv; - PRBool ret, has_readers = PR_FALSE; + PRBool has_readers = PR_FALSE; VReader *vreader; VReaderEmul *vreader_emul; SECMODListLock *module_lock; @@ -944,11 +936,9 @@ vcard_emul_init(const VCardEmulOptions *options) vreader_add_reader(vreader); cert_count = options->vreader[i].cert_count; - ret = vcard_emul_alloc_arrays(&certs, &cert_len, &keys, - options->vreader[i].cert_count); - if (ret == PR_FALSE) { - continue; - } + vcard_emul_alloc_arrays(&certs, &cert_len, &keys, + options->vreader[i].cert_count); + cert_count = 0; for (j = 0; j < options->vreader[i].cert_count; j++) { /* we should have a better way of identifying certs than by From 87e613ea9ed30f4217fd11aa2ad28a9fb4f1c54a Mon Sep 17 00:00:00 2001 From: Stefan Weil Date: Sun, 16 Jun 2013 11:19:31 +0200 Subject: [PATCH 07/17] audio: Replace static functions in header file by macros, remove GCC_ATTR Using macros instead of static functions for dolog and for ldebug simplifies the code and can also reduce the total code size. GCC_ATTR was only used in audio_int.h, so it is now unused and the definition can be removed from compiler.h. Signed-off-by: Stefan Weil Signed-off-by: Michael Tokarev --- audio/audio_int.h | 31 +++---------------------------- include/qemu/compiler.h | 3 --- 2 files changed, 3 insertions(+), 31 deletions(-) diff --git a/audio/audio_int.h b/audio/audio_int.h index b9b0676d77..fd019a0fc3 100644 --- a/audio/audio_int.h +++ b/audio/audio_int.h @@ -243,38 +243,13 @@ static inline int audio_ring_dist (int dst, int src, int len) return (dst >= src) ? (dst - src) : (len - src + dst); } -static void GCC_ATTR dolog (const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - AUD_vlog (AUDIO_CAP, fmt, ap); - va_end (ap); -} +#define dolog(fmt, ...) AUD_log(AUDIO_CAP, fmt, ## __VA_ARGS__) #ifdef DEBUG -static void GCC_ATTR ldebug (const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - AUD_vlog (AUDIO_CAP, fmt, ap); - va_end (ap); -} +#define ldebug(fmt, ...) AUD_log(AUDIO_CAP, fmt, ## __VA_ARGS__) #else -#if defined NDEBUG && defined __GNUC__ -#define ldebug(...) -#elif defined NDEBUG && defined _MSC_VER -#define ldebug __noop -#else -static void GCC_ATTR ldebug (const char *fmt, ...) -{ - (void) fmt; -} +#define ldebug(fmt, ...) (void)0 #endif -#endif - -#undef GCC_ATTR #define AUDIO_STRINGIFY_(n) #n #define AUDIO_STRINGIFY(n) AUDIO_STRINGIFY_(n) diff --git a/include/qemu/compiler.h b/include/qemu/compiler.h index 6175c24c94..155b358964 100644 --- a/include/qemu/compiler.h +++ b/include/qemu/compiler.h @@ -38,11 +38,9 @@ #if defined __GNUC__ # if !QEMU_GNUC_PREREQ(4, 4) /* gcc versions before 4.4.x don't support gnu_printf, so use printf. */ -# define GCC_ATTR __attribute__((__unused__, format(printf, 1, 2))) # define GCC_FMT_ATTR(n, m) __attribute__((format(printf, n, m))) # else /* Use gnu_printf when supported (qemu uses standard format strings). */ -# define GCC_ATTR __attribute__((__unused__, format(gnu_printf, 1, 2))) # define GCC_FMT_ATTR(n, m) __attribute__((format(gnu_printf, n, m))) # if defined(_WIN32) /* Map __printf__ to __gnu_printf__ because we want standard format strings @@ -51,7 +49,6 @@ # endif # endif #else -#define GCC_ATTR /**/ #define GCC_FMT_ATTR(n, m) #endif From f2c4ddd9c32f7f389e83a0d866fb600e37985d03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Tue, 18 Jun 2013 01:09:06 +0200 Subject: [PATCH 08/17] configure: Fix "ERROR: ERROR: " for missing/incompatible DTC MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit error_exit already prepends "ERROR: ", so no need to print it manually. Signed-off-by: Andreas Färber Reviewed-by: Peter Maydell Signed-off-by: Michael Tokarev --- configure | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure b/configure index ad32f87b8e..bb126e8364 100755 --- a/configure +++ b/configure @@ -2529,7 +2529,7 @@ EOF fdt_libs="-L\$(BUILD_DIR)/dtc/libfdt $fdt_libs" elif test "$fdt" = "yes" ; then # have neither and want - prompt for system/submodule install - error_exit "ERROR: DTC not present. Your options:" \ + error_exit "DTC not present. Your options:" \ " (1) Preferred: Install the DTC devel package" \ " (2) Fetch the DTC submodule, using:" \ " git submodule update --init dtc" From 4999f3a8a6009de05ba82e58e723277917f16254 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Tue, 18 Jun 2013 10:05:23 +0200 Subject: [PATCH 09/17] acl: acl_add can't insert before last list element, fix Watch this: $ upstream-qemu -nodefaults -S -vnc :0,acl,sasl -monitor stdio QEMU 1.5.50 monitor - type 'help' for more information (qemu) acl_add vnc.username drei allow acl: added rule at position 1 (qemu) acl_show vnc.username policy: deny 1: allow drei (qemu) acl_add vnc.username zwei allow 1 acl: added rule at position 2 (qemu) acl_show vnc.username policy: deny 1: allow drei 2: allow zwei (qemu) acl_add vnc.username eins allow 1 acl: added rule at position 1 (qemu) acl_show vnc.username policy: deny 1: allow eins 2: allow drei 3: allow zwei The second acl_add inserts at position 2 instead of 1. Root cause is an off-by-one in qemu_acl_insert(): when index == acl->nentries, it appends instead of inserting before the last list element. Cc: qemu-stable@nongnu.org Signed-off-by: Markus Armbruster Reviewed-by: Michael Roth Signed-off-by: Michael Tokarev --- util/acl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/util/acl.c b/util/acl.c index a7f33ff7bb..938b7ae2d2 100644 --- a/util/acl.c +++ b/util/acl.c @@ -138,9 +138,9 @@ int qemu_acl_insert(qemu_acl *acl, if (index <= 0) return -1; - if (index >= acl->nentries) + if (index > acl->nentries) { return qemu_acl_append(acl, deny, match); - + } entry = g_malloc(sizeof(*entry)); entry->match = g_strdup(match); From 329f97fc4ff4b533fcd2d8f4eab6c9c2568aed27 Mon Sep 17 00:00:00 2001 From: Anthony PERARD Date: Mon, 17 Jun 2013 17:38:26 +0100 Subject: [PATCH 10/17] qxl: Fix QXLRam initialisation. The qxl driver expect NULL for QXLRam.memory_configs, but this is never initialized. If memory is set to 0xc2c2.., it leads to a spice-critical error when trying to start qxl. Signed-off-by: Anthony PERARD Reviewed-by: Gerd Hoffmann Signed-off-by: Michael Tokarev --- hw/display/qxl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/display/qxl.c b/hw/display/qxl.c index c475cb10dc..937a402b2e 100644 --- a/hw/display/qxl.c +++ b/hw/display/qxl.c @@ -387,6 +387,7 @@ static void init_qxl_ram(PCIQXLDevice *d) d->ram->int_pending = cpu_to_le32(0); d->ram->int_mask = cpu_to_le32(0); d->ram->update_surface = 0; + d->ram->monitors_config = 0; SPICE_RING_INIT(&d->ram->cmd_ring); SPICE_RING_INIT(&d->ram->cursor_ring); SPICE_RING_INIT(&d->ram->release_ring); From 1984745ea8ad309a06690a83e91d031d21d709ff Mon Sep 17 00:00:00 2001 From: Peter Crosthwaite Date: Tue, 18 Jun 2013 21:08:57 +1000 Subject: [PATCH 11/17] block/nand: Formatting sweep Make this code closer to passing checkpatch. Mostly missing braces, but a few rogue tabs in there as well. Cc: qemu-trivial@nongnu.org Signed-off-by: Peter Crosthwaite Signed-off-by: Michael Tokarev --- hw/block/nand.c | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/hw/block/nand.c b/hw/block/nand.c index 087ca14ed1..43401a0b1b 100644 --- a/hw/block/nand.c +++ b/hw/block/nand.c @@ -298,10 +298,8 @@ static void nand_command(NANDFlashState *s) case NAND_CMD_BLOCKERASE2: s->addr &= (1ull << s->addrlen * 8) - 1; - if (nand_flash_ids[s->chip_id].options & NAND_SAMSUNG_LP) - s->addr <<= 16; - else - s->addr <<= 8; + s->addr <<= nand_flash_ids[s->chip_id].options & NAND_SAMSUNG_LP ? + 16 : 8; if (s->wp) { s->blk_erase(s); @@ -464,10 +462,11 @@ void nand_setpins(DeviceState *dev, uint8_t cle, uint8_t ale, s->ce = ce; s->wp = wp; s->gnd = gnd; - if (wp) + if (wp) { s->status |= NAND_IOSTATUS_UNPROTCT; - else + } else { s->status &= ~NAND_IOSTATUS_UNPROTCT; + } } void nand_getpins(DeviceState *dev, int *rb) @@ -489,13 +488,12 @@ void nand_setio(DeviceState *dev, uint32_t value) return; } } - if (value == NAND_CMD_READ0) + if (value == NAND_CMD_READ0) { s->offset = 0; - else if (value == NAND_CMD_READ1) { + } else if (value == NAND_CMD_READ1) { s->offset = 0x100; value = NAND_CMD_READ0; - } - else if (value == NAND_CMD_READ2) { + } else if (value == NAND_CMD_READ2) { s->offset = 1 << s->page_shift; value = NAND_CMD_READ0; } @@ -508,8 +506,9 @@ void nand_setio(DeviceState *dev, uint32_t value) s->cmd == NAND_CMD_BLOCKERASE2 || s->cmd == NAND_CMD_NOSERIALREAD2 || s->cmd == NAND_CMD_RANDOMREAD2 || - s->cmd == NAND_CMD_RESET) + s->cmd == NAND_CMD_RESET) { nand_command(s); + } if (s->cmd != NAND_CMD_RANDOMREAD2) { s->addrlen = 0; @@ -596,8 +595,9 @@ uint32_t nand_getio(DeviceState *dev) s->iolen = (1 << s->page_shift) + (1 << s->oob_shift) - offset; } - if (s->ce || s->iolen <= 0) + if (s->ce || s->iolen <= 0) { return 0; + } for (offset = s->buswidth; offset--;) { x |= s->ioaddr[offset] << (offset << 3); @@ -696,8 +696,9 @@ static void glue(nand_blk_erase_, PAGE_SIZE)(NANDFlashState *s) uint8_t iobuf[0x200] = { [0 ... 0x1ff] = 0xff, }; addr = s->addr & ~((1 << (ADDR_SHIFT + s->erase_shift)) - 1); - if (PAGE(addr) >= s->pages) + if (PAGE(addr) >= s->pages) { return; + } if (!s->bdrv) { memset(s->storage + PAGE_START(addr), @@ -725,11 +726,12 @@ static void glue(nand_blk_erase_, PAGE_SIZE)(NANDFlashState *s) memset(iobuf, 0xff, 0x200); i = (addr & ~0x1ff) + 0x200; for (addr += ((PAGE_SIZE + OOB_SIZE) << s->erase_shift) - 0x200; - i < addr; i += 0x200) + i < addr; i += 0x200) { if (bdrv_write(s->bdrv, i >> 9, iobuf, 1) < 0) { printf("%s: write error in sector %" PRIu64 "\n", __func__, i >> 9); } + } page = i >> 9; if (bdrv_read(s->bdrv, page, iobuf, 1) < 0) { @@ -745,8 +747,9 @@ static void glue(nand_blk_erase_, PAGE_SIZE)(NANDFlashState *s) static void glue(nand_blk_load_, PAGE_SIZE)(NANDFlashState *s, uint64_t addr, int offset) { - if (PAGE(addr) >= s->pages) + if (PAGE(addr) >= s->pages) { return; + } if (s->bdrv) { if (s->mem_oob) { From 2c8cf549571bbe0b245fc4f9680e1dbde39a015c Mon Sep 17 00:00:00 2001 From: Michael Tokarev Date: Tue, 11 Jun 2013 15:42:44 +0400 Subject: [PATCH 12/17] vnc: use booleans for vnc_connect, vnc_listen_read and vnc_display_add_client Some arguments to these functions are booleans - either by declaration, or by actual usage, but sometimes value of 0 or 1 is passed for a bool, and sometimes it is declared as int but a bool value, or true/false, is passed to it instead. Clean it up a bit. Cc: liguang Signed-off-by: Michael Tokarev --- include/ui/console.h | 2 +- ui/vnc.c | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index f1d79f92a4..98edf413a6 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -314,7 +314,7 @@ void cocoa_display_init(DisplayState *ds, int full_screen); /* vnc.c */ void vnc_display_init(DisplayState *ds); void vnc_display_open(DisplayState *ds, const char *display, Error **errp); -void vnc_display_add_client(DisplayState *ds, int csock, int skipauth); +void vnc_display_add_client(DisplayState *ds, int csock, bool skipauth); char *vnc_display_local_addr(DisplayState *ds); #ifdef CONFIG_VNC int vnc_display_password(DisplayState *ds, const char *password); diff --git a/ui/vnc.c b/ui/vnc.c index dfc74591f4..5601cc34ef 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -2771,7 +2771,8 @@ static void vnc_refresh(DisplayChangeListener *dcl) } } -static void vnc_connect(VncDisplay *vd, int csock, int skipauth, bool websocket) +static void vnc_connect(VncDisplay *vd, int csock, + bool skipauth, bool websocket) { VncState *vs = g_malloc0(sizeof(VncState)); int i; @@ -2883,19 +2884,19 @@ static void vnc_listen_read(void *opaque, bool websocket) } if (csock != -1) { - vnc_connect(vs, csock, 0, websocket); + vnc_connect(vs, csock, false, websocket); } } static void vnc_listen_regular_read(void *opaque) { - vnc_listen_read(opaque, 0); + vnc_listen_read(opaque, false); } #ifdef CONFIG_VNC_WS static void vnc_listen_websocket_read(void *opaque) { - vnc_listen_read(opaque, 1); + vnc_listen_read(opaque, true); } #endif /* CONFIG_VNC_WS */ @@ -3283,7 +3284,7 @@ void vnc_display_open(DisplayState *ds, const char *display, Error **errp) if (csock < 0) { goto fail; } - vnc_connect(vs, csock, 0, 0); + vnc_connect(vs, csock, false, false); } else { /* listen for connects */ char *dpy; @@ -3341,9 +3342,9 @@ fail: #endif /* CONFIG_VNC_WS */ } -void vnc_display_add_client(DisplayState *ds, int csock, int skipauth) +void vnc_display_add_client(DisplayState *ds, int csock, bool skipauth) { VncDisplay *vs = vnc_display; - vnc_connect(vs, csock, skipauth, 0); + vnc_connect(vs, csock, skipauth, false); } From e990a3932847c45839355de72e73182a53fc75ac Mon Sep 17 00:00:00 2001 From: liguang Date: Tue, 18 Jun 2013 11:45:35 +0800 Subject: [PATCH 13/17] qemu-char: use bool in qemu_chr_open_socket and simplify code a bit Local variables is_* should be bool by usage. While at it, simplify the logic/code a bit. Signed-off-by: liguang Signed-off-by: Michael Tokarev --- qemu-char.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/qemu-char.c b/qemu-char.c index 2c3cfe6b69..a030e6b01e 100644 --- a/qemu-char.c +++ b/qemu-char.c @@ -2679,19 +2679,12 @@ static CharDriverState *qemu_chr_open_socket(QemuOpts *opts) CharDriverState *chr = NULL; Error *local_err = NULL; int fd = -1; - int is_listen; - int is_waitconnect; - int do_nodelay; - int is_unix; - int is_telnet; - is_listen = qemu_opt_get_bool(opts, "server", 0); - is_waitconnect = qemu_opt_get_bool(opts, "wait", 1); - is_telnet = qemu_opt_get_bool(opts, "telnet", 0); - do_nodelay = !qemu_opt_get_bool(opts, "delay", 1); - is_unix = qemu_opt_get(opts, "path") != NULL; - if (!is_listen) - is_waitconnect = 0; + bool is_listen = qemu_opt_get_bool(opts, "server", false); + bool is_waitconnect = is_listen && qemu_opt_get_bool(opts, "wait", true); + bool is_telnet = qemu_opt_get_bool(opts, "telnet", false); + bool do_nodelay = !qemu_opt_get_bool(opts, "delay", true); + bool is_unix = qemu_opt_get(opts, "path") != NULL; if (is_unix) { if (is_listen) { From 6790f59da37f6b8d4f0fe3a6b17febf512511307 Mon Sep 17 00:00:00 2001 From: liguang Date: Tue, 18 Jun 2013 11:45:36 +0800 Subject: [PATCH 14/17] sd: pass bool parameter for sd_init Signed-off-by: liguang Signed-off-by: Michael Tokarev --- hw/sd/milkymist-memcard.c | 2 +- hw/sd/omap_mmc.c | 4 ++-- hw/sd/pl181.c | 2 +- hw/sd/pxa2xx_mmci.c | 2 +- hw/sd/sdhci.c | 2 +- hw/sd/ssi-sd.c | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c index d5944bca69..61a8aadddd 100644 --- a/hw/sd/milkymist-memcard.c +++ b/hw/sd/milkymist-memcard.c @@ -250,7 +250,7 @@ static int milkymist_memcard_init(SysBusDevice *dev) DriveInfo *dinfo; dinfo = drive_get_next(IF_SD); - s->card = sd_init(dinfo ? dinfo->bdrv : NULL, 0); + s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false); s->enabled = dinfo ? bdrv_is_inserted(dinfo->bdrv) : 0; memory_region_init_io(&s->regs_region, &memcard_mmio_ops, s, diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c index d4079cde0b..ba9f4b3098 100644 --- a/hw/sd/omap_mmc.c +++ b/hw/sd/omap_mmc.c @@ -592,7 +592,7 @@ struct omap_mmc_s *omap_mmc_init(hwaddr base, memory_region_add_subregion(sysmem, base, &s->iomem); /* Instantiate the storage */ - s->card = sd_init(bd, 0); + s->card = sd_init(bd, false); return s; } @@ -617,7 +617,7 @@ struct omap_mmc_s *omap2_mmc_init(struct omap_target_agent_s *ta, omap_l4_attach(ta, 0, &s->iomem); /* Instantiate the storage */ - s->card = sd_init(bd, 0); + s->card = sd_init(bd, false); s->cdet = qemu_allocate_irqs(omap_mmc_cover_cb, s, 1)[0]; sd_set_cb(s->card, NULL, s->cdet); diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c index 2527296776..e08fd04e7e 100644 --- a/hw/sd/pl181.c +++ b/hw/sd/pl181.c @@ -485,7 +485,7 @@ static int pl181_init(SysBusDevice *dev) sysbus_init_irq(dev, &s->irq[1]); qdev_init_gpio_out(&s->busdev.qdev, s->cardstatus, 2); dinfo = drive_get_next(IF_SD); - s->card = sd_init(dinfo ? dinfo->bdrv : NULL, 0); + s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false); return 0; } diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c index 2db1cabb7a..0574d6b26d 100644 --- a/hw/sd/pxa2xx_mmci.c +++ b/hw/sd/pxa2xx_mmci.c @@ -538,7 +538,7 @@ PXA2xxMMCIState *pxa2xx_mmci_init(MemoryRegion *sysmem, memory_region_add_subregion(sysmem, base, &s->iomem); /* Instantiate the actual storage */ - s->card = sd_init(bd, 0); + s->card = sd_init(bd, false); register_savevm(NULL, "pxa2xx_mmci", 0, 0, pxa2xx_mmci_save, pxa2xx_mmci_load, s); diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c index 00650674bd..b9dd4bebc1 100644 --- a/hw/sd/sdhci.c +++ b/hw/sd/sdhci.c @@ -1165,7 +1165,7 @@ static void sdhci_initfn(Object *obj) DriveInfo *di; di = drive_get_next(IF_SD); - s->card = sd_init(di ? di->bdrv : NULL, 0); + s->card = sd_init(di ? di->bdrv : NULL, false); s->eject_cb = qemu_allocate_irqs(sdhci_insert_eject_cb, s, 1)[0]; s->ro_cb = qemu_allocate_irqs(sdhci_card_readonly_cb, s, 1)[0]; sd_set_cb(s->card, s->ro_cb, s->eject_cb); diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c index 4d3c4f6445..d47e2377f9 100644 --- a/hw/sd/ssi-sd.c +++ b/hw/sd/ssi-sd.c @@ -245,7 +245,7 @@ static int ssi_sd_init(SSISlave *dev) s->mode = SSI_SD_CMD; dinfo = drive_get_next(IF_SD); - s->sd = sd_init(dinfo ? dinfo->bdrv : NULL, 1); + s->sd = sd_init(dinfo ? dinfo->bdrv : NULL, true); register_savevm(&dev->qdev, "ssi_sd", -1, 1, ssi_sd_save, ssi_sd_load, s); return 0; } From ad0f171e25fb60b385dc7d07632916d3b1043d81 Mon Sep 17 00:00:00 2001 From: Amos Kong Date: Wed, 19 Jun 2013 17:23:27 +0800 Subject: [PATCH 15/17] qapi: lack of two commas in dict Signed-off-by: Amos Kong Signed-off-by: Michael Tokarev --- qapi-schema.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/qapi-schema.json b/qapi-schema.json index a80ee405d1..6cc07c20ce 100644 --- a/qapi-schema.json +++ b/qapi-schema.json @@ -391,7 +391,7 @@ # # Since: 1.4 ## -{ 'enum': 'DataFormat' +{ 'enum': 'DataFormat', 'data': [ 'utf8', 'base64' ] } ## @@ -1595,7 +1595,7 @@ # # Since: 1.1 ## -{ 'enum': 'NewImageMode' +{ 'enum': 'NewImageMode', 'data': [ 'existing', 'absolute-paths' ] } ## From 965f486c21a0a8fed33e65278516edfc01d1e2fd Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 21 Jun 2013 14:00:17 +0100 Subject: [PATCH 16/17] Makefile: pass include directives to dtc via CPPFLAGS, not CFLAGS The dtc submodule's makefile expects -I include directives to be in CPPFLAGS, not CFLAGS. Getting this wrong meant that the include directive would not be applied when generating the dependency .d files. This in turn meant that we couldn't build libfdt when doing an out of tree build with clang. (gcc's dependency output is slightly different from clang in this situation so it happened to work.) Signed-off-by: Peter Maydell Signed-off-by: Michael Tokarev --- Makefile | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 3cfa7d0f75..c06bfaba20 100644 --- a/Makefile +++ b/Makefile @@ -146,10 +146,11 @@ $(SRC_PATH)/pixman/configure: (cd $(SRC_PATH)/pixman; autoreconf -v --install) DTC_MAKE_ARGS=-I$(SRC_PATH)/dtc VPATH=$(SRC_PATH)/dtc -C dtc V="$(V)" LIBFDT_srcdir=$(SRC_PATH)/dtc/libfdt -DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS) -I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt +DTC_CFLAGS=$(CFLAGS) $(QEMU_CFLAGS) +DTC_CPPFLAGS=-I$(BUILD_DIR)/dtc -I$(SRC_PATH)/dtc -I$(SRC_PATH)/dtc/libfdt subdir-dtc:dtc/libfdt dtc/tests - $(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,) + $(call quiet-command,$(MAKE) $(DTC_MAKE_ARGS) CPPFLAGS="$(DTC_CPPFLAGS)" CFLAGS="$(DTC_CFLAGS)" LDFLAGS="$(LDFLAGS)" ARFLAGS="$(ARFLAGS)" CC="$(CC)" AR="$(AR)" LD="$(LD)" $(SUBDIR_MAKEFLAGS) libfdt/libfdt.a,) dtc/%: mkdir -p $@ From 464e3671f9d5c206fa9e2646c81f21ceef7cfb7d Mon Sep 17 00:00:00 2001 From: Peter Maydell Date: Fri, 21 Jun 2013 14:01:31 +0100 Subject: [PATCH 17/17] configure: Add signed*signed check to [u]int128_t test clang 3.3 with -fsanitize=undefined will fail to link code containing an int128_t * int128_t multiply (http://llvm.org/bugs/show_bug.cgi?id=16404) so add this to our configure test for whether [u]int128_t are usable. Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Signed-off-by: Michael Tokarev --- configure | 1 + 1 file changed, 1 insertion(+) diff --git a/configure b/configure index bb126e8364..0e0adde410 100755 --- a/configure +++ b/configure @@ -3329,6 +3329,7 @@ __uint128_t b; int main (void) { a = a + b; b = a * b; + a = a * a; return 0; } EOF