qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 01/15] Introduce qemu_write_full()
@ 2010-01-02  3:45 Kirill A. Shutemov
  2010-01-02  3:45 ` [Qemu-devel] [PATCH 02/15] posix-aio-compat.c: fix warning with _FORTIFY_SOURCE Kirill A. Shutemov
  2010-01-02 10:34 ` [Qemu-devel] Re: [PATCH 01/15] Introduce qemu_write_full() Paolo Bonzini
  0 siblings, 2 replies; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

A variant of write(2) which handles partial write.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 osdep.c       |   27 +++++++++++++++++++++++++++
 qemu-common.h |    2 ++
 2 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/osdep.c b/osdep.c
index e4836e7..8ae48fe 100644
--- a/osdep.c
+++ b/osdep.c
@@ -243,6 +243,33 @@ int qemu_open(const char *name, int flags, ...)
     return ret;
 }
 
+/*
+ * A variant of write(2) which handles partial write.
+ *
+ * Return the number of bytes transferred.
+ * Set errno if fewer than `count' bytes are written.
+ */
+size_t qemu_write_full(int fd, const void *buf, size_t count)
+{
+    ssize_t ret;
+    size_t total = 0;
+
+    while (count) {
+        ret = write(fd, buf, count);
+        if (ret < 0) {
+            if (errno == EINTR)
+                continue;
+            break;
+        }
+
+        count -= ret;
+        buf += ret;
+        total += ret;
+    }
+
+    return total;
+}
+
 #ifndef _WIN32
 /*
  * Creates a pipe with FD_CLOEXEC set on both file descriptors
diff --git a/qemu-common.h b/qemu-common.h
index 8630f8c..7231348 100644
--- a/qemu-common.h
+++ b/qemu-common.h
@@ -160,6 +160,8 @@ void qemu_mutex_lock_iothread(void);
 void qemu_mutex_unlock_iothread(void);
 
 int qemu_open(const char *name, int flags, ...);
+size_t qemu_write_full(int fd, const void *buf, size_t count)
+    __attribute__ ((warn_unused_result));
 void qemu_set_cloexec(int fd);
 
 #ifndef _WIN32
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 02/15] posix-aio-compat.c: fix warning with _FORTIFY_SOURCE
  2010-01-02  3:45 [Qemu-devel] [PATCH 01/15] Introduce qemu_write_full() Kirill A. Shutemov
@ 2010-01-02  3:45 ` Kirill A. Shutemov
  2010-01-02  3:45   ` [Qemu-devel] [PATCH 03/15] block/cow.c: fix warnings " Kirill A. Shutemov
  2010-01-02 10:34 ` [Qemu-devel] Re: [PATCH 01/15] Introduce qemu_write_full() Paolo Bonzini
  1 sibling, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    posix-aio-compat.o
cc1: warnings being treated as errors
posix-aio-compat.c: In function 'aio_signal_handler':
posix-aio-compat.c:505: error: ignoring return value of 'write', declared with attribute warn_unused_result
make: *** [posix-aio-compat.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 posix-aio-compat.c |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/posix-aio-compat.c b/posix-aio-compat.c
index dc14f53..1272e84 100644
--- a/posix-aio-compat.c
+++ b/posix-aio-compat.c
@@ -501,8 +501,11 @@ static void aio_signal_handler(int signum)
 {
     if (posix_aio_state) {
         char byte = 0;
+        int ret;
 
-        write(posix_aio_state->wfd, &byte, sizeof(byte));
+        ret = write(posix_aio_state->wfd, &byte, sizeof(byte));
+        if (ret < 0 && (errno != EINTR && errno != EAGAIN))
+            die("write()");
     }
 
     qemu_service_io();
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 03/15] block/cow.c: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45 ` [Qemu-devel] [PATCH 02/15] posix-aio-compat.c: fix warning with _FORTIFY_SOURCE Kirill A. Shutemov
@ 2010-01-02  3:45   ` Kirill A. Shutemov
  2010-01-02  3:45     ` [Qemu-devel] [PATCH 04/15] block/qcow.c: " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    block/cow.o
cc1: warnings being treated as errors
block/cow.c: In function 'cow_create':
block/cow.c:251: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/cow.c:253: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result
make: *** [block/cow.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block/cow.c |   19 ++++++++++++++++---
 1 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/block/cow.c b/block/cow.c
index a70854e..ba07b97 100644
--- a/block/cow.c
+++ b/block/cow.c
@@ -209,6 +209,7 @@ static int cow_create(const char *filename, QEMUOptionParameter *options)
     struct stat st;
     int64_t image_sectors = 0;
     const char *image_filename = NULL;
+    int ret;
 
     /* Read out options */
     while (options && options->name) {
@@ -248,11 +249,23 @@ static int cow_create(const char *filename, QEMUOptionParameter *options)
     }
     cow_header.sectorsize = cpu_to_be32(512);
     cow_header.size = cpu_to_be64(image_sectors * 512);
-    write(cow_fd, &cow_header, sizeof(cow_header));
+    ret = qemu_write_full(cow_fd, &cow_header, sizeof(cow_header));
+    if (ret != sizeof(cow_header)) {
+        ret = -errno;
+        goto exit;
+    }
+
     /* resize to include at least all the bitmap */
-    ftruncate(cow_fd, sizeof(cow_header) + ((image_sectors + 7) >> 3));
+    ret = ftruncate(cow_fd, sizeof(cow_header) + ((image_sectors + 7) >> 3));
+    if (ret) {
+        ret = -errno;
+        goto exit;
+    }
+
+    ret = 0;
+exit:
     close(cow_fd);
-    return 0;
+    return ret;
 }
 
 static void cow_flush(BlockDriverState *bs)
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 04/15] block/qcow.c: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45   ` [Qemu-devel] [PATCH 03/15] block/cow.c: fix warnings " Kirill A. Shutemov
@ 2010-01-02  3:45     ` Kirill A. Shutemov
  2010-01-02  3:45       ` [Qemu-devel] [PATCH 05/15] block/vmdk.o: " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    block/qcow.o
cc1: warnings being treated as errors
block/qcow.c: In function 'qcow_create':
block/qcow.c:804: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow.c:806: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow.c:811: error: ignoring return value of 'write', declared with attribute warn_unused_result
make: *** [block/qcow.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block/qcow.c |   25 +++++++++++++++++++++----
 1 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/block/qcow.c b/block/qcow.c
index 7fc85ae..28cc092 100644
--- a/block/qcow.c
+++ b/block/qcow.c
@@ -750,6 +750,7 @@ static int qcow_create(const char *filename, QEMUOptionParameter *options)
     int64_t total_size = 0;
     const char *backing_file = NULL;
     int flags = 0;
+    int ret;
 
     /* Read out options */
     while (options && options->name) {
@@ -801,17 +802,33 @@ static int qcow_create(const char *filename, QEMUOptionParameter *options)
     }
 
     /* write all the data */
-    write(fd, &header, sizeof(header));
+    ret = qemu_write_full(fd, &header, sizeof(header));
+    if (ret != sizeof(header)) {
+        ret = -errno;
+        goto exit;
+    }
+
     if (backing_file) {
-        write(fd, backing_file, backing_filename_len);
+        ret = qemu_write_full(fd, backing_file, backing_filename_len);
+        if (ret != backing_filename_len) {
+            ret = -errno;
+            goto exit;
+        }
     }
     lseek(fd, header_size, SEEK_SET);
     tmp = 0;
     for(i = 0;i < l1_size; i++) {
-        write(fd, &tmp, sizeof(tmp));
+        ret = qemu_write_full(fd, &tmp, sizeof(tmp));
+        if (ret != sizeof(tmp)) {
+            ret = -errno;
+            goto exit;
+        }
     }
+
+    ret = 0;
+exit:
     close(fd);
-    return 0;
+    return ret;
 }
 
 static int qcow_make_empty(BlockDriverState *bs)
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 05/15] block/vmdk.o: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45     ` [Qemu-devel] [PATCH 04/15] block/qcow.c: " Kirill A. Shutemov
@ 2010-01-02  3:45       ` Kirill A. Shutemov
  2010-01-02  3:45         ` [Qemu-devel] [PATCH 06/15] block/vvfat.c: " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    block/vmdk.o
cc1: warnings being treated as errors
block/vmdk.c: In function 'vmdk_snapshot_create':
block/vmdk.c:236: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result
block/vmdk.c: In function 'vmdk_create':
block/vmdk.c:775: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/vmdk.c:776: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/vmdk.c:778: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result
block/vmdk.c:784: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/vmdk.c:790: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/vmdk.c:807: error: ignoring return value of 'write', declared with attribute warn_unused_result
make: *** [block/vmdk.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block/vmdk.c |   50 ++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 10 deletions(-)

diff --git a/block/vmdk.c b/block/vmdk.c
index 4e48622..58fc04b 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -233,7 +233,8 @@ static int vmdk_snapshot_create(const char *filename, const char *backing_file)
     memset(&header, 0, sizeof(header));
     memcpy(&header,&hdr[4], sizeof(header)); // skip the VMDK4_MAGIC
 
-    ftruncate(snp_fd, header.grain_offset << 9);
+    if (ftruncate(snp_fd, header.grain_offset << 9))
+        goto fail;
     /* the descriptor offset = 0x200 */
     if (lseek(p_fd, 0x200, SEEK_SET) == -1)
         goto fail;
@@ -716,6 +717,7 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options)
     int64_t total_size = 0;
     const char *backing_file = NULL;
     int flags = 0;
+    int ret;
 
     // Read out options
     while (options && options->name) {
@@ -772,22 +774,44 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options)
     header.check_bytes[3] = 0xa;
 
     /* write all the data */
-    write(fd, &magic, sizeof(magic));
-    write(fd, &header, sizeof(header));
+    ret = qemu_write_full(fd, &magic, sizeof(magic));
+    if (ret != sizeof(magic)) {
+        ret = -errno;
+        goto exit;
+    }
+    ret = qemu_write_full(fd, &header, sizeof(header));
+    if (ret != sizeof(header)) {
+        ret = -errno;
+        goto exit;
+    }
 
-    ftruncate(fd, header.grain_offset << 9);
+    ret = ftruncate(fd, header.grain_offset << 9);
+    if (ret < 0) {
+        ret = -errno;
+        goto exit;
+    }
 
     /* write grain directory */
     lseek(fd, le64_to_cpu(header.rgd_offset) << 9, SEEK_SET);
     for (i = 0, tmp = header.rgd_offset + gd_size;
-         i < gt_count; i++, tmp += gt_size)
-        write(fd, &tmp, sizeof(tmp));
+         i < gt_count; i++, tmp += gt_size) {
+        ret = qemu_write_full(fd, &tmp, sizeof(tmp));
+        if (ret != sizeof(tmp)) {
+            ret = -errno;
+            goto exit;
+        }
+    }
 
     /* write backup grain directory */
     lseek(fd, le64_to_cpu(header.gd_offset) << 9, SEEK_SET);
     for (i = 0, tmp = header.gd_offset + gd_size;
-         i < gt_count; i++, tmp += gt_size)
-        write(fd, &tmp, sizeof(tmp));
+         i < gt_count; i++, tmp += gt_size) {
+        ret = qemu_write_full(fd, &tmp, sizeof(tmp));
+        if (ret != sizeof(tmp)) {
+            ret = -errno;
+            goto exit;
+        }
+    }
 
     /* compose the descriptor */
     real_filename = filename;
@@ -804,10 +828,16 @@ static int vmdk_create(const char *filename, QEMUOptionParameter *options)
 
     /* write the descriptor */
     lseek(fd, le64_to_cpu(header.desc_offset) << 9, SEEK_SET);
-    write(fd, desc, strlen(desc));
+    ret = qemu_write_full(fd, desc, strlen(desc));
+    if (ret != strlen(desc)) {
+        ret = -errno;
+        goto exit;
+    }
 
+    ret = 0;
+exit:
     close(fd);
-    return 0;
+    return ret;
 }
 
 static void vmdk_close(BlockDriverState *bs)
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 06/15] block/vvfat.c: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45       ` [Qemu-devel] [PATCH 05/15] block/vmdk.o: " Kirill A. Shutemov
@ 2010-01-02  3:45         ` Kirill A. Shutemov
  2010-01-02  3:45           ` [Qemu-devel] [PATCH 07/15] block/qcow2.c: " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    block/vvfat.o
cc1: warnings being treated as errors
block/vvfat.c: In function 'commit_one_file':
block/vvfat.c:2259: error: ignoring return value of 'ftruncate', declared with attribute warn_unused_result
make: *** [block/vvfat.o] Error 1
  CC    block/vvfat.o
In file included from /usr/include/stdio.h:912,
                 from ./qemu-common.h:19,
                 from block/vvfat.c:27:
In function 'snprintf',
    inlined from 'init_directories' at block/vvfat.c:871,
    inlined from 'vvfat_open' at block/vvfat.c:1068:
/usr/include/bits/stdio2.h:65: error: call to __builtin___snprintf_chk will always overflow destination buffer
make: *** [block/vvfat.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block/vvfat.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/block/vvfat.c b/block/vvfat.c
index 063f731..8140dbc 100644
--- a/block/vvfat.c
+++ b/block/vvfat.c
@@ -868,7 +868,7 @@ static int init_directories(BDRVVVFATState* s,
     {
 	direntry_t* entry=array_get_next(&(s->directory));
 	entry->attributes=0x28; /* archive | volume label */
-	snprintf((char*)entry->name,11,"QEMU VVFAT");
+        memcpy(entry->name, "QEMU VVFAT", 11);
     }
 
     /* Now build FAT, and write back information into directory */
@@ -2256,7 +2256,10 @@ static int commit_one_file(BDRVVVFATState* s,
 	c = c1;
     }
 
-    ftruncate(fd, size);
+    if (ftruncate(fd, size)) {
+        perror("ftruncate()");
+        abort();
+    }
     close(fd);
 
     return commit_mappings(s, first_cluster, dir_index);
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 07/15] block/qcow2.c: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45         ` [Qemu-devel] [PATCH 06/15] block/vvfat.c: " Kirill A. Shutemov
@ 2010-01-02  3:45           ` Kirill A. Shutemov
  2010-01-02  3:45             ` [Qemu-devel] [PATCH 08/15] net/slirp.c: fix warning " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    block/qcow2.o
cc1: warnings being treated as errors
block/qcow2.c: In function 'qcow_create2':
block/qcow2.c:829: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:838: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:839: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:841: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:844: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:849: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:852: error: ignoring return value of 'write', declared with attribute warn_unused_result
block/qcow2.c:855: error: ignoring return value of 'write', declared with attribute warn_unused_result
make: *** [block/qcow2.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 block/qcow2.c |   55 +++++++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 45 insertions(+), 10 deletions(-)

diff --git a/block/qcow2.c b/block/qcow2.c
index 984264b..1874124 100644
--- a/block/qcow2.c
+++ b/block/qcow2.c
@@ -743,7 +743,7 @@ static int qcow_create2(const char *filename, int64_t total_size,
     uint64_t tmp, offset;
     QCowCreateState s1, *s = &s1;
     QCowExtension ext_bf = {0, 0};
-
+    int ret;
 
     memset(s, 0, sizeof(*s));
 
@@ -826,7 +826,11 @@ static int qcow_create2(const char *filename, int64_t total_size,
         ref_clusters * s->cluster_size);
 
     /* write all the data */
-    write(fd, &header, sizeof(header));
+    ret = qemu_write_full(fd, &header, sizeof(header));
+    if (ret != sizeof(header)) {
+        ret = -errno;
+        goto exit;
+    }
     if (backing_file) {
         if (backing_format_len) {
             char zero[16];
@@ -835,25 +839,56 @@ static int qcow_create2(const char *filename, int64_t total_size,
             memset(zero, 0, sizeof(zero));
             cpu_to_be32s(&ext_bf.magic);
             cpu_to_be32s(&ext_bf.len);
-            write(fd, &ext_bf, sizeof(ext_bf));
-            write(fd, backing_format, backing_format_len);
+            ret = qemu_write_full(fd, &ext_bf, sizeof(ext_bf));
+            if (ret != sizeof(ext_bf)) {
+                ret = -errno;
+                goto exit;
+            }
+            ret = qemu_write_full(fd, backing_format, backing_format_len);
+            if (ret != backing_format_len) {
+                ret = -errno;
+                goto exit;
+            }
             if (padding > 0) {
-                write(fd, zero, padding);
+                ret = qemu_write_full(fd, zero, padding);
+                if (ret != padding) {
+                    ret = -errno;
+                    goto exit;
+                }
             }
         }
-        write(fd, backing_file, backing_filename_len);
+        ret = qemu_write_full(fd, backing_file, backing_filename_len);
+        if (ret != backing_filename_len) {
+            ret = -errno;
+            goto exit;
+        }
     }
     lseek(fd, s->l1_table_offset, SEEK_SET);
     tmp = 0;
     for(i = 0;i < l1_size; i++) {
-        write(fd, &tmp, sizeof(tmp));
+        ret = qemu_write_full(fd, &tmp, sizeof(tmp));
+        if (ret != sizeof(tmp)) {
+            ret = -errno;
+            goto exit;
+        }
     }
     lseek(fd, s->refcount_table_offset, SEEK_SET);
-    write(fd, s->refcount_table, s->cluster_size);
+    ret = qemu_write_full(fd, s->refcount_table, s->cluster_size);
+    if (ret != s->cluster_size) {
+        ret = -errno;
+        goto exit;
+    }
 
     lseek(fd, s->refcount_block_offset, SEEK_SET);
-    write(fd, s->refcount_block, ref_clusters * s->cluster_size);
+    ret = qemu_write_full(fd, s->refcount_block,
+            ref_clusters * s->cluster_size);
+    if (ret != s->cluster_size) {
+        ret = -errno;
+        goto exit;
+    }
 
+    ret = 0;
+exit:
     qemu_free(s->refcount_table);
     qemu_free(s->refcount_block);
     close(fd);
@@ -867,7 +902,7 @@ static int qcow_create2(const char *filename, int64_t total_size,
         bdrv_close(bs);
     }
 
-    return 0;
+    return ret;
 }
 
 static int qcow_create(const char *filename, QEMUOptionParameter *options)
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 08/15] net/slirp.c: fix warning with _FORTIFY_SOURCE
  2010-01-02  3:45           ` [Qemu-devel] [PATCH 07/15] block/qcow2.c: " Kirill A. Shutemov
@ 2010-01-02  3:45             ` Kirill A. Shutemov
  2010-01-02  3:45               ` [Qemu-devel] [PATCH 09/15] usb-linux.c: " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    net/slirp.o
cc1: warnings being treated as errors
net/slirp.c: In function 'slirp_smb_cleanup':
net/slirp.c:470: error: ignoring return value of 'system', declared with attribute warn_unused_result
make: *** [net/slirp.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 net/slirp.c |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/net/slirp.c b/net/slirp.c
index 3f91c4b..ef7c8e4 100644
--- a/net/slirp.c
+++ b/net/slirp.c
@@ -464,10 +464,17 @@ int net_slirp_redir(const char *redir_str)
 static void slirp_smb_cleanup(SlirpState *s)
 {
     char cmd[128];
+    int ret;
 
     if (s->smb_dir[0] != '\0') {
         snprintf(cmd, sizeof(cmd), "rm -rf %s", s->smb_dir);
-        system(cmd);
+        ret = system(cmd);
+        if (ret == -1) {
+            perror("system()");
+        } else if (WEXITSTATUS(ret)) {
+            qemu_error("'%s' failed. Error code: %d\n",
+                    cmd, WEXITSTATUS(ret));
+        }
         s->smb_dir[0] = '\0';
     }
 }
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 09/15] usb-linux.c: fix warning with _FORTIFY_SOURCE
  2010-01-02  3:45             ` [Qemu-devel] [PATCH 08/15] net/slirp.c: fix warning " Kirill A. Shutemov
@ 2010-01-02  3:45               ` Kirill A. Shutemov
  2010-01-02  3:45                 ` [Qemu-devel] [PATCH 10/15] vl.c: " Kirill A. Shutemov
       [not found]                 ` <m3zl4svci4.fsf@neno.neno>
  0 siblings, 2 replies; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    usb-linux.o
cc1: warnings being treated as errors
usb-linux.c: In function 'usb_host_read_file':
usb-linux.c:1204: error: ignoring return value of 'fgets', declared with attribute warn_unused_result
make: *** [usb-linux.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 usb-linux.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/usb-linux.c b/usb-linux.c
index 88728e9..8673474 100644
--- a/usb-linux.c
+++ b/usb-linux.c
@@ -1201,9 +1201,13 @@ static int usb_host_read_file(char *line, size_t line_size, const char *device_f
              device_file);
     f = fopen(filename, "r");
     if (f) {
-        fgets(line, line_size, f);
+        if (fgets(line, line_size, f)) {
+            ret = 1;
+        } else {
+            ret = 0;
+        }
+
         fclose(f);
-        ret = 1;
 #if 0
     } else {
         if (mon)
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 10/15] vl.c: fix warning with _FORTIFY_SOURCE
  2010-01-02  3:45               ` [Qemu-devel] [PATCH 09/15] usb-linux.c: " Kirill A. Shutemov
@ 2010-01-02  3:45                 ` Kirill A. Shutemov
  2010-01-02  3:45                   ` [Qemu-devel] [PATCH 11/15] monitor.c: fix warnings " Kirill A. Shutemov
       [not found]                 ` <m3zl4svci4.fsf@neno.neno>
  1 sibling, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    i386-softmmu/vl.o
cc1: warnings being treated as errors
/usr/src/RPM/BUILD/qemu-0.11.92/vl.c: In function 'qemu_event_increment':
/usr/src/RPM/BUILD/qemu-0.11.92/vl.c:3404: error: ignoring return value of 'write', declared with attribute warn_unused_result
/usr/src/RPM/BUILD/qemu-0.11.92/vl.c: In function 'main':
/usr/src/RPM/BUILD/qemu-0.11.92/vl.c:5774: error: ignoring return value of 'write', declared with attribute warn_unused_result
/usr/src/RPM/BUILD/qemu-0.11.92/vl.c:6064: error: ignoring return value of 'chdir', declared with attribute warn_unused_result
/usr/src/RPM/BUILD/qemu-0.11.92/vl.c:6083: error: ignoring return value of 'chdir', declared with attribute warn_unused_result
make[1]: *** [vl.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 vl.c |   33 +++++++++++++++++++++------------
 1 files changed, 21 insertions(+), 12 deletions(-)

diff --git a/vl.c b/vl.c
index e881e45..7fcde35 100644
--- a/vl.c
+++ b/vl.c
@@ -3390,11 +3390,17 @@ static int io_thread_fd = -1;
 static void qemu_event_increment(void)
 {
     static const char byte = 0;
+    int ret;
 
     if (io_thread_fd == -1)
         return;
 
-    write(io_thread_fd, &byte, sizeof(byte));
+    ret = write(io_thread_fd, &byte, sizeof(byte));
+    if (ret < 0 && (errno != EINTR && errno != EAGAIN)) {
+        fprintf(stderr, "qemu_event_increment: write() filed: %s\n",
+                strerror(errno));
+        exit (1);
+    }
 }
 
 static void qemu_event_read(void *opaque)
@@ -5778,7 +5784,10 @@ int main(int argc, char **argv, char **envp)
 #ifndef _WIN32
         if (daemonize) {
             uint8_t status = 1;
-            write(fds[1], &status, 1);
+            if (qemu_write_full(fds[1], &status, 1) != 1) {
+                perror("write()");
+                exit(1);
+            }
         } else
 #endif
             fprintf(stderr, "Could not acquire pid file: %s\n", strerror(errno));
@@ -6065,18 +6074,15 @@ int main(int argc, char **argv, char **envp)
 #ifndef _WIN32
     if (daemonize) {
 	uint8_t status = 0;
-	ssize_t len;
 
-    again1:
-	len = write(fds[1], &status, 1);
-	if (len == -1 && (errno == EINTR))
-	    goto again1;
-
-	if (len != 1)
+	if (qemu_write_full(fds[1], &status, 1) != 1)
 	    exit(1);
 
-	chdir("/");
-	TFR(fd = qemu_open("/dev/null", O_RDWR));
+        if (chdir("/")) {
+            perror("chdir()");
+            exit(1);
+        }
+        TFR(fd = qemu_open("/dev/null", O_RDWR));
 	if (fd == -1)
 	    exit(1);
     }
@@ -6094,7 +6100,10 @@ int main(int argc, char **argv, char **envp)
             fprintf(stderr, "chroot failed\n");
             exit(1);
         }
-        chdir("/");
+        if (chdir("/")) {
+            perror("chdir()");
+            exit(1);
+        }
     }
 
     if (run_as) {
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 11/15] monitor.c: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45                 ` [Qemu-devel] [PATCH 10/15] vl.c: " Kirill A. Shutemov
@ 2010-01-02  3:45                   ` Kirill A. Shutemov
  2010-01-02  3:45                     ` [Qemu-devel] [PATCH 12/15] linux-user/mmap.c: " Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    i386-softmmu/monitor.o
cc1: warnings being treated as errors
/usr/src/RPM/BUILD/qemu-0.11.92/monitor.c: In function 'do_memory_save':
/usr/src/RPM/BUILD/qemu-0.11.92/monitor.c:1318: error: ignoring return value of 'fwrite', declared with attribute warn_unused_result
/usr/src/RPM/BUILD/qemu-0.11.92/monitor.c: In function 'do_physical_memory_save':
/usr/src/RPM/BUILD/qemu-0.11.92/monitor.c:1345: error: ignoring return value of 'fwrite', declared with attribute warn_unused_result
make[1]: *** [monitor.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 monitor.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/monitor.c b/monitor.c
index c0dc48e..54c7323 100644
--- a/monitor.c
+++ b/monitor.c
@@ -1320,10 +1320,14 @@ static void do_memory_save(Monitor *mon, const QDict *qdict, QObject **ret_data)
         if (l > size)
             l = size;
         cpu_memory_rw_debug(env, addr, buf, l, 0);
-        fwrite(buf, 1, l, f);
+        if (fwrite(buf, 1, l, f) != l) {
+            monitor_printf(mon, "fwrite() failed\n");
+            goto exit;
+        }
         addr += l;
         size -= l;
     }
+exit:
     fclose(f);
 }
 
@@ -1347,11 +1351,15 @@ static void do_physical_memory_save(Monitor *mon, const QDict *qdict,
         if (l > size)
             l = size;
         cpu_physical_memory_rw(addr, buf, l, 0);
-        fwrite(buf, 1, l, f);
+        if (fwrite(buf, 1, l, f) != l) {
+            monitor_printf(mon, "fwrite() failed\n");
+            goto exit;
+        }
         fflush(f);
         addr += l;
         size -= l;
     }
+exit:
     fclose(f);
 }
 
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 12/15] linux-user/mmap.c: fix warnings with _FORTIFY_SOURCE
  2010-01-02  3:45                   ` [Qemu-devel] [PATCH 11/15] monitor.c: fix warnings " Kirill A. Shutemov
@ 2010-01-02  3:45                     ` Kirill A. Shutemov
  2010-01-02  3:45                       ` [Qemu-devel] [PATCH 13/15] Enable _FORTIFY_SOURCE=2 Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

  CC    i386-linux-user/mmap.o
cc1: warnings being treated as errors
/usr/src/RPM/BUILD/qemu-0.11.92/linux-user/mmap.c: In function 'mmap_frag':
/usr/src/RPM/BUILD/qemu-0.11.92/linux-user/mmap.c:253: error: ignoring return value of 'pread', declared with attribute warn_unused_result
/usr/src/RPM/BUILD/qemu-0.11.92/linux-user/mmap.c: In function 'target_mmap':
/usr/src/RPM/BUILD/qemu-0.11.92/linux-user/mmap.c:477: error: ignoring return value of 'pread', declared with attribute warn_unused_result
make[1]: *** [mmap.o] Error 1

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>

test
---
 linux-user/mmap.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index 144fb7c..c1c7e48 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -250,7 +250,8 @@ static int mmap_frag(abi_ulong real_start,
             mprotect(host_start, qemu_host_page_size, prot1 | PROT_WRITE);
 
         /* read the corresponding file data */
-        pread(fd, g2h(start), end - start, offset);
+        if (pread(fd, g2h(start), end - start, offset) == -1)
+            return -1;
 
         /* put final protection */
         if (prot_new != (prot1 | PROT_WRITE))
@@ -474,7 +475,8 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int prot,
                                   -1, 0);
             if (retaddr == -1)
                 goto fail;
-            pread(fd, g2h(start), len, offset);
+            if (pread(fd, g2h(start), len, offset) == -1)
+                goto fail;
             if (!(prot & PROT_WRITE)) {
                 ret = target_mprotect(start, len, prot);
                 if (ret != 0) {
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 13/15] Enable _FORTIFY_SOURCE=2
  2010-01-02  3:45                     ` [Qemu-devel] [PATCH 12/15] linux-user/mmap.c: " Kirill A. Shutemov
@ 2010-01-02  3:45                       ` Kirill A. Shutemov
  2010-01-02  3:45                         ` [Qemu-devel] [PATCH 14/15] Add -fstack-protector-all to CFLAGS Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

_FORTIFY_SOURCE is a Glibc feature which adds memory and string function
protection.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 configure |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/configure b/configure
index 18aed43..0cdcdb3 100755
--- a/configure
+++ b/configure
@@ -97,7 +97,7 @@ CFLAGS="-g $CFLAGS"
 QEMU_CFLAGS="-Wall -Wundef -Wendif-labels -Wwrite-strings -Wmissing-prototypes $QEMU_CFLAGS"
 QEMU_CFLAGS="-Wstrict-prototypes -Wredundant-decls $QEMU_CFLAGS"
 QEMU_CFLAGS="-D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE $QEMU_CFLAGS"
-QEMU_CFLAGS="-U_FORTIFY_SOURCE $QEMU_CFLAGS"
+QEMU_CFLAGS="-D_FORTIFY_SOURCE=2 $QEMU_CFLAGS"
 QEMU_CFLAGS="-I. -I\$(SRC_PATH) $QEMU_CFLAGS"
 LDFLAGS="-g $LDFLAGS"
 
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 14/15] Add -fstack-protector-all to CFLAGS
  2010-01-02  3:45                       ` [Qemu-devel] [PATCH 13/15] Enable _FORTIFY_SOURCE=2 Kirill A. Shutemov
@ 2010-01-02  3:45                         ` Kirill A. Shutemov
  2010-01-02  3:45                           ` [Qemu-devel] [PATCH 15/15] linux-user: fix return value of mmap_frag() Kirill A. Shutemov
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

-fstack-protector-all emit extra code to check for buffer overflows,
such as stack smashing attacks.  This is done by adding a guard
variable to functions with vulnerable objects.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 configure |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/configure b/configure
index 0cdcdb3..ec4175a 100755
--- a/configure
+++ b/configure
@@ -123,6 +123,14 @@ else
     exit 1
 fi
 
+# check -fstack-protector-all
+cat > $TMPC << EOF
+int foo(void) {char X[2]; return 3;}
+EOF
+if compile_object "$QEMU_CFLAGS" -fstack-protector-all; then
+    QEMU_CFLAGS="-fstack-protector-all $QEMU_CFLAGS"
+fi
+
 check_define() {
 cat > $TMPC <<EOF
 #if !defined($1)
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] [PATCH 15/15] linux-user: fix return value of mmap_frag()
  2010-01-02  3:45                         ` [Qemu-devel] [PATCH 14/15] Add -fstack-protector-all to CFLAGS Kirill A. Shutemov
@ 2010-01-02  3:45                           ` Kirill A. Shutemov
  0 siblings, 0 replies; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-02  3:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kirill A. Shutemov

mmap_frag() returns -1 on error and set errno.

Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
---
 linux-user/mmap.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/linux-user/mmap.c b/linux-user/mmap.c
index c1c7e48..47bc339 100644
--- a/linux-user/mmap.c
+++ b/linux-user/mmap.c
@@ -242,8 +242,10 @@ static int mmap_frag(abi_ulong real_start,
         /* msync() won't work here, so we return an error if write is
            possible while it is a shared mapping */
         if ((flags & MAP_TYPE) == MAP_SHARED &&
-            (prot & PROT_WRITE))
-            return -EINVAL;
+            (prot & PROT_WRITE)) {
+            errno = -EINVAL;
+            return -1;
+        }
 
         /* adjust protection to be able to read */
         if (!(prot1 & PROT_WRITE))
-- 
1.6.5.7

^ permalink raw reply related	[flat|nested] 18+ messages in thread

* [Qemu-devel] Re: [PATCH 01/15] Introduce qemu_write_full()
  2010-01-02  3:45 [Qemu-devel] [PATCH 01/15] Introduce qemu_write_full() Kirill A. Shutemov
  2010-01-02  3:45 ` [Qemu-devel] [PATCH 02/15] posix-aio-compat.c: fix warning with _FORTIFY_SOURCE Kirill A. Shutemov
@ 2010-01-02 10:34 ` Paolo Bonzini
  1 sibling, 0 replies; 18+ messages in thread
From: Paolo Bonzini @ 2010-01-02 10:34 UTC (permalink / raw)
  To: Kirill A. Shutemov; +Cc: qemu-devel

On 01/02/2010 04:45 AM, Kirill A. Shutemov wrote:
> A variant of write(2) which handles partial write.

Next time please add a cover letter 00/15 to explain what you changed, 
and a v3 (or v4?) marker in the subjects.  Thanks for this work though!

Paolo

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Qemu-devel] Re: [PATCH 09/15] usb-linux.c: fix warning with _FORTIFY_SOURCE
       [not found]                 ` <m3zl4svci4.fsf@neno.neno>
@ 2010-01-05 16:07                   ` Kirill A. Shutemov
  2010-01-05 16:36                     ` Michael S. Tsirkin
  0 siblings, 1 reply; 18+ messages in thread
From: Kirill A. Shutemov @ 2010-01-05 16:07 UTC (permalink / raw)
  To: Juan Quintela; +Cc: qemu-devel

On Tue, Jan 5, 2010 at 4:42 PM, Juan Quintela <quintela@trasno.org> wrote:
> "Kirill A. Shutemov" <kirill@shutemov.name> wrote:
>>   CC    usb-linux.o
>> cc1: warnings being treated as errors
>> usb-linux.c: In function 'usb_host_read_file':
>> usb-linux.c:1204: error: ignoring return value of 'fgets', declared with attribute warn_unused_result
>> make: *** [usb-linux.o] Error 1
>>
>> Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
>> ---
>>  usb-linux.c |    8 ++++++--
>>  1 files changed, 6 insertions(+), 2 deletions(-)
>>
>> diff --git a/usb-linux.c b/usb-linux.c
>> index 88728e9..8673474 100644
>> --- a/usb-linux.c
>> +++ b/usb-linux.c
>> @@ -1201,9 +1201,13 @@ static int usb_host_read_file(char *line, size_t line_size, const char *device_f
>>               device_file);
>>      f = fopen(filename, "r");
>>      if (f) {
>> -        fgets(line, line_size, f);
>> +        if (fgets(line, line_size, f)) {
>> +            ret = 1;
>> +        } else {
>> +            ret = 0;
>> +        }
>> +
> This if is equivalent to:
>
> ret = !!fgets(line, line_size, f);
>
> No need for the if at all :)

It's not very readable.
Probably better to use something like:

ret = (fgets(line, line_size, f) != NULL);

^ permalink raw reply	[flat|nested] 18+ messages in thread

* [Qemu-devel] Re: [PATCH 09/15] usb-linux.c: fix warning with _FORTIFY_SOURCE
  2010-01-05 16:07                   ` [Qemu-devel] Re: [PATCH 09/15] usb-linux.c: fix warning with _FORTIFY_SOURCE Kirill A. Shutemov
@ 2010-01-05 16:36                     ` Michael S. Tsirkin
  0 siblings, 0 replies; 18+ messages in thread
From: Michael S. Tsirkin @ 2010-01-05 16:36 UTC (permalink / raw)
  To: Kirill A. Shutemov; +Cc: Juan Quintela, qemu-devel

On Tue, Jan 05, 2010 at 06:07:35PM +0200, Kirill A. Shutemov wrote:
> On Tue, Jan 5, 2010 at 4:42 PM, Juan Quintela <quintela@trasno.org> wrote:
> > "Kirill A. Shutemov" <kirill@shutemov.name> wrote:
> >>   CC    usb-linux.o
> >> cc1: warnings being treated as errors
> >> usb-linux.c: In function 'usb_host_read_file':
> >> usb-linux.c:1204: error: ignoring return value of 'fgets', declared with attribute warn_unused_result
> >> make: *** [usb-linux.o] Error 1
> >>
> >> Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name>
> >> ---
> >>  usb-linux.c |    8 ++++++--
> >>  1 files changed, 6 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/usb-linux.c b/usb-linux.c
> >> index 88728e9..8673474 100644
> >> --- a/usb-linux.c
> >> +++ b/usb-linux.c
> >> @@ -1201,9 +1201,13 @@ static int usb_host_read_file(char *line, size_t line_size, const char *device_f
> >>               device_file);
> >>      f = fopen(filename, "r");
> >>      if (f) {
> >> -        fgets(line, line_size, f);
> >> +        if (fgets(line, line_size, f)) {
> >> +            ret = 1;
> >> +        } else {
> >> +            ret = 0;
> >> +        }
> >> +
> > This if is equivalent to:
> >
> > ret = !!fgets(line, line_size, f);
> >
> > No need for the if at all :)
> 
> It's not very readable.
> Probably better to use something like:
> 
> ret = (fgets(line, line_size, f) != NULL);
> 

Might be matter of taste. E.g. I think !! is more readable than != NULL.
And () around != are not needed.  It's better to make code brief IMO,
a lof of boilerplate hides bugs.

Nothing to get hung about though.

-- 
MST

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2010-01-05 16:39 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-02  3:45 [Qemu-devel] [PATCH 01/15] Introduce qemu_write_full() Kirill A. Shutemov
2010-01-02  3:45 ` [Qemu-devel] [PATCH 02/15] posix-aio-compat.c: fix warning with _FORTIFY_SOURCE Kirill A. Shutemov
2010-01-02  3:45   ` [Qemu-devel] [PATCH 03/15] block/cow.c: fix warnings " Kirill A. Shutemov
2010-01-02  3:45     ` [Qemu-devel] [PATCH 04/15] block/qcow.c: " Kirill A. Shutemov
2010-01-02  3:45       ` [Qemu-devel] [PATCH 05/15] block/vmdk.o: " Kirill A. Shutemov
2010-01-02  3:45         ` [Qemu-devel] [PATCH 06/15] block/vvfat.c: " Kirill A. Shutemov
2010-01-02  3:45           ` [Qemu-devel] [PATCH 07/15] block/qcow2.c: " Kirill A. Shutemov
2010-01-02  3:45             ` [Qemu-devel] [PATCH 08/15] net/slirp.c: fix warning " Kirill A. Shutemov
2010-01-02  3:45               ` [Qemu-devel] [PATCH 09/15] usb-linux.c: " Kirill A. Shutemov
2010-01-02  3:45                 ` [Qemu-devel] [PATCH 10/15] vl.c: " Kirill A. Shutemov
2010-01-02  3:45                   ` [Qemu-devel] [PATCH 11/15] monitor.c: fix warnings " Kirill A. Shutemov
2010-01-02  3:45                     ` [Qemu-devel] [PATCH 12/15] linux-user/mmap.c: " Kirill A. Shutemov
2010-01-02  3:45                       ` [Qemu-devel] [PATCH 13/15] Enable _FORTIFY_SOURCE=2 Kirill A. Shutemov
2010-01-02  3:45                         ` [Qemu-devel] [PATCH 14/15] Add -fstack-protector-all to CFLAGS Kirill A. Shutemov
2010-01-02  3:45                           ` [Qemu-devel] [PATCH 15/15] linux-user: fix return value of mmap_frag() Kirill A. Shutemov
     [not found]                 ` <m3zl4svci4.fsf@neno.neno>
2010-01-05 16:07                   ` [Qemu-devel] Re: [PATCH 09/15] usb-linux.c: fix warning with _FORTIFY_SOURCE Kirill A. Shutemov
2010-01-05 16:36                     ` Michael S. Tsirkin
2010-01-02 10:34 ` [Qemu-devel] Re: [PATCH 01/15] Introduce qemu_write_full() Paolo Bonzini

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).