>>> On 14.11.16 at 12:12, <david.vra...@citrix.com> 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@lists.xen.org https://lists.xen.org/xen-devel