On Mon, 25 Nov 2024 09:45:54 +0100 Greg Kurz <[email protected]> wrote: > On Sun, 24 Nov 2024 17:28:40 +0100 > Christian Schoenebeck <[email protected]> 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 ! >
For the records. Original report was : https://bugs.launchpad.net/qemu/+bug/1336794 > > * 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
