Well, the worry would be that you would be replacing a clean error on
failure with an occasional panic, the normal symptom of a race condition.
I think I'm alright with the VFIFO case above, but I'm quite uncomfortable
with the VSOCK case. In particular, I suspect that if the socket is closed,
v_un will be reset in the lower layer, but continue to be a stale pointer in
the upper layer, leading to accessing free'd or re-allocated kernel memory
resulting in much badness. I've noticed tested this, but you might give it
a try and see what happens.
Bad typing day. Should read "not tested this". In any case, you get the
idea: the problem here is a potential coherency issue on contents of v_un
between the two file system layers.
Robert N M Watson
University of Cambridge