[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCHv5 1/2] xenbus: fix deadlock on writes to /proc/xen/xenbus



>>> On 14.11.16 at 12:12, <david.vrabel@xxxxxxxxxx> wrote:
> /proc/xen/xenbus does not work correctly.  A read blocked waiting for
> a xenstore message holds the mutex needed for atomic file position
> updates.  This blocks any writes on the same file handle, which can
> deadlock if the write is needed to unblock the read.
> 
> Clear FMODE_ATOMIC_POS when opening this device to always get
> character device like sematics.

Interesting. I'm pretty sure that back in March/April, when I had
to deal with this for our kernels, I was told the upstream kernel is
unaffected. In any event I continue to think that
https://patchwork.kernel.org/patch/8752901/
is the better (because more generic) solution here.

> --- a/drivers/xen/xenbus/xenbus_dev_frontend.c
> +++ b/drivers/xen/xenbus/xenbus_dev_frontend.c
> @@ -536,6 +536,8 @@ static int xenbus_file_open(struct inode *inode, struct 
> file *filp)
>       if (xen_store_evtchn == 0)
>               return -ENOENT;
>  
> +     filp->f_mode &= ~FMODE_ATOMIC_POS; /* cdev-style semantics */
> +
>       nonseekable_open(inode, filp);

In any event I think the adjustment should be placed after the call
to nonseekable_open(), despite it being unlikely that the function
might set the bit again.

Jan


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.