Hmm, I think I may have eyeballed the problem.  When the server function
(ds_device_write) returns something other than KERN_SUCCESS (zero) or
MIG_NO_REPLY, then the message body will get destroyed by the kernel.
What's happening is that we call vm_map_copyout, which consumes the ool
stuff in the message body, and then later return an error, which makes the
kernel try to free the already-consumed stuff.

In gnumach/linux/dev/glue/block.c, you'll see that device_write never
returns an error code directly after it has used the copy object, it
returns MIG_NO_REPLY after sending the reply explicitly.

I think that's what we need to do for the error cases.

_______________________________________________
Bug-hurd mailing list
[EMAIL PROTECTED]
http://mail.gnu.org/mailman/listinfo/bug-hurd

Reply via email to