From nobody Tue Nov 26 16:22:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1705707643; cv=none; d=zohomail.com; s=zohoarc; b=TyYZBgMkMegGvLmvKYeUnuB/tHW0SNYfsv2e71D9kP7Td9DVS/3rXhzsI+Er3tAel9RH9Js0JjEEdkZMOgDT76tBSYp+2+0aWkbjboakIQH+5W2XCX0+Wn/1zbJOxKRnNc/l+ShcAbnhMNaHruKx6Zr09EQYRD69kcLC09JDdhQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705707643; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=eLYCl+gMT4ddn1mw8JU4xXGW6AvL44IdTtwI3nWSa3s=; b=H8S7eO3jv3I8Uv7Vk4MWFJbZYJ0+N66ep40KB1ufQkKfaptvMrulz/Qg5ZNrdEz4SdnmNOcLOc6EaSaugfpnXLpE5UvOsdg3JdQMasdlWXfBdBkoF3YCcd6OU6BjK8Ns84k6RT0TM6ybevt3Y529ABZsEN5A3mRWxD5rYEDpndc= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705707643299889.9270701842198; Fri, 19 Jan 2024 15:40:43 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQySW-0001zY-37; Fri, 19 Jan 2024 18:39:36 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQySU-0001xL-CV for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:34 -0500 Received: from smtp-out2.suse.de ([2a07:de40:b251:101:10:150:64:2]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQySS-0001xg-1u for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:34 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id ACFCF1F818; Fri, 19 Jan 2024 23:39:27 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id BBF171375D; Fri, 19 Jan 2024 23:39:26 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id CLBUIC4Iq2VxVAAAD6G6ig (envelope-from ); Fri, 19 Jan 2024 23:39:26 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707567; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eLYCl+gMT4ddn1mw8JU4xXGW6AvL44IdTtwI3nWSa3s=; b=dArSd9/HT7rX4iC0YQHPlX+Wg099lstvvaHxnIdXiHAmOaGO/3Xi8HcCFmdDS15vXCyGON yC/2+bOehhHahtwTJr8+84IYS2I99eug4HbsA82mnr35S/scksatUthLWM844uX++0nkYS k6lMOfWx/BpznYrhU5ofm29lMLz7L0w= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707567; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eLYCl+gMT4ddn1mw8JU4xXGW6AvL44IdTtwI3nWSa3s=; b=VxzwgKPYU1IL4Y1ng9F05rH/VJtGg4Xh6NihVavlEYw7gjzdsvpp5n3NnjvnWhbTUuQv+j FmfuwXZNRVkFgdDA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707567; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eLYCl+gMT4ddn1mw8JU4xXGW6AvL44IdTtwI3nWSa3s=; b=dArSd9/HT7rX4iC0YQHPlX+Wg099lstvvaHxnIdXiHAmOaGO/3Xi8HcCFmdDS15vXCyGON yC/2+bOehhHahtwTJr8+84IYS2I99eug4HbsA82mnr35S/scksatUthLWM844uX++0nkYS k6lMOfWx/BpznYrhU5ofm29lMLz7L0w= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707567; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=eLYCl+gMT4ddn1mw8JU4xXGW6AvL44IdTtwI3nWSa3s=; b=VxzwgKPYU1IL4Y1ng9F05rH/VJtGg4Xh6NihVavlEYw7gjzdsvpp5n3NnjvnWhbTUuQv+j FmfuwXZNRVkFgdDA== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: Peter Xu Subject: [PATCH 1/5] migration: Fix use-after-free of migration state object Date: Fri, 19 Jan 2024 20:39:18 -0300 Message-Id: <20240119233922.32588-2-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240119233922.32588-1-farosas@suse.de> References: <20240119233922.32588-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Bar: / Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b="dArSd9/H"; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=VxzwgKPY X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [0.54 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DKIM_TRACE(0.00)[suse.de:+]; RCPT_COUNT_TWO(0.00)[2]; MID_CONTAINS_FROM(1.00)[]; MX_GOOD(-0.01)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; NEURAL_HAM_SHORT(-0.20)[-1.000]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.95)[99.77%] X-Spam-Score: 0.54 X-Rspamd-Queue-Id: ACFCF1F818 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a07:de40:b251:101:10:150:64:2; envelope-from=farosas@suse.de; helo=smtp-out2.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.de) X-ZM-MESSAGEID: 1705707643945100007 Content-Type: text/plain; charset="utf-8" We're currently allowing the process_incoming_migration_bh bottom-half to run without holding a reference to the 'current_migration' object, which leads to a segmentation fault if the BH is still live after migration_shutdown() has dropped the last reference to current_migration. In my system the bug manifests as migrate_multifd() returning true when it shouldn't and multifd_load_shutdown() calling multifd_recv_terminate_threads() which crashes due to an uninitialized multifd_recv_state. Fix the issue by holding a reference to the object when scheduling the BH and dropping it before returning from the BH. The same is already done for the cleanup_bh at migrate_fd_cleanup_schedule(). Signed-off-by: Fabiano Rosas --- migration/migration.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index 219447dea1..cf17b68e57 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -648,6 +648,7 @@ static void process_incoming_migration_bh(void *opaque) MIGRATION_STATUS_COMPLETED); qemu_bh_delete(mis->bh); migration_incoming_state_destroy(); + object_unref(OBJECT(migrate_get_current())); } =20 static void coroutine_fn @@ -713,6 +714,7 @@ process_incoming_migration_co(void *opaque) } =20 mis->bh =3D qemu_bh_new(process_incoming_migration_bh, mis); + object_ref(OBJECT(migrate_get_current())); qemu_bh_schedule(mis->bh); return; fail: --=20 2.35.3 From nobody Tue Nov 26 16:22:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1705707621; cv=none; d=zohomail.com; s=zohoarc; b=hWvcX1dSzsCLmKuBlSnwC3saAlP97NQiNPb+cGnQyKoKwvvCF4N7xnHqVsGHfEZNEFkZBIch5M1bZq2jqMl99TLthveYPDPKwm/JRZAbt/vyc4pPUtSxlzV9US1rGqyd0aOo70BDfnmuNQVIQOX4uCJs9vNr5SfNk0W7qVA1gPQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705707621; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=snCPKhWz5iT0VVGFWUIMW8Z2VOebuj6omp6fgSQpOOM=; b=h2GWuGlOVk2KaikW0L2L1IFXFZOi3t1VcbiNKEjJsHDCh7QBK7KAarhEGC6rQR6HB8LFpjQNjwQEP6FsxqkfzRDPQz+f6vlStovB1YwoB5bSlrrqKpRqUtzme84/RKka5I2sOUyF64YFAKBKVLVUm+LZNnmxGmd0qW5ww4kXJ3I= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705707620919915.7653660605939; Fri, 19 Jan 2024 15:40:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQySU-0001xi-Qd; Fri, 19 Jan 2024 18:39:34 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQyST-0001wL-1o for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:33 -0500 Received: from smtp-out1.suse.de ([2a07:de40:b251:101:10:150:64:1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQySR-0001y5-F5 for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:32 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 1CE7F21EE6; Fri, 19 Jan 2024 23:39:29 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 2B0441375D; Fri, 19 Jan 2024 23:39:27 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id uCSLOC8Iq2VxVAAAD6G6ig (envelope-from ); Fri, 19 Jan 2024 23:39:27 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707569; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=snCPKhWz5iT0VVGFWUIMW8Z2VOebuj6omp6fgSQpOOM=; b=mNIo/SnBvQmpxyxy/rC6it7ty23+z6DT7RBXsKqOzzssguK58buOOvFIHYuioBtZHn/7w5 oonmHHdzjKlVbqlXH61IZL64jlZ8b22Txcth1TYrTDtVKFxU3VDAMN6IIqA45/790w4ER9 pGIfk2gO65bbw/bHXThpYh+J84F+cGo= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707569; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=snCPKhWz5iT0VVGFWUIMW8Z2VOebuj6omp6fgSQpOOM=; b=L60njkGPgqkiHJOGMqFG415Kad2HjIGInbnikRS4/ESjqWo6PBXs54MtTwv4VTjjwWeiNu gkLi3jh/PzSlDKBQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707569; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=snCPKhWz5iT0VVGFWUIMW8Z2VOebuj6omp6fgSQpOOM=; b=mNIo/SnBvQmpxyxy/rC6it7ty23+z6DT7RBXsKqOzzssguK58buOOvFIHYuioBtZHn/7w5 oonmHHdzjKlVbqlXH61IZL64jlZ8b22Txcth1TYrTDtVKFxU3VDAMN6IIqA45/790w4ER9 pGIfk2gO65bbw/bHXThpYh+J84F+cGo= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707569; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=snCPKhWz5iT0VVGFWUIMW8Z2VOebuj6omp6fgSQpOOM=; b=L60njkGPgqkiHJOGMqFG415Kad2HjIGInbnikRS4/ESjqWo6PBXs54MtTwv4VTjjwWeiNu gkLi3jh/PzSlDKBQ== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: Peter Xu Subject: [PATCH 2/5] migration: Take reference to migration state around bg_migration_vm_start_bh Date: Fri, 19 Jan 2024 20:39:19 -0300 Message-Id: <20240119233922.32588-3-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240119233922.32588-1-farosas@suse.de> References: <20240119233922.32588-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Bar: / Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b="mNIo/SnB"; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=L60njkGP X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [0.57 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DKIM_TRACE(0.00)[suse.de:+]; RCPT_COUNT_TWO(0.00)[2]; MID_CONTAINS_FROM(1.00)[]; MX_GOOD(-0.01)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; NEURAL_HAM_SHORT(-0.20)[-1.000]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.92)[99.66%] X-Spam-Score: 0.57 X-Rspamd-Queue-Id: 1CE7F21EE6 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a07:de40:b251:101:10:150:64:1; envelope-from=farosas@suse.de; helo=smtp-out1.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.de) X-ZM-MESSAGEID: 1705707622179100004 Content-Type: text/plain; charset="utf-8" We need to hold a reference to the current_migration object around async calls to avoid it been freed while still in use. Signed-off-by: Fabiano Rosas --- migration/migration.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migration/migration.c b/migration/migration.c index cf17b68e57..b1213b59ce 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -3382,6 +3382,7 @@ static void bg_migration_vm_start_bh(void *opaque) =20 vm_resume(s->vm_old_state); migration_downtime_end(s); + object_unref(OBJECT(s)); } =20 /** @@ -3486,6 +3487,7 @@ static void *bg_migration_thread(void *opaque) * writes to virtio VQs memory which is in write-protected region. */ s->vm_start_bh =3D qemu_bh_new(bg_migration_vm_start_bh, s); + object_ref(OBJECT(s)); qemu_bh_schedule(s->vm_start_bh); =20 bql_unlock(); --=20 2.35.3 From nobody Tue Nov 26 16:22:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1705707642; cv=none; d=zohomail.com; s=zohoarc; b=l6yd0F2t4M/vzCRkgqXTEDlvbH3GhquwNDzcpisRzQj9h2yf1cFcuhVqhEsjY9CSZ2l+njeNKrx01/HOVXvReIR3UdduQ5MA0k12Cdo/PUft5D1Mo8pDTxklUmVDj8UXrSAif6UiTktpVzNOBNQNHmJI+NkqzC/vpP9OffKmvHk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705707642; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=XhVc2dXR8NXJ392xyDYZUM9zULcApz5F7NwouJvgobQ=; b=lSU43uNdO3k4Gj8rgFx1xrY1tVFx7GF0rBTH/WmuttoqL1fmWEgs3et7omka7pX5xBPxuK99gWTt9QaLwxYUB0YgoFlXhVfkYdQgXMFhMohB4erTqRNkro+sh1TGRaAFxhNFG7u3q9SZexUvzTDdRzvYz35qpTx9HxHikOzcJ9E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705707642822571.5268127088467; Fri, 19 Jan 2024 15:40:42 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQySV-0001yP-Fj; Fri, 19 Jan 2024 18:39:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQyST-0001wk-Ey for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:33 -0500 Received: from smtp-out1.suse.de ([2a07:de40:b251:101:10:150:64:1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQySR-0001zB-Qd for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:33 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 8938221C1A; Fri, 19 Jan 2024 23:39:30 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 8EBA21375D; Fri, 19 Jan 2024 23:39:29 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id 2LIFFTEIq2VxVAAAD6G6ig (envelope-from ); Fri, 19 Jan 2024 23:39:29 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707570; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XhVc2dXR8NXJ392xyDYZUM9zULcApz5F7NwouJvgobQ=; b=d0RfwWxq7B+rqJRrUqe7l9vQ5fq73fKIumss6KeRAeZgLIWKCbbBxy8PPbtrjYzPpFt+z2 MYI0oFnwUq8nq4hBckcfQfFmFY3XdiB1yf2tOC2LVfrFpkoebxBU/sXQhdxPqUum6BTnvK 6T40IqTG1KU1K2si53mwZ+wi1GXdLmc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707570; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XhVc2dXR8NXJ392xyDYZUM9zULcApz5F7NwouJvgobQ=; b=+XGHBB2JMYGFGQmFGH34j2PWbeSs5zIPzzCOW/dOihMUK6PigTSvuqq8uVE+2GnfH56nqE 310yDLYwY9lbNkDw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707570; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XhVc2dXR8NXJ392xyDYZUM9zULcApz5F7NwouJvgobQ=; b=d0RfwWxq7B+rqJRrUqe7l9vQ5fq73fKIumss6KeRAeZgLIWKCbbBxy8PPbtrjYzPpFt+z2 MYI0oFnwUq8nq4hBckcfQfFmFY3XdiB1yf2tOC2LVfrFpkoebxBU/sXQhdxPqUum6BTnvK 6T40IqTG1KU1K2si53mwZ+wi1GXdLmc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707570; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=XhVc2dXR8NXJ392xyDYZUM9zULcApz5F7NwouJvgobQ=; b=+XGHBB2JMYGFGQmFGH34j2PWbeSs5zIPzzCOW/dOihMUK6PigTSvuqq8uVE+2GnfH56nqE 310yDLYwY9lbNkDw== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: Peter Xu Subject: [PATCH 3/5] migration: Reference migration state around loadvm_postcopy_handle_run_bh Date: Fri, 19 Jan 2024 20:39:20 -0300 Message-Id: <20240119233922.32588-4-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240119233922.32588-1-farosas@suse.de> References: <20240119233922.32588-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Bar: +++ Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=d0RfwWxq; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=+XGHBB2J X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [3.47 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DKIM_TRACE(0.00)[suse.de:+]; RCPT_COUNT_TWO(0.00)[2]; MID_CONTAINS_FROM(1.00)[]; MX_GOOD(-0.01)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; NEURAL_HAM_SHORT(-0.20)[-1.000]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-0.02)[54.90%] X-Spam-Score: 3.47 X-Rspamd-Queue-Id: 8938221C1A Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a07:de40:b251:101:10:150:64:1; envelope-from=farosas@suse.de; helo=smtp-out1.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.de) X-ZM-MESSAGEID: 1705707643889100001 Content-Type: text/plain; charset="utf-8" We need to hold a reference to the current_migration object around async calls to avoid it been freed while still in use. Even on this load-side function, we might still use the MigrationState, e.g to check for capabilities. Signed-off-by: Fabiano Rosas --- migration/savevm.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/migration/savevm.c b/migration/savevm.c index 6410705ebe..93387350c7 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2174,6 +2174,7 @@ static void loadvm_postcopy_handle_run_bh(void *opaqu= e) qemu_bh_delete(mis->bh); =20 trace_vmstate_downtime_checkpoint("dst-postcopy-bh-vm-started"); + object_unref(OBJECT(migration_get_current())); } =20 /* After all discards we can start running and asking for pages */ @@ -2189,6 +2190,7 @@ static int loadvm_postcopy_handle_run(MigrationIncomi= ngState *mis) =20 postcopy_state_set(POSTCOPY_INCOMING_RUNNING); mis->bh =3D qemu_bh_new(loadvm_postcopy_handle_run_bh, mis); + object_ref(OBJECT(migration_get_current())); qemu_bh_schedule(mis->bh); =20 /* We need to finish reading the stream from the package --=20 2.35.3 From nobody Tue Nov 26 16:22:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1705707659; cv=none; d=zohomail.com; s=zohoarc; b=SLp5xIWJGLnTDEtgoG/EI1jlaUPxGVewKyjzj3kFjkFhIcnaJcaALTdS0X2ONTmKyMNKgu4V4HsXeOuD8BeUb62bzEh4dXYnOZ2/xEA3oafGaMfjCjMVr0MKlnEgVgCMFbKspBfV5QRvVf+gSCO4vcT4EGpeA/ZD6MtcGahyITM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705707659; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=0XQTyt/2YjP2TRQqmcfI1a7NiC92TEF2AK8VliVRkI4=; b=Eakt8gkPfRCSk9pkIu06hLWzh93yTbFPdpky4nS1DA3/6mdr2xd7hYWvNKNYTZNPQsLXqymFvBvx/jdCcr7s9OzynWBPCt1PrwRp0Y9Jlrqqq1d7zmlXN5QWQxIcQWiHkKS/UfBYyqAXpspfsIOG7RTKLHuqocQAPegk/qdmQ3o= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705707659748866.7428421886005; Fri, 19 Jan 2024 15:40:59 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQySa-000235-4l; Fri, 19 Jan 2024 18:39:40 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQySY-000217-Na for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:38 -0500 Received: from smtp-out2.suse.de ([195.135.223.131]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQyST-0001zp-94 for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:38 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id E281E1F825; Fri, 19 Jan 2024 23:39:31 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id F1A8C1375D; Fri, 19 Jan 2024 23:39:30 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id 8CkdLTIIq2VxVAAAD6G6ig (envelope-from ); Fri, 19 Jan 2024 23:39:30 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707572; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0XQTyt/2YjP2TRQqmcfI1a7NiC92TEF2AK8VliVRkI4=; b=mfFP+mVIKYYBD20OK3AwMh1fV+Z8iIlRRiwOJpmPQAtC5UWSwizwIksEFqcSCfVvmo4B/c +Z0k4mrMYBjHI6ZFdr0Eslseoyj6ZAEzwZFBZNx7BLqPGh9jn3zWDTCSY0rXIEQsOWSl5r 2/8pXSHP8r3/Hbuljk6YhKNwGlBvoVE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707572; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0XQTyt/2YjP2TRQqmcfI1a7NiC92TEF2AK8VliVRkI4=; b=h7jDT+TUQOgTwhk9K0Ikfj3b//g9AhH9CvC/RkgUHLuLr9CJ0CCgnBFdEDtOV6h4vQshXO bTz7eBb9++dISAAw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707571; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0XQTyt/2YjP2TRQqmcfI1a7NiC92TEF2AK8VliVRkI4=; b=OZIIXJgrpTKBTxQnx1HIQuCGtf3OgKrVrXm5qlmBUTuVq+xggt25ebOEBc3oXi7NxwHp4O pb2WvEEM41nOh44x3q91IhWEcfOQC22936QD9IefL73lQPyQutf4IrUuSPQALyL/8IMrg/ 5sZsC8kg5zbCeKRiKLmnWsx8SpykKSU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707571; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=0XQTyt/2YjP2TRQqmcfI1a7NiC92TEF2AK8VliVRkI4=; b=lwFbaowjwDeMH9nEVMyLal1ggKju+5bPg/LOpIsT0RBWKk0Iq+DbM14TR0I0sqFw83i/Zw IobyV2weB6DIouDQ== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: Peter Xu Subject: [PATCH 4/5] migration: Add a wrapper to qemu_bh_schedule Date: Fri, 19 Jan 2024 20:39:21 -0300 Message-Id: <20240119233922.32588-5-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240119233922.32588-1-farosas@suse.de> References: <20240119233922.32588-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-Spamd-Bar: / Authentication-Results: smtp-out2.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=OZIIXJgr; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=lwFbaowj X-Rspamd-Server: rspamd2.dmz-prg2.suse.org X-Spamd-Result: default: False [0.84 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; NEURAL_HAM_LONG(-1.00)[-1.000]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DKIM_TRACE(0.00)[suse.de:+]; RCPT_COUNT_TWO(0.00)[2]; MID_CONTAINS_FROM(1.00)[]; MX_GOOD(-0.01)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; NEURAL_HAM_SHORT(-0.20)[-1.000]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-2.65)[98.47%] X-Spam-Score: 0.84 X-Rspamd-Queue-Id: E281E1F825 Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=195.135.223.131; envelope-from=farosas@suse.de; helo=smtp-out2.suse.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.de) (identity @suse.de) X-ZM-MESSAGEID: 1705707660041100001 Content-Type: text/plain; charset="utf-8" Wrap qemu_bh_schedule() to ensure we always hold a reference to the current_migration object. Signed-off-by: Fabiano Rosas --- migration/migration.c | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index b1213b59ce..0e7f101d64 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -199,6 +199,16 @@ void migration_object_init(void) dirty_bitmap_mig_init(); } =20 +static void migration_bh_schedule(MigrationState *s, QEMUBH *bh) +{ + /* + * Ref the state for bh, because it may be called when + * there're already no other refs + */ + object_ref(OBJECT(s)); + qemu_bh_schedule(bh); +} + void migration_cancel(const Error *error) { if (error) { @@ -714,8 +724,7 @@ process_incoming_migration_co(void *opaque) } =20 mis->bh =3D qemu_bh_new(process_incoming_migration_bh, mis); - object_ref(OBJECT(migrate_get_current())); - qemu_bh_schedule(mis->bh); + migration_bh_schedule(migrate_get_current(), mis->bh); return; fail: migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, @@ -1332,16 +1341,6 @@ static void migrate_fd_cleanup(MigrationState *s) yank_unregister_instance(MIGRATION_YANK_INSTANCE); } =20 -static void migrate_fd_cleanup_schedule(MigrationState *s) -{ - /* - * Ref the state for bh, because it may be called when - * there're already no other refs - */ - object_ref(OBJECT(s)); - qemu_bh_schedule(s->cleanup_bh); -} - static void migrate_fd_cleanup_bh(void *opaque) { MigrationState *s =3D opaque; @@ -3140,7 +3139,7 @@ static void migration_iteration_finish(MigrationState= *s) error_report("%s: Unknown ending state %d", __func__, s->state); break; } - migrate_fd_cleanup_schedule(s); + migration_bh_schedule(s, s->cleanup_bh); bql_unlock(); } =20 @@ -3171,7 +3170,7 @@ static void bg_migration_iteration_finish(MigrationSt= ate *s) break; } =20 - migrate_fd_cleanup_schedule(s); + migration_bh_schedule(s, s->cleanup_bh); bql_unlock(); } =20 @@ -3487,9 +3486,7 @@ static void *bg_migration_thread(void *opaque) * writes to virtio VQs memory which is in write-protected region. */ s->vm_start_bh =3D qemu_bh_new(bg_migration_vm_start_bh, s); - object_ref(OBJECT(s)); - qemu_bh_schedule(s->vm_start_bh); - + migration_bh_schedule(s, s->vm_start_bh); bql_unlock(); =20 while (migration_is_active(s)) { --=20 2.35.3 From nobody Tue Nov 26 16:22:45 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass(p=none dis=none) header.from=suse.de ARC-Seal: i=1; a=rsa-sha256; t=1705707621; cv=none; d=zohomail.com; s=zohoarc; b=P6j/iUBL1U39JHFMIdvcFh+5ikGNS6d0+BZzxN8JmZbhRVZ2rJE1EWtMfZydYwC0lG4woJJZfg+6o7ZcmbJ/nJFMvuoNtKWUxmY/zJLt4FDdCvHuPGM8qICxeEPQxYeU/fkYLlNSkRvTj2zHFJXTQmX5Pa/o2PqrzinQK9knn4U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1705707621; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=fkHkzmdwq/6uDzdosteMOe6B7nHrQfR82f31Xr75Ng4=; b=dPHRAx8vrZMkh8FWX/rBwCKWwD+6fhLbQJ1sCx+JCaQfN0zSQ4IID2seMnU2Y8xYsQ30ic8Xj4xgilXGeS/9r7w32Zf+UiBk7/uvTgNUeqa3AscLOVh3JQQqwTOyJgNrNUxySvyer6naQNGXijfGVb0drg5o9FjHmgN9mKlIdTI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1705707620919352.4833467048568; Fri, 19 Jan 2024 15:40:20 -0800 (PST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rQySY-000212-Lz; Fri, 19 Jan 2024 18:39:38 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rQySW-000204-Jm for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:36 -0500 Received: from smtp-out1.suse.de ([2a07:de40:b251:101:10:150:64:1]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rQySU-00020l-IA for qemu-devel@nongnu.org; Fri, 19 Jan 2024 18:39:36 -0500 Received: from imap1.dmz-prg2.suse.org (imap1.dmz-prg2.suse.org [IPv6:2a07:de40:b281:104:10:150:64:97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 5371221C1A; Fri, 19 Jan 2024 23:39:33 +0000 (UTC) Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 633771375D; Fri, 19 Jan 2024 23:39:32 +0000 (UTC) Received: from dovecot-director2.suse.de ([10.150.64.162]) by imap1.dmz-prg2.suse.org with ESMTPSA id WCinCjQIq2VxVAAAD6G6ig (envelope-from ); Fri, 19 Jan 2024 23:39:32 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707573; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fkHkzmdwq/6uDzdosteMOe6B7nHrQfR82f31Xr75Ng4=; b=dq2VhEe28oNsjcxIRgSKTozjufdcAIMC2LX+Im0vosNCJNPN0oEV6Awr7eNxo8Vlz8XEFG I2fwDkcu+OexJXPH5/4ivWeRjacPm36O+biZteBxYnKITiImeqbzZr16Xx4S5e1U9XAGmy /1IqlPJYM3oE4Uo1+IuJuvxLa6SBilc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707573; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fkHkzmdwq/6uDzdosteMOe6B7nHrQfR82f31Xr75Ng4=; b=fd2tVoZAh2e4P5OEDretzQxMEU9DM8qotp2fD5Rb5F8PanXIMwqb2RtA5kXKKIteO/8RsQ x6i6yL1U6UWSeWCw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1705707573; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fkHkzmdwq/6uDzdosteMOe6B7nHrQfR82f31Xr75Ng4=; b=dq2VhEe28oNsjcxIRgSKTozjufdcAIMC2LX+Im0vosNCJNPN0oEV6Awr7eNxo8Vlz8XEFG I2fwDkcu+OexJXPH5/4ivWeRjacPm36O+biZteBxYnKITiImeqbzZr16Xx4S5e1U9XAGmy /1IqlPJYM3oE4Uo1+IuJuvxLa6SBilc= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1705707573; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fkHkzmdwq/6uDzdosteMOe6B7nHrQfR82f31Xr75Ng4=; b=fd2tVoZAh2e4P5OEDretzQxMEU9DM8qotp2fD5Rb5F8PanXIMwqb2RtA5kXKKIteO/8RsQ x6i6yL1U6UWSeWCw== From: Fabiano Rosas To: qemu-devel@nongnu.org Cc: Peter Xu Subject: [PATCH 5/5] migration: Centralize BH creation and dispatch Date: Fri, 19 Jan 2024 20:39:22 -0300 Message-Id: <20240119233922.32588-6-farosas@suse.de> X-Mailer: git-send-email 2.35.3 In-Reply-To: <20240119233922.32588-1-farosas@suse.de> References: <20240119233922.32588-1-farosas@suse.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Authentication-Results: smtp-out1.suse.de; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=dq2VhEe2; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=fd2tVoZA X-Spamd-Result: default: False [1.69 / 50.00]; ARC_NA(0.00)[]; RCVD_VIA_SMTP_AUTH(0.00)[]; R_DKIM_ALLOW(-0.20)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; FROM_HAS_DN(0.00)[]; TO_DN_SOME(0.00)[]; R_MISSING_CHARSET(2.50)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain]; BROKEN_CONTENT_TYPE(1.50)[]; RCVD_COUNT_THREE(0.00)[3]; DKIM_SIGNED(0.00)[suse.de:s=susede2_rsa,suse.de:s=susede2_ed25519]; DKIM_TRACE(0.00)[suse.de:+]; RCPT_COUNT_TWO(0.00)[2]; MID_CONTAINS_FROM(1.00)[]; MX_GOOD(-0.01)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[suse.de:dkim,suse.de:email]; FUZZY_BLOCKED(0.00)[rspamd.com]; FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+]; RCVD_TLS_ALL(0.00)[]; BAYES_HAM(-3.00)[100.00%] X-Rspamd-Server: rspamd1.dmz-prg2.suse.org X-Spam-Score: 1.69 X-Rspamd-Queue-Id: 5371221C1A X-Spamd-Bar: + Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=2a07:de40:b251:101:10:150:64:1; envelope-from=farosas@suse.de; helo=smtp-out1.suse.de X-Spam_score_int: -37 X-Spam_score: -3.8 X-Spam_bar: --- X-Spam_report: (-3.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URG_BIZ=0.573 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @suse.de) X-ZM-MESSAGEID: 1705707622119100001 Content-Type: text/plain; charset="utf-8" Now that the migration state reference counting is correct, further wrap the bottom half dispatch process to avoid future issues. Move BH creation and scheduling together and wrap the dispatch with an intermediary function that will ensure we always keep the ref/unref balanced. Also move the responsibility of deleting the BH into the wrapper and remove the now unnecessary pointers. Signed-off-by: Fabiano Rosas --- migration/migration.c | 65 +++++++++++++++++++++++++------------------ migration/migration.h | 5 +--- migration/savevm.c | 7 +---- 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/migration/migration.c b/migration/migration.c index 0e7f101d64..d5f705ceef 100644 --- a/migration/migration.c +++ b/migration/migration.c @@ -199,8 +199,39 @@ void migration_object_init(void) dirty_bitmap_mig_init(); } =20 -static void migration_bh_schedule(MigrationState *s, QEMUBH *bh) +typedef struct { + QEMUBH *bh; + QEMUBHFunc *cb; + void *opaque; +} MigrationBH; + +static void migration_bh_dispatch_bh(void *opaque) { + MigrationState *s =3D migrate_get_current(); + MigrationBH *migbh =3D opaque; + + /* cleanup this BH */ + qemu_bh_delete(migbh->bh); + migbh->bh =3D NULL; + + /* dispatch the other one */ + migbh->cb(migbh->opaque); + object_unref(OBJECT(s)); + + g_free(migbh); +} + +void migration_bh_schedule(QEMUBHFunc *cb, void *opaque) +{ + MigrationState *s =3D migrate_get_current(); + MigrationBH *migbh =3D g_new0(MigrationBH, 1); + QEMUBH *bh =3D qemu_bh_new(migration_bh_dispatch_bh, migbh); + + /* Store these to dispatch when the BH runs */ + migbh->bh =3D bh; + migbh->cb =3D cb; + migbh->opaque =3D opaque; + /* * Ref the state for bh, because it may be called when * there're already no other refs @@ -656,9 +687,7 @@ static void process_incoming_migration_bh(void *opaque) */ migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, MIGRATION_STATUS_COMPLETED); - qemu_bh_delete(mis->bh); migration_incoming_state_destroy(); - object_unref(OBJECT(migrate_get_current())); } =20 static void coroutine_fn @@ -723,8 +752,7 @@ process_incoming_migration_co(void *opaque) goto fail; } =20 - mis->bh =3D qemu_bh_new(process_incoming_migration_bh, mis); - migration_bh_schedule(migrate_get_current(), mis->bh); + migration_bh_schedule(process_incoming_migration_bh, mis); return; fail: migrate_set_state(&mis->state, MIGRATION_STATUS_ACTIVE, @@ -1285,9 +1313,6 @@ void migrate_set_state(int *state, int old_state, int= new_state) =20 static void migrate_fd_cleanup(MigrationState *s) { - qemu_bh_delete(s->cleanup_bh); - s->cleanup_bh =3D NULL; - g_free(s->hostname); s->hostname =3D NULL; json_writer_free(s->vmdesc); @@ -1343,9 +1368,7 @@ static void migrate_fd_cleanup(MigrationState *s) =20 static void migrate_fd_cleanup_bh(void *opaque) { - MigrationState *s =3D opaque; - migrate_fd_cleanup(s); - object_unref(OBJECT(s)); + migrate_fd_cleanup(opaque); } =20 void migrate_set_error(MigrationState *s, const Error *error) @@ -1568,8 +1591,6 @@ int migrate_init(MigrationState *s, Error **errp) * parameters/capabilities that the user set, and * locks. */ - s->cleanup_bh =3D 0; - s->vm_start_bh =3D 0; s->to_dst_file =3D NULL; s->state =3D MIGRATION_STATUS_NONE; s->rp_state.from_dst_file =3D NULL; @@ -3139,7 +3160,8 @@ static void migration_iteration_finish(MigrationState= *s) error_report("%s: Unknown ending state %d", __func__, s->state); break; } - migration_bh_schedule(s, s->cleanup_bh); + + migration_bh_schedule(migrate_fd_cleanup_bh, s); bql_unlock(); } =20 @@ -3170,7 +3192,7 @@ static void bg_migration_iteration_finish(MigrationSt= ate *s) break; } =20 - migration_bh_schedule(s, s->cleanup_bh); + migration_bh_schedule(migrate_fd_cleanup_bh, s); bql_unlock(); } =20 @@ -3376,12 +3398,8 @@ static void bg_migration_vm_start_bh(void *opaque) { MigrationState *s =3D opaque; =20 - qemu_bh_delete(s->vm_start_bh); - s->vm_start_bh =3D NULL; - vm_resume(s->vm_old_state); migration_downtime_end(s); - object_unref(OBJECT(s)); } =20 /** @@ -3485,8 +3503,7 @@ static void *bg_migration_thread(void *opaque) * calling VM state change notifiers from vm_start() would initiate * writes to virtio VQs memory which is in write-protected region. */ - s->vm_start_bh =3D qemu_bh_new(bg_migration_vm_start_bh, s); - migration_bh_schedule(s, s->vm_start_bh); + migration_bh_schedule(bg_migration_vm_start_bh, s); bql_unlock(); =20 while (migration_is_active(s)) { @@ -3542,12 +3559,6 @@ void migrate_fd_connect(MigrationState *s, Error *er= ror_in) migrate_error_free(s); =20 s->expected_downtime =3D migrate_downtime_limit(); - if (resume) { - assert(s->cleanup_bh); - } else { - assert(!s->cleanup_bh); - s->cleanup_bh =3D qemu_bh_new(migrate_fd_cleanup_bh, s); - } if (error_in) { migrate_fd_error(s, error_in); if (resume) { diff --git a/migration/migration.h b/migration/migration.h index 17972dac34..db98979e6e 100644 --- a/migration/migration.h +++ b/migration/migration.h @@ -159,8 +159,6 @@ struct MigrationIncomingState { /* PostCopyFD's for external userfaultfds & handlers of shared memory = */ GArray *postcopy_remote_fds; =20 - QEMUBH *bh; - int state; =20 /* @@ -255,8 +253,6 @@ struct MigrationState { =20 /*< public >*/ QemuThread thread; - QEMUBH *vm_start_bh; - QEMUBH *cleanup_bh; /* Protected by qemu_file_lock */ QEMUFile *to_dst_file; /* Postcopy specific transfer channel */ @@ -528,6 +524,7 @@ int foreach_not_ignored_block(RAMBlockIterFunc func, vo= id *opaque); void migration_make_urgent_request(void); void migration_consume_urgent_request(void); bool migration_rate_limit(void); +void migration_bh_schedule(QEMUBHFunc *cb, void *opaque); void migration_cancel(const Error *error); =20 void migration_populate_vfio_info(MigrationInfo *info); diff --git a/migration/savevm.c b/migration/savevm.c index 93387350c7..d612c8a902 100644 --- a/migration/savevm.c +++ b/migration/savevm.c @@ -2171,10 +2171,7 @@ static void loadvm_postcopy_handle_run_bh(void *opaq= ue) runstate_set(RUN_STATE_PAUSED); } =20 - qemu_bh_delete(mis->bh); - trace_vmstate_downtime_checkpoint("dst-postcopy-bh-vm-started"); - object_unref(OBJECT(migration_get_current())); } =20 /* After all discards we can start running and asking for pages */ @@ -2189,9 +2186,7 @@ static int loadvm_postcopy_handle_run(MigrationIncomi= ngState *mis) } =20 postcopy_state_set(POSTCOPY_INCOMING_RUNNING); - mis->bh =3D qemu_bh_new(loadvm_postcopy_handle_run_bh, mis); - object_ref(OBJECT(migration_get_current())); - qemu_bh_schedule(mis->bh); + migration_bh_schedule(loadvm_postcopy_handle_run_bh, mis); =20 /* We need to finish reading the stream from the package * and also stop reading anything more from the stream that loaded the --=20 2.35.3