qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/2] block/nfs: fix segfault and naming of runtime opts
@ 2017-01-20  9:46 Peter Lieven
  2017-01-20  9:46 ` [Qemu-devel] [PATCH 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
  2017-01-20  9:46 ` [Qemu-devel] [PATCH 2/2] block/nfs: fix naming of runtime opts Peter Lieven
  0 siblings, 2 replies; 5+ messages in thread
From: Peter Lieven @ 2017-01-20  9:46 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.

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] 5+ messages in thread

* [Qemu-devel] [PATCH 1/2] block/nfs: fix NULL pointer dereference in URI parsing
  2017-01-20  9:46 [Qemu-devel] [PATCH 0/2] block/nfs: fix segfault and naming of runtime opts Peter Lieven
@ 2017-01-20  9:46 ` Peter Lieven
  2017-01-20 15:29   ` Eric Blake
  2017-01-20  9:46 ` [Qemu-devel] [PATCH 2/2] block/nfs: fix naming of runtime opts Peter Lieven
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Lieven @ 2017-01-20  9:46 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
variabled passed via its second argument which is NULL.

Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
---
 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] 5+ messages in thread

* [Qemu-devel] [PATCH 2/2] block/nfs: fix naming of runtime opts
  2017-01-20  9:46 [Qemu-devel] [PATCH 0/2] block/nfs: fix segfault and naming of runtime opts Peter Lieven
  2017-01-20  9:46 ` [Qemu-devel] [PATCH 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
@ 2017-01-20  9:46 ` Peter Lieven
  2017-01-20 15:36   ` Eric Blake
  1 sibling, 1 reply; 5+ messages in thread
From: Peter Lieven @ 2017-01-20  9:46 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.

Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
Cc: qemu-stable@nongnu.org
Signed-off-by: Peter Lieven <pl@kamp.de>
---
 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] 5+ messages in thread

* Re: [Qemu-devel] [PATCH 1/2] block/nfs: fix NULL pointer dereference in URI parsing
  2017-01-20  9:46 ` [Qemu-devel] [PATCH 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
@ 2017-01-20 15:29   ` Eric Blake
  0 siblings, 0 replies; 5+ messages in thread
From: Eric Blake @ 2017-01-20 15:29 UTC (permalink / raw)
  To: Peter Lieven, qemu-devel
  Cc: qemu-block, kwolf, ashijeetacharya, jcody, mreitz, armbru,
	qemu-stable

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

On 01/20/2017 03:46 AM, Peter Lieven wrote:
> parse_uint_full wants to put the parsed value into the
> variabled passed via its second argument which is NULL.

s/variabled/variable/

> 
> Fixes: 94d6a7a76e9df9919629428f6c598e2b97d9426c
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Peter Lieven <pl@kamp.de>
> ---
>  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)) {

Reviewed-by: Eric Blake <eblake@redhat.com>

>              error_setg(errp, "Illegal value for NFS parameter: %s",

Not your fault, but I'm always wary of "Illegal" in an error message -
the user isn't breaking any laws :)  Better is "Invalid", but such a
cleanup can be a separate tree-wide patch for qemu-trivial, if someone
wants it.

-- 
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] 5+ messages in thread

* Re: [Qemu-devel] [PATCH 2/2] block/nfs: fix naming of runtime opts
  2017-01-20  9:46 ` [Qemu-devel] [PATCH 2/2] block/nfs: fix naming of runtime opts Peter Lieven
@ 2017-01-20 15:36   ` Eric Blake
  0 siblings, 0 replies; 5+ messages in thread
From: Eric Blake @ 2017-01-20 15:36 UTC (permalink / raw)
  To: Peter Lieven, qemu-devel
  Cc: qemu-block, kwolf, ashijeetacharya, jcody, mreitz, armbru,
	qemu-stable

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

On 01/20/2017 03:46 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.

The commit message should explicitly mention that this is technically
backwards incompatible with the 2.8 release, but that the 2.8 release is
the only version that had the wrong naming and that release also had the
(just-fixed) bug of a crash during URI parsing.

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

Reviewed-by: Eric Blake <eblake@redhat.com>

-- 
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] 5+ messages in thread

end of thread, other threads:[~2017-01-20 15:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-01-20  9:46 [Qemu-devel] [PATCH 0/2] block/nfs: fix segfault and naming of runtime opts Peter Lieven
2017-01-20  9:46 ` [Qemu-devel] [PATCH 1/2] block/nfs: fix NULL pointer dereference in URI parsing Peter Lieven
2017-01-20 15:29   ` Eric Blake
2017-01-20  9:46 ` [Qemu-devel] [PATCH 2/2] block/nfs: fix naming of runtime opts Peter Lieven
2017-01-20 15:36   ` Eric Blake

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).