[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 0/6] 9pfs: fix fstat() after unlink() (with a Linux guest)
From: |
Christian Schoenebeck |
Subject: |
[PATCH 0/6] 9pfs: fix fstat() after unlink() (with a Linux guest) |
Date: |
Sun, 24 Nov 2024 17:28:40 +0100 |
This fixes an infamous, long standing bug:
https://gitlab.com/qemu-project/qemu/-/issues/103
* 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.
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(-)
--
2.39.5
- [PATCH 0/6] 9pfs: fix fstat() after unlink() (with a Linux guest),
Christian Schoenebeck <=