Solo5 / solo5

A sandboxed execution environment for unikernels
ISC License
883 stars 136 forks source link

Solo5-hvt reads on network devices returns `SOLO5_R_AGAIN` on EOF #559

Open reynir opened 1 year ago

reynir commented 1 year ago

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.

https://github.com/Solo5/solo5/blob/bf29b8af11feec9dbc2e74ccdc69bc1e0cbf5dfe/tenders/hvt/hvt_module_net.c#L77-L82

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