From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fhigh-b4-smtp.messagingengine.com (fhigh-b4-smtp.messagingengine.com [202.12.124.155]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA98833688C for ; Mon, 3 Aug 2026 03:09:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.155 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726542; cv=none; b=fcchCG5RaMRbpNH3o6tx68xkmTp/lGDG/mo6ux2sI4arFU17CWA+4L7aheAgIqgt+TvPt7/735rLK19G4KKtcBwdQOdDkQ+r66Ndhc4BDNsAay3h5TlKnfJ4pkpWHQS7oJxtlPcTtHk36IkXWve5sQ0jmPluTVCyX7rppJMAg7Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785726542; c=relaxed/simple; bh=pXl9jprHPySNyka0xzfUFGP1yafexarkhyFnBKmM2H4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=KSXQsYhV69P5bil2bZGuyI38LHUtyPqz4UgOY1bL5nr9ZbV7PJ7etv4eUfKPjuItBLWxcr/NnE3n0JcuLaELR24iZopJtckQmN8WprO/T6uTf8+qsvsRPEETcXBdTRHQN3FKRG7JTgxy3pnKHB8+0NM3FKFkUzYHLxg4+1h7dk4= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=invisiblethingslab.com; spf=pass smtp.mailfrom=invisiblethingslab.com; dkim=pass (2048-bit key) header.d=invisiblethingslab.com header.i=@invisiblethingslab.com header.b=qADUq64W; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=NTXgAljf; arc=none smtp.client-ip=202.12.124.155 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=invisiblethingslab.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=invisiblethingslab.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=invisiblethingslab.com header.i=@invisiblethingslab.com header.b="qADUq64W"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="NTXgAljf" Received: from phl-compute-09.internal (phl-compute-09.internal [10.202.2.49]) by mailfhigh.stl.internal (Postfix) with ESMTP id E0F677A0019; Sun, 2 Aug 2026 23:08:59 -0400 (EDT) Received: from phl-frontend-03 ([10.202.2.162]) by phl-compute-09.internal (MEProxy); Sun, 02 Aug 2026 23:09:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= invisiblethingslab.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:from:from:in-reply-to :in-reply-to:message-id:mime-version:references:reply-to:subject :subject:to:to; s=fm2; t=1785726539; x=1785812939; bh=AIC4GBmoae 3FANeCYGGjXR4JXRqPhRLZ84Tvuc7wIyc=; b=qADUq64WMQ6gOVvlQdtk46guUw v0PecpGJCe3nkB3nFGQgFPz+QiJJZM0O7/2s3KoUBKcSto0fveiOROO0EyM42SSv NdgC2ZlGSZ0MSEXSKBBzZ+TDaDZGHfGOqxtD4yH0tM7fuiBRWCS+7t+Tho/GIMFK KZ/5oK/zPKLBWNgRxxAhxt5upwJmEhXzt4CvyrdxtqHkPzIbsow/tDltMZ1uiWan 3Zu96q5dTVh9eZHuT22sl4eeyPIYwbWYiHZz+53mNdtMeGEDi9i4rQiVZcf7eII+ Tb4PwB1pi5jo2CyHDjj5kIttGlp2tdyr6/6bCTkkAlsqeFUOL9meU9I8sNvg== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; t=1785726539; x= 1785812939; bh=AIC4GBmoae3FANeCYGGjXR4JXRqPhRLZ84Tvuc7wIyc=; b=N TXgAljfpkzLzcsvsNA4Lu6G31VOi9xdy7uz7UHl0uGl1ZBbeDBgdb5GbkfCnWjou rPfvxp/sLYtQSTCETk8p7euz9EcdDpiQxoDRrX7uKPXXtIutQL8PlTN9ECy54VuU /pkuLs2sguLFYI67yXxXd025Ob4/sV3JpDjGiNazl7soJspz7pEQxxxnmKOAnf1T 3ivRZ/I6swvGlWhaw+R4E5zxOTpWII9LXjYzl8oXWGOOUa3z7CLCJXNeEGE+bwHz iJ6RTc7WXwlUe5Jd81sh3rTIF1UWZyxIUQ4mFp0eTFsv03DrTBn3Old80FS+k9n9 hpXakhMKTVTX8RCDfca5Q== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: dmFkZTEwpDv/j60enwUL1UJovK5tXTOpuP+SK+CoSIq7LCkDblI6JGegUQoofHbAEAnGvT 2WgLVckyPV5XFdyrVGVi3zRzttftvmTIpNXgwaCsmZQyy1Wq7AB80KuvWdz3HtjWBznKRO YqTXcyPTyrHDVVGYGYghLb9BlPINpgvfXxzBZdPROfUvA73iNoabD243iDQ2cJWJDYfwKf cs0XhU98QyiD/M/DY4Hz5Qiy7lZbhW3z8Ghs5pp3buJQxpFWdXvrT6ihLuxgnW4MXHWeZp Iwb8mvIC+LpEp990itYR+WCOpa25DzleigSNBpi7g4oWNLjklt/yhTSI+TyFh5I71gvcmk cp1Er+LY2bnKbm+qs7+wYqoMRneVGehuZ98opHpijgTvP+pCAhSw/EQF+QQSQP1wUS7Yt/ iS6nS5GOwroOq/D9PBp7gj5axk3u0qIp/R9c6nWq0AkStvabjylE6Q7yANzBUxlQyM3vPY Al2c0QpMZ4e5Mj4Sj2QhFM0wJy5NMEbhuf9i648MpFv5nsGOwG6f76VZMH0ICRW4m7i+Ve h86JsDfdI3eEpvK959vJWqNOs1IDPfhx8Pd1kpDJmGaQQo/JEvNKk3ZPEg1ht48yqGaHxu DIKXsY1ZVX0h6V80SBOGxYXyGmNIzK5VI28oKxLJ1R9+ZW6oApulf1tyCH8w X-ME-Proxy: Feedback-ID: i1568416f:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Sun, 2 Aug 2026 23:08:58 -0400 (EDT) From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= To: linux-kernel@vger.kernel.org Cc: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= , Juergen Gross , Stefano Stabellini , Oleksandr Tyshchenko , Jakub Kicinski , Bjorn Helgaas , Jason Andryuk , xen-devel@lists.xenproject.org (moderated list:XEN HYPERVISOR INTERFACE) Subject: [PATCH 2/2] xen/xenbus: check otherend_id only after it has been initialized Date: Mon, 3 Aug 2026 05:08:02 +0200 Message-ID: <20260803030822.4104093-2-marmarek@invisiblethingslab.com> X-Mailer: git-send-email 2.54.0 In-Reply-To: <20260803030822.4104093-1-marmarek@invisiblethingslab.com> References: <20260803030822.4104093-1-marmarek@invisiblethingslab.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When device just got initialized (for example on module load), the otherend_id field is initialized only after xenbus_read_otherend_details() gets called. If xenstore watch triggers xenbus_dev_changed() before that, it might consider still zeroed otherend_id field (not matching actual xenstore content) as a sign of device state reset. It can happen because xenstore watch are handled in another thread (xenwatch), which can run in parallel to the initial device probe running at module load. In that case, it would call device_unregister(), which would deadlock against device probe from module init. Fix this by considering dev->otherend_id change only after dev->otherend is set (which happen after otherend_id is initialized). Fixes: e2dcf9065536 "xen/xenbus: better handle backend crash" Signed-off-by: Marek Marczykowski-Górecki --- drivers/xen/xenbus/xenbus_probe.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/xen/xenbus/xenbus_probe.c b/drivers/xen/xenbus/xenbus_probe.c index a259c8f0fff4..b42d8d2e5a33 100644 --- a/drivers/xen/xenbus/xenbus_probe.c +++ b/drivers/xen/xenbus/xenbus_probe.c @@ -680,7 +680,8 @@ void xenbus_dev_changed(const char *node, struct xen_bus_type *bus) dev->otherend_id); if (state == XenbusStateInitialising && - (state != dev->state || backend != dev->otherend_id)) { + (state != dev->state || + (dev->otherend && backend != dev->otherend_id))) { /* * State has been reset, assume the old one vanished * and new one needs to be probed. -- 2.54.0