On 17/11/12 17:07, Cherry G.Mathew wrote:
> Yes, but split() itself is not called unconditionally, whereas malloc()
> is.
I've taken a quick look at this, and body is allocated in process_msg.
If message type is a watch, body is freed by split, if it's not a watch,
body is saved to msg->u.reply.body, which is appended to the list of
pending messages.
This list is read by read_reply, which will return the body to the
caller function, that's xenbus_dev_request_and_reply, which will also
return body to the caller function, or xs_talkv, which will free the
body if msg type is XS_ERROR or user did not provide a valid pointer to
store body to, if user provided a valid pointer, body is returned.
Did you mean that there is an error in process_msg itself, or in one of
the callers of the other functions that also use body? If so we should
open a new PR.
Regarding the problem at hand, do you think the last patch is ok to commit?