8000 Solo5-hvt reads on network devices returns `SOLO5_R_AGAIN` on EOF · Issue #559 · Solo5/solo5 · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Solo5-hvt reads on network devices returns SOLO5_R_AGAIN on EOF #559
Open
@reynir

Description

@reynir

When a hypercall-initiated read on a network device returns 0 (EOF) the tender returns SOLO5_R_AGAIN. In mirage-net-solo5 this results in listen retrying the read. If the file descriptor is really closed this will end in an infinite loop.

ret = read(e->b.hostfd, HVT_CHECKED_GPA_P(hvt, rd->data, rd->len), rd->len);
if ((ret == 0) ||
(ret == -1 && errno == EAGAIN)) {
rd->ret = SOLO5_R_AGAIN;
return;
}

The spt target does not do anything special in the case of read(2) returns 0 as far as I can tell.

It is unclear to me if a file descriptor for a tap device could ever return EOF. I observe this by abusing the file descriptor mechanism for passing network devices in https://github.com/reynir/mirage-cat

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0