From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from VI1PR08MB10005.eurprd08.prod.outlook.com (2603:10a6:800:1bf::7) by PAXPR08MB6942.eurprd08.prod.outlook.com with HTTPS; Thu, 3 Sep 2026 20:26:09 +0000 Received: from OS6P279CA0150.NORP279.PROD.OUTLOOK.COM (2603:10a6:e10:3a::18) by VI1PR08MB10005.eurprd08.prod.outlook.com (2603:10a6:800:1bf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 3 Sep 2026 20:26:05 +0000 Received: from CPH1EPF00000519.eurprd04.prod.outlook.com (2603:10a6:e10:3a:cafe::9a) by OS6P279CA0150.outlook.office365.com (2603:10a6:e10:3a::18) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.12 via Frontend Transport; Thu, 3 Sep 2026 20:26:05 +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 CPH1EPF00000519.mail.protection.outlook.com (10.167.241.228) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Thu, 3 Sep 2026 20:26:02 +0000 X-PERCEPTION-POINT-VERDICT: CLN X-PERCEPTION-POINT-SPF: X-PERCEPTION-POINT-SPAM: PASS X-PERCEPTION-POINT-SENDER-IP: 2a00:1450:4864:20::433 X-PP-Forefront-Antispam-Report: CIP:2a00:1450:4864:20::433;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr1-x433.google.com;PTR:mail-wr1-x433.google.com;CAT:NONE;SFS:(13230040)(3072899012)(2092899012)(6059299003)(43022699015)(12012899012)(82310400026)(10067099003)(56012099006)(5063699009)(5023799004)(19002099009)(22082099003)(18002099003)(16102099003)(55112099003);DIR:INB; Received: from DB3PR08CU002.outbound.protection.outlook.com (mail-db3pr08cu00201.outbound.protection.outlook.com [40.93.64.81]) by inbound-smtp.eu-west-1.amazonaws.com with SMTP id 5jhg1n7f7unq34u2t0mjvurmitrek39l0p2tbqo1; Thu, 03 Sep 2026 20:25:59 +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.64.81 as permitted sender) client-ip=40.93.64.81; envelope-from=den@openvz.org; helo=DB3PR08CU002.outbound.protection.outlook.com; Authentication-Results-Original: amazonses.com; spf=softfail (spfCheck: transitioning domain of openvz.org does not designate 40.93.64.81 as permitted sender) client-ip=40.93.64.81; envelope-from=den@openvz.org; helo=DB3PR08CU002.outbound.protection.outlook.com; dkim=pass header.i=@openvz.org; dmarc=pass header.from=openvz.org; X-SES-RECEIPT: AEFBQUFBQUFBQUFIcHF0OEhkTGhqYWk1YitxSFhlR2k3ZEljcTZscXdUQVd6cWI4ZWxlLzgrajBzWGhmVjY1R252YllYQkxRVTkwRW12M0ZnM1pyeW4vUXEwbkl2NHBKRk5OcWNPTjFISGZJMkJ3dW5mdDU2NTdwMG43Y2hsYkdLR1NjSGFhdzlqSzlPSDNQdSt0elUxSGNLN3MyKzNWa3JDcFUzMnZXWGd0bkNWeDIzRVJUMk5tUExGOGpzVThYaDRMdkxqYlB0Z1pZQWxFWXd1WDh1QUpGN3JEOGJSOGorN2s2TUh1M3BCTitUZEVoVEd6elkyeHpNeHNMMGdIQTRIZDZDNVJMdnEwOHQ3VFVobEd3aFFrQ1ExeUoxTGtMYURtazNTcG5IQzZQbUE5MXVFZ3dybFE9PQ== X-SES-DKIM-SIGNATURE: a=rsa-sha256; q=dns/txt; b=Md4feysLpu7HUl8v2iok6TcWGV2dAqgPKyGaGroCdq2kNs1thnT4g4VG5udYaulxUZmUhX6iY2MomBDrImX4FqqiV/VHpSGHd2bWYV36hGRIwX25PMUk/HFKSNPzsb1hej89ImyzeghI/nz/SB3QSQVKeMFckRe+i8jXmH8+D7g=; c=relaxed/simple; s=shh3fegwg5fppqsuzphvschd53n6ihuv; d=amazonses.com; t=1788467160; v=1; bh=PHIQxowDGABKbTbB0ZmQIq/Rt0GaPRlXsZl1oo9HvF4=; h=From:To:Cc:Bcc:Subject:Date:Message-ID:MIME-Version:Content-Type:X-SES-RECEIPT; Received: from PA7P264CA0044.FRAP264.PROD.OUTLOOK.COM (2603:10a6:102:34b::20) by GVXPR08MB11398.eurprd08.prod.outlook.com (2603:10a6:150:2e5::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.382.10; Thu, 3 Sep 2026 20:25:54 +0000 Received: from MI3PEPF0000855E.eurprd05.prod.outlook.com (2603:10a6:102:34b:cafe::6f) by PA7P264CA0044.outlook.office365.com (2603:10a6:102:34b::20) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.12 via Frontend Transport; Thu, 3 Sep 2026 20:25:54 +0000 Authentication-Results-Original: spf=pass (sender IP is 2a00:1450:4864:20::433) 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:20::433 as permitted sender) receiver=protection.outlook.com; client-ip=2a00:1450:4864:20::433; helo=mail-wr1-x433.google.com; pr=C Received: from mail-wr1-x433.google.com (2a00:1450:4864:20::433) by MI3PEPF0000855E.mail.protection.outlook.com (2603:10a6:298:1::9a) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.21.382.8 via Frontend Transport; Thu, 3 Sep 2026 20:25:54 +0000 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-485850cf499so164316f8f.3 for ; Thu, 03 Sep 2026 13:25:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=openvz.org; s=google; t=1788467153; x=1789071953; darn=virtuozzo.com; h=content-transfer-encoding:content-type: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=r2ojex1xg/dwjeTVKIHJsB2eHE1C5bRFx5W+cIVMUlM=; b=GDl9wEBVa5qQhtGxQlMrsIa+3CuSIZiL0J7bMt35jMINiL87WCfePisnrjUnSeTc8q xgu5GabxmbGPllyNTSm3yOdPWqFPKso18ZHRxlEdswZ91YakRnh95OVvf+A6I5Av7Ved 2vza4SBx+7rBkL5JbBXOI5bIYoUHimYIMVsyjwXb6EPZbR/tqcjaiqHNnfqTDN9fAIfR 45cjy68T+zppjDgw/g0bjKRNVRdfMCWszUNCq1rbXVYWDzxqm69p/h9l3eVthX26r4xo qDZvJtj4XCAluKLfcJomy1ORScr3Rnf7Xq++toTBar2xqt+Z1D+xyA0B2rZm6q/sbeDb QOUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788467153; x=1789071953; h=content-transfer-encoding:content-type: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=r2ojex1xg/dwjeTVKIHJsB2eHE1C5bRFx5W+cIVMUlM=; b=T5cenTiMxFywBQSJToVm96CKhHUe+HFK8bZn2YUPzDt10S+S9erboZfs9rRXj+uXLD /Xqlq1FnnmdH04oecxpmxXrZYmEbWnJaJ8aOKwORrayvjQLsNM3vGM/KNSCSOLNTFom6 wlF8R0uYHOEkgU7EFX0McwlpfsQ721aGVmxNLv9fZl5GVYPj/G3I8k89QBik038+QkJs V4Kls9btIkvZODekGYdTjkNay7+AwXBXojLAmBynS01t4jUKpZAgcQF+jeG8o4aoXgh9 5sDFU2kN+F8lB/6E4sKNujnzz9IXEck1qfzcrXZ8wfZGKm95BP7gNbybx168xfv+EW+n TYTA== X-Gm-Message-State: AFuF++mgmdKjQMEISppnvg6QwB8rvBzJEiMP8jxTNU92AWfxv+0bb9op lkQbOK5SQVvZn1LWssz9UWJ3jt3FUd3h676H5mLI2a5hjN8YwCtKWahXvC6npWBk87Kuj5Qz7vv Qkqt6bnY= X-Gm-Gg: AYBFou0/xAygNIofdmsc5IGMQryy61/tLOezTizYGdsn0UN2n0FQkgK+2J5LTp2AxSA Tq5kcjKyxNxMejSnoqquPQztrplDi0BxE5THqhEp1v7WY39wB3nDnTuapCJuh3h7BuKmgbH33MT nEn0JYAOGl+iSkAKbsp521mHKej/ff7Ct5occmeK2D+Pv+JfsM184ojv0XWJcZsEWYFj5EPE4W2 3caov42GxRohNidwTaPax61K6TncNnLpPsMxbtHgJVyaNdLaNScBuVcpYLIDGkJm7jJCUbcqW1C wiCU9gifsVIY8VOSrtVmiqOedN+fvDPFQuE1jpgGoB7NE48cRsVxi/vpjPyDggb0MRSXVu7Aa/F yZ/FMTt1UGxSASN8ERQz2P3amTN9B8uzh2bkfB3GE+BSMEVCk4rzcopl3WVQJzxHd7qEOWtNsmI SVWt0LLLEEsHVW6tMIlUz3b37iWJM9H74mERKBz3EaepGW7OAjxlf3BAoxPj0gJsIPCoY= X-Received: by 2002:a05:6000:1882:b0:485:8313:9f43 with SMTP id ffacd0b85a97d-485872b86b9mr3175579f8f.25.1788467153343; Thu, 03 Sep 2026 13:25:53 -0700 (PDT) Received: from athena.sw.ru ([2a06:5b06:b600:300:83cc:ab98:cda9:7dc]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48588394fa1sm950600f8f.8.2026.09.03.13.25.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 13:25:53 -0700 (PDT) From: "Denis V. Lunev" To: svt-core@virtuozzo.com Cc: den@openvz.org Subject: [QEMU HCI-8.0 PATCH 2/7] ui/cursor: make the cursor refcount atomic #VSTOR-144000 Date: Thu, 3 Sep 2026 22:25:44 +0200 Message-ID: <20260903202549.2754937-3-den@openvz.org> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260903202549.2754937-1-den@openvz.org> References: <20260903202549.2754937-1-den@openvz.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-EOPAttributedMessage: 1 X-EOPTenantAttributedMessage: 0bc7f26d-0264-416e-a6fc-8352af79c58f:1 X-MS-TrafficTypeDiagnostic: MI3PEPF0000855E:EE_|GVXPR08MB11398:EE_|CPH1EPF00000519:EE_|VI1PR08MB10005:EE_|PAXPR08MB6942:EE_ X-MS-Office365-Filtering-Correlation-Id: fe9f1fce-a904-443f-d511-08df09f9941f 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|6059299003|43022699015|12012899012|82310400026|10067099003|56012099006|5063699009|5023799004|19002099009|22082099003|18002099003|16102099003|55112099003; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?ZFduYXRHWGlnOHdUYlVXUDdqN0s1bnAxZHR2cVdhbFhleWJTRnQ2RG1yVnI0?= =?utf-8?B?MjYwdFJ0WVVGeTZrK3lVT25OMStCUzFsd3l5UHRyaHRFeVJyZ0xUa2lSWVpm?= =?utf-8?B?dzJDWlFRS3NDQjQyS0Z1NjdScGxVOXAwb3k2cDl6KzhXWkVsdDlUUlhVVzNS?= =?utf-8?B?d1RTUGsxcXVkeEZ3aGRNbis0TjJ4Qi9BTXJ2YWdlck0xYUpWM29JeHRFNFJR?= =?utf-8?B?RkhwUDJORFVIVm53UDRTVFpST1ZVb3ZnbElOZndkbFkweGxoTUt6N2I2eUw5?= =?utf-8?B?TTV4cDlkdUJ3VGFPVG1NcDNSWVVTT2hnMk5VNzduTzZCZHBub3dmRTI5WS9V?= =?utf-8?B?OEFCd1hwcUVQYjJHTGM3YlVaSTgwNlNrL0lzNGl6eDFWWmdYVUdUeXpvMnlS?= =?utf-8?B?TDJFU09PSDVzREdDb2FsVHJlZnJvQ2NXVkdhdjFpMzVDbFM2ZFVLWTFTSFRW?= =?utf-8?B?UWtXbVpTbmcwdFhkTmV2a3lGbkRhSEhZb0hxQ2VramZLaU5jbGZVTFllZVJq?= =?utf-8?B?Q3pqZmZHWHNYcmpwemtkdlhzUGNHREFZYjR5TkhwSHJ2LzdDeEo5dllIU0ts?= =?utf-8?B?V01VNUhmdEdMelM5NklWdjZaVW5Zak1KMGFxSXBkM09mVDBoM2xuN09lSXZO?= =?utf-8?B?amVJV08xeWpnVmhyT3BYRDI2ZTBzdjdPMnJnRzQ3NmVoTkVncFQ0WCtKZ2gx?= =?utf-8?B?S2xuREt2dk0rMEpwMmNNVlgxam1BRUJPdEYxRkhnQ2dXMUpXOG5lc3RiQjQ0?= =?utf-8?B?YUV6ZjRIZHJCaU9yUnN5Ujk5TVovZnpOa1R4UHRoN1YyRlh3K1hWb1pHSUpH?= =?utf-8?B?Q2llSGR6NWJyVnA0SlZHMU9DdWV3b2JjK25mM0ZNb0NOR0tiV3hFRGdjbVFY?= =?utf-8?B?aDg4UTJzZXNIVHNub3ZQOHFUNXVlTDlBdlFXZXNhKzBhcm5pUUFhenhPYkcz?= =?utf-8?B?amFNdjFJbVNBWnFzN3cxaGZhT2MxejVUQUNORDcrcGJzYlhHQUZJVVlFL0Q0?= =?utf-8?B?RHcrVWJ1SlR3US9oakJBa01DVzMwT0lSZ0RtUm51SjBMeFZ1THJUL0IyM1Yx?= =?utf-8?B?MGZtb013ZktxbHR3MUhxcnExUks1V29WQUlQaWtrUHFJYllSYkZIYlg4U1Ju?= =?utf-8?B?M0pqRXg1QWlENmxMRFhZVlJveVRHVHpZOURVUlBVbk9GMHBZbU9pR3FCSE1h?= =?utf-8?B?TGxLZUhnUG1WYlFhekJvZmVaNHVZams3a0pDSWh4NTVKc0ZmOUNkb1FBK1Q2?= =?utf-8?B?dTlZajFWcU1YVytCNmp1K1RYenpPaGdyNmYxS0RRM2VZZWxhb0M4SVprc1RI?= =?utf-8?B?VktLRmtGRG04dFp4VXJhdERMTmhKem9malVsZFBXYzY0bnREUlVmWUJkclpw?= =?utf-8?B?RlNuWEVpZFN4MDE3eWtxY1loQ1lzMHIxZmNNamkzRkpPK2ZNT2YzMk81eERq?= =?utf-8?B?VVphM1ltL1VpY2NJdmZPVzQrVTFNS1lEcVVNNHU2WndZOHM4TS94Z3VTSDhy?= =?utf-8?B?VTN2UHF4SmU3QjhLTjBDeXVkaVlHcWlKSzdDLzQrNWRlbDI5YU1QbDFQbEZZ?= =?utf-8?B?VG05dy9NZEFxY0RRQ2FCOGdGbGhoS3dpcWdiWEZIMUNQeGI0V2FmeVVUc1Az?= =?utf-8?B?M1hWWkUza1k5a2FFMFJWWStWOTgxTkVTOHhPcittOFdzemZTRGpGQVd6dG1w?= =?utf-8?B?ZDViQmU0ZWVENVVVZzFmUE4wYUwvUU96U3lvNktBem1zN2x3bVp1emhXZno1?= =?utf-8?B?bmluaVBmOXBiV284bGxRUkZVYUc2R0xpT0lYZ09HcE16d0s2dkgyU3hJVEow?= =?utf-8?B?SUFpa2I5YnpVK25CRjVTWERoK0k4UGM2aUZMajJjSUtwT3JsSGlRT005OTAx?= =?utf-8?B?NDQzQXlsS29QbCsreURnUm5Ja20vQzgva3dxWHladm5hU3lGRGlPRk1tcHNv?= =?utf-8?B?Z0tWc25MQ2xPMER2SHZMdU1sMzdoNUw0cmhmd1dRN25YRFRNRWVRNkVPOWtJ?= =?utf-8?B?YmcyZDljT3Q2d3NKWlFIbkhqRGx3R2trcitxcVBUeFI1RmhsQ3YyTER4S0Za?= =?utf-8?B?em9BOWRzcEZmYjBpTkt0bWU5eW1ub2hwblA3S3YybytSQ0RqMnlWTVlERXZ5?= =?utf-8?B?WG1ybjRJSi9uY3N0b2w5UHR2SzF4NUllM21CMTBjOHlBWm12Y1l1bzMzOTN2?= =?utf-8?B?SERyNENKYVdBVkpPdVlxcFNoenJJMlJ5NVF1QTNGeE9FZTZQQUlGNm1pUXQy?= =?utf-8?B?a0tGT09HbjY0Vng1eGdSMjRHMnlTZkFuVU5vbG8xakkxWTVianVkY2FTVUdM?= =?utf-8?B?QjhBQWhOSzFYTW9HTUk4MEdIbmMxSTIxcHdWZ1pKUXQ4ZDBnTFpYNXVkTWs0?= =?utf-8?B?cXRKRDVGMHc4OHMvUHVmOERwSWRHaHBMVklTVTJNVDlvb1k2Ymw0bFgxQklF?= =?utf-8?B?N1hPSzNLODkyS1VTQktnZkZrd09WaHExTlZqMWJDRFlra1FlOWI4bEJPMlM5?= =?utf-8?B?anF4emlHL0RZb3JEQVNJMWMwb09UeDFjN0g4Tml5UGUxcjd2TVVRZEtjQTBa?= =?utf-8?B?dDJHL2FkZ1ppbXgrcUY4aHB5MzVkSms5b0FsaWNJQXYvMVlvQjhNdzRPYktZ?= =?utf-8?B?SWNtQUM2NGZqb2VYZG5FUTQvL1kyeHdRWWkxRXhkaXNQUjhKOHhjZ09ZSUY1?= =?utf-8?B?bWVtdmpBNEpjb0tndUFsUUd0bUgyNkJDTjFHZkIrTUYrbTVuMURvZXhQeDlW?= =?utf-8?B?aFFIK09SWmhwYytVSk9aeTViRGlOWjBJNzhhRHdXU3J4TGM5c3haYWJrQkds?= =?utf-8?B?WVJmZGpQMjArL1VzT0RtN0E2OFlUMjRCa1VjTHBnSG5NNk1MOFcweXBzMnMw?= =?utf-8?B?Uk9ocCtHRmdHMU4zZkoxNVEyQ0JhQ3RKb09PWE5TTkJQdUkyd2h2Z1laL0ti?= =?utf-8?B?TTZXYzUreXk4dmM1Z2JYOUx6MHprZ3dPZkhVSFVMQW9naGllOFJOa1JNeDF6?= =?utf-8?B?RUhCNkJCVndPL3N0am1RODBudWVBS2kwdkR2bWNKMmZvaFh6aENMNlg0TFVl?= =?utf-8?B?Z0pKTCs4QUdTR29RQjFKZkRDdEJLRSttSVhUWmxGQW1WMVMzVzFIZUFpK0la?= =?utf-8?B?b2F3MGRId3JxMCtzOFZ1MFNiR1B6Wlk4SGVRK1V0RnR6d3NPRC9HRG1RbjVO?= =?utf-8?B?ZHV3NDU4OFFXQm0vS3FmT1ArK1dNeDVxS2JMTjBDOXRoZU5UN3daeFNObFF4?= =?utf-8?Q?RXIlbddz3JFLVUOb9fwltgnsu8=3D?= X-Forefront-Antispam-Report-Untrusted: CIP:2a00:1450:4864:20::433;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:mail-wr1-x433.google.com;PTR:mail-wr1-x433.google.com;CAT:NONE;SFS:(13230040)(3072899012)(2092899012)(6059299003)(43022699015)(12012899012)(82310400026)(10067099003)(56012099006)(5063699009)(5023799004)(19002099009)(22082099003)(18002099003)(16102099003)(55112099003);DIR:INB; X-Auto-Response-Suppress: DR, OOF, AutoReply X-Exchange-RoutingPolicyChecked: ov9eWg/3J7OZzPsgEur/iOdPr6JVCKbz7l5gIOuPyxZo3WZO9Urf8G2A40hXmB1TFFoj6hbsHST0L+XQO28Flvao3jXtTiNIoInvAyP9g8a5JOJ+4dmSZp3n/CX0z6agyiQOWYbCO0iFqykoyt3LpNbfCAccaCkPU/rVptvQQGSQLgahxvmEnQWuwR6PTrnh9a4ZyDGIHHu4wDJJOOk7+Pm/G+2T00WTKngdQUcyRHJJffyF1QtD1J0lnfQoOb/HA9Dk3Mn3HH52cuR3FMEFO5isgXoLN4eecNC5mQO1v03T/bmdqlm4nYvwXRi6fbJK5gRr/Vec7UVYPzHfdZqMuA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: GVXPR08MB11398 X-MS-Exchange-Organization-ExpirationStartTime: 03 Sep 2026 20:26:04.6520 (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: fe9f1fce-a904-443f-d511-08df09f9941f X-MS-Exchange-Organization-MessageDirectionality: Incoming X-MS-Exchange-Transport-CrossTenantHeadersStripped: CPH1EPF00000519.eurprd04.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Exchange-Organization-AuthSource: CPH1EPF00000519.eurprd04.prod.outlook.com X-MS-Exchange-Organization-AuthAs: Anonymous X-MS-Office365-Filtering-Correlation-Id-Prvs: 3fe4ffcf-d8af-4c67-5f34-08df09f98dd6 X-MS-Exchange-Organization-SCL: -1 X-Microsoft-Antispam: BCL:0;ARA:13230040|12012899012|43022699015|6059299003|82310400026|35042699022|3072899012|2092899012|19002099009|56012099006|5133699003|10067099003|5023799004|5063699009|22082099003|55112099003|16102099003|18003699003; 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)(12012899012)(43022699015)(6059299003)(82310400026)(35042699022)(3072899012)(2092899012)(19002099009)(56012099006)(5133699003)(10067099003)(5023799004)(5063699009)(22082099003)(55112099003)(16102099003)(18003699003);DIR:INB; X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Sep 2026 20:26:02.9994 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: fe9f1fce-a904-443f-d511-08df09f9941f X-MS-Exchange-CrossTenant-Id: 0bc7f26d-0264-416e-a6fc-8352af79c58f X-MS-Exchange-CrossTenant-AuthSource: CPH1EPF00000519.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB10005 X-MS-Exchange-Transport-EndToEndLatency: 00:00:06.7564597 X-MS-Exchange-Processed-By-BccFoldering: 15.21.0382.004 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: =?utf-8?B?UmdteWpnd2k4dmxLYmFVcTFFbld5eG0yTzhCV3BkWGozREllL1JGd3hGeDZL?= =?utf-8?B?NnRiWUtDTTd6SWFTUDAxTkkwWGtDUXloQVBwYVVsbkVTQVpOdE8yRUxCbWpE?= =?utf-8?B?WFNxY0hUa0lsZldIZ2VycW8vdTZQamVBU095TkpkZFF6R2hBa2k2MWZ0VXpV?= =?utf-8?B?WkZrZnUyQU92TE1CSTBpUnZnYzNvWGZtVnZiS3dQd0llUVNiVmFkbVZmemhl?= =?utf-8?B?M2pscGdIL1pmSC9VRU9uSVdiWkdKL2ZrZ3lyRlhQZUNQcVpDQ0MzWkNhRUUy?= =?utf-8?B?SnoyRGVHKy8yejJNOWVPTkRyK3dtZmplcFZmS2EzR05UZFRaUTlmVlRYZlY2?= =?utf-8?B?L0M4Z0JOTzE5Zng5d0t2NUUwaE9UUFBIOEdRakh3Y2VWQjcyZ2RDM0M5M3hM?= =?utf-8?B?cVZvWDhpeDd6OWdNUzBNZzBONEpPand0cVBVUE04dHV6R3k1ZWxmTFEvM0pG?= =?utf-8?B?cmRMMEhpbkx5V1JBaGpmbVZ4ZTNlem12ZzYvMURFN2U0Sm85bnA0V2xaR250?= =?utf-8?B?blhGcHpaSThTVHBOL3h6d1NVQ2dwVzZFOVhDTUxZNEFyRWdrcGlFTGZ0V2ps?= =?utf-8?B?d3lldExWaWZzTUVhMUcrSDNyQUVNWnpwWVY3NHFsUFlPVDhkTEJJdUgySVVM?= =?utf-8?B?bFprUXlzR3dVcy9OKzZ5UVF6QVVoZm16Zm8zMjZlZnhKQ3lLZnZOOTlCRXEy?= =?utf-8?B?K2dndjl2R0JSUUp6VGw0M2ZiWXA2Ulg2aUpJbkp6aFlMWm91UzYzendSTGxx?= =?utf-8?B?ZDZEKzF0S1NnVlZZWUxsZG12SHhlYUd4cUl6L2loMW14Sy9ZeE8zNEZyakNP?= =?utf-8?B?OVFTajQ1QkJaVWdiVTRTeUUyMHRmNkkxUndJalptMzgzWVNtTDNiRHY3Uzdr?= =?utf-8?B?dE0rR2FzOWVFcEdsalU1WXEzMk82Q20ySis3V0F0YjJKamtuZStVVjl4VVFw?= =?utf-8?B?STEvUFUyKzhqdE5ndkNtZ1B0V0pTYThTM0tpanNmYUZURXFjZTRZU2FEYlpI?= =?utf-8?B?WmluY1JkWXZYZm5WMUwwV0N6d3hhRkY1MjJtck1hUzNPV2NXRDY0TVgrUWxK?= =?utf-8?B?eElvRHJOak5pUnZTVGRsUUV4Tm9naDVhSjhEaU5lNFBJWHVHMzFpZ0NFNVVO?= =?utf-8?B?RjlNakNzZ3gwbjJMcUM4UytpNDJmTmhNOWR4dmc1VnkyaTdJUFNkWHIxcmNI?= =?utf-8?B?N2ttemEzNC85b0dHZ2R0VmlacGNGeG9TQjVaODVwRDFPcUpHMGtWd0QzQ2xM?= =?utf-8?B?SFFUM25uZkJ1aDhRWFB0cHFBdEZ4TVd2cUNPRzF6QnIxaGR0QkNGbkJvWGtV?= =?utf-8?B?Um1QcnkyeTBHRGxadnJ5YU9RYUdVcjNZMm0zUFJEZnI0KzFqelhlSEE5ajho?= =?utf-8?B?NzV5VFFuM041cEJGd2NFdEZBNVdITno0dWdFS2o1bHE2cXIvMFpnQmF6VHRX?= =?utf-8?B?RjZxRTdsMy9xbVV1S0IzWDRibFEyd0V1cHR2c3Z0VmJZWHBDYnRsNDErL0hq?= =?utf-8?B?cFFYWnlGVVBITzl6a3BXWEJoNUVmZEIrcTkxcm96dEtNUEovcVd1eU92U21x?= =?utf-8?B?K2Y1NUJVdHE0UlRCVkxqU3BNK1liaDVxY1BIdWJxSHlHLy8zaVV6MTlwYnZ4?= =?utf-8?B?VmxNUUdHNlA1bTdLajQ4NnRwajdKK3luR2N2LzcwR1gvREpzQkhFdkRkUURG?= =?utf-8?B?VEFrSHQzYjVxRnI0eEU3V3dJVEpXd2tRRlh3cUs0czBHWFB3VitlU3VhUDY5?= =?utf-8?B?UGpVUDlHczdRVmM2YU90a0VvaDFvaEF2emFxN2p6dTdKWEp5NEN2T2dzcXVj?= =?utf-8?B?bmpkUk1HZUoxNklqdWZGTlBVTUxGenJUeHJSWFBra3RzYUQ0S1lBanFMZGRM?= =?utf-8?B?dm5qbktpNmNPSnBtSEJFY1hXVXV6Q3dpdmtuWE5kWjR1bGhmNmVYM05YVkpL?= =?utf-8?B?S3NCc0RGeXFBREh4ZEk3T25ZM3VUNUNkaG9iVHAydmlsRmNpWVBxOFRDWDdF?= =?utf-8?B?WjlDM2FMRzN1L3RoUTRRcEZwSE01SXFjZVNENjJlVzFmbitDWU9MYS9QVlcv?= =?utf-8?B?QzUyOVRkL1lVdkREbkhvekRXZHFiRjV2ZlNGMjQ0Q3RVSmxCTXN2VFRZM3JD?= =?utf-8?B?QkdQcnhQVTNFR3d4ZHFSdG43WkhqK0sxUnliOHl3dEhFZHhkRVMyZFVybEFj?= =?utf-8?B?K2s1ekJaNHRIdSt3NGp5WHlKaVZxeGI2ZHV2K2RReVRmMHdwTkJVejhGQmpM?= =?utf-8?B?YS9iTU5UY0JYblRiUUp1T0ppMHhBb3RsdjZTWStwZUlHT0RWa0tYamJXNW5r?= =?utf-8?B?TXhHVlVyZEQrSXlqank3L0w5YmZ4RGdydVp5MW1POU1Iak5UdXczd29GdVpI?= =?utf-8?B?aEZRV29ZV3FNcXc0VDhZWmRwRjZodzdhN29xTFpPK3FzdTRacmNxUVdZN1FB?= =?utf-8?B?em52UFE3eEtRMkszNjBOdGNFL3NBdjZPUzZyNW1WV0liQkdmelNLTUMzb0sz?= =?utf-8?B?L2t6eFlxT3ltdEVMSzZKWk5pNlI0WXhneGhkMU8waFk0aDlRdmF0b2JHNW5O?= =?utf-8?B?eHAxK2dxYWVTRnRPN1p6VTlFSFdSU0M3OW5leDk4dGNQRkNjZTVoY29TNER1?= =?utf-8?B?a3FzcEJmNk1KR1RpazdEK0hMWUxJK1hJcGhLVWdkNHkrSEQvdS9MVWYybTBx?= =?utf-8?B?MnhFbitEMXZ4R2lxVmN3RDF0NHZrRHZtTTd0SXBFUzQ0NUpHRXFvUUczOWVa?= =?utf-8?B?WERJaG9aK2xEeitJeGdUTFNUcmR0NWJyRXBWTmxlVTYzeVVkMjI0bkFOTVRL?= =?utf-8?B?cDExOG5RT3hNUU9xMXFKdFc0ZGQvNG5DSG1IUzlsaTdNQmgzVHFPVkdTVWhy?= =?utf-8?B?RDZUZlBEOHlSQTExazRTeHFNZ2dCMHRYUnpZbDI5cVUyTllWWDlJV1lPbmg5?= =?utf-8?B?UldIRks3QWhjcDNWcnVBV0FuY3JPWFhUMlh2dmFPb2tjVWZCcjIwT011QlFE?= =?utf-8?B?enhTek9BeDE1bTlrQjNGWmV5WWZ1ZjcxaGplbmM4SUhqTVRyc3Bwa1lmYUc3?= =?utf-8?B?SlVmNm5lT1VwcWVPa0ZaZnlhaXhNamZqRVJNQmJ2QW1ONkVUeTF6eVZreWl0?= =?utf-8?B?ckFUSXlMNEJFRXpxSDY3MGtzZG4raEc1STVYdnJGNVRxdHhDZlBWOE5IUXRz?= =?utf-8?B?VXc0cWVCRWY4WTk0bUdxcTNVdmFabWpKbTJEclFhSzRaZjRVdy8zekkxTTd6?= =?utf-8?B?YWRSTU4vL0Y2QzRpMkt0d1BSTlR4YmZTei9FMjNJQ1JWemhJWEdJMTZqTU5L?= =?utf-8?B?d3FBdEN1NzJzRWtaOXdyZFZEQUFIZXJrTWN4a0VaVGFmMGlFd0FNNi8xZFp4?= =?utf-8?B?MUcrcmVyOHNyc2QyTXIwQndFNVNhRWZjTHR5ckE2SUd1bFFoMHhBVmtsU3Aw?= =?utf-8?B?U1lqRExpYUdsVjZCTmxPNU1nanIrNENkazBYM1lEV2ZUakllbDBLOHhxYWZ4?= =?utf-8?B?QlhDOEQ5emF0WENTL01ZdjhMKy9pdnJ1RFJFZkFuSGFwa1dwTEM4Nkw5dG1Y?= =?utf-8?B?OFFKVjFPV1hRcmtDa0RrdTRhcTBoS0lKcjhGT09xc1J0RVM2Q3k1ZUc2Z25L?= =?utf-8?B?NGJGMm0vK3d0dDY5QUhBTzVaeEtndlh2MzZYVThBWFZhdHhOQ3g4UU01WTdB?= =?utf-8?B?Y0kzZUc2ZDIwZ0RsYU5HZ2l0SWZSRmFyejFBQkVmQS8xUVMvQlo3Z1FCVzA4?= =?utf-8?B?dXp2Uk05cFRpaDRubFBFbDI4cDI1NnY4SGJzL3JqNFRmRW53RW0wTXQ0M25E?= =?utf-8?B?bURJenF1czhFQkJBU3VHUGJQNjBmMGV6NnhzMEdLZzV1eGl4dkdKOW1EcklN?= =?utf-8?B?aXFBPT0=?= MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: QEMU List-Id: From: Denis V. Lunev A QEMUCursor outlives the call that publishes it and is shared between threads, but its refcount was a plain int with no single lock covering every user. qemu_console_set_cursor() takes and drops references from the main loop under the BQL alone, hw/display/qxl-render.c does so from the SPICE display worker thread, and ui/spice-display.c does so under SimpleSpiceDisplay::lock. ui/cocoa.m and ui/dbus-listener.c add two more threads. The pair that collides is qemu_spice_cursor_refresh_bh(), which drops ssd->lock before calling qemu_console_set_cursor(), and the worker refcounting the same cursor under that lock. A lost increment frees the cursor while the console still points at it, so the console's next unref decrements memory the allocator has already handed out again. Locking ssd.cursor is not enough on its own: with that done, this is the race that remains. Assert on the value the decrement observed while here. Dropping a reference that was never taken used to be silent, because the decrement lands in the allocator metadata of the freed chunk: nothing is logged, the object is not freed twice, and the process runs on until some later allocation walks the damaged free list and faults, arbitrarily far from the code that caused it. Fixes: 0b2824e5e48a ("spice: use bottom half instead of refresh timer for cursor updates") Cc: qemu-stable@nongnu.org Cc: Marc-André Lureau Signed-off-by: Denis V. Lunev Reviewed-by: Marc-André Lureau --- include/ui/console.h | 9 +++++++++ ui/cursor.c | 17 +++++++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/include/ui/console.h b/include/ui/console.h index 98feaa58bdd..a5db0b4e396 100644 --- a/include/ui/console.h +++ b/include/ui/console.h @@ -164,6 +164,15 @@ typedef struct QEMUCursor { } QEMUCursor; QEMUCursor *cursor_alloc(uint16_t width, uint16_t height); + +/* + * A cursor may be shared between the main loop, a vCPU thread and a + * display backend's own thread, so the refcount is atomic and these two + * may be called from any of them. The object itself is not otherwise + * thread-safe: take a reference before publishing the pointer anywhere + * another thread can reach it, and never dereference a cursor you do + * not hold a reference to. + */ QEMUCursor *cursor_ref(QEMUCursor *c); void cursor_unref(QEMUCursor *c); QEMUCursor *cursor_builtin_hidden(void); diff --git a/ui/cursor.c b/ui/cursor.c index 6e23244fbe6..69d27d49a13 100644 --- a/ui/cursor.c +++ b/ui/cursor.c @@ -1,4 +1,5 @@ #include "qemu/osdep.h" +#include "qemu/atomic.h" #include "ui/console.h" #include "cursor_hidden.xpm" @@ -103,24 +104,28 @@ QEMUCursor *cursor_alloc(uint16_t width, uint16_t height) c = g_malloc0(sizeof(QEMUCursor) + datasize); c->width = width; c->height = height; - c->refcount = 1; + qatomic_set(&c->refcount, 1); return c; } QEMUCursor *cursor_ref(QEMUCursor *c) { - c->refcount++; + qatomic_inc(&c->refcount); return c; } void cursor_unref(QEMUCursor *c) { + int refcount; + if (c == NULL) return; - c->refcount--; - if (c->refcount) - return; - g_free(c); + + refcount = qatomic_fetch_dec(&c->refcount); + assert(refcount > 0); + if (refcount == 1) { + g_free(c); + } } int cursor_get_mono_bpl(QEMUCursor *c) -- 2.53.0