[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