Messages in this thread | | | Subject | Re: [Xen-devel] [PATCH 2/2] xenbus: req->err should be updated before req->state | From | Julien Grall <> | Date | Tue, 3 Mar 2020 10:11:59 +0000 |
| |
Hi,
On 03/03/2020 01:58, Dongli Zhang wrote: > This patch adds the barrier to guarantee that req->err is always updated > before req->state. > > Otherwise, read_reply() would not return ERR_PTR(req->err) but > req->body, when process_writes()->xb_write() is failed.
The memory barrier below looks good. However, as mentionned in patch #1, barrier() is not the correct barrier to pair with virt_wmb().
> > Signed-off-by: Dongli Zhang <dongli.zhang@oracle.com> > --- > drivers/xen/xenbus/xenbus_comms.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/xen/xenbus/xenbus_comms.c b/drivers/xen/xenbus/xenbus_comms.c > index 852ed161fc2a..eb5151fc8efa 100644 > --- a/drivers/xen/xenbus/xenbus_comms.c > +++ b/drivers/xen/xenbus/xenbus_comms.c > @@ -397,6 +397,8 @@ static int process_writes(void) > if (state.req->state == xb_req_state_aborted) > kfree(state.req); > else { > + /* write err, then update state */ > + virt_wmb(); > state.req->state = xb_req_state_got_reply; > wake_up(&state.req->wq); > } >
Cheers,
-- Julien Grall
| |