qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] Bug in virtio-9p when fstatting an fd referring to a file t


From: Sassan Panahinejad
Subject: [Qemu-devel] Bug in virtio-9p when fstatting an fd referring to a file that no longer exists
Date: Thu, 28 Apr 2011 17:13:09 +0100

It should be possible for guest applications to fstat a file for which they have a valid file descriptor, even if the file has been removed.
Demonstrated by the code sample below (fstat reports no such file or directory).
Strangely it seems that reading from a file in this state works fine (and when both are run, the server receives a different fid for each).
On any other filesystem, the code runs correctly. On our 9p filesystem it fails.
Many applications (including bash) depend on this working correctly.
I will continue investigating, but any thoughts anyone has on the subject would be appreciated.


Thanks
Sassan


#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>


int main(void)
{
        int ret;
        struct stat statbuf;
        int fd = open("test.txt", O_RDWR | O_CREAT, 0666);
        if (fd < 0) {
                printf("open failed: %m\n");
                return 1;
        }
        ret = write(fd, "test1\n", 6);
        if (ret < 0) {
                printf("write1 failed: %m\n");
                return 1;
        }
        ret = unlink("test.txt");
        if (ret < 0) {
                printf("unlink failed: %m\n");
                return 1;
        }
        ret = fstat(fd, &statbuf);
        if (ret < 0) {
                printf("fstat failed: %m\n");
                return 1;
        }
        return 0;
}

reply via email to

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