Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1twho0-00GnLE-1n for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Mar 2025 13:25:28 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1twhmz-003Q5A-J6 for pgsql-hackers@arkaria.postgresql.org; Mon, 24 Mar 2025 13:24:25 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1twhmz-003Q52-0L for pgsql-hackers@lists.postgresql.org; Mon, 24 Mar 2025 13:24:25 +0000 Received: from relay1-d.mail.gandi.net ([2001:4b98:dc4:8::221]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1twhmv-000sKu-1k for pgsql-hackers@postgresql.org; Mon, 24 Mar 2025 13:24:23 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id 2500B44381; Mon, 24 Mar 2025 13:24:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1742822658; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=ZAKzJ6ans7obZ887oDy4Cw+E/FDuHSBARA1xPSNbbCI=; b=Ck7v4ZSe+qdAeNf2D32XfDtnN6ehzAaAjjcPQGYEY2BvNZvQHNcQGbGpkjTdhHMLC6us2Y S3HgFo8qL1PREXRTsQ+wok///HCALAC89ecdBosxjgbNz6K8B76NLObNlP7qGlmpm2V9nH iEb/pVp/QCpyS0nkwtWqLR8bnTfZBVxa/9zfcNbUqPvvPOZKcxEfEx51SJ3Rhwne7x3QdO 5Vm/Hrkkrr6+qJfH5poeAygPj/g1zD232t/4Py0f6S2/hWiRcEFxHg24YvWxPZjeyDEFuD FrjIfZ9qOr+gQdEh33xBTsDAtH3ftkHxF1194KDFg/Bu6Rl0oh7dFVIeMBIvOw== Content-Type: multipart/mixed; boundary="------------LDNh7LQka0m0jeErozcWBJth" Message-ID: <3e40eeec-d8bf-4496-854e-485dd901f6a2@vondra.me> Date: Mon, 24 Mar 2025 14:24:17 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Improve monitoring of shared memory allocations To: Rahila Syed , Nazir Bilal Yavuz Cc: Andres Freund , PostgreSQL-development References: Content-Language: en-US From: Tomas Vondra In-Reply-To: X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgdduheelkeekucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpegtkfffgggfuffvvehfhfgjsehmtderredtvdejnecuhfhrohhmpefvohhmrghsucggohhnughrrgcuoehtohhmrghssehvohhnughrrgdrmhgvqeenucggtffrrghtthgvrhhnpeekudfhgfelgefhjedtheelhffgudegjedufefftedutdehlefhjeeftdevieefieenucfkphepkeeirdegledrvdefiedrudelfeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekiedrgeelrddvfeeirdduleefpdhhvghloheplgdutddrudefjedrtddrvdgnpdhmrghilhhfrhhomhepthhomhgrshesvhhonhgurhgrrdhmvgdpnhgspghrtghpthhtohepgedprhgtphhtthhopehrrghhihhlrghshigvugeltdesghhmrghilhdrtghomhdprhgtphhtthhopegshigrvhhuiiekudesghhmrghilhdrtghomhdprhgtphhtthhopegrnhgurhgvshesrghnrghrrgiivghlrdguvgdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrgh X-GND-Sasl: tomas@vondra.me List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Hi, I did a review on v3 of the patch. I see there's been some minor changes in v4 - I haven't tried to adjust my review, but I assume most of my comments still apply. Most of my suggestions are about formatting and/or readability. Some of the likes (e.g. the pointer arithmetics) got so long pgindent would have to wrap them, but more importantly really hard to decipher what it does. I've added a couple "review" commits, actually doing most of what I'm going to suggest. 1) I don't quite understand why hash_get_shared_size() got renamed to hash_get_init_size()? Why is that needed? Does it cover only some initial allocation, and there's additional memory allocated later? And what's the point of the added const? 2) I find it more readable when ShmemInitStruct() is formatted on multiple lines. Yes, it's a matter of choice, but also other places do it this way, I think. 3) The changes in hash_create() are a good example of readability issues I already mentioned. Consider this line: curr_offset = (((char *) hashp->hctl) + sizeof(HASHHDR) + (hctl->dsize * sizeof(HASHSEGMENT)) + (sizeof(HASHBUCKET) * hctl->ssize * nsegs)); First, I'd point out this is not an offset but a pointer, so the variable name is a bit misleading. But more importantly, I envy those who can parse this in their head and see if it's correct. I think it's much better to define a couple macros to calculate parts of this, essentially a tiny "language" expressing this in a concise way. The 0002 patch defines - HASH_ELEMENTS - HASH_ELEMENT_NEXT - HASH_SEGMENT_PTR - HASH_SEGMENT_SIZE - ... and then uses that in hash_create(). I believe it's way more readable like this. 4) I find it a bit strange when a function calculates multiple values, and then returns them in different ways - one as a return value, one through a pointer, the way compute_buckets_and_segs() did. There are cases when it makes sense (e.g. when one of the values is returned only optionally), but otherwise I think it's better to return both values in the same way through a pointer. The 0002 patch adjusts compute_buckets_and_segs() to it like this. We have a precedent for this - ExecChooseHashTableSize(), which is doing a very similar thing for sizing hashjoin hash table. 5) Isn't it wrong that PredicateLockShmemInit() removes the ShmemAlloc() along with calculating the per-element requestSize, but then still does memset(PredXact->element, 0, requestSize); and memset(RWConflictPool->element, 0, requestSize); with requestSize for the whole allocation? I haven't seen any crashes, but this seems wrong to me. I believe we can simply zero the whole allocation right after ShmemInitStruct(), there's no need to do this for each individual element. 5) InitProcGlobal is another example of hard-to-read code. Admittedly, it wasn't particularly readable before, but making the lines even longer does not make it much better ... I guess adding a couple macros similar to hash_create() would be one way to improve this (and there's even a review comment in that sense), but I chose to just do maintain a simple pointer. But if you think it should be done differently, feel free to do so. 6) I moved the PGProcShmemSize() to be right after ProcGlobalShmemSize() which seems to be doing a very similar thing, and to not require the prototype. Minor detail, feel free to undo. 7) I think the PG_CACHE_LINE_SIZE is entirely unrelated to the rest of the patch, and I see no reason to do it in the same commit. So 0005 removes this change, and 0006 reintroduces it separately. FWIW I see no justification for why the cache line padding is useful, and it seems quite unlikely this would benefit anything, consiering it adds padding between fairly long arrays. What kind of contention can we get there? I don't get it. Also, why is the patch adding padding after statusFlags (the last array allocated in InitProcGlobal) and not between allProcs and xids? regards -- Tomas Vondra --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/x-patch; charset=UTF-8; name="v20250324-0001-Account-for-initial-shared-memory-allocate.patch" Content-Disposition: attachment; filename*0="v20250324-0001-Account-for-initial-shared-memory-allocate.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBmNTI3OTA5ZGRhMDJiNGM3MjMxZGI1M2EwZmU2Y2VjYmFlYzU1Y2E0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFp bC5jb20+CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAyMDowNjoyMCArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjUwMzI0IDEvNl0gQWNjb3VudCBmb3IgaW5pdGlhbCBzaGFyZWQgbWVtb3J5 IGFsbG9jYXRlZCBieQogaGFzaF9jcmVhdGUKCnBnX3NobWVtX2FsbG9jYXRpb25zIHRyYWNr cyB0aGUgbWVtb3J5IGFsbG9jYXRlZCBieSBTaG1lbUluaXRTdHJ1Y3QsCndoaWNoLCBpbiBj YXNlIG9mIHNoYXJlZCBoYXNoIHRhYmxlcywgb25seSBjb3ZlcnMgbWVtb3J5IGFsbG9jYXRl ZAp0byB0aGUgaGFzaCBkaXJlY3RvcnkgYW5kIGNvbnRyb2wgc3RydWN0dXJlLiBUaGUgaGFz aCBzZWdtZW50cyBhbmQKYnVja2V0cyBhcmUgYWxsb2NhdGVkIHVzaW5nIFNobWVtQWxsb2NO b0Vycm9yIHdoaWNoIGRvZXMgbm90IGF0dHJpYnV0ZQp0aGUgYWxsb2NhdGlvbnMgdG8gdGhl IGhhc2ggdGFibGUgbmFtZS4gVGh1cywgdGhlc2UgYWxsb2NhdGlvbnMgYXJlCm5vdCB0cmFj a2VkIGluIHBnX3NobWVtX2FsbG9jYXRpb25zLgoKSW5jbHVkZSB0aGUgYWxsb2NhdGlvbiBv ZiBzZWdtZW50cywgYnVja2V0cyBhbmQgZWxlbWVudHMgaW4gdGhlIGluaXRpYWwKYWxsb2Nh dGlvbiBvZiBzaGFyZWQgaGFzaCBkaXJlY3RvcnkuIFRoaXMgcmVzdWx0cyBpbiB0aGUgZXhp c3RpbmcgU2htZW1JbmRleAplbnRyaWVzIHRvIHJlZmxlY3QgYWxsIHRoZXNlIGFsbG9jYXRp b25zLiBUaGUgcmVzdWx0aW5nIHR1cGxlcyBpbgpwZ19zaG1lbV9hbGxvY2F0aW9ucyByZXBy ZXNlbnQgdGhlIHRvdGFsIHNpemUgb2YgdGhlIGluaXRpYWwgaGFzaCB0YWJsZQppbmNsdWRp bmcgYWxsIHRoZSBidWNrZXRzIGFuZCB0aGUgZWxlbWVudHMgdGhleSBjb250YWluLCBpbnN0 ZWFkIG9mIGp1c3QKdGhlIGRpcmVjdG9yeSBzaXplLgotLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5h aGFzaC5jIHwgMjA5ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2luY2x1 ZGUvdXRpbHMvaHNlYXJjaC5oICAgICAgIHwgICAzICstCiAzIGZpbGVzIGNoYW5nZWQsIDE2 MSBpbnNlcnRpb25zKCspLCA1NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ht ZW0uYwppbmRleCA4OTVhNDNmYjM5ZS4uZDhhZWQwYmZhYWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvc2htZW0uYwpAQCAtNzMsNiArNzMsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0u aCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlu cy5oIgorI2luY2x1ZGUgInV0aWxzL2R5bmFoYXNoLmgiCiAKIHN0YXRpYyB2b2lkICpTaG1l bUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpOwogCkBAIC0zNDYs NyArMzQ3LDcgQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFibGUg c3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAKIAkvKiBsb29rIGl0IHVwIGluIHRo ZSBzaG1lbSBpbmRleCAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0KG5hbWUsCi0J CQkJCQkJICAgaGFzaF9nZXRfc2hhcmVkX3NpemUoaW5mb1AsIGhhc2hfZmxhZ3MpLAorCQkJ CQkJCSAgIGhhc2hfZ2V0X2luaXRfc2l6ZShpbmZvUCwgaGFzaF9mbGFncywgaW5pdF9zaXpl LCAwKSwKIAkJCQkJCQkgICAmZm91bmQpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHlu YWhhc2guYwppbmRleCAzZjI1OTI5ZjJkOC4uYmE3ODVmMWQ1ZjIgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGls cy9oYXNoL2R5bmFoYXNoLmMKQEAgLTI2NSw3ICsyNjUsNyBAQCBzdGF0aWMgbG9uZyBoYXNo X2FjY2Vzc2VzLAogICovCiBzdGF0aWMgdm9pZCAqRHluYUhhc2hBbGxvYyhTaXplIHNpemUp Owogc3RhdGljIEhBU0hTRUdNRU5UIHNlZ19hbGxvYyhIVEFCICpoYXNocCk7Ci1zdGF0aWMg Ym9vbCBlbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0sIGludCBmcmVlbGlz dF9pZHgpOworc3RhdGljIEhBU0hFTEVNRU5UICplbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hw LCBpbnQgbmVsZW0pOwogc3RhdGljIGJvb2wgZGlyX3JlYWxsb2MoSFRBQiAqaGFzaHApOwog c3RhdGljIGJvb2wgZXhwYW5kX3RhYmxlKEhUQUIgKmhhc2hwKTsKIHN0YXRpYyBIQVNIQlVD S0VUIGdldF9oYXNoX2VudHJ5KEhUQUIgKmhhc2hwLCBpbnQgZnJlZWxpc3RfaWR4KTsKQEAg LTI4MSw2ICsyODEsOSBAQCBzdGF0aWMgdm9pZCByZWdpc3Rlcl9zZXFfc2NhbihIVEFCICpo YXNocCk7CiBzdGF0aWMgdm9pZCBkZXJlZ2lzdGVyX3NlcV9zY2FuKEhUQUIgKmhhc2hwKTsK IHN0YXRpYyBib29sIGhhc19zZXFfc2NhbnMoSFRBQiAqaGFzaHApOwogCitzdGF0aWMgaW50 CWNvbXB1dGVfYnVja2V0c19hbmRfc2Vncyhsb25nIG5lbGVtLCBpbnQgKm5idWNrZXRzLAor CQkJCQkJCQkJIGxvbmcgbnVtX3BhcnRpdGlvbnMsIGxvbmcgc3NpemUpOworc3RhdGljIHZv aWQgZWxlbWVudF9hZGQoSFRBQiAqaGFzaHAsIEhBU0hFTEVNRU5UICpmaXJzdEVsZW1lbnQs IGludCBmcmVlbGlzdF9pZHgsIGludCBuZWxlbSk7CiAKIC8qCiAgKiBtZW1vcnkgYWxsb2Nh dGlvbiBzdXBwb3J0CkBAIC0zNTMsNiArMzU2LDcgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hh ciAqdGFibmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdz KQogewogCUhUQUIJICAgKmhhc2hwOwogCUhBU0hIRFIgICAgKmhjdGw7CisJaW50CQkJbmVs ZW1fYmF0Y2g7CiAKIAkvKgogCSAqIEhhc2ggdGFibGVzIG5vdyBhbGxvY2F0ZSBzcGFjZSBm b3Iga2V5IGFuZCBkYXRhLCBidXQgeW91IGhhdmUgdG8gc2F5CkBAIC01MDcsOSArNTExLDE5 IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0 IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAkJaGFzaHAtPmlzc2hhcmVkID0gZmFsc2U7 CiAJfQogCisJLyogQ2hvb3NlIG51bWJlciBvZiBlbnRyaWVzIHRvIGFsbG9jYXRlIGF0IGEg dGltZSAqLworCW5lbGVtX2JhdGNoID0gY2hvb3NlX25lbGVtX2FsbG9jKGluZm8tPmVudHJ5 c2l6ZSk7CisKKwkvKgorCSAqIEFsbG9jYXRlIHRoZSBtZW1vcnkgbmVlZGVkIGZvciBoYXNo IGhlYWRlciwgZGlyZWN0b3J5LCBzZWdtZW50cyBhbmQKKwkgKiBlbGVtZW50cyB0b2dldGhl ci4gVXNlIHBvaW50ZXIgYXJpdGhtZXRpYyB0byBhcnJpdmUgYXQgdGhlIHN0YXJ0CisJICog b2YgZWFjaCBvZiB0aGVzZSBzdHJ1Y3R1cmVzIGxhdGVyLgorCSAqLwogCWlmICghaGFzaHAt PmhjdGwpCiAJewotCQloYXNocC0+aGN0bCA9IChIQVNISERSICopIGhhc2hwLT5hbGxvYyhz aXplb2YoSEFTSEhEUikpOworCQlTaXplCQlzaXplID0gaGFzaF9nZXRfaW5pdF9zaXplKGlu Zm8sIGZsYWdzLCBuZWxlbSwgbmVsZW1fYmF0Y2gpOworCisJCWhhc2hwLT5oY3RsID0gKEhB U0hIRFIgKikgaGFzaHAtPmFsbG9jKHNpemUpOwogCQlpZiAoIWhhc2hwLT5oY3RsKQogCQkJ ZXJlcG9ydChFUlJPUiwKIAkJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwK QEAgLTU1OCw2ICs1NzIsOCBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBs b25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJaGN0bC0+a2V5 c2l6ZSA9IGluZm8tPmtleXNpemU7CiAJaGN0bC0+ZW50cnlzaXplID0gaW5mby0+ZW50cnlz aXplOwogCisJaGN0bC0+bmVsZW1fYWxsb2MgPSBuZWxlbV9iYXRjaDsKKwogCS8qIG1ha2Ug bG9jYWwgY29waWVzIG9mIGhlYXZpbHktdXNlZCBjb25zdGFudCBmaWVsZHMgKi8KIAloYXNo cC0+a2V5c2l6ZSA9IGhjdGwtPmtleXNpemU7CiAJaGFzaHAtPnNzaXplID0gaGN0bC0+c3Np emU7CkBAIC01ODIsNiArNTk4LDkgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFt ZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCQkJCQlm cmVlbGlzdF9wYXJ0aXRpb25zLAogCQkJCQluZWxlbV9hbGxvYywKIAkJCQkJbmVsZW1fYWxs b2NfZmlyc3Q7CisJCXZvaWQJICAgKmN1cnJfb2Zmc2V0ID0gTlVMTDsKKwkJaW50CQkJbnNl Z3M7CisJCWludAkJCW5idWNrZXRzOwogCiAJCS8qCiAJCSAqIElmIGhhc2ggdGFibGUgaXMg cGFydGl0aW9uZWQsIGdpdmUgZWFjaCBmcmVlbGlzdCBhbiBlcXVhbCBzaGFyZSBvZgpAQCAt NTkyLDYgKzYxMSwxNSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBsb25n IG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJCWVsc2UKIAkJCWZy ZWVsaXN0X3BhcnRpdGlvbnMgPSAxOwogCisJCS8qCisJCSAqIElmIHRhYmxlIGlzIHNoYXJl ZCwgY2FsY3VsYXRlIHRoZSBvZmZzZXQgYXQgd2hpY2ggdG8gZmluZCB0aGUgdGhlCisJCSAq IGZpcnN0IHBhcnRpdGlvbiBvZiBlbGVtZW50cworCQkgKi8KKworCQluc2VncyA9IGNvbXB1 dGVfYnVja2V0c19hbmRfc2VncyhuZWxlbSwgJm5idWNrZXRzLCBoY3RsLT5udW1fcGFydGl0 aW9ucywgaGN0bC0+c3NpemUpOworCisJCWN1cnJfb2Zmc2V0ID0gKCgoY2hhciAqKSBoYXNo cC0+aGN0bCkgKyBzaXplb2YoSEFTSEhEUikgKyAoaGN0bC0+ZHNpemUgKiBzaXplb2YoSEFT SFNFR01FTlQpKSArIChzaXplb2YoSEFTSEJVQ0tFVCkgKiBoY3RsLT5zc2l6ZSAqIG5zZWdz KSk7CisKIAkJbmVsZW1fYWxsb2MgPSBuZWxlbSAvIGZyZWVsaXN0X3BhcnRpdGlvbnM7CiAJ CWlmIChuZWxlbV9hbGxvYyA8PSAwKQogCQkJbmVsZW1fYWxsb2MgPSAxOwpAQCAtNjA5LDEx ICs2MzcsMTYgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxl bSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCQlmb3IgKGkgPSAwOyBpIDwg ZnJlZWxpc3RfcGFydGl0aW9uczsgaSsrKQogCQl7CiAJCQlpbnQJCQl0ZW1wID0gKGkgPT0g MCkgPyBuZWxlbV9hbGxvY19maXJzdCA6IG5lbGVtX2FsbG9jOworCQkJSEFTSEVMRU1FTlQg KmZpcnN0RWxlbWVudDsKKwkJCVNpemUJCWVsZW1lbnRTaXplID0gTUFYQUxJR04oc2l6ZW9m KEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTihoY3RsLT5lbnRyeXNpemUpOwogCi0JCQlpZiAo IWVsZW1lbnRfYWxsb2MoaGFzaHAsIHRlbXAsIGkpKQotCQkJCWVyZXBvcnQoRVJST1IsCi0J CQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAotCQkJCQkJIGVycm1zZygi b3V0IG9mIG1lbW9yeSIpKSk7CisJCQkvKgorCQkJICogTWVtb3J5IGlzIGFsbG9jYXRlZCBh cyBwYXJ0IG9mIGluaXRpYWwgYWxsb2NhdGlvbiBpbgorCQkJICogU2htZW1Jbml0SGFzaAor CQkJICovCisJCQlmaXJzdEVsZW1lbnQgPSAoSEFTSEVMRU1FTlQgKikgY3Vycl9vZmZzZXQ7 CisJCQljdXJyX29mZnNldCA9ICgoKGNoYXIgKikgY3Vycl9vZmZzZXQpICsgKHRlbXAgKiBl bGVtZW50U2l6ZSkpOworCQkJZWxlbWVudF9hZGQoaGFzaHAsIGZpcnN0RWxlbWVudCwgaSwg dGVtcCk7CiAJCX0KIAl9CiAKQEAgLTcwMSwzMCArNzM0LDExIEBAIGluaXRfaHRhYihIVEFC ICpoYXNocCwgbG9uZyBuZWxlbSkKIAkJZm9yIChpID0gMDsgaSA8IE5VTV9GUkVFTElTVFM7 IGkrKykKIAkJCVNwaW5Mb2NrSW5pdCgmKGhjdGwtPmZyZWVMaXN0W2ldLm11dGV4KSk7CiAK LQkvKgotCSAqIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUgbmV4dCBncmVhdGVyIHBvd2VyIG9m IHR3byBudW1iZXIgb2YgYnVja2V0cywKLQkgKiBhc3N1bWluZyBhIGRlc2lyZWQgbWF4aW11 bSBsb2FkIGZhY3RvciBvZiAxLgotCSAqLwotCW5idWNrZXRzID0gbmV4dF9wb3cyX2ludChu ZWxlbSk7Ci0KLQkvKgotCSAqIEluIGEgcGFydGl0aW9uZWQgdGFibGUsIG5idWNrZXRzIG11 c3QgYmUgYXQgbGVhc3QgZXF1YWwgdG8KLQkgKiBudW1fcGFydGl0aW9uczsgd2VyZSBpdCBs ZXNzLCBrZXlzIHdpdGggYXBwYXJlbnRseSBkaWZmZXJlbnQgcGFydGl0aW9uCi0JICogbnVt YmVycyB3b3VsZCBtYXAgdG8gdGhlIHNhbWUgYnVja2V0LCBicmVha2luZyBwYXJ0aXRpb24g aW5kZXBlbmRlbmNlLgotCSAqIChOb3JtYWxseSBuYnVja2V0cyB3aWxsIGJlIG11Y2ggYmln Z2VyOyB0aGlzIGlzIGp1c3QgYSBzYWZldHkgY2hlY2suKQotCSAqLwotCXdoaWxlIChuYnVj a2V0cyA8IGhjdGwtPm51bV9wYXJ0aXRpb25zKQotCQluYnVja2V0cyA8PD0gMTsKKwluc2Vn cyA9IGNvbXB1dGVfYnVja2V0c19hbmRfc2VncyhuZWxlbSwgJm5idWNrZXRzLCBoY3RsLT5u dW1fcGFydGl0aW9ucywgaGN0bC0+c3NpemUpOwogCiAJaGN0bC0+bWF4X2J1Y2tldCA9IGhj dGwtPmxvd19tYXNrID0gbmJ1Y2tldHMgLSAxOwogCWhjdGwtPmhpZ2hfbWFzayA9IChuYnVj a2V0cyA8PCAxKSAtIDE7CiAKLQkvKgotCSAqIEZpZ3VyZSBudW1iZXIgb2YgZGlyZWN0b3J5 IHNlZ21lbnRzIG5lZWRlZCwgcm91bmQgdXAgdG8gYSBwb3dlciBvZiAyCi0JICovCi0JbnNl Z3MgPSAobmJ1Y2tldHMgLSAxKSAvIGhjdGwtPnNzaXplICsgMTsKLQluc2VncyA9IG5leHRf cG93Ml9pbnQobnNlZ3MpOwotCiAJLyoKIAkgKiBNYWtlIHN1cmUgZGlyZWN0b3J5IGlzIGJp ZyBlbm91Z2guIElmIHByZS1hbGxvY2F0ZWQgZGlyZWN0b3J5IGlzIHRvbwogCSAqIHNtYWxs LCBjaG9rZSAoY2FsbGVyIHNjcmV3ZWQgdXApLgpAQCAtNzQxLDIyICs3NTUsMjEgQEAgaW5p dF9odGFiKEhUQUIgKmhhc2hwLCBsb25nIG5lbGVtKQogCWlmICghKGhhc2hwLT5kaXIpKQog CXsKIAkJQ3VycmVudER5bmFIYXNoQ3h0ID0gaGFzaHAtPmhjeHQ7Ci0JCWhhc2hwLT5kaXIg PSAoSEFTSFNFR01FTlQgKikKLQkJCWhhc2hwLT5hbGxvYyhoY3RsLT5kc2l6ZSAqIHNpemVv ZihIQVNIU0VHTUVOVCkpOwotCQlpZiAoIWhhc2hwLT5kaXIpCi0JCQlyZXR1cm4gZmFsc2U7 CisJCWhhc2hwLT5kaXIgPSAoSEFTSFNFR01FTlQgKikgKCgoY2hhciAqKSBoYXNocC0+aGN0 bCkgKyBzaXplb2YoSEFTSEhEUikpOwogCX0KIAogCS8qIEFsbG9jYXRlIGluaXRpYWwgc2Vn bWVudHMgKi8KKwlpID0gMDsKIAlmb3IgKHNlZ3AgPSBoYXNocC0+ZGlyOyBoY3RsLT5uc2Vn cyA8IG5zZWdzOyBoY3RsLT5uc2VncysrLCBzZWdwKyspCiAJewotCQkqc2VncCA9IHNlZ19h bGxvYyhoYXNocCk7Ci0JCWlmICgqc2VncCA9PSBOVUxMKQotCQkJcmV0dXJuIGZhbHNlOwot CX0KKwkJKnNlZ3AgPSAoSEFTSEJVQ0tFVCAqKSAoKChjaGFyICopIGhhc2hwLT5oY3RsKQor CQkJCQkJCQkrIHNpemVvZihIQVNISERSKQorCQkJCQkJCQkrIChoYXNocC0+aGN0bC0+ZHNp emUgKiBzaXplb2YoSEFTSFNFR01FTlQpKQorCQkJCQkJCQkrIChpICogc2l6ZW9mKEhBU0hC VUNLRVQpICogaGFzaHAtPnNzaXplKSk7CisJCU1lbVNldCgqc2VncCwgMCwgc2l6ZW9mKEhB U0hCVUNLRVQpICogaGFzaHAtPnNzaXplKTsKIAotCS8qIENob29zZSBudW1iZXIgb2YgZW50 cmllcyB0byBhbGxvY2F0ZSBhdCBhIHRpbWUgKi8KLQloY3RsLT5uZWxlbV9hbGxvYyA9IGNo b29zZV9uZWxlbV9hbGxvYyhoY3RsLT5lbnRyeXNpemUpOworCQlpID0gaSArIDE7CisJfQog CiAjaWZkZWYgSEFTSF9ERUJVRwogCWZwcmludGYoc3RkZXJyLCAiaW5pdF9odGFiOlxuJXMl cFxuJXMlbGRcbiVzJWxkXG4lcyVkXG4lcyVsZFxuJXMldVxuJXMleFxuJXMleFxuJXMlbGRc biIsCkBAIC04NTEsMTEgKzg2NCw2NCBAQCBoYXNoX3NlbGVjdF9kaXJzaXplKGxvbmcgbnVt X2VudHJpZXMpCiAgKiBhbmQgZm9yIHRoZSAobm9uIGV4cGFuc2libGUpIGRpcmVjdG9yeS4K ICAqLwogU2l6ZQotaGFzaF9nZXRfc2hhcmVkX3NpemUoSEFTSENUTCAqaW5mbywgaW50IGZs YWdzKQoraGFzaF9nZXRfaW5pdF9zaXplKGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFn cywgbG9uZyBpbml0X3NpemUsIGludCBuZWxlbV9hbGxvYykKIHsKLQlBc3NlcnQoZmxhZ3Mg JiBIQVNIX0RJUlNJWkUpOwotCUFzc2VydChpbmZvLT5kc2l6ZSA9PSBpbmZvLT5tYXhfZHNp emUpOwotCXJldHVybiBzaXplb2YoSEFTSEhEUikgKyBpbmZvLT5kc2l6ZSAqIHNpemVvZihI QVNIU0VHTUVOVCk7CisJaW50CQkJbmJ1Y2tldHM7CisJaW50CQkJbnNlZ3M7CisJaW50CQkJ bnVtX3BhcnRpdGlvbnM7CisJbG9uZwkJc3NpemU7CisJbG9uZwkJZHNpemU7CisJYm9vbAkJ ZWxlbWVudF9hbGxvYyA9IHRydWU7CisJU2l6ZQkJZWxlbWVudFNpemUgPSBNQVhBTElHTihz aXplb2YoSEFTSEVMRU1FTlQpKSArIE1BWEFMSUdOKGluZm8tPmVudHJ5c2l6ZSk7CisKKwkv KgorCSAqIEZvciBub24tc2hhcmVkIGhhc2ggdGFibGVzLCB0aGUgcmVxdWVzdGVkIG51bWJl ciBvZiBlbGVtZW50cworCSAqIGFyZSBhbGxvY2F0ZWQgb25seSBpZiB0aGV5IGFyZSBsZXNz IHRoYW4gbmVsZW1fYWxsb2MuCisJICogSW4gYW55IGNhc2UsIHRoZSBpbml0X3NpemUgc2hv dWxkIGJlIGVxdWFsIHRvIHRoZSBudW1iZXIgb2YKKwkgKiBlbGVtZW50cyBhZGRlZCB1c2lu ZyBlbGVtZW50X2FkZCgpIGluIGhhc2hfY3JlYXRlLgorCSAqLworCWlmICghKGZsYWdzICYg SEFTSF9TSEFSRURfTUVNKSkKKwl7CisJCWlmIChpbml0X3NpemUgPiBuZWxlbV9hbGxvYykK KwkJCWVsZW1lbnRfYWxsb2MgPSBmYWxzZTsKKwl9CisJZWxzZQorCXsKKwkJQXNzZXJ0KGZs YWdzICYgSEFTSF9ESVJTSVpFKTsKKwkJQXNzZXJ0KGluZm8tPmRzaXplID09IGluZm8tPm1h eF9kc2l6ZSk7CisJfQorCS8qIE5vbi1zaGFyZWQgaGFzaCB0YWJsZXMgbWF5IG5vdCBzcGVj aWZ5IGRpciBzaXplICovCisJaWYgKCEoZmxhZ3MgJiBIQVNIX0RJUlNJWkUpKQorCXsKKwkJ ZHNpemUgPSBERUZfRElSU0laRTsKKwl9CisJZWxzZQorCQlkc2l6ZSA9IGluZm8tPmRzaXpl OworCisJaWYgKGZsYWdzICYgSEFTSF9QQVJUSVRJT04pCisJeworCQludW1fcGFydGl0aW9u cyA9IGluZm8tPm51bV9wYXJ0aXRpb25zOworCisJCS8qIE51bWJlciBvZiBlbnRyaWVzIHNo b3VsZCBiZSBhdGxlYXN0IGVxdWFsIHRvIHRoZSBmcmVlbGlzdHMgKi8KKwkJaWYgKGluaXRf c2l6ZSA8IE5VTV9GUkVFTElTVFMpCisJCQlpbml0X3NpemUgPSBOVU1fRlJFRUxJU1RTOwor CX0KKwllbHNlCisJCW51bV9wYXJ0aXRpb25zID0gMDsKKworCWlmIChmbGFncyAmIEhBU0hf U0VHTUVOVCkKKwkJc3NpemUgPSBpbmZvLT5zc2l6ZTsKKwllbHNlCisJCXNzaXplID0gREVG X1NFR1NJWkU7CisKKwluc2VncyA9IGNvbXB1dGVfYnVja2V0c19hbmRfc2Vncyhpbml0X3Np emUsICZuYnVja2V0cywgbnVtX3BhcnRpdGlvbnMsIHNzaXplKTsKKworCWlmICghZWxlbWVu dF9hbGxvYykKKwkJaW5pdF9zaXplID0gMDsKKworCXJldHVybiBzaXplb2YoSEFTSEhEUikg KyBkc2l6ZSAqIHNpemVvZihIQVNIU0VHTUVOVCkgKworCQkrc2l6ZW9mKEhBU0hCVUNLRVQp ICogc3NpemUgKiBuc2VncworCQkrIGluaXRfc2l6ZSAqIGVsZW1lbnRTaXplOwogfQogCiAK QEAgLTEyODUsNyArMTM1MSw4IEBAIGdldF9oYXNoX2VudHJ5KEhUQUIgKmhhc2hwLCBpbnQg ZnJlZWxpc3RfaWR4KQogCQkgKiBGYWlsaW5nIGJlY2F1c2UgdGhlIG5lZWRlZCBlbGVtZW50 IGlzIGluIGEgZGlmZmVyZW50IGZyZWVsaXN0IGlzCiAJCSAqIG5vdCBhY2NlcHRhYmxlLgog CQkgKi8KLQkJaWYgKCFlbGVtZW50X2FsbG9jKGhhc2hwLCBoY3RsLT5uZWxlbV9hbGxvYywg ZnJlZWxpc3RfaWR4KSkKKwkJbmV3RWxlbWVudCA9IGVsZW1lbnRfYWxsb2MoaGFzaHAsIGhj dGwtPm5lbGVtX2FsbG9jKTsKKwkJaWYgKG5ld0VsZW1lbnQgPT0gTlVMTCkKIAkJewogCQkJ aW50CQkJYm9ycm93X2Zyb21faWR4OwogCkBAIC0xMzIyLDYgKzEzODksNyBAQCBnZXRfaGFz aF9lbnRyeShIVEFCICpoYXNocCwgaW50IGZyZWVsaXN0X2lkeCkKIAkJCS8qIG5vIGVsZW1l bnRzIGF2YWlsYWJsZSB0byBib3Jyb3cgZWl0aGVyLCBzbyBvdXQgb2YgbWVtb3J5ICovCiAJ CQlyZXR1cm4gTlVMTDsKIAkJfQorCQllbGVtZW50X2FkZChoYXNocCwgbmV3RWxlbWVudCwg ZnJlZWxpc3RfaWR4LCBoY3RsLT5uZWxlbV9hbGxvYyk7CiAJfQogCiAJLyogcmVtb3ZlIGVu dHJ5IGZyb20gZnJlZWxpc3QsIGJ1bXAgbmVudHJpZXMgKi8KQEAgLTE3MDIsMjggKzE3NzAs MzggQEAgc2VnX2FsbG9jKEhUQUIgKmhhc2hwKQogLyoKICAqIGFsbG9jYXRlIHNvbWUgbmV3 IGVsZW1lbnRzIGFuZCBsaW5rIHRoZW0gaW50byB0aGUgaW5kaWNhdGVkIGZyZWUgbGlzdAog ICovCi1zdGF0aWMgYm9vbAotZWxlbWVudF9hbGxvYyhIVEFCICpoYXNocCwgaW50IG5lbGVt LCBpbnQgZnJlZWxpc3RfaWR4KQorc3RhdGljIEhBU0hFTEVNRU5UICoKK2VsZW1lbnRfYWxs b2MoSFRBQiAqaGFzaHAsIGludCBuZWxlbSkKIHsKIAlIQVNISERSICAgICpoY3RsID0gaGFz aHAtPmhjdGw7CiAJU2l6ZQkJZWxlbWVudFNpemU7Ci0JSEFTSEVMRU1FTlQgKmZpcnN0RWxl bWVudDsKLQlIQVNIRUxFTUVOVCAqdG1wRWxlbWVudDsKLQlIQVNIRUxFTUVOVCAqcHJldkVs ZW1lbnQ7Ci0JaW50CQkJaTsKKwlIQVNIRUxFTUVOVCAqZmlyc3RFbGVtZW50ID0gTlVMTDsK IAogCWlmIChoYXNocC0+aXNmaXhlZCkKLQkJcmV0dXJuIGZhbHNlOworCQlyZXR1cm4gTlVM TDsKIAogCS8qIEVhY2ggZWxlbWVudCBoYXMgYSBIQVNIRUxFTUVOVCBoZWFkZXIgcGx1cyB1 c2VyIGRhdGEuICovCiAJZWxlbWVudFNpemUgPSBNQVhBTElHTihzaXplb2YoSEFTSEVMRU1F TlQpKSArIE1BWEFMSUdOKGhjdGwtPmVudHJ5c2l6ZSk7Ci0KIAlDdXJyZW50RHluYUhhc2hD eHQgPSBoYXNocC0+aGN4dDsKIAlmaXJzdEVsZW1lbnQgPSAoSEFTSEVMRU1FTlQgKikgaGFz aHAtPmFsbG9jKG5lbGVtICogZWxlbWVudFNpemUpOwogCiAJaWYgKCFmaXJzdEVsZW1lbnQp Ci0JCXJldHVybiBmYWxzZTsKKwkJcmV0dXJuIE5VTEw7CisKKwlyZXR1cm4gZmlyc3RFbGVt ZW50OworfQogCitzdGF0aWMgdm9pZAorZWxlbWVudF9hZGQoSFRBQiAqaGFzaHAsIEhBU0hF TEVNRU5UICpmaXJzdEVsZW1lbnQsIGludCBmcmVlbGlzdF9pZHgsIGludCBuZWxlbSkKK3sK KwlIQVNISERSICAgICpoY3RsID0gaGFzaHAtPmhjdGw7CisJU2l6ZQkJZWxlbWVudFNpemU7 CisJSEFTSEVMRU1FTlQgKnRtcEVsZW1lbnQ7CisJSEFTSEVMRU1FTlQgKnByZXZFbGVtZW50 OworCWludAkJCWk7CisKKwkvKiBFYWNoIGVsZW1lbnQgaGFzIGEgSEFTSEVMRU1FTlQgaGVh ZGVyIHBsdXMgdXNlciBkYXRhLiAqLworCWVsZW1lbnRTaXplID0gTUFYQUxJR04oc2l6ZW9m KEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTihoY3RsLT5lbnRyeXNpemUpOwogCS8qIHByZXBh cmUgdG8gbGluayBhbGwgdGhlIG5ldyBlbnRyaWVzIGludG8gdGhlIGZyZWVsaXN0ICovCiAJ cHJldkVsZW1lbnQgPSBOVUxMOwogCXRtcEVsZW1lbnQgPSBmaXJzdEVsZW1lbnQ7CkBAIC0x NzQ0LDggKzE4MjIsNiBAQCBlbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0s IGludCBmcmVlbGlzdF9pZHgpCiAKIAlpZiAoSVNfUEFSVElUSU9ORUQoaGN0bCkpCiAJCVNw aW5Mb2NrUmVsZWFzZSgmaGN0bC0+ZnJlZUxpc3RbZnJlZWxpc3RfaWR4XS5tdXRleCk7Ci0K LQlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTE5NTcsMyArMjAzMywzMiBAQCBBdEVPU3Vi WGFjdF9IYXNoVGFibGVzKGJvb2wgaXNDb21taXQsIGludCBuZXN0RGVwdGgpCiAJCX0KIAl9 CiB9CisKK3N0YXRpYyBpbnQKK2NvbXB1dGVfYnVja2V0c19hbmRfc2Vncyhsb25nIG5lbGVt LCBpbnQgKm5idWNrZXRzLCBsb25nIG51bV9wYXJ0aXRpb25zLCBsb25nIHNzaXplKQorewor CWludAkJCW5zZWdzOworCisJLyoKKwkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5leHQg Z3JlYXRlciBwb3dlciBvZiB0d28gbnVtYmVyIG9mIGJ1Y2tldHMsCisJICogYXNzdW1pbmcg YSBkZXNpcmVkIG1heGltdW0gbG9hZCBmYWN0b3Igb2YgMS4KKwkgKi8KKwkqbmJ1Y2tldHMg PSBuZXh0X3BvdzJfaW50KG5lbGVtKTsKKworCS8qCisJICogSW4gYSBwYXJ0aXRpb25lZCB0 YWJsZSwgbmJ1Y2tldHMgbXVzdCBiZSBhdCBsZWFzdCBlcXVhbCB0bworCSAqIG51bV9wYXJ0 aXRpb25zOyB3ZXJlIGl0IGxlc3MsIGtleXMgd2l0aCBhcHBhcmVudGx5IGRpZmZlcmVudCBw YXJ0aXRpb24KKwkgKiBudW1iZXJzIHdvdWxkIG1hcCB0byB0aGUgc2FtZSBidWNrZXQsIGJy ZWFraW5nIHBhcnRpdGlvbiBpbmRlcGVuZGVuY2UuCisJICogKE5vcm1hbGx5IG5idWNrZXRz IHdpbGwgYmUgbXVjaCBiaWdnZXI7IHRoaXMgaXMganVzdCBhIHNhZmV0eSBjaGVjay4pCisJ ICovCisJd2hpbGUgKCgqbmJ1Y2tldHMpIDwgbnVtX3BhcnRpdGlvbnMpCisJCSgqbmJ1Y2tl dHMpIDw8PSAxOworCisKKwkvKgorCSAqIEZpZ3VyZSBudW1iZXIgb2YgZGlyZWN0b3J5IHNl Z21lbnRzIG5lZWRlZCwgcm91bmQgdXAgdG8gYSBwb3dlciBvZiAyCisJICovCisJbnNlZ3Mg PSAoKCpuYnVja2V0cykgLSAxKSAvIHNzaXplICsgMTsKKwluc2VncyA9IG5leHRfcG93Ml9p bnQobnNlZ3MpOworCXJldHVybiBuc2VnczsKK30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3V0aWxzL2hzZWFyY2guaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAppbmRleCA5 MzJjYzRmMzRkOS4uNWU1MTNjODExNmEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxz L2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKQEAgLTE1MSw3 ICsxNTEsOCBAQCBleHRlcm4gdm9pZCBoYXNoX3NlcV90ZXJtKEhBU0hfU0VRX1NUQVRVUyAq c3RhdHVzKTsKIGV4dGVybiB2b2lkIGhhc2hfZnJlZXplKEhUQUIgKmhhc2hwKTsKIGV4dGVy biBTaXplIGhhc2hfZXN0aW1hdGVfc2l6ZShsb25nIG51bV9lbnRyaWVzLCBTaXplIGVudHJ5 c2l6ZSk7CiBleHRlcm4gbG9uZyBoYXNoX3NlbGVjdF9kaXJzaXplKGxvbmcgbnVtX2VudHJp ZXMpOwotZXh0ZXJuIFNpemUgaGFzaF9nZXRfc2hhcmVkX3NpemUoSEFTSENUTCAqaW5mbywg aW50IGZsYWdzKTsKK2V4dGVybiBTaXplIGhhc2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNI Q1RMICppbmZvLCBpbnQgZmxhZ3MsCisJCQkJCWxvbmcgaW5pdF9zaXplLCBpbnQgbmVsZW1f YWxsb2MpOwogZXh0ZXJuIHZvaWQgQXRFT1hhY3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0 KTsKIGV4dGVybiB2b2lkIEF0RU9TdWJYYWN0X0hhc2hUYWJsZXMoYm9vbCBpc0NvbW1pdCwg aW50IG5lc3REZXB0aCk7CiAKLS0gCjIuNDkuMAoK --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/x-patch; charset=UTF-8; name="v20250324-0002-review.patch" Content-Disposition: attachment; filename="v20250324-0002-review.patch" Content-Transfer-Encoding: base64 RnJvbSBkNzM3YzQwMzNhOTJmMDcwYzNjM2FkNzkxZmRlZjJjOGUxMzMzOTRmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU2F0LCAyMiBNYXIgMjAyNSAxMjoyMDo0NCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjUwMzI0IDIvNl0gcmV2aWV3CgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bWVtLmMgICB8ICAgNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIHwg MTEyICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvdXRpbHMv aHNlYXJjaC5oICAgICAgIHwgICA0ICstCiAzIGZpbGVzIGNoYW5nZWQsIDgxIGluc2VydGlv bnMoKyksIDM5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4 IGQ4YWVkMGJmYWFmLi41MWFkNjhjYzc5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CkBAIC0zNDUsOSArMzQ1LDExIEBAIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJ CS8qIHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwogCWluZm9QLT5hbGxv YyA9IFNobWVtQWxsb2NOb0Vycm9yOwogCWhhc2hfZmxhZ3MgfD0gSEFTSF9TSEFSRURfTUVN IHwgSEFTSF9BTExPQyB8IEhBU0hfRElSU0laRTsKIAorCS8qIHJldmlldzogSSBkb24ndCBz ZWUgYSByZWFzb24gdG8gcmVuYW1lIHRoaXMgdG8gX2luaXRfICovCisKIAkvKiBsb29rIGl0 IHVwIGluIHRoZSBzaG1lbSBpbmRleCAqLwogCWxvY2F0aW9uID0gU2htZW1Jbml0U3RydWN0 KG5hbWUsCi0JCQkJCQkJICAgaGFzaF9nZXRfaW5pdF9zaXplKGluZm9QLCBoYXNoX2ZsYWdz LCBpbml0X3NpemUsIDApLAorCQkJCQkJCSAgIGhhc2hfZ2V0X3NoYXJlZF9zaXplKGluZm9Q LCBoYXNoX2ZsYWdzLCBpbml0X3NpemUsIDApLAogCQkJCQkJCSAgICZmb3VuZCk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCmluZGV4IGJhNzg1ZjFkNWYyLi45Nzky Mzc3ZDU2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYwpAQCAtMjYwLDYgKzI2 MCwzMCBAQCBzdGF0aWMgbG9uZyBoYXNoX2FjY2Vzc2VzLAogCQkJaGFzaF9leHBhbnNpb25z OwogI2VuZGlmCiAKKy8qIHJldmlldzogc2hvdWxkbid0IHRoaXMgaGF2ZSBzb21lIE1BWEFM SUdOcz8gKi8KKyNkZWZpbmUgSEFTSF9FTEVNRU5UU19PRkZTRVQoaGN0bCwgbnNlZ3MpIFwK Kwkoc2l6ZW9mKEhBU0hIRFIpICsgXAorCSAoKGhjdGwpLT5kc2l6ZSAqIHNpemVvZihIQVNI U0VHTUVOVCkpICsgXAorCSAoKGhjdGwpLT5zc2l6ZSAqIChuc2VncykgKiBzaXplb2YoSEFT SEJVQ0tFVCkpKQorCisjZGVmaW5lIEhBU0hfRUxFTUVOVFMoaGFzaHAsIG5zZWdzKSBcCisJ KChjaGFyICopIChoYXNocCktPmhjdGwgKyBIQVNIX0VMRU1FTlRTX09GRlNFVCgoaGFzaHAp LT5oY3RsLCBuc2VncykpCisKKyNkZWZpbmUgSEFTSF9TRUdNRU5UX09GRlNFVChoY3RsLCBp ZHgpIFwKKwkoc2l6ZW9mKEhBU0hIRFIpICsgXAorCSAoKGhjdGwpLT5kc2l6ZSAqIHNpemVv ZihIQVNIU0VHTUVOVCkpICsgXAorCSAoKGhjdGwpLT5zc2l6ZSAqIChpZHgpICogc2l6ZW9m KEhBU0hCVUNLRVQpKSkKKworI2RlZmluZSBIQVNIX1NFR01FTlRfUFRSKGhhc2hwLCBpZHgp IFwKKwkoSEFTSFNFR01FTlQpICgoY2hhciAqKSAoaGFzaHApLT5oY3RsICsgSEFTSF9TRUdN RU5UX09GRlNFVCgoaGFzaHApLT5oY3RsLCAoaWR4KSkpCisKKyNkZWZpbmUgSEFTSF9TRUdN RU5UX1NJWkUoaGFzaHApCSgoaGFzaHApLT5zc2l6ZSAqIHNpemVvZihIQVNIQlVDS0VUKSkK KworI2RlZmluZQlIQVNIX0RJUkVDVE9SWShoYXNocCkJKEhBU0hTRUdNRU5UICopICgoKGNo YXIgKikgKGhhc2hwKS0+aGN0bCkgKyBzaXplb2YoSEFTSEhEUikpCisKKyNkZWZpbmUgSEFT SF9FTEVNRU5UX05FWFQoaGN0bCwgbnVtLCBwdHIpIFwKKwkoKGNoYXIgKikgKHB0cikgKyAo KG51bSkgKiAoTUFYQUxJR04oc2l6ZW9mKEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTigoaGN0 bCktPmVudHJ5c2l6ZSkpKSkKKwogLyoKICAqIFByaXZhdGUgZnVuY3Rpb24gcHJvdG90eXBl cwogICovCkBAIC0yODEsOSArMzA1LDE2IEBAIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3NlcV9z Y2FuKEhUQUIgKmhhc2hwKTsKIHN0YXRpYyB2b2lkIGRlcmVnaXN0ZXJfc2VxX3NjYW4oSFRB QiAqaGFzaHApOwogc3RhdGljIGJvb2wgaGFzX3NlcV9zY2FucyhIVEFCICpoYXNocCk7CiAK LXN0YXRpYyBpbnQJY29tcHV0ZV9idWNrZXRzX2FuZF9zZWdzKGxvbmcgbmVsZW0sIGludCAq bmJ1Y2tldHMsCi0JCQkJCQkJCQkgbG9uZyBudW1fcGFydGl0aW9ucywgbG9uZyBzc2l6ZSk7 Ci1zdGF0aWMgdm9pZCBlbGVtZW50X2FkZChIVEFCICpoYXNocCwgSEFTSEVMRU1FTlQgKmZp cnN0RWxlbWVudCwgaW50IGZyZWVsaXN0X2lkeCwgaW50IG5lbGVtKTsKKy8qCisgKiByZXZp ZXc6IGl0J3MgYSBiaXQgd2VpcmQgdG8gaGF2ZSBhIGZ1bmN0aW9uIHRoYXQgY2FsY3VsYXRl cyB0d28gdmFsdWVzLAorICogYnV0IHJldHVybnMgb25lIHRocm91Z2ggYSBwb2ludGVyIGFu ZCBhbm90aGVyIGFzIGEgcmVndWxhciByZXR2YWwuIHNlZQorICogRXhlY0Nob29zZUhhc2hU YWJsZVNpemUgZm9yIGEgYmV0dGVyIGFwcHJvYWNoLgorICovCitzdGF0aWMgdm9pZAljb21w dXRlX2J1Y2tldHNfYW5kX3NlZ3MobG9uZyBuZWxlbSwgbG9uZyBudW1fcGFydGl0aW9ucywK KwkJCQkJCQkJCSBsb25nIHNzaXplLCAvKiBzZWdtZW50IHNpemUgKi8KKwkJCQkJCQkJCSBp bnQgKm5idWNrZXRzLCBpbnQgKm5zZWdtZW50cyk7CitzdGF0aWMgdm9pZCBlbGVtZW50X2Fk ZChIVEFCICpoYXNocCwgSEFTSEVMRU1FTlQgKmZpcnN0RWxlbWVudCwKKwkJCQkJCWludCBm cmVlbGlzdF9pZHgsIGludCBuZWxlbSk7CiAKIC8qCiAgKiBtZW1vcnkgYWxsb2NhdGlvbiBz dXBwb3J0CkBAIC01MTEsNyArNTQyLDcgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFi bmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCQlo YXNocC0+aXNzaGFyZWQgPSBmYWxzZTsKIAl9CiAKLQkvKiBDaG9vc2UgbnVtYmVyIG9mIGVu dHJpZXMgdG8gYWxsb2NhdGUgYXQgYSB0aW1lICovCisJLyogQ2hvb3NlIHRoZSBudW1iZXIg b2YgZW50cmllcyB0byBhbGxvY2F0ZSBhdCBhIHRpbWUuICovCiAJbmVsZW1fYmF0Y2ggPSBj aG9vc2VfbmVsZW1fYWxsb2MoaW5mby0+ZW50cnlzaXplKTsKIAogCS8qCkBAIC01MjEsNyAr NTUyLDcgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxlbSwg Y29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCSAqLwogCWlmICghaGFzaHAtPmhj dGwpCiAJewotCQlTaXplCQlzaXplID0gaGFzaF9nZXRfaW5pdF9zaXplKGluZm8sIGZsYWdz LCBuZWxlbSwgbmVsZW1fYmF0Y2gpOworCQlTaXplCXNpemUgPSBoYXNoX2dldF9zaGFyZWRf c2l6ZShpbmZvLCBmbGFncywgbmVsZW0sIG5lbGVtX2JhdGNoKTsKIAogCQloYXNocC0+aGN0 bCA9IChIQVNISERSICopIGhhc2hwLT5hbGxvYyhzaXplKTsKIAkJaWYgKCFoYXNocC0+aGN0 bCkKQEAgLTU3Miw2ICs2MDMsNyBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1l LCBsb25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJaGN0bC0+ a2V5c2l6ZSA9IGluZm8tPmtleXNpemU7CiAJaGN0bC0+ZW50cnlzaXplID0gaW5mby0+ZW50 cnlzaXplOwogCisJLyogcmVtZW1iZXIgaG93IG1hbnkgZWxlbWVudHMgdG8gYWxsb2NhdGUg YXQgb25jZSAqLwogCWhjdGwtPm5lbGVtX2FsbG9jID0gbmVsZW1fYmF0Y2g7CiAKIAkvKiBt YWtlIGxvY2FsIGNvcGllcyBvZiBoZWF2aWx5LXVzZWQgY29uc3RhbnQgZmllbGRzICovCkBA IC01OTgsNyArNjMwLDcgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9u ZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCQkJCQlmcmVlbGlz dF9wYXJ0aXRpb25zLAogCQkJCQluZWxlbV9hbGxvYywKIAkJCQkJbmVsZW1fYWxsb2NfZmly c3Q7Ci0JCXZvaWQJICAgKmN1cnJfb2Zmc2V0ID0gTlVMTDsKKwkJdm9pZAkgICAqcHRyID0g TlVMTDsJCS8qIFhYWCBpdCdzIG5vdCBvZmZzZXQsIGNsZWFybHkgKi8KIAkJaW50CQkJbnNl Z3M7CiAJCWludAkJCW5idWNrZXRzOwogCkBAIC02MTIsMTMgKzY0NCwxOCBAQCBoYXNoX2Ny ZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBsb25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICpp bmZvLCBpbnQgZmxhZ3MpCiAJCQlmcmVlbGlzdF9wYXJ0aXRpb25zID0gMTsKIAogCQkvKgot CQkgKiBJZiB0YWJsZSBpcyBzaGFyZWQsIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGF0IHdoaWNo IHRvIGZpbmQgdGhlIHRoZQotCQkgKiBmaXJzdCBwYXJ0aXRpb24gb2YgZWxlbWVudHMKKwkJ ICogRm9yIHNoYXJlZCBoYXNoIHRhYmxlcywgd2UgbmVlZCB0byBkZXRlcm1pbmUgdGhlIG9m ZnNldCBmb3IgdGhlCisJCSAqIGZpcnN0IHBhcnRpdGlvbiBvZiBlbGVtZW50cy4gV2UgaGF2 ZSB0byBza2lwIHNwYWNlIGZvciB0aGUgaGVhZGVyLAorCQkgKiBzZWdtZW50cyBhbmQgYnVj a2V0cy4KKwkJICoKKwkgCSAqIFhYWCBjYW4gd2UgcmVseSBvbiB0aGlzIG1hdGNoaW5nIHRo ZSBjYWxjdWxhdGlvbiBpbiBoYXNoX2dldF9zaGFyZWRfc2l6ZT8KKwkJICogb3IgY291bGQv c2hvdWxkIHdlIGFkZCBzb21lIGFzc2VydHM/IENhbiB3ZSBoYXZlIGF0IGxlYXN0IHNvbWUg c2FuaXR5IGNoZWNrcworCQkgKiBvbiBuYnVja2V0cy9uc2Vncz8KIAkJICovCisJCWNvbXB1 dGVfYnVja2V0c19hbmRfc2VncyhuZWxlbSwgaGN0bC0+bnVtX3BhcnRpdGlvbnMsIGhjdGwt PnNzaXplLAorCQkJCQkJCQkgJm5idWNrZXRzLCAmbnNlZ3MpOwogCi0JCW5zZWdzID0gY29t cHV0ZV9idWNrZXRzX2FuZF9zZWdzKG5lbGVtLCAmbmJ1Y2tldHMsIGhjdGwtPm51bV9wYXJ0 aXRpb25zLCBoY3RsLT5zc2l6ZSk7Ci0KLQkJY3Vycl9vZmZzZXQgPSAoKChjaGFyICopIGhh c2hwLT5oY3RsKSArIHNpemVvZihIQVNISERSKSArIChoY3RsLT5kc2l6ZSAqIHNpemVvZihI QVNIU0VHTUVOVCkpICsgKHNpemVvZihIQVNIQlVDS0VUKSAqIGhjdGwtPnNzaXplICogbnNl Z3MpKTsKKwkJcHRyID0gSEFTSF9FTEVNRU5UUyhoYXNocCwgbnNlZ3MpOwogCiAJCW5lbGVt X2FsbG9jID0gbmVsZW0gLyBmcmVlbGlzdF9wYXJ0aXRpb25zOwogCQlpZiAobmVsZW1fYWxs b2MgPD0gMCkKQEAgLTYzNywxNiArNjc0LDE1IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIg KnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykK IAkJZm9yIChpID0gMDsgaSA8IGZyZWVsaXN0X3BhcnRpdGlvbnM7IGkrKykKIAkJewogCQkJ aW50CQkJdGVtcCA9IChpID09IDApID8gbmVsZW1fYWxsb2NfZmlyc3QgOiBuZWxlbV9hbGxv YzsKLQkJCUhBU0hFTEVNRU5UICpmaXJzdEVsZW1lbnQ7Ci0JCQlTaXplCQllbGVtZW50U2l6 ZSA9IE1BWEFMSUdOKHNpemVvZihIQVNIRUxFTUVOVCkpICsgTUFYQUxJR04oaGN0bC0+ZW50 cnlzaXplKTsKIAogCQkJLyoKLQkJCSAqIE1lbW9yeSBpcyBhbGxvY2F0ZWQgYXMgcGFydCBv ZiBpbml0aWFsIGFsbG9jYXRpb24gaW4KLQkJCSAqIFNobWVtSW5pdEhhc2gKKwkJCSAqIE1l bW9yeSBpcyBhbGxvY2F0ZWQgYXMgcGFydCBvZiBhbGxvY2F0aW9uIGluIFNobWVtSW5pdEhh c2gsIHdlCisJCQkgKiBqdXN0IG5lZWQgdG8gc3BsaXQgdGhhdCBhbGxvY2F0aW9uIHBlci1i YXRjaCBmcmVlbGlzdHMuCisJCQkgKgorCQkJICogcmV2aWV3OiB3aHkgZG8gd2UgaW52ZXJ0 IHRoZSBhcmd1bWVudCBvcmRlcj8KIAkJCSAqLwotCQkJZmlyc3RFbGVtZW50ID0gKEhBU0hF TEVNRU5UICopIGN1cnJfb2Zmc2V0OwotCQkJY3Vycl9vZmZzZXQgPSAoKChjaGFyICopIGN1 cnJfb2Zmc2V0KSArICh0ZW1wICogZWxlbWVudFNpemUpKTsKLQkJCWVsZW1lbnRfYWRkKGhh c2hwLCBmaXJzdEVsZW1lbnQsIGksIHRlbXApOworCQkJZWxlbWVudF9hZGQoaGFzaHAsIChI QVNIRUxFTUVOVCAqKSBwdHIsIGksIHRlbXApOworCQkJcHRyID0gSEFTSF9FTEVNRU5UX05F WFQoaGN0bCwgdGVtcCwgcHRyKTsKIAkJfQogCX0KIApAQCAtNzM0LDcgKzc3MCw4IEBAIGlu aXRfaHRhYihIVEFCICpoYXNocCwgbG9uZyBuZWxlbSkKIAkJZm9yIChpID0gMDsgaSA8IE5V TV9GUkVFTElTVFM7IGkrKykKIAkJCVNwaW5Mb2NrSW5pdCgmKGhjdGwtPmZyZWVMaXN0W2ld Lm11dGV4KSk7CiAKLQluc2VncyA9IGNvbXB1dGVfYnVja2V0c19hbmRfc2VncyhuZWxlbSwg Jm5idWNrZXRzLCBoY3RsLT5udW1fcGFydGl0aW9ucywgaGN0bC0+c3NpemUpOworCWNvbXB1 dGVfYnVja2V0c19hbmRfc2VncyhuZWxlbSwgaGN0bC0+bnVtX3BhcnRpdGlvbnMsIGhjdGwt PnNzaXplLAorCQkJCQkJCSAmbmJ1Y2tldHMsICZuc2Vncyk7CiAKIAloY3RsLT5tYXhfYnVj a2V0ID0gaGN0bC0+bG93X21hc2sgPSBuYnVja2V0cyAtIDE7CiAJaGN0bC0+aGlnaF9tYXNr ID0gKG5idWNrZXRzIDw8IDEpIC0gMTsKQEAgLTc1NSwyMiArNzkyLDE5IEBAIGluaXRfaHRh YihIVEFCICpoYXNocCwgbG9uZyBuZWxlbSkKIAlpZiAoIShoYXNocC0+ZGlyKSkKIAl7CiAJ CUN1cnJlbnREeW5hSGFzaEN4dCA9IGhhc2hwLT5oY3h0OwotCQloYXNocC0+ZGlyID0gKEhB U0hTRUdNRU5UICopICgoKGNoYXIgKikgaGFzaHAtPmhjdGwpICsgc2l6ZW9mKEhBU0hIRFIp KTsKKwkJaGFzaHAtPmRpciA9IEhBU0hfRElSRUNUT1JZKGhhc2hwKTsKIAl9CiAKIAkvKiBB bGxvY2F0ZSBpbml0aWFsIHNlZ21lbnRzICovCiAJaSA9IDA7CiAJZm9yIChzZWdwID0gaGFz aHAtPmRpcjsgaGN0bC0+bnNlZ3MgPCBuc2VnczsgaGN0bC0+bnNlZ3MrKywgc2VncCsrKQog CXsKLQkJKnNlZ3AgPSAoSEFTSEJVQ0tFVCAqKSAoKChjaGFyICopIGhhc2hwLT5oY3RsKQot CQkJCQkJCQkrIHNpemVvZihIQVNISERSKQotCQkJCQkJCQkrIChoYXNocC0+aGN0bC0+ZHNp emUgKiBzaXplb2YoSEFTSFNFR01FTlQpKQotCQkJCQkJCQkrIChpICogc2l6ZW9mKEhBU0hC VUNLRVQpICogaGFzaHAtPnNzaXplKSk7Ci0JCU1lbVNldCgqc2VncCwgMCwgc2l6ZW9mKEhB U0hCVUNLRVQpICogaGFzaHAtPnNzaXplKTsKLQotCQlpID0gaSArIDE7CisJCSpzZWdwID0g SEFTSF9TRUdNRU5UX1BUUihoYXNocCwgaSsrKTsKKwkJTWVtU2V0KCpzZWdwLCAwLCBIQVNI X1NFR01FTlRfU0laRShoYXNocCkpOwogCX0KIAorCUFzc2VydChpID09IG5zZWdzKTsKKwog I2lmZGVmIEhBU0hfREVCVUcKIAlmcHJpbnRmKHN0ZGVyciwgImluaXRfaHRhYjpcbiVzJXBc biVzJWxkXG4lcyVsZFxuJXMlZFxuJXMlbGRcbiVzJXVcbiVzJXhcbiVzJXhcbiVzJWxkXG4i LAogCQkJIlRBQkxFIFBPSU5URVIgICAiLCBoYXNocCwKQEAgLTg2Miw5ICs4OTYsMTQgQEAg aGFzaF9zZWxlY3RfZGlyc2l6ZShsb25nIG51bV9lbnRyaWVzKQogICogQ29tcHV0ZSB0aGUg cmVxdWlyZWQgaW5pdGlhbCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgYSBzaGFyZWQtbWVtb3J5 CiAgKiBoYXNodGFibGUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIFdlIG5lZWQgc3Bh Y2UgZm9yIHRoZSBIQVNISERSCiAgKiBhbmQgZm9yIHRoZSAobm9uIGV4cGFuc2libGUpIGRp cmVjdG9yeS4KKyAqCisgKiByZXZpZXc6IHdoeSByZW5hbWUgdGhpcyB0byAiaW5pdCIKKyAq IHJldmlldzogYWxzbywgd2h5IGFkZGluZyB0aGUgImNvbnN0Ij8KKyAqIHJldmlldzogdGhl IGNvbW1lbnQgc2hvdWxkIHJlYWxseSBleHBsYWluIHRoZSBhcmd1bWVudHMsIGUuZy4gd2hh dAorICogaXMgbmVsZW1fYWxsb2MgZm9yIGlzIG5vdCBvYnZpb3VzPwogICovCiBTaXplCi1o YXNoX2dldF9pbml0X3NpemUoY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzLCBsb25n IGluaXRfc2l6ZSwgaW50IG5lbGVtX2FsbG9jKQoraGFzaF9nZXRfc2hhcmVkX3NpemUoY29u c3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzLCBsb25nIGluaXRfc2l6ZSwgaW50IG5lbGVt X2FsbG9jKQogewogCWludAkJCW5idWNrZXRzOwogCWludAkJCW5zZWdzOwpAQCAtOTE0LDcg Kzk1Myw4IEBAIGhhc2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQg ZmxhZ3MsIGxvbmcgaW5pdF9zaXplLCBpbnQgbmVsZW1fYWxsCiAJZWxzZQogCQlzc2l6ZSA9 IERFRl9TRUdTSVpFOwogCi0JbnNlZ3MgPSBjb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MoaW5p dF9zaXplLCAmbmJ1Y2tldHMsIG51bV9wYXJ0aXRpb25zLCBzc2l6ZSk7CisJY29tcHV0ZV9i dWNrZXRzX2FuZF9zZWdzKGluaXRfc2l6ZSwgbnVtX3BhcnRpdGlvbnMsIHNzaXplLAorCQkJ CQkJCSAmbmJ1Y2tldHMsICZuc2Vncyk7CiAKIAlpZiAoIWVsZW1lbnRfYWxsb2MpCiAJCWlu aXRfc2l6ZSA9IDA7CkBAIC0xNzkxLDYgKzE4MzEsNyBAQCBlbGVtZW50X2FsbG9jKEhUQUIg Kmhhc2hwLCBpbnQgbmVsZW0pCiAJcmV0dXJuIGZpcnN0RWxlbWVudDsKIH0KIAorLyogcmV2 aWV3OiBjb21tZW50IG5lZWRlZCwgaG93IGlzIHRoZSB3b3JrIGRpdmlkZWQgYmV0d2VlbiBl bGVtZW50X2FsbG9jIGFuZCB0aGlzPyAqLwogc3RhdGljIHZvaWQKIGVsZW1lbnRfYWRkKEhU QUIgKmhhc2hwLCBIQVNIRUxFTUVOVCAqZmlyc3RFbGVtZW50LCBpbnQgZnJlZWxpc3RfaWR4 LCBpbnQgbmVsZW0pCiB7CkBAIC0yMDM0LDExICsyMDc1LDExIEBAIEF0RU9TdWJYYWN0X0hh c2hUYWJsZXMoYm9vbCBpc0NvbW1pdCwgaW50IG5lc3REZXB0aCkKIAl9CiB9CiAKLXN0YXRp YyBpbnQKLWNvbXB1dGVfYnVja2V0c19hbmRfc2Vncyhsb25nIG5lbGVtLCBpbnQgKm5idWNr ZXRzLCBsb25nIG51bV9wYXJ0aXRpb25zLCBsb25nIHNzaXplKQorLyogcmV2aWV3OiBjb21t ZW50IG5lZWRlZCAqLworc3RhdGljIHZvaWQKK2NvbXB1dGVfYnVja2V0c19hbmRfc2Vncyhs b25nIG5lbGVtLCBsb25nIG51bV9wYXJ0aXRpb25zLCBsb25nIHNzaXplLAorCQkJCQkJIGlu dCAqbmJ1Y2tldHMsIGludCAqbnNlZ21lbnRzKQogewotCWludAkJCW5zZWdzOwotCiAJLyoK IAkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5leHQgZ3JlYXRlciBwb3dlciBvZiB0d28g bnVtYmVyIG9mIGJ1Y2tldHMsCiAJICogYXNzdW1pbmcgYSBkZXNpcmVkIG1heGltdW0gbG9h ZCBmYWN0b3Igb2YgMS4KQEAgLTIwNTgsNyArMjA5OSw2IEBAIGNvbXB1dGVfYnVja2V0c19h bmRfc2Vncyhsb25nIG5lbGVtLCBpbnQgKm5idWNrZXRzLCBsb25nIG51bV9wYXJ0aXRpb25z LCBsb25nIHNzCiAJLyoKIAkgKiBGaWd1cmUgbnVtYmVyIG9mIGRpcmVjdG9yeSBzZWdtZW50 cyBuZWVkZWQsIHJvdW5kIHVwIHRvIGEgcG93ZXIgb2YgMgogCSAqLwotCW5zZWdzID0gKCgq bmJ1Y2tldHMpIC0gMSkgLyBzc2l6ZSArIDE7Ci0JbnNlZ3MgPSBuZXh0X3BvdzJfaW50KG5z ZWdzKTsKLQlyZXR1cm4gbnNlZ3M7CisJKm5zZWdtZW50cyA9ICgoKm5idWNrZXRzKSAtIDEp IC8gc3NpemUgKyAxOworCSpuc2VnbWVudHMgPSBuZXh0X3BvdzJfaW50KCpuc2VnbWVudHMp OwogfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvaHNlYXJjaC5oCmluZGV4IDVlNTEzYzgxMTZhLi5lNzhhYjM4YjRlOCAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCisrKyBiL3NyYy9pbmNs dWRlL3V0aWxzL2hzZWFyY2guaApAQCAtMTUxLDggKzE1MSw4IEBAIGV4dGVybiB2b2lkIGhh c2hfc2VxX3Rlcm0oSEFTSF9TRVFfU1RBVFVTICpzdGF0dXMpOwogZXh0ZXJuIHZvaWQgaGFz aF9mcmVlemUoSFRBQiAqaGFzaHApOwogZXh0ZXJuIFNpemUgaGFzaF9lc3RpbWF0ZV9zaXpl KGxvbmcgbnVtX2VudHJpZXMsIFNpemUgZW50cnlzaXplKTsKIGV4dGVybiBsb25nIGhhc2hf c2VsZWN0X2RpcnNpemUobG9uZyBudW1fZW50cmllcyk7Ci1leHRlcm4gU2l6ZSBoYXNoX2dl dF9pbml0X3NpemUoY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzLAotCQkJCQlsb25n IGluaXRfc2l6ZSwgaW50IG5lbGVtX2FsbG9jKTsKK2V4dGVybiBTaXplIGhhc2hfZ2V0X3No YXJlZF9zaXplKGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncywKKwkJCQkJCQkJIGxv bmcgaW5pdF9zaXplLCBpbnQgbmVsZW1fYWxsb2MpOwogZXh0ZXJuIHZvaWQgQXRFT1hhY3Rf SGFzaFRhYmxlcyhib29sIGlzQ29tbWl0KTsKIGV4dGVybiB2b2lkIEF0RU9TdWJYYWN0X0hh c2hUYWJsZXMoYm9vbCBpc0NvbW1pdCwgaW50IG5lc3REZXB0aCk7CiAKLS0gCjIuNDkuMAoK --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/x-patch; charset=UTF-8; name="v20250324-0003-Replace-ShmemAlloc-calls-by-ShmemInitStruc.patch" Content-Disposition: attachment; filename*0="v20250324-0003-Replace-ShmemAlloc-calls-by-ShmemInitStruc.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBiZDc0MzQwMjMyMWFlMDFlMjczNDgyNTA4NjVmOTUyOTBkMzdiODQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFp bC5jb20+CkRhdGU6IFRodSwgNiBNYXIgMjAyNSAyMDozMjoyNyArMDUzMApTdWJqZWN0OiBb UEFUQ0ggdjIwMjUwMzI0IDMvNl0gUmVwbGFjZSBTaG1lbUFsbG9jIGNhbGxzIGJ5IFNobWVt SW5pdFN0cnVjdAoKVGhlIHNoYXJlZCBtZW1vcnkgYWxsb2NhdGVkIGJ5IFNobWVtQWxsb2Mg aXMgbm90IHRyYWNrZWQKYnkgcGdfc2htZW1fYWxsb2NhdGlvbnMuIFRoaXMgY29tbWl0IHJl cGxhY2VzIG1vc3Qgb2YgdGhlCmNhbGxzIHRvIFNobWVtQWxsb2MgYnkgU2htZW1Jbml0U3Ry dWN0IHRvIGFzc29jaWF0ZSBhIG5hbWUKd2l0aCB0aGUgYWxsb2NhdGlvbnMgYW5kIGVuc3Vy ZSB0aGF0IHRoZXkgZ2V0IHRyYWNrZWQgYnkKcGdfc2htZW1fYWxsb2NhdGlvbnMuIEl0IGFs c28gbWVyZ2VzIHNldmVyYWwgc21hbGxlcgpTaG1lbUFsbG9jIGNhbGxzIGludG8gbGFyZ2Vy IFNobWVtSW5pdFN0cnVjdCB0byBhbGxvY2F0ZQphbmQgdHJhY2sgYWxsIHRoZSByZWxhdGVk IG1lbW9yeSBhbGxvY2F0aW9ucyB1bmRlciBzaW5nbGUKLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJlZGljYXRlLmMgfCAxNyArKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgIHwgMzMgKysrKysrKysrKysrKysrKysrKysrKyst LS0tLQogMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggNWIyMWEwNTM5 ODEuLmRkNjY5OTAzMzViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5j CkBAIC0xMjI2LDggKzEyMjYsMTEgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQog CSAqLwogCW1heF90YWJsZV9zaXplICo9IDEwOwogCisJcmVxdWVzdFNpemUgPSBhZGRfc2l6 ZShQcmVkWGFjdExpc3REYXRhU2l6ZSwKKwkJCQkJCSAgIChtdWxfc2l6ZSgoU2l6ZSkgbWF4 X3RhYmxlX3NpemUsCisJCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1QpKSkpOwog CVByZWRYYWN0ID0gU2htZW1Jbml0U3RydWN0KCJQcmVkWGFjdExpc3QiLAotCQkJCQkJCSAg IFByZWRYYWN0TGlzdERhdGFTaXplLAorCQkJCQkJCSAgIHJlcXVlc3RTaXplLAogCQkJCQkJ CSAgICZmb3VuZCk7CiAJQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKIAlp ZiAoIWZvdW5kKQpAQCAtMTI0Miw5ICsxMjQ1LDcgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5p dCh2b2lkKQogCQlQcmVkWGFjdC0+TGFzdFN4YWN0Q29tbWl0U2VxTm8gPSBGaXJzdE5vcm1h bFNlckNvbW1pdFNlcU5vIC0gMTsKIAkJUHJlZFhhY3QtPkNhblBhcnRpYWxDbGVhclRocm91 Z2ggPSAwOwogCQlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhyb3VnaCA9IDA7Ci0J CXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9zaXplLAotCQkJCQkJ CSAgIHNpemVvZihTRVJJQUxJWkFCTEVYQUNUKSk7Ci0JCVByZWRYYWN0LT5lbGVtZW50ID0g U2htZW1BbGxvYyhyZXF1ZXN0U2l6ZSk7CisJCVByZWRYYWN0LT5lbGVtZW50ID0gKFNFUklB TElaQUJMRVhBQ1QgKikgKChjaGFyICopIFByZWRYYWN0ICsgUHJlZFhhY3RMaXN0RGF0YVNp emUpOwogCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVhbi4g Ki8KIAkJbWVtc2V0KFByZWRYYWN0LT5lbGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CiAJCWZv ciAoaSA9IDA7IGkgPCBtYXhfdGFibGVfc2l6ZTsgaSsrKQpAQCAtMTI5OSw5ICsxMzAwLDEx IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKiBwcm9iYWJseSBPSy4KIAkg Ki8KIAltYXhfdGFibGVfc2l6ZSAqPSA1OworCXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNp emUpIG1heF90YWJsZV9zaXplLAorCQkJCQkJICAgUldDb25mbGljdERhdGFTaXplKTsKIAog CVJXQ29uZmxpY3RQb29sID0gU2htZW1Jbml0U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0J CQkJCQkJCQkgUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSwKKwkJCQkJCQkJCSBSV0Nv bmZsaWN0UG9vbEhlYWRlckRhdGFTaXplICsgcmVxdWVzdFNpemUsCiAJCQkJCQkJCQkgJmZv dW5kKTsKIAlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOwogCWlmICghZm91 bmQpCkBAIC0xMzA5LDkgKzEzMTIsNyBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQp CiAJCWludAkJCWk7CiAKIAkJZGxpc3RfaW5pdCgmUldDb25mbGljdFBvb2wtPmF2YWlsYWJs ZUxpc3QpOwotCQlyZXF1ZXN0U2l6ZSA9IG11bF9zaXplKChTaXplKSBtYXhfdGFibGVfc2l6 ZSwKLQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUpOwotCQlSV0NvbmZsaWN0UG9vbC0+ ZWxlbWVudCA9IFNobWVtQWxsb2MocmVxdWVzdFNpemUpOworCQlSV0NvbmZsaWN0UG9vbC0+ ZWxlbWVudCA9IChSV0NvbmZsaWN0KSAoKGNoYXIgKikgUldDb25mbGljdFBvb2wgKyBSV0Nv bmZsaWN0UG9vbEhlYWRlckRhdGFTaXplKTsKIAkJLyogQWRkIGFsbCBlbGVtZW50cyB0byBh dmFpbGFibGUgbGlzdCwgY2xlYW4uICovCiAJCW1lbXNldChSV0NvbmZsaWN0UG9vbC0+ZWxl bWVudCwgMCwgcmVxdWVzdFNpemUpOwogCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3RhYmxlX3Np emU7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IGU0Y2E4NjFhOGU2Li42 NTIzOWQ3NDNkYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2Mu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC04OCw2ICs4OCw3 IEBAIHN0YXRpYyB2b2lkIFJlbW92ZVByb2NGcm9tQXJyYXkoaW50IGNvZGUsIERhdHVtIGFy Zyk7CiBzdGF0aWMgdm9pZCBQcm9jS2lsbChpbnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRp YyB2b2lkIEF1eGlsaWFyeVByb2NLaWxsKGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGlj IHZvaWQgQ2hlY2tEZWFkTG9jayh2b2lkKTsKK3N0YXRpYyBTaXplIFBHUHJvY1NobWVtU2l6 ZSh2b2lkKTsKIAogCiAvKgpAQCAtMTc1LDYgKzE3Niw3IEBAIEluaXRQcm9jR2xvYmFsKHZv aWQpCiAJCQkgICAqZnBFbmRQdHIgUEdfVVNFRF9GT1JfQVNTRVJUU19PTkxZOwogCVNpemUJ CWZwTG9ja0JpdHNTaXplLAogCQkJCWZwUmVsSWRTaXplOworCVNpemUJCXJlcXVlc3RTaXpl OwogCiAJLyogQ3JlYXRlIHRoZSBQcm9jR2xvYmFsIHNoYXJlZCBzdHJ1Y3R1cmUgKi8KIAlQ cm9jR2xvYmFsID0gKFBST0NfSERSICopCkBAIC0yMDQsNyArMjA2LDEwIEBAIEluaXRQcm9j R2xvYmFsKHZvaWQpCiAJICogd2l0aCBhIHNpbmdsZSBmcmVlbGlzdC4pICBFYWNoIFBHUFJP QyBzdHJ1Y3R1cmUgaXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkKIAkgKiBvbmUgb2YgdGhlc2Ug cHVycG9zZXMsIGFuZCB0aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4gZ3JvdXBzLgogCSAqLwot CXByb2NzID0gKFBHUFJPQyAqKSBTaG1lbUFsbG9jKFRvdGFsUHJvY3MgKiBzaXplb2YoUEdQ Uk9DKSk7CisJcmVxdWVzdFNpemUgPSBQR1Byb2NTaG1lbVNpemUoKTsKKworCXByb2NzID0g KFBHUFJPQyAqKSBTaG1lbUluaXRTdHJ1Y3QoIlBHUFJPQyBzdHJ1Y3R1cmVzIiwgcmVxdWVz dFNpemUsICZmb3VuZCk7CisKIAlNZW1TZXQocHJvY3MsIDAsIFRvdGFsUHJvY3MgKiBzaXpl b2YoUEdQUk9DKSk7CiAJUHJvY0dsb2JhbC0+YWxsUHJvY3MgPSBwcm9jczsKIAkvKiBYWFgg YWxsUHJvY0NvdW50IGlzbid0IHJlYWxseSBhbGwgb2YgdGhlbTsgaXQgZXhjbHVkZXMgcHJl cGFyZWQgeGFjdHMgKi8KQEAgLTIxOCwxMSArMjIzLDExIEBAIEluaXRQcm9jR2xvYmFsKHZv aWQpCiAJICogaG93IGhvdGx5IHRoZXkgYXJlIGFjY2Vzc2VkLgogCSAqLwogCVByb2NHbG9i YWwtPnhpZHMgPQotCQkoVHJhbnNhY3Rpb25JZCAqKSBTaG1lbUFsbG9jKFRvdGFsUHJvY3Mg KiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKKwkJKFRyYW5zYWN0aW9uSWQgKikgKChj aGFyICopIHByb2NzICsgVG90YWxQcm9jcyAqIHNpemVvZihQR1BST0MpKTsKIAlNZW1TZXQo UHJvY0dsb2JhbC0+eGlkcywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+ eGlkcykpOwotCVByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyA9IChYaWRDYWNoZVN0YXR1cyAq KSBTaG1lbUFsbG9jKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0 YXRlcykpOworCVByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyA9IChYaWRDYWNoZVN0YXR1cyAq KSAoKGNoYXIgKikgUHJvY0dsb2JhbC0+eGlkcyArIFRvdGFsUHJvY3MgKiBzaXplb2YoKlBy b2NHbG9iYWwtPnhpZHMpICsgUEdfQ0FDSEVfTElORV9TSVpFKTsKIAlNZW1TZXQoUHJvY0ds b2JhbC0+c3VieGlkU3RhdGVzLCAwLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFs LT5zdWJ4aWRTdGF0ZXMpKTsKLQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFncyA9ICh1aW50OCAq KSBTaG1lbUFsbG9jKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0Zs YWdzKSk7CisJUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgKChjaGFyICop IFByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyArIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NH bG9iYWwtPnN1YnhpZFN0YXRlcykgKyBQR19DQUNIRV9MSU5FX1NJWkUpOwogCU1lbVNldChQ cm9jR2xvYmFsLT5zdGF0dXNGbGFncywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0ds b2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAogCS8qCkBAIC0yMzMsNyArMjM4LDcgQEAgSW5pdFBy b2NHbG9iYWwodm9pZCkKIAlmcExvY2tCaXRzU2l6ZSA9IE1BWEFMSUdOKEZhc3RQYXRoTG9j a0dyb3Vwc1BlckJhY2tlbmQgKiBzaXplb2YodWludDY0KSk7CiAJZnBSZWxJZFNpemUgPSBN QVhBTElHTihGYXN0UGF0aExvY2tTbG90c1BlckJhY2tlbmQoKSAqIHNpemVvZihPaWQpKTsK IAotCWZwUHRyID0gU2htZW1BbGxvYyhUb3RhbFByb2NzICogKGZwTG9ja0JpdHNTaXplICsg ZnBSZWxJZFNpemUpKTsKKwlmcFB0ciA9IFNobWVtSW5pdFN0cnVjdCgiRmFzdCBwYXRoIGxv Y2sgYXJyYXlzIiwgVG90YWxQcm9jcyAqIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXpl KSwgJmZvdW5kKTsKIAlNZW1TZXQoZnBQdHIsIDAsIFRvdGFsUHJvY3MgKiAoZnBMb2NrQml0 c1NpemUgKyBmcFJlbElkU2l6ZSkpOwogCiAJLyogRm9yIGFzc2VydHMgY2hlY2tpbmcgd2Ug ZGlkIG5vdCBvdmVyZmxvdy4gKi8KQEAgLTMzMCwxMCArMzM1LDI2IEBAIEluaXRQcm9jR2xv YmFsKHZvaWQpCiAJUHJlcGFyZWRYYWN0UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHMgKyBO VU1fQVVYSUxJQVJZX1BST0NTXTsKIAogCS8qIENyZWF0ZSBQcm9jU3RydWN0TG9jayBzcGlu bG9jaywgdG9vICovCi0JUHJvY1N0cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1lbUFsbG9j KHNpemVvZihzbG9ja190KSk7CisJUHJvY1N0cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1l bUluaXRTdHJ1Y3QoIlByb2NTdHJ1Y3RMb2NrIHNwaW5sb2NrIiwgc2l6ZW9mKHNsb2NrX3Qp LCAmZm91bmQpOwogCVNwaW5Mb2NrSW5pdChQcm9jU3RydWN0TG9jayk7CiB9CiAKK3N0YXRp YyBTaXplCitQR1Byb2NTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOworCXVpbnQz MgkJVG90YWxQcm9jcyA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1h eF9wcmVwYXJlZF94YWN0czsKKworCXNpemUgPSBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJP Qyk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NH bG9iYWwtPnhpZHMpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVfTElORV9T SVpFKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJv Y0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHX0NB Q0hFX0xJTkVfU0laRSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBz aXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFBHX0NBQ0hFX0xJTkVfU0laRSk7CisJcmV0dXJuIHNpemU7Cit9CisKIC8qCiAgKiBJ bml0UHJvY2VzcyAtLSBpbml0aWFsaXplIGEgcGVyLXByb2Nlc3MgUEdQUk9DIGVudHJ5IGZv ciB0aGlzIGJhY2tlbmQKICAqLwotLSAKMi40OS4wCgo= --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/x-patch; charset=UTF-8; name="v20250324-0004-review.patch" Content-Disposition: attachment; filename="v20250324-0004-review.patch" Content-Transfer-Encoding: base64 RnJvbSBlYWMzOGMzNDczMThhMGVlMDc0YjI1ZDQ4N2RlNjY1NzVhMjQyZTEyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU2F0LCAyMiBNYXIgMjAyNSAxMjo1MDozOCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjUwMzI0IDQvNl0gcmV2aWV3CgotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cmVkaWNhdGUuYyB8IDIxICsrKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJv Yy5jICAgICAgfCA3NSArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCiAyIGZpbGVzIGNo YW5nZWQsIDY2IGluc2VydGlvbnMoKyksIDMwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCBkZDY2OTkwMzM1Yi4uYWViYTg0ZGU3ODYg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKQEAgLTEyMzcsNiArMTIz Nyw5IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAl7CiAJCWludAkJCWk7CiAK KwkJLyogcmVzZXQgZXZlcnl0aGluZywgYm90aCB0aGUgaGVhZGVyIGFuZCB0aGUgZWxlbWVu dCAqLworCQltZW1zZXQoUHJlZFhhY3QsIDAsIHJlcXVlc3RTaXplKTsKKwogCQlkbGlzdF9p bml0KCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCk7CiAJCWRsaXN0X2luaXQoJlByZWRYYWN0 LT5hY3RpdmVMaXN0KTsKIAkJUHJlZFhhY3QtPlN4YWN0R2xvYmFsWG1pbiA9IEludmFsaWRU cmFuc2FjdGlvbklkOwpAQCAtMTI0Nyw3ICsxMjUwLDkgQEAgUHJlZGljYXRlTG9ja1NobWVt SW5pdCh2b2lkKQogCQlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhyb3VnaCA9IDA7 CiAJCVByZWRYYWN0LT5lbGVtZW50ID0gKFNFUklBTElaQUJMRVhBQ1QgKikgKChjaGFyICop IFByZWRYYWN0ICsgUHJlZFhhY3RMaXN0RGF0YVNpemUpOwogCQkvKiBBZGQgYWxsIGVsZW1l bnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVhbi4gKi8KLQkJbWVtc2V0KFByZWRYYWN0LT5l bGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CisJCS8qIFhYWCB3YXNuJ3QgdGhpcyBhY3R1YWxs eSB3cm9uZywgY29uc2lkZXJpbmcgcmVxdWVzdFNpemUgaXMgdGhlIHdob2xlCisJCSAqIHNo bWVtIGFsbG9jYXRpb24sIGluY2x1ZGluZyBQcmVkWGFjdExpc3REYXRhU2l6ZT8gKi8KKwkJ Ly8gbWVtc2V0KFByZWRYYWN0LT5lbGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CiAJCWZvciAo aSA9IDA7IGkgPCBtYXhfdGFibGVfc2l6ZTsgaSsrKQogCQl7CiAJCQlMV0xvY2tJbml0aWFs aXplKCZQcmVkWGFjdC0+ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCkBA IC0xMzAwLDIxICsxMzA1LDI1IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkg KiBwcm9iYWJseSBPSy4KIAkgKi8KIAltYXhfdGFibGVfc2l6ZSAqPSA1OwotCXJlcXVlc3RT aXplID0gbXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9zaXplLAotCQkJCQkJICAgUldDb25m bGljdERhdGFTaXplKTsKKwlyZXF1ZXN0U2l6ZSA9IFJXQ29uZmxpY3RQb29sSGVhZGVyRGF0 YVNpemUgKworCQkJCQltdWxfc2l6ZSgoU2l6ZSkgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJ IFJXQ29uZmxpY3REYXRhU2l6ZSk7CiAKIAlSV0NvbmZsaWN0UG9vbCA9IFNobWVtSW5pdFN0 cnVjdCgiUldDb25mbGljdFBvb2wiLAotCQkJCQkJCQkJIFJXQ29uZmxpY3RQb29sSGVhZGVy RGF0YVNpemUgKyByZXF1ZXN0U2l6ZSwKKwkJCQkJCQkJCSByZXF1ZXN0U2l6ZSwKIAkJCQkJ CQkJCSAmZm91bmQpOwogCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7CiAJ aWYgKCFmb3VuZCkKIAl7CiAJCWludAkJCWk7CiAKKwkJLyogY2xlYW4gZXZlcnl0aGluZywg aW5jbHVkaW5nIHRoZSBlbGVtZW50cyAqLworCQltZW1zZXQoUldDb25mbGljdFBvb2wsIDAs IHJlcXVlc3RTaXplKTsKKwogCQlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxh YmxlTGlzdCk7Ci0JCVJXQ29uZmxpY3RQb29sLT5lbGVtZW50ID0gKFJXQ29uZmxpY3QpICgo Y2hhciAqKSBSV0NvbmZsaWN0UG9vbCArIFJXQ29uZmxpY3RQb29sSGVhZGVyRGF0YVNpemUp OworCQlSV0NvbmZsaWN0UG9vbC0+ZWxlbWVudCA9IChSV0NvbmZsaWN0KSAoKGNoYXIgKikg UldDb25mbGljdFBvb2wgKworCQkJUldDb25mbGljdFBvb2xIZWFkZXJEYXRhU2l6ZSk7CiAJ CS8qIEFkZCBhbGwgZWxlbWVudHMgdG8gYXZhaWxhYmxlIGxpc3QsIGNsZWFuLiAqLwotCQlt ZW1zZXQoUldDb25mbGljdFBvb2wtPmVsZW1lbnQsIDAsIHJlcXVlc3RTaXplKTsKIAkJZm9y IChpID0gMDsgaSA8IG1heF90YWJsZV9zaXplOyBpKyspCiAJCXsKIAkJCWRsaXN0X3B1c2hf dGFpbCgmUldDb25mbGljdFBvb2wtPmF2YWlsYWJsZUxpc3QsCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3Byb2MuYwppbmRleCA2NTIzOWQ3NDNkYS4uNGFmZDdjZDQyYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3Byb2MuYwpAQCAtODgsNyArODgsNiBAQCBzdGF0aWMgdm9pZCBSZW1vdmVQcm9j RnJvbUFycmF5KGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgUHJvY0tpbGwo aW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgdm9pZCBBdXhpbGlhcnlQcm9jS2lsbChp bnQgY29kZSwgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIENoZWNrRGVhZExvY2sodm9pZCk7 Ci1zdGF0aWMgU2l6ZSBQR1Byb2NTaG1lbVNpemUodm9pZCk7CiAKIAogLyoKQEAgLTEyNCw2 ICsxMjMsMjcgQEAgUHJvY0dsb2JhbFNobWVtU2l6ZSh2b2lkKQogCXJldHVybiBzaXplOwog fQogCisvKgorICogcmV2aWV3OiBhZGQgY29tbWVudCwgZXhwbGFpbmluZyB0aGUgUEdfQ0FD SEVfTElORV9TSVpFIHRoaW5nCisgKiByZXZpZXc6IEknZCBldmVuIG1heWJlIHNwbGl0IHRo ZSBQR19DQUNIRV9MSU5FX1NJWkUgdGhpbmcgaW50bworICogYSBzZXBhcmF0ZSBjb21taXQs IG5vdCB0byBtaXggaXQgd2l0aCB0aGUgIm1vbml0b3JpbmcgaW1wcm92ZW1lbnQiCisgKi8K K3N0YXRpYyBTaXplCitQR1Byb2NTaG1lbVNpemUodm9pZCkKK3sKKwlTaXplCQlzaXplOwor CXVpbnQzMgkJVG90YWxQcm9jcyA9IE1heEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9D UyArIG1heF9wcmVwYXJlZF94YWN0czsKKworCXNpemUgPSBUb3RhbFByb2NzICogc2l6ZW9m KFBHUFJPQyk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2Yo KlByb2NHbG9iYWwtPnhpZHMpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVf TElORV9TSVpFKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVv ZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFBHX0NBQ0hFX0xJTkVfU0laRSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJv Y3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSk7CisJc2l6ZSA9IGFkZF9z aXplKHNpemUsIFBHX0NBQ0hFX0xJTkVfU0laRSk7CisJcmV0dXJuIHNpemU7Cit9CisKIC8q CiAgKiBSZXBvcnQgbnVtYmVyIG9mIHNlbWFwaG9yZXMgbmVlZGVkIGJ5IEluaXRQcm9jR2xv YmFsLgogICovCkBAIC0xNzcsNiArMTk3LDcgQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAlT aXplCQlmcExvY2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKIAlTaXplCQlyZXF1ZXN0 U2l6ZTsKKwljaGFyCSAgICpwdHI7CiAKIAkvKiBDcmVhdGUgdGhlIFByb2NHbG9iYWwgc2hh cmVkIHN0cnVjdHVyZSAqLwogCVByb2NHbG9iYWwgPSAoUFJPQ19IRFIgKikKQEAgLTIwOCw3 ICsyMjksMTIgQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAkgKi8KIAlyZXF1ZXN0U2l6ZSA9 IFBHUHJvY1NobWVtU2l6ZSgpOwogCi0JcHJvY3MgPSAoUEdQUk9DICopIFNobWVtSW5pdFN0 cnVjdCgiUEdQUk9DIHN0cnVjdHVyZXMiLCByZXF1ZXN0U2l6ZSwgJmZvdW5kKTsKKwlwdHIg PSBTaG1lbUluaXRTdHJ1Y3QoIlBHUFJPQyBzdHJ1Y3R1cmVzIiwKKwkJCQkJCQkJCSAgIHJl cXVlc3RTaXplLAorCQkJCQkJCQkJICAgJmZvdW5kKTsKKworCXByb2NzID0gKFBHUFJPQyAq KSBwdHI7CisJcHRyICs9IFRvdGFsUHJvY3MgKiBzaXplb2YoUEdQUk9DKTsKIAogCU1lbVNl dChwcm9jcywgMCwgVG90YWxQcm9jcyAqIHNpemVvZihQR1BST0MpKTsKIAlQcm9jR2xvYmFs LT5hbGxQcm9jcyA9IHByb2NzOwpAQCAtMjIxLDE0ICsyNDcsMjcgQEAgSW5pdFByb2NHbG9i YWwodm9pZCkKIAkgKgogCSAqIFhYWDogSXQgbWlnaHQgbWFrZSBzZW5zZSB0byBpbmNyZWFz ZSBwYWRkaW5nIGZvciB0aGVzZSBhcnJheXMsIGdpdmVuCiAJICogaG93IGhvdGx5IHRoZXkg YXJlIGFjY2Vzc2VkLgorCSAqCisJICogcmV2aWV3OiBkb2VzIHRoZSBwYWRkaW5nIGNvbW1l bnQgc3RpbGwgbWFrZSBzZW5zZSB3aXRoIFBHX0NBQ0hFX0xJTkVfU0laRT8KKwkgKiAgICAg ICAgIHByZXN1bWFibHkgdGhhdCdzIHRoZSBwYWRkaW5nIG1lbnRpb25lZCBieSB0aGUgY29t bWVudD8KKwkgKgorCSAqIHJldmlldzogdGhvc2UgbGluZXMgYXJlIHRvbyBsb25nIC8gbm90 IGNvbXByZWhlbnNpYmxlLCBsZXQncyBkZWZpbmUgc29tZQorCSAqICAgICAgICAgbWFjcm9z IHRvIGNhbGN1bGF0ZSBzdHVmZj8KIAkgKi8KLQlQcm9jR2xvYmFsLT54aWRzID0KLQkJKFRy YW5zYWN0aW9uSWQgKikgKChjaGFyICopIHByb2NzICsgVG90YWxQcm9jcyAqIHNpemVvZihQ R1BST0MpKTsKKwlQcm9jR2xvYmFsLT54aWRzID0gKFRyYW5zYWN0aW9uSWQgKikgcHRyOwog CU1lbVNldChQcm9jR2xvYmFsLT54aWRzLCAwLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9j R2xvYmFsLT54aWRzKSk7Ci0JUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzID0gKFhpZENhY2hl U3RhdHVzICopICgoY2hhciAqKSBQcm9jR2xvYmFsLT54aWRzICsgVG90YWxQcm9jcyAqIHNp emVvZigqUHJvY0dsb2JhbC0+eGlkcykgKyBQR19DQUNIRV9MSU5FX1NJWkUpOworCXB0ciAr PSBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSArIFBHX0NBQ0hFX0xJ TkVfU0laRTsKKworCVByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyA9IChYaWRDYWNoZVN0YXR1 cyAqKSBwdHI7CiAJTWVtU2V0KFByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcywgMCwgVG90YWxQ cm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7Ci0JUHJvY0dsb2Jh bC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgKChjaGFyICopIFByb2NHbG9iYWwtPnN1Ynhp ZFN0YXRlcyArIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRl cykgKyBQR19DQUNIRV9MSU5FX1NJWkUpOworCXB0ciArPSBUb3RhbFByb2NzICogc2l6ZW9m KCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpICsgUEdfQ0FDSEVfTElORV9TSVpFOworCisJ UHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgcHRyOwogCU1lbVNldChQcm9j R2xvYmFsLT5zdGF0dXNGbGFncywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2Jh bC0+c3RhdHVzRmxhZ3MpKTsKKwlwdHIgKz0gVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0ds b2JhbC0+c3RhdHVzRmxhZ3MpICsgUEdfQ0FDSEVfTElORV9TSVpFOworCisJLyogbWFrZSBz dXJlIHdlciBkaWRuJ3Qgb3ZlcmZsb3cgKi8KKwlBc3NlcnQoKHB0ciA+IChjaGFyICopIHBy b2NzKSAmJiAocHRyIDw9IChjaGFyICopIHByb2NzICsgcmVxdWVzdFNpemUpKTsKIAogCS8q CiAJICogQWxsb2NhdGUgYXJyYXlzIGZvciBmYXN0LXBhdGggbG9ja3MuIFRob3NlIGFyZSB2 YXJpYWJsZS1sZW5ndGgsIHNvCkBAIC0yMzgsNyArMjc3LDkgQEAgSW5pdFByb2NHbG9iYWwo dm9pZCkKIAlmcExvY2tCaXRzU2l6ZSA9IE1BWEFMSUdOKEZhc3RQYXRoTG9ja0dyb3Vwc1Bl ckJhY2tlbmQgKiBzaXplb2YodWludDY0KSk7CiAJZnBSZWxJZFNpemUgPSBNQVhBTElHTihG YXN0UGF0aExvY2tTbG90c1BlckJhY2tlbmQoKSAqIHNpemVvZihPaWQpKTsKIAotCWZwUHRy ID0gU2htZW1Jbml0U3RydWN0KCJGYXN0IHBhdGggbG9jayBhcnJheXMiLCBUb3RhbFByb2Nz ICogKGZwTG9ja0JpdHNTaXplICsgZnBSZWxJZFNpemUpLCAmZm91bmQpOworCWZwUHRyID0g U2htZW1Jbml0U3RydWN0KCJGYXN0IHBhdGggbG9jayBhcnJheXMiLAorCQkJCQkJCVRvdGFs UHJvY3MgKiAoZnBMb2NrQml0c1NpemUgKyBmcFJlbElkU2l6ZSksCisJCQkJCQkJJmZvdW5k KTsKIAlNZW1TZXQoZnBQdHIsIDAsIFRvdGFsUHJvY3MgKiAoZnBMb2NrQml0c1NpemUgKyBm cFJlbElkU2l6ZSkpOwogCiAJLyogRm9yIGFzc2VydHMgY2hlY2tpbmcgd2UgZGlkIG5vdCBv dmVyZmxvdy4gKi8KQEAgLTMzNSwyNiArMzc2LDEyIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQp CiAJUHJlcGFyZWRYYWN0UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJ QVJZX1BST0NTXTsKIAogCS8qIENyZWF0ZSBQcm9jU3RydWN0TG9jayBzcGlubG9jaywgdG9v ICovCi0JUHJvY1N0cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1lbUluaXRTdHJ1Y3QoIlBy b2NTdHJ1Y3RMb2NrIHNwaW5sb2NrIiwgc2l6ZW9mKHNsb2NrX3QpLCAmZm91bmQpOworCVBy b2NTdHJ1Y3RMb2NrID0gKHNsb2NrX3QgKikgU2htZW1Jbml0U3RydWN0KCJQcm9jU3RydWN0 TG9jayBzcGlubG9jayIsCisJCQkJCQkJCQkJCQkgc2l6ZW9mKHNsb2NrX3QpLAorCQkJCQkJ CQkJCQkJICZmb3VuZCk7CiAJU3BpbkxvY2tJbml0KFByb2NTdHJ1Y3RMb2NrKTsKIH0KIAot c3RhdGljIFNpemUKLVBHUHJvY1NobWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemU7Ci0J dWludDMyCQlUb3RhbFByb2NzID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NT ICsgbWF4X3ByZXBhcmVkX3hhY3RzOwotCi0Jc2l6ZSA9IFRvdGFsUHJvY3MgKiBzaXplb2Yo UEdQUk9DKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigq UHJvY0dsb2JhbC0+eGlkcykpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19DQUNIRV9M SU5FX1NJWkUpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBUb3RhbFByb2NzICogc2l6ZW9m KCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg UEdfQ0FDSEVfTElORV9TSVpFKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgUEdfQ0FDSEVfTElORV9TSVpFKTsKLQlyZXR1cm4gc2l6ZTsKLX0KLQogLyoK ICAqIEluaXRQcm9jZXNzIC0tIGluaXRpYWxpemUgYSBwZXItcHJvY2VzcyBQR1BST0MgZW50 cnkgZm9yIHRoaXMgYmFja2VuZAogICovCi0tIAoyLjQ5LjAKCg== --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/x-patch; charset=UTF-8; name="v20250324-0005-remove-cacheline.patch" Content-Disposition: attachment; filename="v20250324-0005-remove-cacheline.patch" Content-Transfer-Encoding: base64 RnJvbSAxMjNlNDAzZWQ2YmZjYTkyOWIzYTMzYWZlMjEwZWFjYzM4ZGQ3M2FkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU2F0LCAyMiBNYXIgMjAyNSAxNToyMjowOCArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjUwMzI0IDUvNl0gcmVtb3ZlIGNhY2hlbGluZQoKLS0tCiBzcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJvYy5jIHwgOSArKystLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5k ZXggNGFmZDdjZDQyYzMuLmY3OTU3ZWIwMDhiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMKQEAgLTEzNiwxMSArMTM2LDggQEAgUEdQcm9jU2htZW1TaXplKHZvaWQpCiAKIAlzaXpl ID0gVG90YWxQcm9jcyAqIHNpemVvZihQR1BST0MpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSk7Ci0Jc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFBHX0NBQ0hFX0xJTkVfU0laRSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19DQUNIRV9MSU5FX1NJWkUpOwogCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNG bGFncykpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQR19DQUNIRV9MSU5FX1NJWkUpOwog CXJldHVybiBzaXplOwogfQogCkBAIC0yNTYsMTUgKzI1MywxNSBAQCBJbml0UHJvY0dsb2Jh bCh2b2lkKQogCSAqLwogCVByb2NHbG9iYWwtPnhpZHMgPSAoVHJhbnNhY3Rpb25JZCAqKSBw dHI7CiAJTWVtU2V0KFByb2NHbG9iYWwtPnhpZHMsIDAsIFRvdGFsUHJvY3MgKiBzaXplb2Yo KlByb2NHbG9iYWwtPnhpZHMpKTsKLQlwdHIgKz0gVG90YWxQcm9jcyAqIHNpemVvZigqUHJv Y0dsb2JhbC0+eGlkcykgKyBQR19DQUNIRV9MSU5FX1NJWkU7CisJcHRyICs9IFRvdGFsUHJv Y3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpOwogCiAJUHJvY0dsb2JhbC0+c3VieGlk U3RhdGVzID0gKFhpZENhY2hlU3RhdHVzICopIHB0cjsKIAlNZW1TZXQoUHJvY0dsb2JhbC0+ c3VieGlkU3RhdGVzLCAwLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4 aWRTdGF0ZXMpKTsKLQlwdHIgKz0gVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+ c3VieGlkU3RhdGVzKSArIFBHX0NBQ0hFX0xJTkVfU0laRTsKKwlwdHIgKz0gVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKTsKIAogCVByb2NHbG9iYWwt PnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopIHB0cjsKIAlNZW1TZXQoUHJvY0dsb2JhbC0+c3Rh dHVzRmxhZ3MsIDAsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0Zs YWdzKSk7Ci0JcHRyICs9IFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1 c0ZsYWdzKSArIFBHX0NBQ0hFX0xJTkVfU0laRTsKKwlwdHIgKz0gVG90YWxQcm9jcyAqIHNp emVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpOwogCiAJLyogbWFrZSBzdXJlIHdlciBk aWRuJ3Qgb3ZlcmZsb3cgKi8KIAlBc3NlcnQoKHB0ciA+IChjaGFyICopIHByb2NzKSAmJiAo cHRyIDw9IChjaGFyICopIHByb2NzICsgcmVxdWVzdFNpemUpKTsKLS0gCjIuNDkuMAoK --------------LDNh7LQka0m0jeErozcWBJth Content-Type: text/x-patch; charset=UTF-8; name="v20250324-0006-add-cacheline-padding-back.patch" Content-Disposition: attachment; filename="v20250324-0006-add-cacheline-padding-back.patch" Content-Transfer-Encoding: base64 RnJvbSA4ZjU0YWVmYjllM2U4Mzk3M2QwYThhZGY2ZGM4NGZlODc2YTBmODU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogU2F0LCAyMiBNYXIgMjAyNSAxNToyMzo0MyArMDEwMApTdWJqZWN0OiBbUEFUQ0gg djIwMjUwMzI0IDYvNl0gYWRkIGNhY2hlbGluZSBwYWRkaW5nIGJhY2sKCi0tLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyB8IDE1ICsrKysrKystLS0tLS0tLQogMSBmaWxl IGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL3Byb2MuYwppbmRleCBmNzk1N2ViMDA4Yi4uZTljMjJmMDNmMjcgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTM2LDggKzEzNiwxMSBAQCBQR1Byb2NTaG1lbVNp emUodm9pZCkKIAogCXNpemUgPSBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7CiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhp ZHMpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVfTElORV9TSVpFKTsKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+ c3VieGlkU3RhdGVzKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHX0NBQ0hFX0xJTkVf U0laRSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlBy b2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHX0NB Q0hFX0xJTkVfU0laRSk7CiAJcmV0dXJuIHNpemU7CiB9CiAKQEAgLTI0MiwyNiArMjQ1LDIy IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJICogQWxsb2NhdGUgYXJyYXlzIG1pcnJvcmlu ZyBQR1BST0MgZmllbGRzIGluIGEgZGVuc2UgbWFubmVyLiBTZWUKIAkgKiBQUk9DX0hEUi4K IAkgKgotCSAqIFhYWDogSXQgbWlnaHQgbWFrZSBzZW5zZSB0byBpbmNyZWFzZSBwYWRkaW5n IGZvciB0aGVzZSBhcnJheXMsIGdpdmVuCi0JICogaG93IGhvdGx5IHRoZXkgYXJlIGFjY2Vz c2VkLgotCSAqCi0JICogcmV2aWV3OiBkb2VzIHRoZSBwYWRkaW5nIGNvbW1lbnQgc3RpbGwg bWFrZSBzZW5zZSB3aXRoIFBHX0NBQ0hFX0xJTkVfU0laRT8KLQkgKiAgICAgICAgIHByZXN1 bWFibHkgdGhhdCdzIHRoZSBwYWRkaW5nIG1lbnRpb25lZCBieSB0aGUgY29tbWVudD8KKwkg KiByZXZpZXc6IHNob3VsZG4ndCB0aGUgZmlyc3QgY2FjaGVsaW5lIHBhZGRpbmcgYmUgcmln aHQgYWZ0ZXIgInByb2NzIiwgYmVmb3JlICJ4aWRzIj8KIAkgKgogCSAqIHJldmlldzogdGhv c2UgbGluZXMgYXJlIHRvbyBsb25nIC8gbm90IGNvbXByZWhlbnNpYmxlLCBsZXQncyBkZWZp bmUgc29tZQogCSAqICAgICAgICAgbWFjcm9zIHRvIGNhbGN1bGF0ZSBzdHVmZj8KIAkgKi8K IAlQcm9jR2xvYmFsLT54aWRzID0gKFRyYW5zYWN0aW9uSWQgKikgcHRyOwogCU1lbVNldChQ cm9jR2xvYmFsLT54aWRzLCAwLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54 aWRzKSk7Ci0JcHRyICs9IFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMp OworCXB0ciArPSBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSArIFBH X0NBQ0hFX0xJTkVfU0laRTsKIAogCVByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyA9IChYaWRD YWNoZVN0YXR1cyAqKSBwdHI7CiAJTWVtU2V0KFByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcywg MCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7Ci0J cHRyICs9IFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyk7 CisJcHRyICs9IFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRl cykgKyBQR19DQUNIRV9MSU5FX1NJWkU7CiAKIAlQcm9jR2xvYmFsLT5zdGF0dXNGbGFncyA9 ICh1aW50OCAqKSBwdHI7CiAJTWVtU2V0KFByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzLCAwLCBU b3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncykpOwotCXB0ciAr PSBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNGbGFncyk7CisJcHRy ICs9IFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSArIFBH X0NBQ0hFX0xJTkVfU0laRTsKIAogCS8qIG1ha2Ugc3VyZSB3ZXIgZGlkbid0IG92ZXJmbG93 ICovCiAJQXNzZXJ0KChwdHIgPiAoY2hhciAqKSBwcm9jcykgJiYgKHB0ciA8PSAoY2hhciAq KSBwcm9jcyArIHJlcXVlc3RTaXplKSk7Ci0tIAoyLjQ5LjAKCg== --------------LDNh7LQka0m0jeErozcWBJth--