From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from DU5PR08MB10802.eurprd08.prod.outlook.com (2603:10a6:10:526::11) by PAXPR08MB6942.eurprd08.prod.outlook.com with HTTPS; Fri, 18 Sep 2026 14:36:56 +0000 Received: from PR3P191CA0024.EURP191.PROD.OUTLOOK.COM (2603:10a6:102:54::29) by DU5PR08MB10802.eurprd08.prod.outlook.com (2603:10a6:10:526::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.5; Fri, 18 Sep 2026 14:36:51 +0000 Received: from MI3PEPF00008485.eurprd02.prod.outlook.com (2603:10a6:102:54:cafe::2b) by PR3P191CA0024.outlook.office365.com (2603:10a6:102:54::29) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.13 via Frontend Transport; Fri, 18 Sep 2026 14:36:51 +0000 Authentication-Results: spf=softfail (sender IP is 99.81.216.78) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning openvz.org discourages use of 99.81.216.78 as permitted sender) Received: from nat.eu.perception-point.io (99.81.216.78) by MI3PEPF00008485.mail.protection.outlook.com (10.167.240.132) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Fri, 18 Sep 2026 14:36:49 +0000 X-PERCEPTION-POINT-VERDICT: CLN X-PERCEPTION-POINT-SPF: X-PERCEPTION-POINT-SPAM: PASS X-PERCEPTION-POINT-SENDER-IP: 2a00:1450:4864:31::10 X-PP-Forefront-Antispam-Report: CIP:2a00:1450:4864:31::10;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wm2-x10.google.com;PTR:mail-wm2-x10.google.com;CAT:NONE;SFS:(13230040)(3072899012)(2092899012)(12012899012)(82310400026)(6059299003)(43022699015)(19002099009)(10067099003)(22082099003)(16102099003)(5023799004)(5063699009)(57112099003)(55112099003)(18002099003);DIR:INB; Received: from GV1PR07CU001.outbound.protection.outlook.com (mail-gv1pr07cu00105.outbound.protection.outlook.com [40.93.214.101]) by inbound-smtp.eu-west-1.amazonaws.com with SMTP id 9nld1g8crq96p3s078unspdap0krb3lnd2ija2o1; Fri, 18 Sep 2026 14:36:46 +0000 (UTC) X-SES-Spam-Verdict: PASS X-SES-Virus-Verdict: PASS Received-SPF: softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.214.101 as permitted sender) client-ip=40.93.214.101; envelope-from=den@openvz.org; helo=GV1PR07CU001.outbound.protection.outlook.com; Authentication-Results-Original: amazonses.com; spf=softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.214.101 as permitted sender) client-ip=40.93.214.101; envelope-from=den@openvz.org; helo=GV1PR07CU001.outbound.protection.outlook.com; dkim=pass header.i=@openvz.org; dmarc=pass header.from=openvz.org; X-SES-RECEIPT: AEFBQUFBQUFBQUFIZHh3Y2pRY3FaSmh4VlZueHpIbVhkTGhNeUFLUGIyaHMrSGV5RG9uak5PblNBSHpoUFdYRlpFV0RacEoramtIdzNsUjlFSHlxN2dtYzVoTDZDTFFnSFNKVVNVTzlTTkJQS1dNYzFSUTNJNWtNNWswQy9vSDUyZ2E4cnFLVFovVktwY0NETTB6TitLRGtJTEtjem8vU3JsQjNCNFM0ZERjNGxDYitzMHNDUmptSVd5S3U2RkNpL0tmbStUekxwU3BwYytwRmhQTHJBdVg0engrcmc5U3VzZjllNVhLdnBBZnl1anh2U1JYd3NKUHU4ZkNFWUFFK1RuVXlCZHZJNjZvNjZRRG9NZUM0bDBDQmpNZWE0TzNEbFQ4K0NWYThoSHlEL202eE1YellRTmc9PQ== X-SES-DKIM-SIGNATURE: a=rsa-sha256; q=dns/txt; b=abIMGQZTE+kJ5KJDwZGyEjQapEFBbaArGho4rWmjaHw5/K2m8qFJmVxdNA0EMA90/8IvWF3hCZ+U+35JanDt+GuM92bDO4C9EGhkwRbE3DTy3SbpNJPT/lh6+X9Kf1ruhUBxB4gOZ5MFR8WTPN2qRfF7IpRVRjb2SykrcvrL5PE=; c=relaxed/simple; s=shh3fegwg5fppqsuzphvschd53n6ihuv; d=amazonses.com; t=1789742207; v=1; bh=apBEZHq926oUqMRsBU4uk7SvCYAZy/LeWtj8YjMz4rg=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT; Received: from DUZPR01CA0282.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b9::17) by PA6PR08MB10739.eurprd08.prod.outlook.com (2603:10a6:102:3d8::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.451.5; Fri, 18 Sep 2026 14:36:40 +0000 Received: from DB5PEPF00014B9D.eurprd02.prod.outlook.com (2603:10a6:10:4b9:cafe::75) by DUZPR01CA0282.outlook.office365.com (2603:10a6:10:4b9::17) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.428.13 via Frontend Transport; Fri, 18 Sep 2026 14:36:40 +0000 Authentication-Results-Original: spf=pass (sender IP is 2a00:1450:4864:31::10) smtp.mailfrom=openvz.org; dkim=pass (signature was verified) header.d=openvz.org;dmarc=pass action=none header.from=openvz.org;compauth=pass reason=100 Received-SPF: Pass (protection.outlook.com: domain of openvz.org designates 2a00:1450:4864:31::10 as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:31::10; helo=mail-wm2-x10.google.com; pr=C Received: from mail-wm2-x10.google.com (2a00:1450:4864:31::10) by DB5PEPF00014B9D.mail.protection.outlook.com (2603:10a6:18:3::284) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.451.8 via Frontend Transport; Fri, 18 Sep 2026 14:36:40 +0000 Received: by mail-wm2-x10.google.com with SMTP id 5b1f17b1804b1-49cd38e0e5dso10623195e9.2 for ; Fri, 18 Sep 2026 07:36:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1789742199; x=1790346999; darn=virtuozzo.com; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=g9fDCdK/v8vPr51JO8Di4hzhi5YUYhnTK3WOjpHtnyE=; b=lNVqUhZ99FeqL9hQlCu2FpPwik1aSJ+TRpJWStKklieqoCZHvr7VKkyHe+dplVjGpa TjjITSguUk8AMz65Q0orCNpiI5bpWLH3NZSSUBvyTqHTlXqZ0glQiM/Ddixat7wbiQlY hjQ0UzXcl5LqUZHmJpqm0ZYjY1w4F3GY/LOtR1r/lCi/CPnJVWiAUfQnTzGLRxr0ky8m eanMMg0w7/QUHlxCgZP7APd7168ev9zpKm7XX560YXEMWEbQ8zYL24KPMVemeoH01uqe 83GjfWdjHIcB5N0Yy6H5nioM0a1LmcDmGUVkpH0uYiCVdiDUOAxcRGYxxsUCIjKxKccN km6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1789742199; x=1790346999; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=g9fDCdK/v8vPr51JO8Di4hzhi5YUYhnTK3WOjpHtnyE=; b=tyD/pEuSDP8TwxrtrQODrL+h1LrpfHmMT+wZ0eMPBz65JqiOA7FyP5UJQGKXOCvV2k 4wCeqoA2nR8HWLswcnYAEJf8EKwgzcZkYxqXzXTxhjfpPn7+7XFiyZL4+2h7/Z6oHnPx JSYqI/cLoz8lDkNOmhYemL1npyfCx6WppBPljEx9elpVxssQigGSR7oV+kQxOmMZqTfi ujgRCapuz4RX1FH82gZAGyeFQZ74I1Tcyry3Bovw5KpKQrbfCCQAXhp2j1kEW8OL/yUe JZB/y8A4Ar7+BOCxOaJsnQ20U/bKOSLlwjIcqwriBpk3VohxFFrMyxYH+UKXsKu+gOax 19MQ== X-Gm-Message-State: AFuF++lAcKzLL3d0xjUvVU22dOwi6m8Ynb25mDgfN2rynyiJ5SICyHmg H4XcTRH3H56Jz71a5S8N6LNDiPmZsa9z42A9Ef/8vbHOz9aYzyKGdpEg7K6FsJpbf6VXQ26nSeu zJ4JGl3Q= X-Gm-Gg: AYBFou0B4+za4GUaetTSLC1J9gxTPyoWStsCKl5J/gxExm0jEkAogLw6yejU+hsabuc Cmb7NBNm698fAzKJfRF073zKx6A1DZTAHWbbN+NZKDQvXPUbTL8JrW7L6kPZtnLEEK9Ehx9ORZZ O9i+GSVHUemUwpNxef3FhSyOYasHxHZTt+CjQjRiIVaattJ2SU0ua/EPzTkqE1qJjPU5FsJgKQt vXvOe3lgdS95ZCBxkKfeiCOdlT4rzq67EUS6PkK7+Yb+mcX1/kPkT22Ct8y3ZmpaneXy5TLi5T6 AWoRb7XVzqA3MAdfLelpYFpnMmK/k43H9blhybdK2eCMYA0vUEnneObXgiJ6MmvrKuG8w2sOtwS 4H2nP4xN0CFOrc9EkcN+HAZe++b/eJheoRvWU89j7V71bbpzR3jrv8RLTZnwbYPpV335xCMcrbs OnHwpkGLhoBqCkK5mdaeEzYi1spoOME0qrpJ9SsoKrU1ZVREJ26x19ASsT8hHgEUtOkKUHRS5lK /d/WQ== X-Received: by 2002:a05:600c:a14:b0:49d:1e09:694a with SMTP id 5b1f17b1804b1-49fc568f869mr34563305e9.11.1789742199425; Fri, 18 Sep 2026 07:36:39 -0700 (PDT) Return-Path: den@openvz.org Received: from athena.sw.ru ([2a06:5b06:b600:300:5b79:42a4:5349:751e]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49fc471b9a2sm35007395e9.0.2026.09.18.07.36.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 18 Sep 2026 07:36:37 -0700 (PDT) From: "Denis V. Lunev" To: svt-core@virtuozzo.com Cc: andrey.drobyshev@virtuozzo.com, den@openvz.org Subject: [PATCH v2-hci-8.0 1/2] migration/cpr: lock the saved fds #VSTOR-145529 Date: Fri, 18 Sep 2026 16:36:28 +0200 Message-ID: <20260918143629.236874-2-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260918143629.236874-1-den@openvz.org> References: <20260918143629.236874-1-den@openvz.org> Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 1 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:1 X-MS-TrafficTypeDiagnostic: DB5PEPF00014B9D:EE_|PA6PR08MB10739:EE_|MI3PEPF00008485:EE_|DU5PR08MB10802:EE_|PAXPR08MB6942:EE_ X-MS-Office365-Filtering-Correlation-Id: 29614f2c-1695-4ec1-a0ed-08df1592468a X-LD-Processed: 0bc7f26d-0264-416e-a6fc-8352af79c58f,ExtAddr X-MS-Exchange-AtpMessageProperties: SA|SL X-PERCEPTION-POINT-CUSTOM: vzpp X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230040|3072899012|2092899012|12012899012|82310400026|6059299003|43022699015|19002099009|10067099003|22082099003|16102099003|5023799004|5063699009|57112099003|55112099003|18002099003; X-Microsoft-Antispam-Message-Info-Original: =?us-ascii?Q?9J+4DovYLKWlxo/PGC2ckAg0ISjygiA2LKHugTRxD31abjZ9ZrT+ZD5eZ3fi?= =?us-ascii?Q?2u1vVoudWZuYediSQaHvN2dyXp56cKEe09fWKnHn+SEe4IU/FIJ+1KRd0aGD?= =?us-ascii?Q?Lqqj5mp2F7E4WyM9qrGthUhrdPDkVcllPw62Si0eH/VvcgZL/n323NgHzWbD?= =?us-ascii?Q?01LEgMrUPFVdQWoRpROxTQpVdVMI3QGOobS12o2WfUJvhe4EdvbbkkoPcFBQ?= =?us-ascii?Q?gaZX/5uhXMgR9nm62rMh5q+MLv1rLi+zMPOXbhNcBodo8KO273VuJGOOtUSj?= =?us-ascii?Q?HkdBi9+h8BuILEvq5A6sNMzG2TD6LhKB9DxJcML8LyePrI/0oC5JOunhxDDt?= =?us-ascii?Q?prcSkJ/CUI0hbRPyeqfuQMjUXj8VS+Y6lZLMwOlJWqvotXPiJci+UINbx63Y?= =?us-ascii?Q?mf6j/jULflgHumkPectP8YkVr8FlyNyFFkKAkrQ6F05aG8WF7AgPPCIspx7+?= =?us-ascii?Q?Dtf4J2H4wz8wJB3cdOFg1TXhdVsfl6LSN+OsUpPSPFPUUK3Zt+ZO2ksfyeg+?= =?us-ascii?Q?VtUdVfmyOBi3Ga073ipN9V3mUatpBeRAMtR5riQVkyPg53BwNZT8Y0o9839j?= =?us-ascii?Q?qnwZNgz/L19MyIFGcgojRQzqnRbXqtTmxUIv0q60XtEoZL3ZAcijkLwbH1rl?= =?us-ascii?Q?WBv1xFKi1+MQ3uBdKDYTAS3xvmquBZyw62zSCUiHt4dTjzhq02L6Pi82a6GK?= =?us-ascii?Q?7QBGlWyp7LbY287qPyYA302Pvngo8WldtwmraISF+DDigec+Li4wy0B+Jrmk?= =?us-ascii?Q?MakRcaK26AqebZjP22YUFjAhoRTAWza44lkQNrAgS/oAf9eF1UX/tv6bubZd?= =?us-ascii?Q?fFSCTpbh1pllMCTdj6x9v0ShAyfYbsmcWmEehrNI3SIALu6rKs0+tOCAwWjH?= =?us-ascii?Q?wT3io6kWNTZ/HRrYrPiwfmB2jxpVwtCmo6lPJbFbvrqJjy2tdjcqjoZgFRAJ?= =?us-ascii?Q?6lBoKCCpr4V1kOZDC/9eU+Jeh74tbWH41yowjdcDaW7izJsP8szM2dl5FOXg?= =?us-ascii?Q?Juw3BlfFPqXEGBs8ABv8v4Tepk4RaMexsxsPZNVgy2FXETbO4LCIErp3dhyy?= =?us-ascii?Q?lcCtg0WwjGggter8veRBWEuVPNIj37QTcDxdhlL5Nh4of6r5DSCz+D4Wvp7y?= =?us-ascii?Q?S+6jajdbYa2VEFP8I+QOAoKSRzt1bp+PECnfXLt1UcYHbHk6WtT2CPOKDupg?= =?us-ascii?Q?isZSi/QjX1G/T7x0QTb3CwWMRN5cHmu6eVHAM7mjN/n/Vlvt07M19tTD1uzv?= =?us-ascii?Q?0GK60XZh2TiWxDXQdIdK/Uaofp9RC6sTPRflLJ6r7S7l0LcPzVv2tMjvIF8K?= =?us-ascii?Q?zEK5E/Dk1+e/lLPEQ2vWE74/o98a4U+XThBsVgJMexEJxBSlNgJpvDc1auPp?= =?us-ascii?Q?M7OaQdfosi01xAtR5ttOPbBLMkWEku1zrz4z07mDkxgCtIuPvQBnyOP0/7uz?= =?us-ascii?Q?WZp5A0KM3PMXhb2lflkp5SMabb01QJQ6xMpqC0+uWR9Yx03in6CjE8b6UiTh?= =?us-ascii?Q?+YL7X9MmMXyTyddwBsPlNRyHiW9sfNVt1EtUK9VBCwMT9+WT1tr1wWzhpGmq?= =?us-ascii?Q?RnA6nHfLguKFbw5rcmHGSsviXNHOpu8VROYxwoilyJEku4pO/3/WuN9O6FfX?= =?us-ascii?Q?X1+01v+L8hBaAGmVVZwdkULA+ZSH49BHrTb6AkSAlzb+Bpw3+DpV21meG4iY?= =?us-ascii?Q?kNNGImZTGWZ/VJHTYbtFpRdl73Pt8odp+62CVCfeZmvfq8WwSDzwJ8DmAKEE?= =?us-ascii?Q?ccWWCaN2+4jWviEbHh5JpSH5j2iQSluA2Y8Y4NmWHu05YQXlA2S3arYIRPsR?= =?us-ascii?Q?rFmSaOGzof1gomsD9ochtobSgwbwDlWz8lxqvsjSIppnYnA/FQ25Zp8Qngio?= =?us-ascii?Q?B1aCsbToauIhmeazZmZFDm+ykDCLrJRhjLw7xXxZkPOar7p3RmyyuiqELS9/?= =?us-ascii?Q?LkruC41RlTeRtZsHsctfSvbGXMrODPJ0Vvft9eLqzdL5g3iTkRWYbVbCRBlR?= =?us-ascii?Q?Q8pfHTHJ9pWUMeJhVUADssm6idofwgJc1bUOUl191JCy1EF9psjeImQp7uus?= =?us-ascii?Q?sScWFoNNaD4y4i6VtdznE5eHENTXBSYvnMdxcXN2IpaziqvFt6U+v5guiU5A?= =?us-ascii?Q?b1kz2ZLX3yuPbvop2yOJkizFOGLx4QVAvmeS6ud1w//S5lLMOzdD6ZmZWvrS?= =?us-ascii?Q?71V+dkPSiAFlTP8F142CMo9TP7aZEt3hlfD9GveIlpSYw3yBzxXKIw8AerIl?= =?us-ascii?Q?GAHJWcbOKpO4FUtFDCX9?= X-Forefront-Antispam-Report-Untrusted: CIP:2a00:1450:4864:31::10;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wm2-x10.google.com;PTR:mail-wm2-x10.google.com;CAT:NONE;SFS:(13230040)(3072899012)(2092899012)(12012899012)(82310400026)(6059299003)(43022699015)(19002099009)(10067099003)(22082099003)(16102099003)(5023799004)(5063699009)(57112099003)(55112099003)(18002099003);DIR:INB; X-Auto-Response-Suppress: DR, OOF, AutoReply X-Exchange-RoutingPolicyChecked: 50FIhvRejVhTjT2zGUxBFKINexl5AEREp1zncPki6orGdLAb/kd3iBKQBu1lOdHSuj4ljve3ldNJVZXoprZyUDdXPv/0HXR1SWTp8M5eekVf0ZHIivfbGwPg1O+szaqHXgnrNAtQUwhzCTyQA1CC7J7LuU3uv2OZsIRrQysi6XCHuHHmgjT42En2COCX4XcWLwvQ/hzARP1Ho5zCvsqH47vqJwiZcfvl3cq7WWlaNE3oHTqw4oEZYLpNNjZCix/os3TTASIl+x+TsOKwavr5GXdDlbUT1p5ufJDccfUaDGXjPtYylusQwXged3A44ddJazbrOnFuDIGOfhSQGNt1Ww== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10739 X-MS-Exchange-Organization-ExpirationStartTime: 18 Sep 2026 14:36:50.2798 (UTC) X-MS-Exchange-Organization-ExpirationStartTimeReason: OriginalSubmit X-MS-Exchange-Organization-ExpirationInterval: 1:00:00:00.0000000 X-MS-Exchange-Organization-ExpirationIntervalReason: OriginalSubmit X-MS-Exchange-Organization-Network-Message-Id: 29614f2c-1695-4ec1-a0ed-08df1592468a X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-Exchange-Transport-CrossTenantHeadersStripped: MI3PEPF00008485.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Exchange-Organization-AuthSource: MI3PEPF00008485.eurprd02.prod.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Office365-Filtering-Correlation-Id-Prvs: 2c81e317-dffc-4c44-29ac-08df15924081 X-MS-Exchange-Organization-SCL: -1 X-Microsoft-Antispam: BCL:0;ARA:13230040|35042699022|6059299003|43022699015|3072899012|2092899012|82310400026|12012899012|22082099003|18003699003|19002099009|5133699003|5063699009|55112099003|5023799004|56012099006|16102099003|10067099003; X-Forefront-Antispam-Report: CIP:99.81.216.78;CTRY:IE;LANG:en;SCL:-1;SRV:;IPV:CAL;SFV:SKN;H:nat.eu.perception-point.io;PTR:nat2.eu.perception-point.io;CAT:NONE;SFS:(13230040)(35042699022)(6059299003)(43022699015)(3072899012)(2092899012)(82310400026)(12012899012)(22082099003)(18003699003)(19002099009)(5133699003)(5063699009)(55112099003)(5023799004)(56012099006)(16102099003)(10067099003);DIR:INB; X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Sep 2026 14:36:49.6249 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 29614f2c-1695-4ec1-a0ed-08df1592468a X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: MI3PEPF00008485.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU5PR08MB10802 X-MS-Exchange-Transport-EndToEndLatency: 00:00:07.0093830 X-MS-Exchange-Processed-By-BccFoldering: 15.21.0451.004 Content-Type: text/plain X-Microsoft-Antispam-Mailbox-Delivery: ucf:0;jmr:0;auth:0;dest:I;ENG:(910005)(944506478)(944626604)(920097)(930201)(20251009189)(140003); X-Microsoft-Antispam-Message-Info: =?iso-8859-1?Q?BtcPcyMN1CU4zUymXXNzciQdEruTJkjEvZA2v/bcoLQVv0pb3Mo8rZhx/F?= =?iso-8859-1?Q?pRzlfuSNeOVXR0qJcglPSf2w8mnw1V6uXPOWNuBazj7BF66GiiKSG7QBsX?= =?iso-8859-1?Q?IZXzMAXPSurW+i+hAXl72/ZhWHQXvEfgK3ZBZTL1SBSouZ27LK2TtvERA/?= =?iso-8859-1?Q?4EHgqq2MjOOganNvBo+A6/NiOoLFuaojs/qU/z/kADbcPMQO3VJYGxIC54?= =?iso-8859-1?Q?s/CK1lMDpdiJm9buTuYm3taoAvfKuxU448N5obZFvJ15MVj370NxrWwLtO?= =?iso-8859-1?Q?1Ap0KJJS4S8NBG4+Ck8BEnf5zb6fq2wthLNA0ZGgFxSqQKvGiQafu5QTXV?= =?iso-8859-1?Q?bhK30UMQLm1mPIrVaXYC7Y9XDZNKCh8edXRMD17W5g+8PBZgSJ32xQrIoz?= =?iso-8859-1?Q?ADD6BzLS3qZF2SqNgxK4Oh7p7OZ9ymRIoMAf/CXXMY8KMK34Ou6fdb0nW7?= =?iso-8859-1?Q?HFOiY18srU8RwOgRB1IK0Oj5ZRFCTDYMGNKJVAQSdaGAGG/mu6FUqUdesg?= =?iso-8859-1?Q?gAriKnmIrMmf0fgmxNsXKcvyMMqxVxVZW49LiawfOUL2Lejk6vKWeJq+0t?= =?iso-8859-1?Q?7LXy2DfBZOswT0Z5s02xfRGqCwb3zBkWNSjcInz0pgqHPW06XJCp5x1iiy?= =?iso-8859-1?Q?eVF+ShSSTuvDRPT83HzO+UpyfxSa0mawX41RrZ3UpdsSXsZ/K0qqClzYB5?= =?iso-8859-1?Q?6Muk2719FvfhZfogEwxWw0GKBFDJO7kt2IO1Z3ujCLBAq6+ybsvrR8nCHL?= =?iso-8859-1?Q?5y+VJyHWhAmwPFVe74q4KI5SSbhUA9ZhkNSM4HTbkByYVt6l/CsGlotmQV?= =?iso-8859-1?Q?O74RCD+8FfVecom3bELbh7xkJHF5brvV0QYpJtWI4DRBjik9DQn7XmIxjn?= =?iso-8859-1?Q?6nbYfNbcxnRMg3jzlXuubgIEymJWaMBlGRGLu9oJDqakNxxWxT2dDvy8gn?= =?iso-8859-1?Q?ZNtjSzk4zzVhNVIIb8u5vDjpNz1O8cQh4nT6fzpXAbRF3Wa7+BnpThC0tQ?= =?iso-8859-1?Q?NZtwZBWL8F1/EfyH3BEntGO5i7lT5ICIqTJf2j56rrcGwknEtK2c/2TcwN?= =?iso-8859-1?Q?RzgCr9STRQI2JaDoSl/Am8RfnwaK1na3tYD2rF24Gqk16RVGd26ysCGsR8?= =?iso-8859-1?Q?Isdg6TpOHO58NcqmwjpFkAHqD6RVm8HvHQIRyqv9MRpJWoYNrT1A00GX2m?= =?iso-8859-1?Q?yBliPNc5jo+6sLycf2FaPccFoSfOsV2dCojZv9fWpv8jfTsHcqdAEPAHdH?= =?iso-8859-1?Q?bMxkO7KzPyEY9hXGZ8gzIn5vHjrtfoBWX7mMNj5164GaQ84mxLFIHEDDjT?= =?iso-8859-1?Q?FeWg1fVnkRqlMomVMfyQjGi30XWvnde+B/R/xJOq7m6hZm1wV9jEJZo9hM?= =?iso-8859-1?Q?MLDMTbyyni4Ap8zDPkQoL0Gx+edOfx7eGBk/Vax4iUelIjh/P/fR+cXKDt?= =?iso-8859-1?Q?hxM6dqQTPxhXA7yx0Vt/BB5cOzKbTQwp0jfWjaBBYP60LQIs/kQLwHRH+Y?= =?iso-8859-1?Q?GKIhVlIfxACRD710soZqVHBJoUgeR7upE+donzojpDapo/J0dLCbf7dItd?= =?iso-8859-1?Q?SCtYUfstLwayJIjOIuTLTS+gol/+lCuedoWT4qp0NiM5JLQyeAfmOj5Y/+?= =?iso-8859-1?Q?qN55FEs2bKgzrKA9ZUeHbV/KT6OqnGTGsnMioPeIRZfT2Jewg6s7z9iSY9?= =?iso-8859-1?Q?qJ+aJ/DpldjCbxX6Dtekh9jVwBRJqbc7J1ZPz31N/mYs0WPypUiw2T8NYB?= =?iso-8859-1?Q?mQKcUCB6oxMNJTHWz2t1hFy3pckrNvBvH6qS8QH5tD7LSoEInXNvHv/Jk/?= =?iso-8859-1?Q?sXG3Nz5MGoR+3jwiMCzyBFg8OlLR88PjZMXnz0WB8HHMlRZbpX/oq56nZe?= =?iso-8859-1?Q?mc91TrmG3VbVpwpwxSkUKslwT2B9H93QMBilE7vXer3X/EB8+laLQ3BS82?= =?iso-8859-1?Q?e5+X2aZe8chpBcqhZRuC9AY/z54ARf4JWDqEi9zdU2ORGpqTTAQ4EJdojm?= =?iso-8859-1?Q?0sEcvoD7i1yTi34qrR5xYczaF4j8gsdjYTI+3TQ19zxQUMaW9J3JU2Pm4d?= =?iso-8859-1?Q?YPd9YUuMwAK8pEIGh/cupDIkZHnNogDSVEOr93h0f8loNHpnknaJCVcvcr?= =?iso-8859-1?Q?PNJ0SR2eY6SkF/w3ZaoWKB51DqBTSksz/CzlqTs+X7RBc5T2Pzhd2rIYPn?= =?iso-8859-1?Q?rbne1AknzQpMurHbIe2AadNJttNuTCttee8Fpkm5mlyDAwLJ4keU0KD8Bh?= =?iso-8859-1?Q?r0EhMY8sJzJRnG5cQ1FKvyOIKTraYwNFSsHEV3t6Sma0CrDu9pZcQav+fo?= =?iso-8859-1?Q?4WPqMIs8JXZaI0Yynpsdwr7WKIRulNxmbaBfgEg601cZ1xhVXb8kg6+7p8?= =?iso-8859-1?Q?evPgjapP3FWvovIsPTgNJU7jui3/ICmGliG1mbvxmknnB8GEipt4RHjoPX?= =?iso-8859-1?Q?tN1XtUTEN6SVHVK5R9hFx5MoqpOZPUDIBOcVTu8UNhMOJ+zQunHa5vMvXz?= =?iso-8859-1?Q?qmo6ZYNYGjYVkAO1WC+12EhlcvJeCAv3UEQESbYi5hikhSaUqrvnMTRVHb?= =?iso-8859-1?Q?8Pwtpwu0j+1jcjx6Egl7Am+sx011Is4K2pfP1VhPcycv08bEfRCPJu8XjK?= =?iso-8859-1?Q?UX9HBShKbzAq2dcH4Knn84AeumewzbcF9/8SWnRQiQ2q93xrx3Lec+HfCo?= =?iso-8859-1?Q?O3opNBN55fVCXpQVwLfWVf0wtDX9C7lJKuW49VVHJULYeuADO65ssW7nJR?= =?iso-8859-1?Q?T+jThaV3HkwyzgosTiQ5f96+XaxKWGU4cqcZoQoZqaPyro99tVm0SjcPT3?= =?iso-8859-1?Q?6rNZCkBbJ84YOIg7OL+AgINAB1gwF1OukCh0GpVgtFciVDtiyfrocc42+A?= =?iso-8859-1?Q?t6bdqCw741/J0TJGhtf9Wo1cH2zIHlfpc+vkWrvw/QKxCx4qV0IL9LiclA?= =?iso-8859-1?Q?up2k0I464yN4j1j3KCg6Wd/zqxH787hxYRite1EodhrWlHjWqun3Gg=3D?= =?iso-8859-1?Q?=3D?= MIME-Version: 1.0 List-Id: From: Denis V. Lunev The cpr state is a process wide registry of the resources that have to survive an exec. Entries are added and dropped from realize and teardown paths all over the tree, and a caller has no way to tell which thread the next caller will run in. The state carries no serialization of its own. A chardev driven from a monitor iothread saves and deletes its socket descriptor from that thread, and a lookup in the main loop then walks an entry that has already been freed and crashes in find_fd(). Add a mutex and take it in the fd accessors, around the list lookup and surgery and nothing more. Entries move when a device is realized and when a resource is handed over, so none of this is on a hot path and an uncontended mutex costs nothing. Signed-off-by: Denis V. Lunev --- migration/cpr.c | 43 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/migration/cpr.c b/migration/cpr.c index f218e6a66d6..e2a76c96a2b 100644 --- a/migration/cpr.c +++ b/migration/cpr.c @@ -9,6 +9,7 @@ #include "qemu/error-report.h" #include "qapi/error.h" #include "qemu/error-report.h" +#include "qemu/lockable.h" #include "hw/vfio/vfio-device.h" #include "migration/cpr.h" #include "migration/misc.h" @@ -33,6 +34,14 @@ CprState cpr_state; +/* Callers are spread across the tree and need not share a thread. */ +static QemuMutex cpr_state_lock; + +static void __attribute__((constructor)) cpr_state_lock_init(void) +{ + qemu_mutex_init(&cpr_state_lock); +} + /****************************************************************************/ typedef struct CprFd { @@ -107,10 +116,22 @@ static CprFd *find_fd(CprFdList *head, const char *name, int id) return NULL; } -void cpr_delete_fd(const char *name, int id) +static int do_cpr_find_fd(const char *name, int id) { CprFd *elem = find_fd(&cpr_state.fds, name, id); - int fd = elem ? elem->fd : -1; + + return elem ? elem->fd : -1; +} + +void cpr_delete_fd(const char *name, int id) +{ + CprFd *elem; + int fd; + + QEMU_LOCK_GUARD(&cpr_state_lock); + + elem = find_fd(&cpr_state.fds, name, id); + fd = elem ? elem->fd : -1; if (elem) { QLIST_REMOVE(elem, next); @@ -125,6 +146,8 @@ void cpr_delete_fd_all(const char *name) { CprFd *elem, *next_elem; + QEMU_LOCK_GUARD(&cpr_state_lock); + QLIST_FOREACH_SAFE(elem, &cpr_state.fds, next, next_elem) { if (!strcmp(elem->name, name)) { QLIST_REMOVE(elem, next); @@ -136,18 +159,22 @@ void cpr_delete_fd_all(const char *name) int cpr_find_fd(const char *name, int id) { - CprFd *elem = find_fd(&cpr_state.fds, name, id); - int fd = elem ? elem->fd : -1; + int fd; + QEMU_LOCK_GUARD(&cpr_state_lock); + + fd = do_cpr_find_fd(name, id); trace_cpr_find_fd(name, id, fd); return fd; } void cpr_save_fd(const char *name, int id, int fd) { - CprFd *elem = find_fd(&cpr_state.fds, name, id); - int old_fd = elem ? elem->fd : -1; + int old_fd; + + QEMU_LOCK_GUARD(&cpr_state_lock); + old_fd = do_cpr_find_fd(name, id); if (old_fd < 0) { do_cpr_save_fd(name, id, fd); } else if (old_fd != fd) { @@ -176,6 +203,8 @@ bool cpr_walk_fd(cpr_walk_fd_cb cb) { CprFd *elem; + QEMU_LOCK_GUARD(&cpr_state_lock); + QLIST_FOREACH(elem, &cpr_state.fds, next) { g_assert(elem->fd >= 0); if (!cb(elem->fd)) { @@ -561,6 +590,8 @@ static void cpr_prune_closed_fds(void) { CprFd *elem, *next; + QEMU_LOCK_GUARD(&cpr_state_lock); + QLIST_FOREACH_SAFE(elem, &cpr_state.fds, next, next) { if (fcntl(elem->fd, F_GETFD) < 0 && errno == EBADF) { trace_cpr_prune_closed_fd(elem->name, elem->id, elem->fd); base-commit: 87f111d087cff956908ccb22daedb596b3734877 -- 2.53.0