qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 0/6] 9pfs: fix fstat() after unlink() (with a Linux guest)


From: Greg Kurz
Subject: Re: [PATCH 0/6] 9pfs: fix fstat() after unlink() (with a Linux guest)
Date: Mon, 25 Nov 2024 09:45:54 +0100

On Sun, 24 Nov 2024 17:28:40 +0100
Christian Schoenebeck <qemu_oss@crudebyte.com> wrote:

> This fixes an infamous, long standing bug:
> https://gitlab.com/qemu-project/qemu/-/issues/103
> 

\o/

It is great if you manage to fix that once and far all !

> * Actual fix of this bug is patch 5.
> 
> * Patches 1 and 6 add a test case to verify the expected behaviour.
> 
> * The other patches (2, 3, 4) are basically just minor cleanup patches more
>   or less (un)related that I simply did not bother to send separately.
> 
> Probably there are still other 9p request types that should be fixed for this
> use-after-unlink idiom, but this series fixes the mentioned bug report as
> described by reporter, so fair enough to round this up here for now.
> 

When I last worked on that issue I had spotted some other places to fix.

Maybe you can find some ideas for future work at :

https://github.com/gkurz/qemu/tree/9p-attr-fixes

> Simple test app to verify this behaviour on a Linux guest:
> 
> #include <stdio.h>
> #include <stdlib.h>
> #include <sys/types.h>
> #include <sys/stat.h>
> #include <unistd.h>
> #include <fcntl.h>
> 
> int main() {
>   struct stat st;
>   int fd = open("doa-file", O_RDWR | O_CREAT | O_EXCL, 0600);
>   unlink("doa-file");
>   int res = fstat(fd, &st);
>   printf("fstat() = %d\n", res);
>   return res;
> }
> 
> Christian Schoenebeck (6):
>   tests/9p: add 'use-after-unlink' test
>   tests/9p: fix Rreaddir response name
>   tests/9p: add missing Rgetattr response name
>   9pfs: remove obsolete comment in v9fs_getattr()
>   9pfs: fix 'Tgetattr' after unlink
>   tests/9p: also check 'Tgetattr' in 'use-after-unlink' test
> 
>  hw/9pfs/9p.c                          | 12 ++++---
>  tests/qtest/libqos/virtio-9p-client.c |  3 +-
>  tests/qtest/virtio-9p-test.c          | 46 +++++++++++++++++++++++++++
>  3 files changed, 55 insertions(+), 6 deletions(-)
> 

Cheers,

-- 
Greg



reply via email to

[Prev in Thread] Current Thread [Next in Thread]