On Tue, Jan 28, 2025 at 07:48:49AM +0100, Stefano Brivio wrote: > On Tue, 28 Jan 2025 11:59:28 +1100 > David Gibson wrote: > > > On Tue, Jan 28, 2025 at 12:15:30AM +0100, Stefano Brivio wrote: > > > These are symmetric to write_remainder() and write_all_buf() and > > > almost a copy and paste of them, with the most notable differences > > > being reversed reads/writes and a couple of better-safe-than-sorry > > > asserts to keep Coverity happy. > > > > So, there's one thing that needs to be not quite symmetric for the > > read() version: we need to handle EOF. At present, I believe these > > will enter an infinite loop on EOF, which is not a graceful failure > > mode. > > It doesn't happen in our current usage where we close the socket once > we're done, I don't see how what we do with the socket is relevant. Couldn't we hit this case if qemu unexpectedly closed the socket or died? > but sure, if we use it for something else, boom. Let me add > a rc == 0 case (which gets EIO or EINVAL, I'm not sure yet). > > Or feel free to re-post this if you have clearer ideas how to fix this > up (but only if tested). > -- David Gibson (he or they) | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you, not the other way | around. http://www.ozlabs.org/~dgibson