All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH V2 0/2] fix segfault and naming of runtime opts
@ 2017-01-31 15:56 Peter Lieven
  2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
  2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts Peter Lieven
  0 siblings, 2 replies; 6+ messages in thread
From: Peter Lieven @ 2017-01-31 15:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-block, kwolf, eblake, ashijeetacharya, jcody, mreitz,
	armbru, Peter Lieven

commit 94d6a7a accidently left the naming of runtime opts and QAPI
scheme inconsistent. Furthermore a NULL pointer dereference resulted
in a segfault when parsing URI parameters.

v1->v2: Patch 1: fixed type in commit msg [Eric]
        Patch 2: noted backwards incompatiblity with 2.8 [Eric]

Peter Lieven (2):
  block/nfs: fix NULL pointer dereference in URI parsing
  block/nfs: fix naming of runtime opts

 block/nfs.c | 33 +++++++++++++++++----------------
 1 file changed, 17 insertions(+), 16 deletions(-)

-- 
1.9.1

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

* [Qemu-devel] [PATCH V2 1/2] block/nfs: fix NULL pointer dereference in URI parsing
  2017-01-31 15:56 [Qemu-devel] [PATCH V2 0/2] fix segfault and naming of runtime opts Peter Lieven
@ 2017-01-31 15:56 ` Peter Lieven
  2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts Peter Lieven
  1 sibling, 0 replies; 6+ messages in thread
From: Peter Lieven @ 2017-01-31 15:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-block, kwolf, eblake, ashijeetacharya, jcody, mreitz,
	armbru, Peter Lieven, qemu-stable

parse_uint_full wants to put the parsed value into the
variable passed via its second argument which is NULL.

Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
 block/nfs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/block/nfs.c b/block/nfs.c
index a564340..baaecff 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -108,12 +108,13 @@ static int nfs_parse_uri(const char *filename, QDict *options, Error **errp)
     qdict_put(options, "path", qstring_from_str(uri->path));
 
     for (i = 0; i < qp->n; i++) {
+        unsigned long long val;
         if (!qp->p[i].value) {
             error_setg(errp, "Value for NFS parameter expected: %s",
                        qp->p[i].name);
             goto out;
         }
-        if (parse_uint_full(qp->p[i].value, NULL, 0)) {
+        if (parse_uint_full(qp->p[i].value, &val, 0)) {
             error_setg(errp, "Illegal value for NFS parameter: %s",
                        qp->p[i].name);
             goto out;
-- 
1.9.1

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

* [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts
  2017-01-31 15:56 [Qemu-devel] [PATCH V2 0/2] fix segfault and naming of runtime opts Peter Lieven
  2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
@ 2017-01-31 15:56 ` Peter Lieven
  2017-01-31 16:07   ` Eric Blake
  2017-02-01  1:06   ` Max Reitz
  1 sibling, 2 replies; 6+ messages in thread
From: Peter Lieven @ 2017-01-31 15:56 UTC (permalink / raw)
  To: qemu-devel
  Cc: qemu-block, kwolf, eblake, ashijeetacharya, jcody, mreitz,
	armbru, Peter Lieven, qemu-stable

commit 94d6a7a accidently left the naming of runtime opts and QAPI
scheme inconsistent. As one consequence passing of parameters in the
URI is broken. Sync the naming of the runtime opts to the QAPI
scheme.

Please note that this is technically backwards incompatible with the 2.8
release, but the 2.8 release is the only version that had the wrong naming.
Furthermore release 2.8 suffered from a NULL pointer deference during
URI parsing.

Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
Reviewed-by: Eric Blake <eblake@redhat.com>
---
 block/nfs.c | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/block/nfs.c b/block/nfs.c
index baaecff..464d547 100644
--- a/block/nfs.c
+++ b/block/nfs.c
@@ -359,27 +359,27 @@ static QemuOptsList runtime_opts = {
             .help = "Path of the image on the host",
         },
         {
-            .name = "uid",
+            .name = "user",
             .type = QEMU_OPT_NUMBER,
             .help = "UID value to use when talking to the server",
         },
         {
-            .name = "gid",
+            .name = "group",
             .type = QEMU_OPT_NUMBER,
             .help = "GID value to use when talking to the server",
         },
         {
-            .name = "tcp-syncnt",
+            .name = "tcp-syn-count",
             .type = QEMU_OPT_NUMBER,
             .help = "Number of SYNs to send during the session establish",
         },
         {
-            .name = "readahead",
+            .name = "readahead-size",
             .type = QEMU_OPT_NUMBER,
             .help = "Set the readahead size in bytes",
         },
         {
-            .name = "pagecache",
+            .name = "page-cache-size",
             .type = QEMU_OPT_NUMBER,
             .help = "Set the pagecache size in bytes",
         },
@@ -508,29 +508,29 @@ static int64_t nfs_client_open(NFSClient *client, QDict *options,
         goto fail;
     }
 
-    if (qemu_opt_get(opts, "uid")) {
-        client->uid = qemu_opt_get_number(opts, "uid", 0);
+    if (qemu_opt_get(opts, "user")) {
+        client->uid = qemu_opt_get_number(opts, "user", 0);
         nfs_set_uid(client->context, client->uid);
     }
 
-    if (qemu_opt_get(opts, "gid")) {
-        client->gid = qemu_opt_get_number(opts, "gid", 0);
+    if (qemu_opt_get(opts, "group")) {
+        client->gid = qemu_opt_get_number(opts, "group", 0);
         nfs_set_gid(client->context, client->gid);
     }
 
-    if (qemu_opt_get(opts, "tcp-syncnt")) {
-        client->tcp_syncnt = qemu_opt_get_number(opts, "tcp-syncnt", 0);
+    if (qemu_opt_get(opts, "tcp-syn-count")) {
+        client->tcp_syncnt = qemu_opt_get_number(opts, "tcp-syn-count", 0);
         nfs_set_tcp_syncnt(client->context, client->tcp_syncnt);
     }
 
 #ifdef LIBNFS_FEATURE_READAHEAD
-    if (qemu_opt_get(opts, "readahead")) {
+    if (qemu_opt_get(opts, "readahead-size")) {
         if (open_flags & BDRV_O_NOCACHE) {
             error_setg(errp, "Cannot enable NFS readahead "
                              "if cache.direct = on");
             goto fail;
         }
-        client->readahead = qemu_opt_get_number(opts, "readahead", 0);
+        client->readahead = qemu_opt_get_number(opts, "readahead-size", 0);
         if (client->readahead > QEMU_NFS_MAX_READAHEAD_SIZE) {
             error_report("NFS Warning: Truncating NFS readahead "
                          "size to %d", QEMU_NFS_MAX_READAHEAD_SIZE);
@@ -545,13 +545,13 @@ static int64_t nfs_client_open(NFSClient *client, QDict *options,
 #endif
 
 #ifdef LIBNFS_FEATURE_PAGECACHE
-    if (qemu_opt_get(opts, "pagecache")) {
+    if (qemu_opt_get(opts, "page-cache-size")) {
         if (open_flags & BDRV_O_NOCACHE) {
             error_setg(errp, "Cannot enable NFS pagecache "
                              "if cache.direct = on");
             goto fail;
         }
-        client->pagecache = qemu_opt_get_number(opts, "pagecache", 0);
+        client->pagecache = qemu_opt_get_number(opts, "page-cache-size", 0);
         if (client->pagecache > QEMU_NFS_MAX_PAGECACHE_SIZE) {
             error_report("NFS Warning: Truncating NFS pagecache "
                          "size to %d pages", QEMU_NFS_MAX_PAGECACHE_SIZE);
-- 
1.9.1

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

* Re: [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts
  2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts Peter Lieven
@ 2017-01-31 16:07   ` Eric Blake
  2017-02-01  1:06   ` Max Reitz
  1 sibling, 0 replies; 6+ messages in thread
From: Eric Blake @ 2017-01-31 16:07 UTC (permalink / raw)
  To: Peter Lieven, qemu-devel
  Cc: qemu-block, kwolf, ashijeetacharya, jcody, mreitz, armbru, qemu-stable

[-- Attachment #1: Type: text/plain, Size: 880 bytes --]

On 01/31/2017 09:56 AM, Peter Lieven wrote:
> commit 94d6a7a accidently left the naming of runtime opts and QAPI
> scheme inconsistent. As one consequence passing of parameters in the
> URI is broken. Sync the naming of the runtime opts to the QAPI
> scheme.
> 
> Please note that this is technically backwards incompatible with the 2.8
> release, but the 2.8 release is the only version that had the wrong naming.
> Furthermore release 2.8 suffered from a NULL pointer deference during

s/deference/dereference/

> URI parsing.
> 
> Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Lieven <pl@kamp.de>
> Reviewed-by: Eric Blake <eblake@redhat.com>

Maintainer can touch that up, my review stands.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

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

* Re: [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts
  2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts Peter Lieven
  2017-01-31 16:07   ` Eric Blake
@ 2017-02-01  1:06   ` Max Reitz
  2017-02-01  9:22     ` Peter Lieven
  1 sibling, 1 reply; 6+ messages in thread
From: Max Reitz @ 2017-02-01  1:06 UTC (permalink / raw)
  To: Peter Lieven, qemu-devel
  Cc: qemu-block, kwolf, eblake, ashijeetacharya, jcody, armbru, qemu-stable

[-- Attachment #1: Type: text/plain, Size: 1014 bytes --]

On 31.01.2017 16:56, Peter Lieven wrote:
> commit 94d6a7a accidently left the naming of runtime opts and QAPI
> scheme inconsistent. As one consequence passing of parameters in the
> URI is broken. Sync the naming of the runtime opts to the QAPI
> scheme.
> 
> Please note that this is technically backwards incompatible with the 2.8
> release, but the 2.8 release is the only version that had the wrong naming.
> Furthermore release 2.8 suffered from a NULL pointer deference during
> URI parsing.

I always love things like this. "This technically breaks X, but
obviously nobody used X, because X always crashed." Reminds me of how we
success^W accidentally removed qcow2 encryption.

Technically however this also changes the runtime parameter names, I
think. Giving them probably did work in 2.8, so it is not compatible
there. I don't mind very much, though, and you're the maintainer, so
it's fine with me.

Anyway, I think this patch should also update nfs_refresh_filename().

Max


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 512 bytes --]

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

* Re: [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts
  2017-02-01  1:06   ` Max Reitz
@ 2017-02-01  9:22     ` Peter Lieven
  0 siblings, 0 replies; 6+ messages in thread
From: Peter Lieven @ 2017-02-01  9:22 UTC (permalink / raw)
  To: Max Reitz, qemu-devel
  Cc: qemu-block, kwolf, eblake, ashijeetacharya, jcody, armbru, qemu-stable

Am 01.02.2017 um 02:06 schrieb Max Reitz:
> On 31.01.2017 16:56, Peter Lieven wrote:
>> commit 94d6a7a accidently left the naming of runtime opts and QAPI
>> scheme inconsistent. As one consequence passing of parameters in the
>> URI is broken. Sync the naming of the runtime opts to the QAPI
>> scheme.
>>
>> Please note that this is technically backwards incompatible with the 2.8
>> release, but the 2.8 release is the only version that had the wrong naming.
>> Furthermore release 2.8 suffered from a NULL pointer deference during
>> URI parsing.
> I always love things like this. "This technically breaks X, but
> obviously nobody used X, because X always crashed." Reminds me of how we
> success^W accidentally removed qcow2 encryption.
>
> Technically however this also changes the runtime parameter names, I
> think. Giving them probably did work in 2.8, so it is not compatible
> there. I don't mind very much, though, and you're the maintainer, so
> it's fine with me.
>
> Anyway, I think this patch should also update nfs_refresh_filename().

Thanks, that indeed is missing. Will send a V3.

Peter

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

end of thread, other threads:[~2017-02-01  9:23 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-01-31 15:56 [Qemu-devel] [PATCH V2 0/2] fix segfault and naming of runtime opts Peter Lieven
2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
2017-01-31 15:56 ` [Qemu-devel] [PATCH V2 2/2] block/nfs: fix naming of runtime opts Peter Lieven
2017-01-31 16:07   ` Eric Blake
2017-02-01  1:06   ` Max Reitz
2017-02-01  9:22     ` Peter Lieven

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.