All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] 9pfs: fix inode sequencing in 'synth' driver
@ 2022-03-14 18:58 Christian Schoenebeck
  2022-03-16 11:10 ` Greg Kurz
  0 siblings, 1 reply; 3+ messages in thread
From: Christian Schoenebeck @ 2022-03-14 18:58 UTC (permalink / raw)
  To: qemu-devel; +Cc: Greg Kurz

The 'synth' driver's root node and the 'synth' driver's first
subdirectory node falsely share the same inode number (zero), which
makes it impossible for 9p clients (i.e. 9p test cases) to distinguish
root node and first subdirectory from each other by comparing their QIDs
(which are derived by 9p server from driver's inode numbers).

Fix this issue by using prefix-increment instead of postfix-increment
operator while generating new inode numbers for subdirectories and files.

Link: https://lore.kernel.org/qemu-devel/3859307.hTDP4D0zbi@silver/
Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
---
 hw/9pfs/9p-synth.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/9pfs/9p-synth.c b/hw/9pfs/9p-synth.c
index b3080e415b..f3c73d3b0b 100644
--- a/hw/9pfs/9p-synth.c
+++ b/hw/9pfs/9p-synth.c
@@ -92,7 +92,7 @@ int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode,
         }
     }
     /* Add the name */
-    node = v9fs_add_dir_node(parent, mode, name, NULL, synth_node_count++);
+    node = v9fs_add_dir_node(parent, mode, name, NULL, ++synth_node_count);
     v9fs_add_dir_node(node, parent->attr->mode, "..",
                       parent->attr, parent->attr->inode);
     v9fs_add_dir_node(node, node->attr->mode, ".",
@@ -130,7 +130,7 @@ int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode,
     mode = ((mode & 0777) | S_IFREG);
     node = g_malloc0(sizeof(V9fsSynthNode));
     node->attr         = &node->actual_attr;
-    node->attr->inode  = synth_node_count++;
+    node->attr->inode  = ++synth_node_count;
     node->attr->nlink  = 1;
     node->attr->read   = read;
     node->attr->write  = write;
-- 
2.30.2



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

* Re: [PATCH] 9pfs: fix inode sequencing in 'synth' driver
  2022-03-14 18:58 [PATCH] 9pfs: fix inode sequencing in 'synth' driver Christian Schoenebeck
@ 2022-03-16 11:10 ` Greg Kurz
  2022-03-16 18:16   ` Christian Schoenebeck
  0 siblings, 1 reply; 3+ messages in thread
From: Greg Kurz @ 2022-03-16 11:10 UTC (permalink / raw)
  To: Christian Schoenebeck; +Cc: qemu-devel

On Mon, 14 Mar 2022 19:58:11 +0100
Christian Schoenebeck <qemu_oss@crudebyte.com> wrote:

> The 'synth' driver's root node and the 'synth' driver's first
> subdirectory node falsely share the same inode number (zero), which
> makes it impossible for 9p clients (i.e. 9p test cases) to distinguish
> root node and first subdirectory from each other by comparing their QIDs
> (which are derived by 9p server from driver's inode numbers).
> 
> Fix this issue by using prefix-increment instead of postfix-increment
> operator while generating new inode numbers for subdirectories and files.
> 
> Link: https://lore.kernel.org/qemu-devel/3859307.hTDP4D0zbi@silver/
> Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
> ---

Good catch !

Reviewed-by: Greg Kurz <groug@kaod.org>


>  hw/9pfs/9p-synth.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/9pfs/9p-synth.c b/hw/9pfs/9p-synth.c
> index b3080e415b..f3c73d3b0b 100644
> --- a/hw/9pfs/9p-synth.c
> +++ b/hw/9pfs/9p-synth.c
> @@ -92,7 +92,7 @@ int qemu_v9fs_synth_mkdir(V9fsSynthNode *parent, int mode,
>          }
>      }
>      /* Add the name */
> -    node = v9fs_add_dir_node(parent, mode, name, NULL, synth_node_count++);
> +    node = v9fs_add_dir_node(parent, mode, name, NULL, ++synth_node_count);
>      v9fs_add_dir_node(node, parent->attr->mode, "..",
>                        parent->attr, parent->attr->inode);
>      v9fs_add_dir_node(node, node->attr->mode, ".",
> @@ -130,7 +130,7 @@ int qemu_v9fs_synth_add_file(V9fsSynthNode *parent, int mode,
>      mode = ((mode & 0777) | S_IFREG);
>      node = g_malloc0(sizeof(V9fsSynthNode));
>      node->attr         = &node->actual_attr;
> -    node->attr->inode  = synth_node_count++;
> +    node->attr->inode  = ++synth_node_count;
>      node->attr->nlink  = 1;
>      node->attr->read   = read;
>      node->attr->write  = write;



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

* Re: [PATCH] 9pfs: fix inode sequencing in 'synth' driver
  2022-03-16 11:10 ` Greg Kurz
@ 2022-03-16 18:16   ` Christian Schoenebeck
  0 siblings, 0 replies; 3+ messages in thread
From: Christian Schoenebeck @ 2022-03-16 18:16 UTC (permalink / raw)
  To: qemu-devel; +Cc: Greg Kurz

On Mittwoch, 16. März 2022 12:10:43 CET Greg Kurz wrote:
> On Mon, 14 Mar 2022 19:58:11 +0100
> 
> Christian Schoenebeck <qemu_oss@crudebyte.com> wrote:
> > The 'synth' driver's root node and the 'synth' driver's first
> > subdirectory node falsely share the same inode number (zero), which
> > makes it impossible for 9p clients (i.e. 9p test cases) to distinguish
> > root node and first subdirectory from each other by comparing their QIDs
> > (which are derived by 9p server from driver's inode numbers).
> > 
> > Fix this issue by using prefix-increment instead of postfix-increment
> > operator while generating new inode numbers for subdirectories and files.
> > 
> > Link: https://lore.kernel.org/qemu-devel/3859307.hTDP4D0zbi@silver/
> > Signed-off-by: Christian Schoenebeck <qemu_oss@crudebyte.com>
> > ---
> 
> Good catch !
> 
> Reviewed-by: Greg Kurz <groug@kaod.org>

Queued on 9p.next:
https://github.com/cschoenebeck/qemu/commits/9p.next

Thanks!

Best regards,
Christian Schoenebeck




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

end of thread, other threads:[~2022-03-16 18:20 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-03-14 18:58 [PATCH] 9pfs: fix inode sequencing in 'synth' driver Christian Schoenebeck
2022-03-16 11:10 ` Greg Kurz
2022-03-16 18:16   ` Christian Schoenebeck

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.