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 1toEmt-0086v5-RP for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Mar 2025 04:49:21 +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 1toEmu-004Prz-Bv for pgsql-hackers@arkaria.postgresql.org; Sat, 01 Mar 2025 04:49:18 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1toEmt-004PeZ-NX for pgsql-hackers@lists.postgresql.org; Sat, 01 Mar 2025 04:49:18 +0000 Received: from mail-lj1-x22e.google.com ([2a00:1450:4864:20::22e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1toEmq-000IBX-1H for pgsql-hackers@postgresql.org; Sat, 01 Mar 2025 04:49:17 +0000 Received: by mail-lj1-x22e.google.com with SMTP id 38308e7fff4ca-30b83290b7bso31642371fa.1 for ; Fri, 28 Feb 2025 20:49:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1740804554; x=1741409354; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ZNsm+R5A5vGnMYAN8eJ61Y3dkeT3DWc3TREmJeercd0=; b=UCfAVUSfTWF8Hl7b20bnlGIZ6NnDRkV+6yH08J0sNg2ewG3fxgdivlnNYjdfceE/sJ S6tRiLAp/b+/Qu/aaYPDvsSUumuu3Onz3ftc/ufQ2fkXDhNBSJxiChsrfoRFru9dIw7+ /jXUDsJykh7qfL1HBdHXL4fEGeFFZcVwi2X5m6W2eMnwjQ9FmyxlUYuG48Kj7OptjN8z hVhUbX9tqIa8rgOmcG6Evl+MwdZi4qSENT5PccqrXfoFFHBbiT1kuMR4xFOG2vC4tgKd 4fb12LS/BWvlDAxJtSG5KtbcaelPvo/HvjiJWDFTukDBq1E8na0P0nn9DpdDbOYcWWc7 Br+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1740804554; x=1741409354; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ZNsm+R5A5vGnMYAN8eJ61Y3dkeT3DWc3TREmJeercd0=; b=IrQ8V7UGMD8TSoO7DeElqaCbKZpGCww514TOXlP3nNGOPFZaOmrpGZOHpSyytvmahL SVMf07L1L5qhrS2wYNJ/gmxBtmrL2pqtjH4vrrwF7wWyANrEFCvMaKIDzMnTzsNbNkuZ 2rLQ0N11gFQ4YQgc9FD5KcLUDgQzti09M6z99miht8a6XiNjrklgjObYFNMHus6pGiR7 40tuLEmC7RboPuvL9Pa8PJD/3fpImQdMpia+y7VNikJcRsjT2Ba8HjZhiCyfQ7ATEXsJ bXYD3tIOJksADHiAVFCPh6zi8RgQxFovKbKGLCHD65GD4FrLf+9vYVXRmJHz4nTA7wus FmbQ== X-Gm-Message-State: AOJu0YziSzQHA7LeZbTQyIydaejJ1y4cZs/No72igqeonheMk2vH1Cbi hfJMQ2GAldr1F9e4plDvuI+i229oaVnughyqOLK1KA++k8gafo9SCUbJntuFaF+AwfQcWu188g4 1TurENub2mWlterzsV5VLKVaMgNHtk6Lv X-Gm-Gg: ASbGnctPlJRAO0qKLPeXiqYLM4yxPFB7Osn3TiGz94MalPFFqW8lI/f6dSPiWUdzydV SSrG+qOefYbpd6rGXUSSohN7+jPSckUdSy3Z1ZWICZgzYywulAwmoslZ/xaj7T23J7he6ppWP5z S6ADKjGSrAbPYKZoCEqEOL9RCz/NJFNVLlEWGA83COQ7WDraO9nMhksS3mXgA= X-Google-Smtp-Source: AGHT+IEyMsDLDqpPMP5biysZ5fqiD3NezzzBcYY1lJVzblvAOY1MF5xkCDcYOWqeCLUHApKCXz9mx8VLSDIOAH+WtkQ= X-Received: by 2002:a05:651c:a0a:b0:30a:44ca:7e72 with SMTP id 38308e7fff4ca-30b9330ef4cmr19925621fa.24.1740804553467; Fri, 28 Feb 2025 20:49:13 -0800 (PST) MIME-Version: 1.0 From: Rahila Syed Date: Sat, 1 Mar 2025 10:19:01 +0530 X-Gm-Features: AQ5f1JrwwqOizDsbhVdib_49jtff3a06chGyqjfxDUUOnajp01m1QQQ-YDYLEz8 Message-ID: Subject: Improve monitoring of shared memory allocations To: PostgreSQL-development Content-Type: multipart/mixed; boundary="0000000000000885dd062f40a522" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000000885dd062f40a522 Content-Type: multipart/alternative; boundary="0000000000000885dc062f40a520" --0000000000000885dc062f40a520 Content-Type: text/plain; charset="UTF-8" Hi, The 0001* patch improved the accounting for the shared memory allocated for a hash table during hash_create. pg_shmem_allocations tracks the memory allocated by ShmemInitStruct, which, for shared hash tables, only covers memory allocated for the hash directory and control structure via ShmemInitHash. The hash segments and buckets are allocated using ShmemAllocNoError, which does not attribute the allocation to the hash table and also does not add it to ShmemIndex. Therefore, these allocations are not tracked in pg_shmem_allocations. To improve this, include the allocation of segments and buckets in the initial allocation of the shared memory for the hash table, in ShmemInitHash. This will result in pg_shmem_allocations representing the total size of the initial hash table, including all the buckets and elements, instead of just the directory size. Like ShmemAllocNoError, the shared memory allocated by ShmemAlloc is not tracked by pg_shmem_allocations. The 0002* patch replaces most of the calls to ShmemAlloc with ShmemInitStruct to associate a name with the allocations and ensure that they get tracked by pg_shmem_allocations. I observed an improvement in total memory allocation by consolidating initial shared memory allocations for the hash table. For ex. the allocated size for the LOCK hash hash_create decreased from 801664 bytes to 799616 bytes. Please find the attached patches, which I will add to the March Commitfest. Thank you, Rahila Syed --0000000000000885dc062f40a520 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi,

The 0001* patch improved the accountin= g for the shared memory allocated for a
hash table during hash_create.
pg_shmem_allocations tracks the memory allocated by ShmemInitStruc= t, which,
for shared hash tables, only covers memory allocated fo= r the hash=C2=A0 directory
and control structure via ShmemInitHash. The= hash segments and=C2=A0 buckets
are allocated using ShmemAllocNoError,= which does not attribute the=C2=A0 allocation
to the hash table and al= so does not add it to ShmemIndex.

Therefore, these= allocations are not tracked in pg_shmem_allocations.
To improve this, = include the allocation of segments and buckets in the initial
all= ocation of the shared memory for the hash table, in ShmemInitHash.

= This will result in pg_shmem_allocations representing the total size of the= initial
hash table,=C2=A0including all the buckets and elements, inste= ad of just the directory
size.

Like ShmemAllocNoError, the share= d memory allocated by ShmemAlloc is not
tracked by pg_shmem_allocations= .
The 0002* patch replaces most of the calls to ShmemAlloc with ShmemIni= tStruct
to associate a name with the allocations and ensure that they g= et tracked by
pg_shmem_allocations.

I observed an improvement in= total memory allocation by consolidating initial shared
memory allocati= ons for the hash table. For ex. the allocated size for the LOCK hash
ha= sh_create decreased from 801664 bytes to 799616 bytes. Please find the atta= ched
patches, which I will add to the March Commitfest.

Thank yo= u,
Rahila Syed
--0000000000000885dc062f40a520-- --0000000000000885dd062f40a522 Content-Type: application/octet-stream; name="0001-Account-for-initial-shared-memory-allocated-during-h.patch" Content-Disposition: attachment; filename="0001-Account-for-initial-shared-memory-allocated-during-h.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7ppwqx20 RnJvbSBjMTNhNzEzM2VkNDU1ODQyYjY4NTQyNjIxN2E3YjUwNzllNmZjODY5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IEZyaSwgMjEgRmViIDIwMjUgMTU6MDg6MTIgKzA1MzAKU3ViamVjdDogW1BBVENIIDEv Ml0gQWNjb3VudCBmb3IgaW5pdGlhbCBzaGFyZWQgbWVtb3J5IGFsbG9jYXRlZCBkdXJpbmcKIGhh c2hfY3JlYXRlLgoKcGdfc2htZW1fYWxsb2NhdGlvbnMgdHJhY2tzIHRoZSBtZW1vcnkgYWxsb2Nh dGVkIGJ5IFNobWVtSW5pdFN0cnVjdCwKd2hpY2gsIGluIGNhc2Ugb2Ygc2hhcmVkIGhhc2ggdGFi bGVzLCBvbmx5IGNvdmVycyBtZW1vcnkgYWxsb2NhdGVkCnRvIHRoZSBoYXNoIGRpcmVjdG9yeSBh bmQgY29udHJvbCBzdHJ1Y3R1cmUuIFRoZSBoYXNoIHNlZ21lbnRzIGFuZApidWNrZXRzIGFyZSBh bGxvY2F0ZWQgdXNpbmcgU2htZW1BbGxvY05vRXJyb3Igd2hpY2ggZG9lcyBub3QgYXR0cmlidXRl CnRoZSBhbGxvY2F0aW9ucyB0byB0aGUgaGFzaCB0YWJsZSBuYW1lLiBUaHVzLCB0aGVzZSBhbGxv Y2F0aW9ucyBhcmUKbm90IHRyYWNrZWQgaW4gcGdfc2htZW1fYWxsb2NhdGlvbnMuCgpJbXByb3Zl IHRoaXMgaW5jbHVkZSB0aGUgYWxvY2F0aW9uIG9mIHNlZ21lbnRzIGFuZCBidWNrZXRzIG9yIGVs ZW1lbnRzCmluIHRoZSBpbml0aWFsIGFsbG9jYXRpb24gb2Ygc2hhcmVkIGhhc2ggZGlyZWN0b3J5 LiBTaW5jZSB0aGlzIGFkZHMgbnVtYmVycwp0byBleGlzdGluZyBoYXNoIHRhYmxlIGVudHJpZXMs IHRoZSByZXN1bHRpbmcgdHVwbGVzIGluIHBnX3NobWVtX2FsbG9jYXRpb25zCnJlcHJlc2VudCB0 aGUgdG90YWwgc2l6ZSBvZiB0aGUgaW5pdGlhbCBoYXNoIHRhYmxlIGluY2x1ZGluZyBhbGwgdGhl CmJ1Y2tldHMgYW5kIHRoZSBlbGVtZW50cyB0aGV5IGNvbnRhaW4sIGluc3RlYWQgb2YganVzdCB0 aGUgZGlyZWN0b3J5IHNpemUuCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAg IHwgICAzICstCiBzcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMgfCAxNDYgKysrKysr KysrKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvaW5jbHVkZS91dGlscy9keW5haGFzaC5oICAg ICAgfCAgIDIgKwogc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oICAgICAgIHwgICAyICstCiA0 IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvc2htZW0uYwppbmRleCA4OTVhNDNmYjM5Li5jNTZlOWI2Yzc3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMKQEAgLTczLDYgKzczLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVt LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMu aCIKKyNpbmNsdWRlICJ1dGlscy9keW5haGFzaC5oIgogCiBzdGF0aWMgdm9pZCAqU2htZW1BbGxv Y1JhdyhTaXplIHNpemUsIFNpemUgKmFsbG9jYXRlZF9zaXplKTsKIApAQCAtMzQ2LDcgKzM0Nyw3 IEBAIFNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmluZyBuYW1l IGZvciBzaG1lbSBpbmRleCAqLwogCiAJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXgg Ki8KIAlsb2NhdGlvbiA9IFNobWVtSW5pdFN0cnVjdChuYW1lLAotCQkJCQkJCSAgIGhhc2hfZ2V0 X3NoYXJlZF9zaXplKGluZm9QLCBoYXNoX2ZsYWdzKSwKKwkJCQkJCQkgICBoYXNoX2dldF9zaGFy ZWRfc2l6ZShpbmZvUCwgaGFzaF9mbGFncywgaW5pdF9zaXplKSwKIAkJCQkJCQkgICAmZm91bmQp OwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYwppbmRleCBjZDVhMDAxMzJmLi41MjAz ZjViMzBiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysr IGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCkBAIC0xMjAsNyArMTIwLDYgQEAK ICAqIGEgZ29vZCBpZGVhIG9mIHRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzISkuICBGb3Ig bm9uLXNoYXJlZCBoYXNoCiAgKiB0YWJsZXMsIHRoZSBpbml0aWFsIGRpcmVjdG9yeSBzaXplIGNh biBiZSBsZWZ0IGF0IHRoZSBkZWZhdWx0LgogICovCi0jZGVmaW5lIERFRl9TRUdTSVpFCQkJICAg MjU2CiAjZGVmaW5lIERFRl9TRUdTSVpFX1NISUZUCSAgIDgJLyogbXVzdCBiZSBsb2cyKERFRl9T RUdTSVpFKSAqLwogI2RlZmluZSBERUZfRElSU0laRQkJCSAgIDI1NgogCkBAIC0yNjUsNyArMjY0 LDcgQEAgc3RhdGljIGxvbmcgaGFzaF9hY2Nlc3NlcywKICAqLwogc3RhdGljIHZvaWQgKkR5bmFI YXNoQWxsb2MoU2l6ZSBzaXplKTsKIHN0YXRpYyBIQVNIU0VHTUVOVCBzZWdfYWxsb2MoSFRBQiAq aGFzaHApOwotc3RhdGljIGJvb2wgZWxlbWVudF9hbGxvYyhIVEFCICpoYXNocCwgaW50IG5lbGVt LCBpbnQgZnJlZWxpc3RfaWR4KTsKK3N0YXRpYyBib29sIGVsZW1lbnRfYWxsb2MoSFRBQiAqaGFz aHAsIGludCBuZWxlbSwgaW50IGZyZWVsaXN0X2lkeCwgSEFTSEVMRU1FTlQgKmZpcnN0RWxlbWVu dCk7CiBzdGF0aWMgYm9vbCBkaXJfcmVhbGxvYyhIVEFCICpoYXNocCk7CiBzdGF0aWMgYm9vbCBl eHBhbmRfdGFibGUoSFRBQiAqaGFzaHApOwogc3RhdGljIEhBU0hCVUNLRVQgZ2V0X2hhc2hfZW50 cnkoSFRBQiAqaGFzaHAsIGludCBmcmVlbGlzdF9pZHgpOwpAQCAtMjc2LDExICsyNzUsMTAgQEAg c3RhdGljIHZvaWQgaGFzaF9jb3JydXB0ZWQoSFRBQiAqaGFzaHApIHBnX2F0dHJpYnV0ZV9ub3Jl dHVybigpOwogc3RhdGljIHVpbnQzMiBoYXNoX2luaXRpYWxfbG9va3VwKEhUQUIgKmhhc2hwLCB1 aW50MzIgaGFzaHZhbHVlLAogCQkJCQkJCQkgIEhBU0hCVUNLRVQgKipidWNrZXRwdHIpOwogc3Rh dGljIGxvbmcgbmV4dF9wb3cyX2xvbmcobG9uZyBudW0pOwotc3RhdGljIGludAluZXh0X3BvdzJf aW50KGxvbmcgbnVtKTsKIHN0YXRpYyB2b2lkIHJlZ2lzdGVyX3NlcV9zY2FuKEhUQUIgKmhhc2hw KTsKIHN0YXRpYyB2b2lkIGRlcmVnaXN0ZXJfc2VxX3NjYW4oSFRBQiAqaGFzaHApOwogc3RhdGlj IGJvb2wgaGFzX3NlcV9zY2FucyhIVEFCICpoYXNocCk7Ci0KK3N0YXRpYyBpbnQgZmluZF9udW1f b2Zfc2Vncyhsb25nIG5lbGVtLCBpbnQgKm5idWNrZXRzLCBsb25nIG51bV9wYXJ0aXRpb25zLCBs b25nIHNzaXplKTsKIAogLyoKICAqIG1lbW9yeSBhbGxvY2F0aW9uIHN1cHBvcnQKQEAgLTQ2OCw3 ICs0NjYsMTEgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxlbSwg Y29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCWVsc2UKIAkJaGFzaHAtPmtleWNvcHkg PSBtZW1jcHk7CiAKLQkvKiBBbmQgc2VsZWN0IHRoZSBlbnRyeSBhbGxvY2F0aW9uIGZ1bmN0aW9u LCB0b28uICovCisJLyoKKwkgKiBBbmQgc2VsZWN0IHRoZSBlbnRyeSBhbGxvY2F0aW9uIGZ1bmN0 aW9uLCB0b28uIFhYWCBzaG91bGQgdGhpcyBhbHNvCisJICogQXNzZXJ0IHRoYXQgZmxhZ3MgJiBI QVNIX1NIQVJFRF9NRU0gaXMgdHJ1ZSwgc2luY2UgSEFTSF9BTExPQyBpcworCSAqIGN1cnJlbnRs eSBvbmx5IHNldCB3aXRoIEhBU0hfU0hBUkVEX01FTSAqCisJICovCiAJaWYgKGZsYWdzICYgSEFT SF9BTExPQykKIAkJaGFzaHAtPmFsbG9jID0gaW5mby0+YWxsb2M7CiAJZWxzZQpAQCAtNTE4LDYg KzUyMCw3IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNv bnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAogCWhhc2hwLT5mcm96ZW4gPSBmYWxzZTsK IAorCS8qIEluaXRpYWxpemluZyB0aGUgSEFTSEhEUiB2YXJpYWJsZXMgd2l0aCBkZWZhdWx0IHZh bHVlcyAqLwogCWhkZWZhdWx0KGhhc2hwKTsKIAogCWhjdGwgPSBoYXNocC0+aGN0bDsKQEAgLTU4 Miw3ICs1ODUsOCBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBsb25nIG5lbGVt LCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJCQkJCWZyZWVsaXN0X3BhcnRpdGlv bnMsCiAJCQkJCW5lbGVtX2FsbG9jLAogCQkJCQluZWxlbV9hbGxvY19maXJzdDsKLQorCQl2b2lk ICpjdXJyX29mZnNldDsKKwkKIAkJLyoKIAkJICogSWYgaGFzaCB0YWJsZSBpcyBwYXJ0aXRpb25l ZCwgZ2l2ZSBlYWNoIGZyZWVsaXN0IGFuIGVxdWFsIHNoYXJlIG9mCiAJCSAqIHRoZSBpbml0aWFs IGFsbG9jYXRpb24uICBPdGhlcndpc2Ugb25seSBmcmVlTGlzdFswXSBpcyB1c2VkLgpAQCAtNTky LDYgKzU5NiwyMCBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBsb25nIG5lbGVt LCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJCWVsc2UKIAkJCWZyZWVsaXN0X3Bh cnRpdGlvbnMgPSAxOwogCisJCS8qCisJCSAqIElmIHRhYmxlIGlzIHNoYXJlZCwgY2FsY3VsYXRl IHRoZSBvZmZzZXQgYXQgd2hpY2ggdG8gZmluZCB0aGUKKwkJICogdGhlIGZpcnN0IHBhcnRpdGlv biBvZiBlbGVtZW50cworCQkgKi8KKwkJaWYgKGhhc2hwLT5pc3NoYXJlZCkKKwkJeworCQkJaW50 CQkJbnNlZ3M7CisJCQlpbnQJCQluYnVja2V0czsKKwkJCW5zZWdzID0gZmluZF9udW1fb2Zfc2Vn cyhuZWxlbSwgJm5idWNrZXRzLCBoY3RsLT5udW1fcGFydGl0aW9ucywgaGN0bC0+c3NpemUpOwor CQkJCisJCQljdXJyX29mZnNldCA9ICAoKChjaGFyICopIGhhc2hwLT5oY3RsKSArIHNpemVvZihI QVNISERSKSArIChpbmZvLT5kc2l6ZSAqIHNpemVvZihIQVNIU0VHTUVOVCkpICsKKyAgICAgICAg ICAgICAgICAgICAgICAgICsgKHNpemVvZihIQVNIQlVDS0VUKSAqIGhjdGwtPnNzaXplICogbnNl Z3MpKTsKKwkJfQorCiAJCW5lbGVtX2FsbG9jID0gbmVsZW0gLyBmcmVlbGlzdF9wYXJ0aXRpb25z OwogCQlpZiAobmVsZW1fYWxsb2MgPD0gMCkKIAkJCW5lbGVtX2FsbG9jID0gMTsKQEAgLTYwOSwx MSArNjI3LDIwIEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0s IGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAkJZm9yIChpID0gMDsgaSA8IGZyZWVs aXN0X3BhcnRpdGlvbnM7IGkrKykKIAkJewogCQkJaW50CQkJdGVtcCA9IChpID09IDApID8gbmVs ZW1fYWxsb2NfZmlyc3QgOiBuZWxlbV9hbGxvYzsKLQotCQkJaWYgKCFlbGVtZW50X2FsbG9jKGhh c2hwLCB0ZW1wLCBpKSkKKwkJCUhBU0hFTEVNRU5UICpmaXJzdEVsZW1lbnQ7CisgCQkJU2l6ZSBl bGVtZW50U2l6ZSA9IE1BWEFMSUdOKHNpemVvZihIQVNIRUxFTUVOVCkpICsgTUFYQUxJR04oaGN0 bC0+ZW50cnlzaXplKTsKKworCQkJLyogTWVtb3J5IGlzIGFsbG9jYXRlZCBhcyBwYXJ0IG9mIGlu aXRpYWwgYWxsb2NhdGlvbiBpbiBTaG1lbUluaXRIYXNoICovCisJCQlpZiAoaGFzaHAtPmlzc2hh cmVkKQorCQkJCWZpcnN0RWxlbWVudCA9IChIQVNIRUxFTUVOVCAqKSBjdXJyX29mZnNldDsKKwkJ CWVsc2UKKwkJCQlmaXJzdEVsZW1lbnQgPSBOVUxMOwkJCisJCQkJCisJCQlpZiAoIWVsZW1lbnRf YWxsb2MoaGFzaHAsIHRlbXAsIGksIGZpcnN0RWxlbWVudCkpCiAJCQkJZXJlcG9ydChFUlJPUiwK IAkJCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCiAJCQkJCQkgZXJybXNnKCJv dXQgb2YgbWVtb3J5IikpKTsKKwkJCWN1cnJfb2Zmc2V0ID0gKCgoY2hhciAqKWN1cnJfb2Zmc2V0 KSArICh0ZW1wICogZWxlbWVudFNpemUpKTsKIAkJfQogCX0KIApAQCAtNjkzLDcgKzcyMCw3IEBA IGluaXRfaHRhYihIVEFCICpoYXNocCwgbG9uZyBuZWxlbSkKIAlpbnQJCQluYnVja2V0czsKIAlp bnQJCQluc2VnczsKIAlpbnQJCQlpOwotCisJCiAJLyoKIAkgKiBpbml0aWFsaXplIG11dGV4ZXMg aWYgaXQncyBhIHBhcnRpdGlvbmVkIHRhYmxlCiAJICovCkBAIC03MDEsMzAgKzcyOCwxMSBAQCBp bml0X2h0YWIoSFRBQiAqaGFzaHAsIGxvbmcgbmVsZW0pCiAJCWZvciAoaSA9IDA7IGkgPCBOVU1f RlJFRUxJU1RTOyBpKyspCiAJCQlTcGluTG9ja0luaXQoJihoY3RsLT5mcmVlTGlzdFtpXS5tdXRl eCkpOwogCi0JLyoKLQkgKiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5leHQgZ3JlYXRlciBwb3dl ciBvZiB0d28gbnVtYmVyIG9mIGJ1Y2tldHMsCi0JICogYXNzdW1pbmcgYSBkZXNpcmVkIG1heGlt dW0gbG9hZCBmYWN0b3Igb2YgMS4KLQkgKi8KLQluYnVja2V0cyA9IG5leHRfcG93Ml9pbnQobmVs ZW0pOwotCi0JLyoKLQkgKiBJbiBhIHBhcnRpdGlvbmVkIHRhYmxlLCBuYnVja2V0cyBtdXN0IGJl IGF0IGxlYXN0IGVxdWFsIHRvCi0JICogbnVtX3BhcnRpdGlvbnM7IHdlcmUgaXQgbGVzcywga2V5 cyB3aXRoIGFwcGFyZW50bHkgZGlmZmVyZW50IHBhcnRpdGlvbgotCSAqIG51bWJlcnMgd291bGQg bWFwIHRvIHRoZSBzYW1lIGJ1Y2tldCwgYnJlYWtpbmcgcGFydGl0aW9uIGluZGVwZW5kZW5jZS4K LQkgKiAoTm9ybWFsbHkgbmJ1Y2tldHMgd2lsbCBiZSBtdWNoIGJpZ2dlcjsgdGhpcyBpcyBqdXN0 IGEgc2FmZXR5IGNoZWNrLikKLQkgKi8KLQl3aGlsZSAobmJ1Y2tldHMgPCBoY3RsLT5udW1fcGFy dGl0aW9ucykKLQkJbmJ1Y2tldHMgPDw9IDE7CisJbnNlZ3MgPSBmaW5kX251bV9vZl9zZWdzKG5l bGVtLCAmbmJ1Y2tldHMsIGhjdGwtPm51bV9wYXJ0aXRpb25zLCBoY3RsLT5zc2l6ZSk7CiAKIAlo Y3RsLT5tYXhfYnVja2V0ID0gaGN0bC0+bG93X21hc2sgPSBuYnVja2V0cyAtIDE7CiAJaGN0bC0+ aGlnaF9tYXNrID0gKG5idWNrZXRzIDw8IDEpIC0gMTsKIAotCS8qCi0JICogRmlndXJlIG51bWJl ciBvZiBkaXJlY3Rvcnkgc2VnbWVudHMgbmVlZGVkLCByb3VuZCB1cCB0byBhIHBvd2VyIG9mIDIK LQkgKi8KLQluc2VncyA9IChuYnVja2V0cyAtIDEpIC8gaGN0bC0+c3NpemUgKyAxOwotCW5zZWdz ID0gbmV4dF9wb3cyX2ludChuc2Vncyk7Ci0KIAkvKgogCSAqIE1ha2Ugc3VyZSBkaXJlY3Rvcnkg aXMgYmlnIGVub3VnaC4gSWYgcHJlLWFsbG9jYXRlZCBkaXJlY3RvcnkgaXMgdG9vCiAJICogc21h bGwsIGNob2tlIChjYWxsZXIgc2NyZXdlZCB1cCkuCkBAIC03NDgsMTEgKzc1NiwxOSBAQCBpbml0 X2h0YWIoSFRBQiAqaGFzaHAsIGxvbmcgbmVsZW0pCiAJfQogCiAJLyogQWxsb2NhdGUgaW5pdGlh bCBzZWdtZW50cyAqLworCWkgPSAwOwogCWZvciAoc2VncCA9IGhhc2hwLT5kaXI7IGhjdGwtPm5z ZWdzIDwgbnNlZ3M7IGhjdGwtPm5zZWdzKyssIHNlZ3ArKykKIAl7Ci0JCSpzZWdwID0gc2VnX2Fs bG9jKGhhc2hwKTsKKwkJaWYgKGhhc2hwLT5pc3NoYXJlZCkKKwkJCSpzZWdwID0gKEhBU0hCVUNL RVQgKikgKCgoY2hhciAqKSBoYXNocC0+aGN0bCkKKwkJCQkrIHNpemVvZihIQVNISERSKQorCQkJ CSsgKGhhc2hwLT5oY3RsLT5kc2l6ZSAqIHNpemVvZihIQVNIU0VHTUVOVCkpCisJCQkJKyAoaSAq IHNpemVvZihIQVNIQlVDS0VUKSAqIGhhc2hwLT5zc2l6ZSkpOyAKKwkJZWxzZQorCQkJKnNlZ3Ag PSBzZWdfYWxsb2MoaGFzaHApOwogCQlpZiAoKnNlZ3AgPT0gTlVMTCkKIAkJCXJldHVybiBmYWxz ZTsKKwkJaSA9IGkgKyAxOwogCX0KIAogCS8qIENob29zZSBudW1iZXIgb2YgZW50cmllcyB0byBh bGxvY2F0ZSBhdCBhIHRpbWUgKi8KQEAgLTg1MSwxMSArODY3LDMyIEBAIGhhc2hfc2VsZWN0X2Rp cnNpemUobG9uZyBudW1fZW50cmllcykKICAqIGFuZCBmb3IgdGhlIChub24gZXhwYW5zaWJsZSkg ZGlyZWN0b3J5LgogICovCiBTaXplCi1oYXNoX2dldF9zaGFyZWRfc2l6ZShIQVNIQ1RMICppbmZv LCBpbnQgZmxhZ3MpCitoYXNoX2dldF9zaGFyZWRfc2l6ZShIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MsIGxvbmcgaW5pdF9zaXplKQogeworCWludCBuYnVja2V0czsKKwlpbnQgbnNlZ3M7CisJaW50 IG51bV9wYXJ0aXRpb25zOworCWludCBzc2l6ZTsKKwlTaXplIGVsZW1lbnRTaXplID0gTUFYQUxJ R04oc2l6ZW9mKEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTihpbmZvLT5lbnRyeXNpemUpOworCiAJ QXNzZXJ0KGZsYWdzICYgSEFTSF9ESVJTSVpFKTsKIAlBc3NlcnQoaW5mby0+ZHNpemUgPT0gaW5m by0+bWF4X2RzaXplKTsKLQlyZXR1cm4gc2l6ZW9mKEhBU0hIRFIpICsgaW5mby0+ZHNpemUgKiBz aXplb2YoSEFTSFNFR01FTlQpOworCisJaWYgKGZsYWdzICYgSEFTSF9QQVJUSVRJT04pCisJCW51 bV9wYXJ0aXRpb25zID0gaW5mby0+bnVtX3BhcnRpdGlvbnM7CisJZWxzZQorCQludW1fcGFydGl0 aW9ucyA9IDA7CisKKwlpZiAoZmxhZ3MgJiBIQVNIX1NFR01FTlQpCisJCXNzaXplID0gaW5mby0+ c3NpemU7CisJZWxzZQorCQlzc2l6ZSA9IERFRl9TRUdTSVpFOworCisJbnNlZ3MgPSBmaW5kX251 bV9vZl9zZWdzKGluaXRfc2l6ZSwgJm5idWNrZXRzLCBudW1fcGFydGl0aW9ucywgc3NpemUpOwor CisJcmV0dXJuIHNpemVvZihIQVNISERSKSArIGluZm8tPmRzaXplICogc2l6ZW9mKEhBU0hTRUdN RU5UKSArCisJCQkrIHNpemVvZihIQVNIQlVDS0VUKSAqIHNzaXplICogbnNlZ3MKKwkJCSsgaW5p dF9zaXplICogZWxlbWVudFNpemU7CiB9CiAKIApAQCAtMTI4NSw3ICsxMzIyLDcgQEAgZ2V0X2hh c2hfZW50cnkoSFRBQiAqaGFzaHAsIGludCBmcmVlbGlzdF9pZHgpCiAJCSAqIEZhaWxpbmcgYmVj YXVzZSB0aGUgbmVlZGVkIGVsZW1lbnQgaXMgaW4gYSBkaWZmZXJlbnQgZnJlZWxpc3QgaXMKIAkJ ICogbm90IGFjY2VwdGFibGUuCiAJCSAqLwotCQlpZiAoIWVsZW1lbnRfYWxsb2MoaGFzaHAsIGhj dGwtPm5lbGVtX2FsbG9jLCBmcmVlbGlzdF9pZHgpKQorCQlpZiAoIWVsZW1lbnRfYWxsb2MoaGFz aHAsIGhjdGwtPm5lbGVtX2FsbG9jLCBmcmVlbGlzdF9pZHgsIE5VTEwpKQogCQl7CiAJCQlpbnQJ CQlib3Jyb3dfZnJvbV9pZHg7CiAKQEAgLTE2ODksNiArMTcyNiw3IEBAIHNlZ19hbGxvYyhIVEFC ICpoYXNocCkKIAlIQVNIU0VHTUVOVCBzZWdwOwogCiAJQ3VycmVudER5bmFIYXNoQ3h0ID0gaGFz aHAtPmhjeHQ7CisJCiAJc2VncCA9IChIQVNIU0VHTUVOVCkgaGFzaHAtPmFsbG9jKHNpemVvZihI QVNIQlVDS0VUKSAqIGhhc2hwLT5zc2l6ZSk7CiAKIAlpZiAoIXNlZ3ApCkBAIC0xNzAzLDExICsx NzQxLDEwIEBAIHNlZ19hbGxvYyhIVEFCICpoYXNocCkKICAqIGFsbG9jYXRlIHNvbWUgbmV3IGVs ZW1lbnRzIGFuZCBsaW5rIHRoZW0gaW50byB0aGUgaW5kaWNhdGVkIGZyZWUgbGlzdAogICovCiBz dGF0aWMgYm9vbAotZWxlbWVudF9hbGxvYyhIVEFCICpoYXNocCwgaW50IG5lbGVtLCBpbnQgZnJl ZWxpc3RfaWR4KQorZWxlbWVudF9hbGxvYyhIVEFCICpoYXNocCwgaW50IG5lbGVtLCBpbnQgZnJl ZWxpc3RfaWR4LCBIQVNIRUxFTUVOVCAqZmlyc3RFbGVtZW50KQogewogCUhBU0hIRFIgICAgKmhj dGwgPSBoYXNocC0+aGN0bDsKIAlTaXplCQllbGVtZW50U2l6ZTsKLQlIQVNIRUxFTUVOVCAqZmly c3RFbGVtZW50OwogCUhBU0hFTEVNRU5UICp0bXBFbGVtZW50OwogCUhBU0hFTEVNRU5UICpwcmV2 RWxlbWVudDsKIAlpbnQJCQlpOwpAQCAtMTcxNywxMCArMTc1NCwxMSBAQCBlbGVtZW50X2FsbG9j KEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0sIGludCBmcmVlbGlzdF9pZHgpCiAKIAkvKiBFYWNoIGVs ZW1lbnQgaGFzIGEgSEFTSEVMRU1FTlQgaGVhZGVyIHBsdXMgdXNlciBkYXRhLiAqLwogCWVsZW1l bnRTaXplID0gTUFYQUxJR04oc2l6ZW9mKEhBU0hFTEVNRU5UKSkgKyBNQVhBTElHTihoY3RsLT5l bnRyeXNpemUpOwotCi0JQ3VycmVudER5bmFIYXNoQ3h0ID0gaGFzaHAtPmhjeHQ7Ci0JZmlyc3RF bGVtZW50ID0gKEhBU0hFTEVNRU5UICopIGhhc2hwLT5hbGxvYyhuZWxlbSAqIGVsZW1lbnRTaXpl KTsKLQorCWlmICghZmlyc3RFbGVtZW50KQorCXsKKwkJQ3VycmVudER5bmFIYXNoQ3h0ID0gaGFz aHAtPmhjeHQ7CisJCWZpcnN0RWxlbWVudCA9IChIQVNIRUxFTUVOVCAqKSBoYXNocC0+YWxsb2Mo bmVsZW0gKiBlbGVtZW50U2l6ZSk7CisJfQogCWlmICghZmlyc3RFbGVtZW50KQogCQlyZXR1cm4g ZmFsc2U7CiAKQEAgLTE4MTYsNyArMTg1NCw3IEBAIG5leHRfcG93Ml9sb25nKGxvbmcgbnVtKQog fQogCiAvKiBjYWxjdWxhdGUgZmlyc3QgcG93ZXIgb2YgMiA+PSBudW0sIGJvdW5kZWQgdG8gd2hh dCB3aWxsIGZpdCBpbiBhbiBpbnQgKi8KLXN0YXRpYyBpbnQKK2ludAogbmV4dF9wb3cyX2ludChs b25nIG51bSkKIHsKIAlpZiAobnVtID4gSU5UX01BWCAvIDIpCkBAIC0xOTU3LDMgKzE5OTUsMzEg QEAgQXRFT1N1YlhhY3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0LCBpbnQgbmVzdERlcHRoKQog CQl9CiAJfQogfQorCitzdGF0aWMgaW50CitmaW5kX251bV9vZl9zZWdzKGxvbmcgbmVsZW0sIGlu dCAqbmJ1Y2tldHMsIGxvbmcgbnVtX3BhcnRpdGlvbnMsIGxvbmcgc3NpemUpCit7CisJaW50IG5z ZWdzOworCS8qCisJICogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBuZXh0IGdyZWF0ZXIgcG93ZXIg b2YgdHdvIG51bWJlciBvZiBidWNrZXRzLAorCSAqIGFzc3VtaW5nIGEgZGVzaXJlZCBtYXhpbXVt IGxvYWQgZmFjdG9yIG9mIDEuCisJICovCisJKm5idWNrZXRzID0gbmV4dF9wb3cyX2ludChuZWxl bSk7CisKKwkvKgorCSAqIEluIGEgcGFydGl0aW9uZWQgdGFibGUsIG5idWNrZXRzIG11c3QgYmUg YXQgbGVhc3QgZXF1YWwgdG8KKwkgKiBudW1fcGFydGl0aW9uczsgd2VyZSBpdCBsZXNzLCBrZXlz IHdpdGggYXBwYXJlbnRseSBkaWZmZXJlbnQgcGFydGl0aW9uCisJICogbnVtYmVycyB3b3VsZCBt YXAgdG8gdGhlIHNhbWUgYnVja2V0LCBicmVha2luZyBwYXJ0aXRpb24gaW5kZXBlbmRlbmNlLgor CSAqIChOb3JtYWxseSBuYnVja2V0cyB3aWxsIGJlIG11Y2ggYmlnZ2VyOyB0aGlzIGlzIGp1c3Qg YSBzYWZldHkgY2hlY2suKQorCSAqLworCXdoaWxlICgoKm5idWNrZXRzKSA8IG51bV9wYXJ0aXRp b25zKQorCQkoKm5idWNrZXRzKSA8PD0gMTsKKworCisJLyoKKwkgKiBGaWd1cmUgbnVtYmVyIG9m IGRpcmVjdG9yeSBzZWdtZW50cyBuZWVkZWQsIHJvdW5kIHVwIHRvIGEgcG93ZXIgb2YgMgorCSAq LworCW5zZWdzID0gKCgqbmJ1Y2tldHMpIC0gMSkgLyBzc2l6ZSArIDE7CisJbnNlZ3MgPSBuZXh0 X3BvdzJfaW50KG5zZWdzKTsKKwlyZXR1cm4gbnNlZ3M7Cit9CmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9keW5haGFzaC5oIGIvc3JjL2luY2x1ZGUvdXRpbHMvZHluYWhhc2guaAppbmRl eCA4YTMxZDk1MjRlLi45MzkzMDE4ZWY2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9k eW5haGFzaC5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2R5bmFoYXNoLmgKQEAgLTE1LDYgKzE1 LDggQEAKICNpZm5kZWYgRFlOQUhBU0hfSAogI2RlZmluZSBEWU5BSEFTSF9ICiAKKyNkZWZpbmUg REVGX1NFR1NJWkUJCQkgICAyNTYKIGV4dGVybiBpbnQJbXlfbG9nMihsb25nIG51bSk7CitleHRl cm4gaW50CW5leHRfcG93Ml9pbnQobG9uZyBudW0pOwogCiAjZW5kaWYJCQkJCQkJLyogRFlOQUhB U0hfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oIGIvc3JjL2lu Y2x1ZGUvdXRpbHMvaHNlYXJjaC5oCmluZGV4IDkzMmNjNGYzNGQuLjVlMTZiZDQxODMgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVkZS91dGls cy9oc2VhcmNoLmgKQEAgLTE1MSw3ICsxNTEsNyBAQCBleHRlcm4gdm9pZCBoYXNoX3NlcV90ZXJt KEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzKTsKIGV4dGVybiB2b2lkIGhhc2hfZnJlZXplKEhUQUIg Kmhhc2hwKTsKIGV4dGVybiBTaXplIGhhc2hfZXN0aW1hdGVfc2l6ZShsb25nIG51bV9lbnRyaWVz LCBTaXplIGVudHJ5c2l6ZSk7CiBleHRlcm4gbG9uZyBoYXNoX3NlbGVjdF9kaXJzaXplKGxvbmcg bnVtX2VudHJpZXMpOwotZXh0ZXJuIFNpemUgaGFzaF9nZXRfc2hhcmVkX3NpemUoSEFTSENUTCAq aW5mbywgaW50IGZsYWdzKTsKK2V4dGVybiBTaXplIGhhc2hfZ2V0X3NoYXJlZF9zaXplKEhBU0hD VEwgKmluZm8sIGludCBmbGFncywgbG9uZyBpbml0X3NpemUpOwogZXh0ZXJuIHZvaWQgQXRFT1hh Y3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0KTsKIGV4dGVybiB2b2lkIEF0RU9TdWJYYWN0X0hh c2hUYWJsZXMoYm9vbCBpc0NvbW1pdCwgaW50IG5lc3REZXB0aCk7CiAKLS0gCjIuMzQuMQoK --0000000000000885dd062f40a522 Content-Type: application/octet-stream; name="0002-Replace-ShmemAlloc-calls-by-ShmemInitStruct.patch" Content-Disposition: attachment; filename="0002-Replace-ShmemAlloc-calls-by-ShmemInitStruct.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m7ppwve11 RnJvbSA3MzQxYWRkMTExM2ViZmVkNWYxNjBmNjY0YmMzNzQxNjU1ODYyMjljIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFpbC5jb20+ CkRhdGU6IFNhdCwgMSBNYXIgMjAyNSAwOTowMjozMyArMDUzMApTdWJqZWN0OiBbUEFUQ0ggMi8y XSBSZXBsYWNlIFNobWVtQWxsb2MgY2FsbHMgYnkgU2htZW1Jbml0U3RydWN0CgpUaGUgc2hhcmVk IG1lbW9yeSBhbGxvY2F0ZWQgYnkgU2htZW1BbGxvYyBpcyBub3QgdHJhY2tlZApieSBwZ19zaG1l bV9hbGxvY2F0aW9ucy4gVGhpcyBjb21taXQgcmVwbGFjZXMgbW9zdCBvZiB0aGUKY2FsbHMgdG8g U2htZW1BbGxvYyBieSBTaG1lbUluaXRTdHJ1Y3QgdG8gYXNzb2NpYXRlIGEgbmFtZQp3aXRoIHRo ZSBhbGxvY2F0aW9ucyBhbmQgZW5zdXJlIHRoYXQgdGhleSBnZXQgdHJhY2tlZCBieQpwZ19zaG1l bV9hbGxvY2F0aW9ucwotLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYyAgICB8 ICAxICsKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyB8IDEwICsrKysrLS0t LS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICB8ICA4ICsrKystLS0tCiAz IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL2x3bG9jay5jCmluZGV4IDhhZGYyNzMwMjcuLjkxMDE2NzMxODUgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sd2xvY2suYworKysgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2xtZ3IvbHdsb2NrLmMKQEAgLTQ2NCw2ICs0NjQsNyBAQCBDcmVhdGVMV0xvY2tzKHZv aWQpCiAJCVNpemUJCXNwYWNlTG9ja3MgPSBMV0xvY2tTaG1lbVNpemUoKTsKIAkJaW50CQkgICAq TFdMb2NrQ291bnRlcjsKIAkJY2hhcgkgICAqcHRyOworCQlib29sIGZvdW5kOwogCiAJCS8qIEFs bG9jYXRlIHNwYWNlICovCiAJCXB0ciA9IChjaGFyICopIFNobWVtQWxsb2Moc3BhY2VMb2Nrcyk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKaW5kZXggNWIyMWEwNTM5OC4uNThhZmI5 NGQ5NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTI0NCw3ICsxMjQ0 LDcgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCQlQcmVkWGFjdC0+SGF2ZVBhcnRp YWxDbGVhcmVkVGhyb3VnaCA9IDA7CiAJCXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNpemUpIG1h eF90YWJsZV9zaXplLAogCQkJCQkJCSAgIHNpemVvZihTRVJJQUxJWkFCTEVYQUNUKSk7Ci0JCVBy ZWRYYWN0LT5lbGVtZW50ID0gU2htZW1BbGxvYyhyZXF1ZXN0U2l6ZSk7CisJCVByZWRYYWN0LT5l bGVtZW50ID0gU2htZW1Jbml0U3RydWN0KCJTZXJpYWxpemFibGVYYWN0TGlzdCIsIHJlcXVlc3RT aXplLCAmZm91bmQpOwogCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBj bGVhbi4gKi8KIAkJbWVtc2V0KFByZWRYYWN0LT5lbGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CiAJ CWZvciAoaSA9IDA7IGkgPCBtYXhfdGFibGVfc2l6ZTsgaSsrKQpAQCAtMTI5OSw5ICsxMjk5LDEx IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKiBwcm9iYWJseSBPSy4KIAkgKi8K IAltYXhfdGFibGVfc2l6ZSAqPSA1OworCXJlcXVlc3RTaXplID0gbXVsX3NpemUoKFNpemUpIG1h eF90YWJsZV9zaXplLAorCQkJCQkJUldDb25mbGljdERhdGFTaXplKTsKIAogCVJXQ29uZmxpY3RQ b29sID0gU2htZW1Jbml0U3RydWN0KCJSV0NvbmZsaWN0UG9vbCIsCi0JCQkJCQkJCQkgUldDb25m bGljdFBvb2xIZWFkZXJEYXRhU2l6ZSwKKwkJCQkJCQkJCSBSV0NvbmZsaWN0UG9vbEhlYWRlckRh dGFTaXplICsgcmVxdWVzdFNpemUsCiAJCQkJCQkJCQkgJmZvdW5kKTsKIAlBc3NlcnQoZm91bmQg PT0gSXNVbmRlclBvc3RtYXN0ZXIpOwogCWlmICghZm91bmQpCkBAIC0xMzA5LDkgKzEzMTEsNyBA QCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJCWludAkJCWk7CiAKIAkJZGxpc3RfaW5p dCgmUldDb25mbGljdFBvb2wtPmF2YWlsYWJsZUxpc3QpOwotCQlyZXF1ZXN0U2l6ZSA9IG11bF9z aXplKChTaXplKSBtYXhfdGFibGVfc2l6ZSwKLQkJCQkJCQkgICBSV0NvbmZsaWN0RGF0YVNpemUp OwotCQlSV0NvbmZsaWN0UG9vbC0+ZWxlbWVudCA9IFNobWVtQWxsb2MocmVxdWVzdFNpemUpOwor CQlSV0NvbmZsaWN0UG9vbC0+ZWxlbWVudCA9IChSV0NvbmZsaWN0KSAoKGNoYXIgKilSV0NvbmZs aWN0UG9vbCArIFJXQ29uZmxpY3RQb29sSGVhZGVyRGF0YVNpemUpOyAKIAkJLyogQWRkIGFsbCBl bGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwgY2xlYW4uICovCiAJCW1lbXNldChSV0NvbmZsaWN0 UG9vbC0+ZWxlbWVudCwgMCwgcmVxdWVzdFNpemUpOwogCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3Rh YmxlX3NpemU7IGkrKykKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9j LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDQ5MjA0ZjkxYTIuLmUx MTI3MzVkOTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysr IGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMjE4LDExICsyMTgsMTEgQEAg SW5pdFByb2NHbG9iYWwodm9pZCkKIAkgKiBob3cgaG90bHkgdGhleSBhcmUgYWNjZXNzZWQuCiAJ ICovCiAJUHJvY0dsb2JhbC0+eGlkcyA9Ci0JCShUcmFuc2FjdGlvbklkICopIFNobWVtQWxsb2Mo VG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpOworCQkoVHJhbnNhY3Rpb25J ZCAqKSBTaG1lbUluaXRTdHJ1Y3QoIlByb2MgVHJhbnNhY3Rpb24gSWRzIiwgVG90YWxQcm9jcyAq IHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcyksICZmb3VuZCk7CiAJTWVtU2V0KFByb2NHbG9iYWwt PnhpZHMsIDAsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKLQlQcm9j R2xvYmFsLT5zdWJ4aWRTdGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgU2htZW1BbGxvYyhUb3Rh bFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKKwlQcm9jR2xvYmFs LT5zdWJ4aWRTdGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgU2htZW1Jbml0U3RydWN0KCJQcm9j IFN1Yi10cmFuc2FjdGlvbiBpZCBzdGF0ZXMiLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdWJ4aWRTdGF0ZXMpLCAmZm91bmQpOwogCU1lbVNldChQcm9jR2xvYmFsLT5zdWJ4aWRT dGF0ZXMsIDAsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykp OwotCVByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopIFNobWVtQWxsb2MoVG90YWxQ cm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKKwlQcm9jR2xvYmFsLT5z dGF0dXNGbGFncyA9ICh1aW50OCAqKSBTaG1lbUluaXRTdHJ1Y3QoIlByb2MgU3RhdHVzIEZsYWdz IiwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpLCAmZm91bmQp OwogCU1lbVNldChQcm9jR2xvYmFsLT5zdGF0dXNGbGFncywgMCwgVG90YWxQcm9jcyAqIHNpemVv ZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAogCS8qCkBAIC0yMzMsNyArMjMzLDcgQEAg SW5pdFByb2NHbG9iYWwodm9pZCkKIAlmcExvY2tCaXRzU2l6ZSA9IE1BWEFMSUdOKEZhc3RQYXRo TG9ja0dyb3Vwc1BlckJhY2tlbmQgKiBzaXplb2YodWludDY0KSk7CiAJZnBSZWxJZFNpemUgPSBN QVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kICogc2l6ZW9mKE9pZCkgKiBGUF9M T0NLX1NMT1RTX1BFUl9HUk9VUCk7CiAKLQlmcFB0ciA9IFNobWVtQWxsb2MoVG90YWxQcm9jcyAq IChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSk7CisJZnBQdHIgPSBTaG1lbUluaXRTdHJ1 Y3QoIkZhc3QgcGF0aCBsb2NrIGFycmF5cyIsIFRvdGFsUHJvY3MgKiAoZnBMb2NrQml0c1NpemUg KyBmcFJlbElkU2l6ZSksICZmb3VuZCk7CiAJTWVtU2V0KGZwUHRyLCAwLCBUb3RhbFByb2NzICog KGZwTG9ja0JpdHNTaXplICsgZnBSZWxJZFNpemUpKTsKIAogCS8qIEZvciBhc3NlcnRzIGNoZWNr aW5nIHdlIGRpZCBub3Qgb3ZlcmZsb3cuICovCi0tIAoyLjM0LjEKCg== --0000000000000885dd062f40a522--