From patchwork Mon Nov 14 11:12:55 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: David Vrabel X-Patchwork-Id: 9427231 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 09A956047D for ; Mon, 14 Nov 2016 11:15:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F046328697 for ; Mon, 14 Nov 2016 11:15:29 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E4F78286A2; Mon, 14 Nov 2016 11:15:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED autolearn=ham version=3.3.1 Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 9D104286DD for ; Mon, 14 Nov 2016 11:15:29 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c6FCQ-0002KL-Ji; Mon, 14 Nov 2016 11:13:18 +0000 Received: from mail6.bemta5.messagelabs.com ([195.245.231.135]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1c6FCP-0002K8-6V for xen-devel@lists.xenproject.org; Mon, 14 Nov 2016 11:13:17 +0000 Received: from [85.158.139.211] by server-4.bemta-5.messagelabs.com id 6D/30-22514-C4C99285; Mon, 14 Nov 2016 11:13:16 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFprFIsWRWlGSWpSXmKPExsXitHRDpK7PHM0 Ig86lXBbft0xmcmD0OPzhCksAYxRrZl5SfkUCa8aE+QdZCt6yV9zY6NbA+Jiti5GTQ0LAX+Lm 2cVMIDabgI7E4yUz2LsYOThEBFQkbu81AAkzC1RJXLn0mRXEFhbwlHjQ3QbWyiKgKvGt6Q1Yn FfAXeJO5y52iJFyEueP/2QGsTkFPCTWTZ3DAmILAdXMuPSQCcJWkfi4dhVUr6DEyZlPWCB2SU gcfPGCGeQECQFuib/d9hMY+WYhqZqFpGoBI9MqRo3i1KKy1CJdI3O9pKLM9IyS3MTMHF1DA1O 93NTi4sT01JzEpGK95PzcTYzAcKpnYGDcwXh1i98hRkkOJiVR3vhIzQghvqT8lMqMxOKM+KLS nNTiQ4wyHBxKErxzZgHlBItS01Mr0jJzgIENk5bg4FES4V0HkuYtLkjMLc5Mh0idYtTleLPr5 QMmIZa8/LxUKXHeDJAiAZCijNI8uBGwKLvEKCslzMvIwMAgxFOQWpSbWYIq/4pRnINRSZj3Es gUnsy8ErhNr4COYAI6Ype5BsgRJYkIKakGRu2nNksKghdb/HdUuvtBZ1OTYv1q8Z0NGpKFxfO ur+bU5TjEEdXYfvfMC7V4CbuAlA3ajoXCT7gKXkRdikhfe1yO66SHj5Bcukj+RB8BlX1bnLZs 47s66430b3EuxbbQgs39xy7tT9yX8+H7lHiRXWX7KmvYG1r82/btSOspiVojkXeCIfeTEktxR qKhFnNRcSIAnbYV/q0CAAA= X-Env-Sender: prvs=11962ba05=david.vrabel@citrix.com X-Msg-Ref: server-8.tower-206.messagelabs.com!1479121993!69980379!2 X-Originating-IP: [66.165.176.89] X-SpamReason: No, hits=0.0 required=7.0 tests=sa_preprocessor: VHJ1c3RlZCBJUDogNjYuMTY1LjE3Ni44OSA9PiAyMDMwMDc=\n, received_headers: No Received headers X-StarScan-Received: X-StarScan-Version: 9.0.16; banners=-,-,- X-VirusChecked: Checked Received: (qmail 29941 invoked from network); 14 Nov 2016 11:13:15 -0000 Received: from smtp.citrix.com (HELO SMTP.CITRIX.COM) (66.165.176.89) by server-8.tower-206.messagelabs.com with RC4-SHA encrypted SMTP; 14 Nov 2016 11:13:15 -0000 X-IronPort-AV: E=Sophos;i="5.31,638,1473120000"; d="scan'208";a="389329977" From: David Vrabel To: Date: Mon, 14 Nov 2016 11:12:55 +0000 Message-ID: <1479121976-26568-2-git-send-email-david.vrabel@citrix.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1479121976-26568-1-git-send-email-david.vrabel@citrix.com> References: <1479121976-26568-1-git-send-email-david.vrabel@citrix.com> MIME-Version: 1.0 X-DLP: MIA1 Cc: Juergen Gross , Boris Ostrovsky , David Vrabel Subject: [Xen-devel] [PATCHv5 1/2] xenbus: fix deadlock on writes to /proc/xen/xenbus X-BeenThere: xen-devel@lists.xen.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" X-Virus-Scanned: ClamAV using ClamSMTP /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 --- drivers/xen/xenbus/xenbus_dev_frontend.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/xen/xenbus/xenbus_dev_frontend.c b/drivers/xen/xenbus/xenbus_dev_frontend.c index 1e8be12..ce389b4 100644 --- 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); u = kzalloc(sizeof(*u), GFP_KERNEL);