From patchwork Wed Feb 3 16:54:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manuel Bouyer X-Patchwork-Id: 12064815 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 79B68C433E0 for ; Wed, 3 Feb 2021 16:54:57 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id C290A64F7E for ; Wed, 3 Feb 2021 16:54:56 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org C290A64F7E Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=netbsd.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from list by lists.xenproject.org with outflank-mailman.80970.148662 (Exim 4.92) (envelope-from ) id 1l7LQW-0003FV-Hf; Wed, 03 Feb 2021 16:54:48 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 80970.148662; Wed, 03 Feb 2021 16:54:48 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l7LQW-0003FO-EO; Wed, 03 Feb 2021 16:54:48 +0000 Received: by outflank-mailman (input) for mailman id 80970; Wed, 03 Feb 2021 16:54:47 +0000 Received: from us1-rack-iad1.inumbo.com ([172.99.69.81]) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1l7LQV-0003Do-Lq for xen-devel@lists.xenproject.org; Wed, 03 Feb 2021 16:54:47 +0000 Received: from isis.lip6.fr (unknown [2001:660:3302:283c::2]) by us1-rack-iad1.inumbo.com (Halon) with ESMTPS id 153216e8-a24f-4064-8feb-d0305b03f932; Wed, 03 Feb 2021 16:54:45 +0000 (UTC) Received: from asim.lip6.fr (asim.lip6.fr [132.227.86.2]) by isis.lip6.fr (8.15.2/8.15.2) with ESMTP id 113GsiS3013800; Wed, 3 Feb 2021 17:54:44 +0100 (CET) Received: from borneo.soc.lip6.fr (borneo [132.227.103.47]) by asim.lip6.fr (8.15.2/8.14.4) with ESMTP id 113Gsi37000552; Wed, 3 Feb 2021 17:54:44 +0100 (MET) Received: by borneo.soc.lip6.fr (Postfix, from userid 373) id 07683AA8BB; Wed, 3 Feb 2021 17:54:44 +0100 (MET) X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 153216e8-a24f-4064-8feb-d0305b03f932 From: Manuel Bouyer To: xen-devel@lists.xenproject.org Cc: Manuel Bouyer , Ian Jackson , Wei Liu , Juergen Gross Subject: [PATCH] xenstored: close socket connections on error Date: Wed, 3 Feb 2021 17:54:19 +0100 Message-Id: <20210203165421.1550-2-bouyer@netbsd.org> X-Mailer: git-send-email 2.29.2 In-Reply-To: <20210203165421.1550-1-bouyer@netbsd.org> References: <20210203165421.1550-1-bouyer@netbsd.org> MIME-Version: 1.0 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.4.3 (isis.lip6.fr [132.227.60.2]); Wed, 03 Feb 2021 17:54:44 +0100 (CET) X-Scanned-By: MIMEDefang 2.78 on 132.227.60.2 On error, don't keep socket connection in ignored state but close them. When the remote end of a socket is closed, xenstored will flag it as an error and switch the connection to ignored. But on some OSes (e.g. NetBSD), poll(2) will return only POLLIN in this case, so sockets in ignored state will stay open forever in xenstored (and it will loop with CPU 100% busy). Signed-off-by: Manuel Bouyer Fixes: d2fa370d3ef9cbe22d7256c608671cdcdf6e0083 Reviewed-by: Juergen Gross --- tools/xenstore/xenstored_core.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tools/xenstore/xenstored_core.c b/tools/xenstore/xenstored_core.c index 1ab6f162cb..0fea598352 100644 --- a/tools/xenstore/xenstored_core.c +++ b/tools/xenstore/xenstored_core.c @@ -1440,6 +1440,9 @@ static void ignore_connection(struct connection *conn) talloc_free(conn->in); conn->in = NULL; + /* if this is a socket connection, drop it now */ + if (conn->fd >= 0) + talloc_free(conn); } static const char *sockmsg_string(enum xsd_sockmsg_type type)