Skip to content

Commit 581d21a

Browse files
David Vrabeljgross1
authored andcommitted
xenbus: fix deadlock on writes to /proc/xen/xenbus
/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. Signed-off-by: David Vrabel <david.vrabel@citrix.com> Reviewed-by: Juergen Gross <jgross@suse.com> Signed-off-by: Juergen Gross <jgross@suse.com>
1 parent 3da96be commit 581d21a

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/xen/xenbus/xenbus_dev_frontend.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,8 @@ static int xenbus_file_open(struct inode *inode, struct file *filp)
538538

539539
nonseekable_open(inode, filp);
540540

541+
filp->f_mode &= ~FMODE_ATOMIC_POS; /* cdev-style semantics */
542+
541543
u = kzalloc(sizeof(*u), GFP_KERNEL);
542544
if (u == NULL)
543545
return -ENOMEM;

0 commit comments

Comments
 (0)