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.96) (envelope-from ) id 1wACHL-0029oZ-0I for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 19:40:03 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wACGJ-0024rI-1R for pgsql-hackers@arkaria.postgresql.org; Tue, 07 Apr 2026 19:38:59 +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.96) (envelope-from ) id 1wACGI-0024r4-2g for pgsql-hackers@lists.postgresql.org; Tue, 07 Apr 2026 19:38:59 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wACGG-000000015hi-3cyE for pgsql-hackers@postgresql.org; Tue, 07 Apr 2026 19:38:58 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-38df11810abso1874581fa.1 for ; Tue, 07 Apr 2026 12:38:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775590730; cv=none; d=google.com; s=arc-20240605; b=BT3nTDhH0f52UOlUr/FSKvu04+ggnFK4SPjjg8+I8on0UFa5CQjN2kgceiyMeehxBL ouGbVi1fA4X8YT9W+HFgxZF2l5rkx5BmBmFPttJYzvDBWL24NUx9Bvhd/yNoR/E9Mcyb MbsozfwYpgHCShzHUSLfv0vpp2Am5/uW/GdzL4EVsINL1ybLnJ91WW8hCpsKYY3puhn7 B9uaJ1S2Nk2lde+4ueoYQOMDkr53W5mK2qVn74nWY+5tpqMiG876w8IeGkgXgH34pVt/ UZfRUQIZF2P3i3Q70VmyTCQ0VXgsN2jCkRDvZ7M9yH+qFJKUf893Q0j3K/SpKI5VlhI1 M/mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=XV18dMJ65m6iNCZG90CxDiV6vqZufgDyu2jeGoHUGJw=; fh=lD1yytAAq3nTnp1ADUx3j1XrGn8dqgjxEqariSBSOEw=; b=aV6RP3BIfOE2hR9m4egU/cv5pMeuYdv3FqJwryzy5Gi1ZOLou5n3Sop0oEzgPW87Mt C1fYhmprOHiTbNWi+bEfC3gjD2or7nadtry0eTh8obSzQwVnBv89fMJYOjmy/NtZYVYP lcwKdu4tHPzxhPXnFfRmzoDW1BLsk8Cw+BO2p0D28lVzYgxbYlMfy+kurATYLZfMDOea n6x2yntKyOhzVstjLgO3frWrEbBLkK7YSzsJpdwb7sZ4AtUyiXpzBcySxzWpDLgOimpu PtEk2ml4GAF39921mcxL2UFARcgGEolVqMoufCxdd4SkZDrrEE5jx+PHDg45GcZEQ+6W WalA==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775590730; x=1776195530; darn=postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=XV18dMJ65m6iNCZG90CxDiV6vqZufgDyu2jeGoHUGJw=; b=ELs9vErkyK+sM0NeweoVnpiT6qbOorbDyQQ2KMHQcwwhTbHN+K6h/iIor1OG3t1Qhv OpNHyIosQRFOMxh7qjiJLxy53VWQAepCdfmmPpOOLmZ9rc9cZpYj7+t4fxU0xRecDL/g yrdUAY7YHUCXo+ZEY91WfR/biXBxF2RN8j/D1eFrUKS5TyKmZXgT3vFbfUJxdtOKM2Sf VpTmRnJj+b5tGgCefNuy3Ivh36SAVjeCmz65FtIGuSk8i4Yc+cmdQ0CUPSLl3TIyCo+i EMphkmCGzoAAEmJZDDCJgCNYb8PIl3kBMkFybm01nzobhgjIPgmrCWGkH7szzRM8vOrK ZZbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775590730; x=1776195530; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=XV18dMJ65m6iNCZG90CxDiV6vqZufgDyu2jeGoHUGJw=; b=WvfY0eSO7MfA1HUvnF8rCy4zpx2ukWp9oP6MOEQ1/GXkKQxnYoamQvFrRAlKsZPoxn t7sR1w78OIJvW9l5ZprjD0JjbsUdcEGbNnts83WUZ5kUmwMEQYHPa7XjRSl7MRpPvS6l bGfNvAiDOje52CPWcOpNThvlmJpTZeQeIYti58ddsLybafGikRGmNOn396nuL6fXNtWg peePVvVRqTi0sBCNtOBBH1yj/AH6CsgEdwRQyd8AHrD2Caeo5iKbAm5KrXuE4S/+OSBJ a7VCYJFWA4uWIaQC9KR8e+dsAohQp74NF4BnnN1pVOFIEIz55H7Ff4RL8j8+K462FNOs Vliw== X-Forwarded-Encrypted: i=1; AJvYcCXtevvbvqwpdJVpuBPmYXf1k11Bg6al12e2aID/2Kbm+IfCNSr3M6uj9JcbVuP1U5jq8n7uG4Fys+Xzanup@postgresql.org X-Gm-Message-State: AOJu0YzIk12U5N1YFUlcKTZSmFg8ozuATv4apvcUi6eHjyUNzvIMP4ZE f9tdK2d8mCBKnlPWC6zjGsLiDJgV7JJG4FcPgFs21x2HjbfddnWv6NLADzGl33iLWwpZ1m14tDd +S3Bi1/9SgeT0qFkiMNgtP03CkDbALW0= X-Gm-Gg: AeBDiettE/qdwiQpNSbu3ujrEeYAAcU1DDu4QHtGHdZSsnnhtDmR1YBRjAeFlhllRIG bBiSfifdXP+LxDuSB1X5pUEa0aUKipSRa5mrD0T6qdeHcRanuCc7dkS7WIiE5ILXedTEMsDy/1k NoVJZfgzElnpbt4CHiaX2AkqTy4cMxSKx8lHeQZA8Oax9TwxldQ1n9jE6H9Wgywv4YGTBhPj5TN kmPYC1tdeZOh2Um7zl5JAW7NrJsGNbhoK93wQ/IL8sfndNHx+6KnyZFMBGj6eg+skAoZ2Asf8NI ourenEo5jeSlw8DWSE2YsyP4UwnjcT41jU6aQosife5+4GA1HWFW74b+Wp4Vc7+hgA6JYG3RREY zVkhUeA== X-Received: by 2002:a05:651c:6a1:b0:389:e6e4:3c7d with SMTP id 38308e7fff4ca-38cd6ec6641mr48285201fa.19.1775590729949; Tue, 07 Apr 2026 12:38:49 -0700 (PDT) MIME-Version: 1.0 References: <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <7d3ba240-9350-4dfc-bbe1-be6584aee236@iki.fi> <1c3a07a7-158d-4800-927c-2641c73277d8@iki.fi> <6d4383eb-4aaa-47ae-bda8-ee40dc60ad84@iki.fi> In-Reply-To: From: Matthias van de Meent Date: Tue, 7 Apr 2026 21:38:37 +0200 X-Gm-Features: AQROBzDnxxAOsobsE3zTmlsTYZZlEutMeV-mS4OUVksrPBuVgp9yHJfuar3JMCc Message-ID: Subject: Re: Better shared data structure management and resizable shared data structures To: Ashutosh Bapat Cc: Heikki Linnakangas , Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com Content-Type: multipart/mixed; boundary="000000000000b9cbe1064ee3ee75" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000b9cbe1064ee3ee75 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 7 Apr 2026 at 16:47, Ashutosh Bapat wrote: > > On Tue, Apr 7, 2026 at 3:36=E2=80=AFPM Ashutosh Bapat > wrote: > > > > On Mon, Apr 6, 2026 at 7:23=E2=80=AFPM Ashutosh Bapat > > wrote: > > > > > > I have kept these two patches separate from the main patch so that I > > > can remove them if others feel they are not worth including in the > > > feature. > > > > Here are patches rebased on the latest HEAD. No conflicts just rebase. > > > > Here are differences from the previous patchset. > > > > o. There are two patches in this patchset now. a. 0001 which supports > > resizable shared memory and is equivalent to 0001 + 0002 + 0004 + 0005 > > from the previous patchset. b. 0002 which is 0006 from the previous > > patchset and adds support for protecting resizable shared memory > > structures. 0003, which added diagnostics to investigate CFBot > > failure, from the previous patchset is not required anymore since all > > tests pass with CFBot. > > > > o. I have merged 0002 into 0001 from the previous patchset since with > > that patch all platforms are green on CFBot. The resizable shared > > memory test now uses /proc/self/smaps instead of /proc/self/status to > > find the amount of memory allocated in the main shared memory segment > > of PostgreSQL. > > > > o. Merged 0004, which supported minimum_size, into 0001. Minimum_size > > would be useful to protect against accidental shrinkage of the > > resizable structures. It will help additional support for minimum > > sizes of GUCs like shared_buffers. It also makes it easy and intuitive > > to distinguish between fixed-size and resizable structures, and will > > be useful to find the minimum size of the shared memory segment. I was thinking more along the lines of attached (incremental) patch 0003 for min/max sizing. I'd say it has a slightly more natural API, but YMMV. ----- I also noticed that it's probably not correct to "just" check and complain about the size of a resizable shmem segment when you attach: Without coordination about which startup size the shmem segment should have, how could you get the current size state correct? And cross-process coordination of size information before shmem is attached is not really possible, not when you may have to deal with a very slow to start backend. ---- Attached also 0004, which makes some small adjustments to shmem.c's resize checks. Kind regards, Matthias van de Meent Databricks (https://www.databricks.com) --000000000000b9cbe1064ee3ee75 Content-Type: application/octet-stream; name="v20260407-0004-Some-check-simplification-deduplication.nocfbot.patch" Content-Disposition: attachment; filename="v20260407-0004-Some-check-simplification-deduplication.nocfbot.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp0oyeh0 RnJvbSA1NjY4Y2FlNzlkYTY3ZmVlMmVhYjZjNWNlNDgwZmVkNTIxNDQ2NjgwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBBcHIgMjAyNiAyMToyMTo1NyArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjYwNDA3IDQvNF0gU29tZSBjaGVjayBzaW1wbGlmaWNhdGlvbi9kZWR1 cGxpY2F0aW9uLgoKLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jIHwgNjAgKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0 aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggMTJk ZTYzNDRjYWMuLjU0MGE1MWI1MGU1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTcwNCw0 OSArNzA0LDIzIEBAIEF0dGFjaFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3Qs IGJvb2wgbWlzc2luZ19vaykKIAkJcmV0dXJuIGZhbHNlOwogCX0KIAotCS8qIENoZWNrIHRoYXQg dGhlIHNpemVzIGluIHRoZSBpbmRleCBtYXRjaCB0aGUgcmVxdWVzdC4gKi8KLQlpZiAoaW5kZXhf ZW50cnktPnNpemUgIT0gcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSAmJgotCQlyZXF1ZXN0LT5vcHRp b25zLT5zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCi0JewotCQllcmVwb3J0KEVS Uk9SLAotCQkJCShlcnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiB3YXMgY3JlYXRl ZCB3aXRoIgotCQkJCQkJIiBkaWZmZXJlbnQgc2l6ZTogZXhpc3RpbmcgJXp1LCByZXF1ZXN0ZWQg JXp1IiwKLQkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5zaXplLCByZXF1ZXN0LT5vcHRpb25zLT5z aXplKSkpOwotCX0KLQotCS8qCi0JICogRm9yIHJlc2l6YWJsZSBzdHJ1Y3R1cmVzLCBhbHNvIGNo ZWNrIHRoYXQgbWluaW11bV9zaXplIGFuZCBtYXhpbXVtX3NpemUKLQkgKiBtYXRjaC4gRm9yIGZp eGVkLXNpemUgc3RydWN0dXJlcywgdGhlc2UgYXJlIGRlcml2ZWQgKHNldCB0byBzaXplKSBpbgot CSAqIHRoZSBpbmRleCBlbnRyeSBhbmQgbm90IG1lYW5pbmdmdWwgaW4gdGhlIHJlcXVlc3QuCi0J ICovCi0JaWYgKHJlcXVlc3QtPm9wdGlvbnMtPm1heGltdW1fc2l6ZSAhPSAwKQotCXsKLQkJaWYg KGluZGV4X2VudHJ5LT5taW5pbXVtX3NpemUgIT0gcmVxdWVzdC0+b3B0aW9ucy0+bWluaW11bV9z aXplICYmCi0JCQlyZXF1ZXN0LT5vcHRpb25zLT5taW5pbXVtX3NpemUgIT0gU0hNRU1fQVRUQUNI X1VOS05PV05fU0laRSkKLQkJewotCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycm1zZygic2hh cmVkIG1lbW9yeSBzdHJ1Y3QgXCIlc1wiIHdhcyBjcmVhdGVkIHdpdGgiCi0JCQkJCQkJIiBkaWZm ZXJlbnQgbWluaW11bV9zaXplOiBleGlzdGluZyAlenUsIHJlcXVlc3RlZCAlenUiLAotCQkJCQkJ CW5hbWUsIGluZGV4X2VudHJ5LT5taW5pbXVtX3NpemUsCi0JCQkJCQkJcmVxdWVzdC0+b3B0aW9u cy0+bWluaW11bV9zaXplKSkpOwotCQl9Ci0KLQkJaWYgKGluZGV4X2VudHJ5LT5tYXhpbXVtX3Np emUgIT0gcmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplICYmCi0JCQlyZXF1ZXN0LT5vcHRp b25zLT5tYXhpbXVtX3NpemUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKLQkJewotCQkJ ZXJlcG9ydChFUlJPUiwKLQkJCQkJKGVycm1zZygic2hhcmVkIG1lbW9yeSBzdHJ1Y3QgXCIlc1wi IHdhcyBjcmVhdGVkIHdpdGgiCi0JCQkJCQkJIiBkaWZmZXJlbnQgbWF4aW11bV9zaXplOiBleGlz dGluZyAlenUsIHJlcXVlc3RlZCAlenUiLAotCQkJCQkJCW5hbWUsIGluZGV4X2VudHJ5LT5tYXhp bXVtX3NpemUsCi0JCQkJCQkJcmVxdWVzdC0+b3B0aW9ucy0+bWF4aW11bV9zaXplKSkpOwotCQl9 Ci0JfQotCWVsc2UKLQl7Ci0JCWlmIChpbmRleF9lbnRyeS0+bWluaW11bV9zaXplICE9IGluZGV4 X2VudHJ5LT5tYXhpbXVtX3NpemUpCi0JCQllbG9nKEVSUk9SLCAic2hhcmVkIG1lbW9yeSBzdHJ1 Y3QgXCIlc1wiIHdhcyBjcmVhdGVkIGFzIHJlc2l6YWJsZSwgYnV0IHJlcXVlc3RlZCBhcyBmaXhl ZC1zaXplIiwKLQkJCQkgbmFtZSk7Ci0JfQorI2RlZmluZSBDSEVDS19TSVpFKHNpemUpIFwKK2Rv IHsgXAorCS8qIENoZWNrIHRoYXQgdGhlIHNpemVzIGluIHRoZSBpbmRleCBtYXRjaCB0aGUgcmVx dWVzdC4gKi8gXAorCWlmIChyZXF1ZXN0LT5vcHRpb25zLT5zaXplICE9IFNITUVNX0FUVEFDSF9V TktOT1dOX1NJWkUgJiYgXAorCQlpbmRleF9lbnRyeS0+c2l6ZSAhPSByZXF1ZXN0LT5vcHRpb25z LT5zaXplKSBcCisJeyBcCisJCWVyZXBvcnQoRVJST1IsIFwKKwkJCQkoZXJybXNnKCJzaGFyZWQg bWVtb3J5IHN0cnVjdCBcIiVzXCIgd2FzIGNyZWF0ZWQgd2l0aCIgXAorCQkJCQkJIiBkaWZmZXJl bnQgJXM6IGV4aXN0aW5nICV6dSwgcmVxdWVzdGVkICV6dSIsIFwKKwkJCQkJCW5hbWUsIENwcEFz U3RyaW5nKHNpemUpLCBpbmRleF9lbnRyeS0+c2l6ZSwgXAorCQkJCQkJcmVxdWVzdC0+b3B0aW9u cy0+c2l6ZSkpKTsgXAorCX0gXAorfSB3aGlsZSAoZmFsc2UpCisKKwlDSEVDS19TSVpFKHNpemUp OworCUNIRUNLX1NJWkUobWluaW11bV9zaXplKTsKKwlDSEVDS19TSVpFKG1heGltdW1fc2l6ZSk7 CiAKIAkvKgogCSAqIFJlLWVzdGFibGlzaCB0aGUgY2FsbGVyJ3MgcG9pbnRlciB2YXJpYWJsZSwg b3IgZG8gb3RoZXIgYWN0aW9ucyB0bwotLSAKMi41MC4xIChBcHBsZSBHaXQtMTU1KQoK --000000000000b9cbe1064ee3ee75 Content-Type: application/octet-stream; name="v20260407-0003-Various-adjustments-to-resizable-shmem-acc.nocfbot.patch" Content-Disposition: attachment; filename="v20260407-0003-Various-adjustments-to-resizable-shmem-acc.nocfbot.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnp0oyer1 RnJvbSA2MmQ3YTJhODQxNDk0YzEyZDE4MTRlYWU1YWI1Nzg4ZGZlYjlkNWMxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+CkRhdGU6IFR1ZSwgNyBBcHIgMjAyNiAyMDo1OTozNiArMDIwMApTdWJq ZWN0OiBbUEFUQ0ggdjIwMjYwNDA3IDMvNF0gVmFyaW91cyBhZGp1c3RtZW50cyB0byByZXNpemFi bGUgc2htZW0KIGFjY291bnRpbmcKCkluc3RlYWQgb2YgY29udGludW91c2x5IGZhbGxpbmcgYmFj ayBvbnRvIC5zaXplIHdoZW4gLm1heGltdW1fc2l6ZQppcyAwLCB1cGRhdGUgdGhlIGNvcGllZCgh KSBvcHRpb25zJyAubWF4aW11bV9zaXplIHdpdGggdGhlIHZhbHVlCm9mIC5zaXplLiAgVGhpcyBz YXZlcyBhIGNvbXBhcmUgb3BlcmF0aW9uIHBlciBTSE1FTV9SRVFVRVNUX1NQQUNFX1NJWkUoKQpl dmFsdWF0aW9uLCBhbmQgc2ltcGxpZmllcyB3aGljaCBmaWVsZCB0byBhY2Nlc3MgZm9yIGJvdW5k IGNoZWNrcy4KClNpbWlsYXJseSwgLm1pbmltdW1fc2l6ZSBpcyB1cGRhdGVkIHdpdGggYW4gaW5w dXQgb2YgMCBtZWFuaW5nIHRvCmRlZmF1bHQgdG8gLnNpemUuIEEgc3Vic3RpdHV0ZSBaZXJvIHZh bHVlIG9mIFNITUVNX1JFU0laRV9UT19aRVJPCmlzIHVzZWQgdG8gYWxsb3cgdXNlcnMgdG8gcmVz aXplIHRoZSBzZWdtZW50J3MgbWVtb3J5IHVzYWdlIHRvIHplcm8KYnl0ZXMgdXNlZC4KCkl0IGFs c28gcmVvcmRlcnMgYW5kIGRlZHVwbGljYXRlcyBzb21lIGVycm9yIGNvbmRpdGlvbiBjaGVja3Mu Ci0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyB8IDExMSArKysrKysrKysrKysr KysrKystLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICB8ICAy MCArKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgNzUgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggNjE4MDhjN2E4ZTUuLjEyZGU2MzQ0Y2Fj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9i YWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTEwOCwxNCArMTA4LDE5IEBACiAgKiBJbiBv cmRlciB0byBhbGxvY2F0ZSByZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmVzLCBzZXQK ICAqIFNobWVtUmVxdWVzdFN0cnVjdE9wdHM6Om1heGltdW1fc2l6ZSB0byB0aGUgbWF4aW11bSBz aXplIHRoYXQgdGhlIHN0cnVjdHVyZQogICogY2FuIGdyb3cgdG8uICBUaGUgYWRkcmVzcyBzcGFj ZSBmb3IgdGhlIG1heGltdW0gc2l6ZSB3aWxsIGJlIHJlc2VydmVkIGF0Ci0gKiBzdGFydHVwLCBi dXQgbWVtb3J5IGlzIGFsbG9jYXRlZCBvciBmcmVlZCBhcyB0aGUgc3RydWN0dXJlIGdyb3dzIG9y IHNocmlua3MKLSAqIHJlc3BlY3RpdmVseS4gU2htZW1SZXF1ZXN0U3RydWN0T3B0czo6c2l6ZSBz aG91bGQgYmUgc2V0IHRvIHRoZSBpbml0aWFsIHNpemUKLSAqIG9mIHRoZSBzdHJ1Y3R1cmUsIHdo aWNoIGlzIHRoZSBhbW91bnQgb2YgbWVtb3J5IGFsbG9jYXRlZCBhdCB0aGUgc3RhcnR1cC4KLSAq IE9wdGlvbmFsbHksIFNobWVtUmVxdWVzdFN0cnVjdE9wdHM6Om1pbmltdW1fc2l6ZSBjYW4gYmUg c2V0IHRvIHRoZSBtaW5pbXVtCi0gKiBzaXplIHRoYXQgdGhlIHN0cnVjdHVyZSBjYW4gc2hyaW5r IHRvLiBBZnRlciBzdGFydHVwLCB0aGUgc3RydWN0dXJlIGNhbiBiZQotICogcmVzaXplZCBieSBj YWxsaW5nIFNobWVtUmVzaXplU3RydWN0KCkgYnkgcGFzc2luZyBpdCB0aGUgU2htZW1TdHJ1Y3RE ZXNjIGZvcgotICogdGhlIHN0cnVjdHVyZSBhbmQgdGhlIG5ldyBzaXplLiBTaG1lbVJlc2l6ZVN0 cnVjdCgpIGVuZm9yY2VzIHRoYXQgdGhlIG5ldwotICogc2l6ZSBpcyB3aXRoaW4gW21pbmltdW1f c2l6ZSwgbWF4aW11bV9zaXplXS4KKyAqIHN0YXJ0dXAsIHdoaWxzdCB0aGUgYmFja2luZyBtZW1v cnkgaXMgYWxsb2NhdGVkIG9yIGZyZWVkIGFzIHRoZSBzdHJ1Y3R1cmUKKyAqIGdyb3dzIG9yIHNo cmlua3MgcmVzcGVjdGl2ZWx5LiAgU2htZW1SZXF1ZXN0U3RydWN0T3B0czo6c2l6ZSBzaG91bGQg YmUgc2V0CisgKiB0byB0aGUgaW5pdGlhbCBzaXplIG9mIHRoZSBzdHJ1Y3R1cmUgYXQgc3RhcnR1 cC4gIE9wdGlvbmFsbHksCisgKiBTaG1lbVJlcXVlc3RTdHJ1Y3RPcHRzOjptaW5pbXVtX3NpemUg Y2FuIGJlIHNldCB0byB0aGUgbWluaW11bSBzaXplIHRoYXQKKyAqIHRoZSBzdHJ1Y3R1cmUgY2Fu IHNocmluayB0by4gIEEgc2VudGluZWwgdmFsdWUgb2YgU0hNRU1fUkVTSVpFX1RPX1pFUk8gY2Fu CisgKiBiZSB1c2VkIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHN0cnVjdCBjYW4gc2NhbGUgaXRzIG1l bW9yeSB1c2FnZSBkb3duIHRvIDAKKyAqIGJ5dGVzOyB0aGUgbmF0dXJhbCAwIGlzIGFzc3VtZWQg dG8gYmUgdW5pbml0aWFsaXplZCBhbmQgc28gd2lsbCBjYXVzZSB0aGUKKyAqIG1pbmltdW0gc2l6 ZSB0byBkZWZhdWx0IHRvIHRoZSB2YWx1ZSBvZiBTaG1lbVJlcXVlc3RTdHJ1Y3RPcHRzOjpzaXpl LCBsaWtlCisgKiBTaG1lbVJlcXVlc3RTdHJ1Y3RPcHRzOjptYXhpbXVtX3NpemUuCisgKiBBZnRl ciBzdGFydHVwLCB0aGUgc3RydWN0dXJlIGNhbiBiZSByZXNpemVkIGJ5IGNhbGxpbmcgU2htZW1S ZXNpemVTdHJ1Y3QoKQorICogYnkgcGFzc2luZyBpdCB0aGUgU2htZW1TdHJ1Y3REZXNjIGZvciB0 aGUgc3RydWN0dXJlIGFuZCB0aGUgbmV3IHNpemUuCisgKiBTaG1lbVJlc2l6ZVN0cnVjdCgpIGVu Zm9yY2VzIHRoYXQgdGhlIG5ldyBzaXplIGlzIHdpdGhpbgorICogW21pbmltdW1fc2l6ZSwgbWF4 aW11bV9zaXplXS4KICAqCiAgKiBXaGlsZSByZXNpemFibGUgc3RydWN0dXJlcyBjYW4gYmUgY3Jl YXRlZCBhZnRlciB0aGUgc3RhcnR1cCwgdGhlIG1lbW9yeQogICogYXZhaWxhYmxlIGZvciB0aGVt IGlzIHF1aXRlIGxpbWl0ZWQuCkBAIC0xOTIsOCArMTk3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QKICAq IHJlc2l6YWJsZSBzaG1lbSwgdGhlIG1heGltdW1fc2l6ZSBpcyBlbnN1cmVkIHRvIGJlIDAgaS5l LiBhbGwgdGhlIHN0cnVjdHVyZXMKICAqIGFyZSB0cmVhdGVkIGFzIGZpeGVkLXNpemUgc3RydWN0 dXJlcy4KICAqLwotI2RlZmluZSBTSE1FTV9SRVFVRVNUX1NQQUNFX1NJWkUocmVxdWVzdCkgXAot CSgocmVxdWVzdCktPm9wdGlvbnMtPm1heGltdW1fc2l6ZSA+IDAgPyAocmVxdWVzdCktPm9wdGlv bnMtPm1heGltdW1fc2l6ZSA6IChyZXF1ZXN0KS0+b3B0aW9ucy0+c2l6ZSkKKyNkZWZpbmUgU0hN RU1fUkVRVUVTVF9TUEFDRV9TSVpFKHJlcXVlc3QpICgocmVxdWVzdCktPm9wdGlvbnMtPm1heGlt dW1fc2l6ZSkKIAogc3RhdGljIExpc3QgKnBlbmRpbmdfc2htZW1fcmVxdWVzdHM7CiAKQEAgLTM3 MSw3MCArMzc1LDgxIEBAIFNobWVtUmVxdWVzdEludGVybmFsKFNobWVtU3RydWN0T3B0cyAqb3B0 aW9ucywgU2htZW1SZXF1ZXN0S2luZCBraW5kKQogewogCVNobWVtUmVxdWVzdCAqcmVxdWVzdDsK IAorCS8qIENoZWNrIHRoYXQgd2UncmUgaW4gdGhlIHJpZ2h0IHN0YXRlICovCisJaWYgKHNobWVt X3JlcXVlc3Rfc3RhdGUgIT0gU1JTX1JFUVVFU1RJTkcpCisJCWVsb2coRVJST1IsICJTaG1lbVJl cXVlc3RTdHJ1Y3QgY2FuIG9ubHkgYmUgY2FsbGVkIGZyb20gYSBzaG1lbV9yZXF1ZXN0IGNhbGxi YWNrIik7CisKIAkvKiBDaGVjayB0aGUgb3B0aW9ucyAqLwogCWlmIChvcHRpb25zLT5uYW1lID09 IE5VTEwpCiAJCWVsb2coRVJST1IsICJzaGFyZWQgbWVtb3J5IHJlcXVlc3QgaXMgbWlzc2luZyAn bmFtZScgb3B0aW9uIik7CiAKKwkvKgorCSAqIFNhbml0aXplIHRoZSBvcHRpb25zIGlucHV0IGJ5 IHBvcHVsYXRpbmcgbWluL21heCB3aXRoIHRoZWlyIGFjdHVhbCB2YWx1ZXMuCisJICogCisJICog Tm90ZSB0aGF0IG1pbmltdW1fc2l6ZSdzIHplcm8taW5pdGlhbGl6ZWQgdmFsdWUgIm5vdCBzcGVj aWZpZWQiIGNvbmZsaWN0cworCSAqIHdpdGggYSBuYXR1cmFsIHZhbHVlIGZvciAicmVzaXplIHRv IHplcm8iLCBzbyAicmVzaXplIHRvIHplcm8iIGhhcyBpdHMgb3duCisJICogc2VudGluZWwgdmFs dWUgd2l0aCBTSE1FTV9SRVNJWkVfVE9fWkVSTy4KKwkgKi8KKwlpZiAob3B0aW9ucy0+bWF4aW11 bV9zaXplID09IDApCisJeworCQlvcHRpb25zLT5tYXhpbXVtX3NpemUgPSBvcHRpb25zLT5zaXpl OworCQlBc3NlcnQob3B0aW9ucy0+bWluaW11bV9zaXplID09IDApOworCX0KKworCWlmIChvcHRp b25zLT5taW5pbXVtX3NpemUgPT0gMCkKKwkJb3B0aW9ucy0+bWluaW11bV9zaXplID0gb3B0aW9u cy0+c2l6ZTsKKwllbHNlIGlmIChvcHRpb25zLT5taW5pbXVtX3NpemUgPT0gU0hNRU1fUkVTSVpF X1RPX1pFUk8pCisJCW9wdGlvbnMtPm1pbmltdW1fc2l6ZSA9IDA7CisKKwkvKiByZXNpemluZyBz aG1lbSBzZWdtZW50ICovCisJaWYgKG9wdGlvbnMtPm1heGltdW1fc2l6ZSAhPSBvcHRpb25zLT5t aW5pbXVtX3NpemUpCisJewogI2lmbmRlZiBIQVZFX1JFU0laQUJMRV9TSE1FTQotCWlmIChvcHRp b25zLT5tYXhpbXVtX3NpemUgPiAwKQogCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBt ZW1vcnkgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3JtIik7CiAjZWxzZQotCWlmIChv cHRpb25zLT5tYXhpbXVtX3NpemUgPiAwICYmIHNoYXJlZF9tZW1vcnlfdHlwZSAhPSBTSE1FTV9U WVBFX01NQVApCi0JCWVsb2coRVJST1IsICJyZXNpemFibGUgc2hhcmVkIG1lbW9yeSByZXF1aXJl cyBzaGFyZWRfbWVtb3J5X3R5cGUgPSBtbWFwIik7CisJCWlmIChzaGFyZWRfbWVtb3J5X3R5cGUg IT0gU0hNRU1fVFlQRV9NTUFQKQorCQkJZWxvZyhFUlJPUiwgInJlc2l6YWJsZSBzaGFyZWQgbWVt b3J5IHJlcXVpcmVzIHNoYXJlZF9tZW1vcnlfdHlwZSA9IG1tYXAiKTsKICNlbmRpZgotCi0JaWYg KElzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJaWYgKG9wdGlvbnMtPnNpemUgPD0gMCAmJiBvcHRp b25zLT5zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCi0JCQllbG9nKEVSUk9SLCAi aW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAot CQkJCSBvcHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKLQkJaWYgKG9wdGlvbnMtPm1pbmlt dW1fc2l6ZSA8IDAgJiYgb3B0aW9ucy0+bWluaW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktO T1dOX1NJWkUpCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBtaW5pbXVtX3NpemUgJXpkIGZvciBz aGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCi0JCQkJIG9wdGlvbnMtPm1pbmltdW1f c2l6ZSwgb3B0aW9ucy0+bmFtZSk7Ci0JCWlmIChvcHRpb25zLT5tYXhpbXVtX3NpemUgPCAwICYm IG9wdGlvbnMtPm1heGltdW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQotCQkJ ZWxvZyhFUlJPUiwgImludmFsaWQgbWF4aW11bV9zaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSBy ZXF1ZXN0IGZvciBcIiVzXCIiLAotCQkJCSBvcHRpb25zLT5tYXhpbXVtX3NpemUsIG9wdGlvbnMt Pm5hbWUpOwogCX0KLQllbHNlCisKKwlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQogCXsKIAkJaWYg KG9wdGlvbnMtPnNpemUgPT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAkJCWVsb2coRVJS T1IsICJTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIGNhbm5vdCBiZSB1c2VkIGR1cmluZyBzdGFy dHVwIik7Ci0JCWlmIChvcHRpb25zLT5zaXplIDw9IDApCi0JCQllbG9nKEVSUk9SLCAiaW52YWxp ZCBzaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAotCQkJCSBv cHRpb25zLT5zaXplLCBvcHRpb25zLT5uYW1lKTsKIAkJaWYgKG9wdGlvbnMtPm1pbmltdW1fc2l6 ZSA9PSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQogCQkJZWxvZyhFUlJPUiwgIlNITUVNX0FU VEFDSF9VTktOT1dOX1NJWkUgY2Fubm90IGJlIHVzZWQgZHVyaW5nIHN0YXJ0dXAiKTsKLQkJaWYg KG9wdGlvbnMtPm1pbmltdW1fc2l6ZSA8IDApCi0JCQllbG9nKEVSUk9SLCAiaW52YWxpZCBtaW5p bXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCi0JCQkJ IG9wdGlvbnMtPm1pbmltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7CiAJCWlmIChvcHRpb25zLT5t YXhpbXVtX3NpemUgPT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKIAkJCWVsb2coRVJST1Is ICJTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFIGNhbm5vdCBiZSB1c2VkIGR1cmluZyBzdGFydHVw Iik7Ci0JCWlmIChvcHRpb25zLT5tYXhpbXVtX3NpemUgPCAwKQotCQkJZWxvZyhFUlJPUiwgImlu dmFsaWQgbWF4aW11bV9zaXplICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVz XCIiLAotCQkJCSBvcHRpb25zLT5tYXhpbXVtX3NpemUsIG9wdGlvbnMtPm5hbWUpOwogCX0KIAor CWlmIChvcHRpb25zLT5zaXplIDw9IDAgJiYgb3B0aW9ucy0+c2l6ZSAhPSBTSE1FTV9BVFRBQ0hf VU5LTk9XTl9TSVpFKQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hhcmVk IG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAorCQkJIG9wdGlvbnMtPnNpemUsIG9wdGlvbnMt Pm5hbWUpOworCWlmIChvcHRpb25zLT5taW5pbXVtX3NpemUgPCAwICYmIG9wdGlvbnMtPm1pbmlt dW1fc2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFKQorCQllbG9nKEVSUk9SLCAiaW52 YWxpZCBtaW5pbXVtX3NpemUgJXpkIGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNc IiIsCisJCQkgb3B0aW9ucy0+bWluaW11bV9zaXplLCBvcHRpb25zLT5uYW1lKTsKKwlpZiAob3B0 aW9ucy0+bWF4aW11bV9zaXplIDwgMCAmJiBvcHRpb25zLT5tYXhpbXVtX3NpemUgIT0gU0hNRU1f QVRUQUNIX1VOS05PV05fU0laRSkKKwkJZWxvZyhFUlJPUiwgImludmFsaWQgbWF4aW11bV9zaXpl ICV6ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAorCQkJIG9wdGlvbnMt Pm1heGltdW1fc2l6ZSwgb3B0aW9ucy0+bmFtZSk7CisKIAlpZiAob3B0aW9ucy0+YWxpZ25tZW50 ICE9IDAgJiYgcGdfbmV4dHBvd2VyMl9zaXplX3Qob3B0aW9ucy0+YWxpZ25tZW50KSAhPSBvcHRp b25zLT5hbGlnbm1lbnQpCiAJCWVsb2coRVJST1IsICJpbnZhbGlkIGFsaWdubWVudCAlenUgZm9y IHNoYXJlZCBtZW1vcnkgcmVxdWVzdCBmb3IgXCIlc1wiIiwKIAkJCSBvcHRpb25zLT5hbGlnbm1l bnQsIG9wdGlvbnMtPm5hbWUpOwogCi0JaWYgKG9wdGlvbnMtPm1pbmltdW1fc2l6ZSA+IDAgJiYg b3B0aW9ucy0+c2l6ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFICYmCi0JCW9wdGlvbnMt Pm1pbmltdW1fc2l6ZSA+IG9wdGlvbnMtPnNpemUpCi0JCWVsb2coRVJST1IsICJyZXNpemFibGUg c2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgXCIlc1wiIHNob3VsZCBoYXZlIG1pbmltdW0gc2l6ZSAo JXpkKSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gc2l6ZSAoJXpkKSIsCi0JCQkgb3B0aW9ucy0+bmFt ZSwgb3B0aW9ucy0+bWluaW11bV9zaXplLCBvcHRpb25zLT5zaXplKTsKLQotCWlmIChvcHRpb25z LT5tYXhpbXVtX3NpemUgPiAwICYmIG9wdGlvbnMtPnNpemUgPiBvcHRpb25zLT5tYXhpbXVtX3Np emUpCi0JCWVsb2coRVJST1IsICJyZXNpemFibGUgc2hhcmVkIG1lbW9yeSBzdHJ1Y3R1cmUgXCIl c1wiIHNob3VsZCBoYXZlIG1heGltdW0gc2l6ZSAoJXpkKSBncmVhdGVyIHRoYW4gc2l6ZSAoJXpk KSIsCi0JCQkgb3B0aW9ucy0+bmFtZSwgb3B0aW9ucy0+bWF4aW11bV9zaXplLCBvcHRpb25zLT5z aXplKTsKLQotCWlmIChvcHRpb25zLT5taW5pbXVtX3NpemUgPiAwICYmIG9wdGlvbnMtPm1heGlt dW1fc2l6ZSA+IDAgJiYKKwlpZiAob3B0aW9ucy0+bWluaW11bV9zaXplICE9IFNITUVNX0FUVEFD SF9VTktOT1dOX1NJWkUgJiYgb3B0aW9ucy0+bWF4aW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9V TktOT1dOX1NJWkUgJiYKIAkJb3B0aW9ucy0+bWluaW11bV9zaXplID4gb3B0aW9ucy0+bWF4aW11 bV9zaXplKQogCQllbG9nKEVSUk9SLCAicmVzaXphYmxlIHNoYXJlZCBtZW1vcnkgc3RydWN0dXJl IFwiJXNcIiBzaG91bGQgaGF2ZSBtaW5pbXVtIHNpemUgKCV6ZCkgbGVzcyB0aGFuIG9yIGVxdWFs IHRvIG1heGltdW0gc2l6ZSAoJXpkKSIsCiAJCQkgb3B0aW9ucy0+bmFtZSwgb3B0aW9ucy0+bWlu aW11bV9zaXplLCBvcHRpb25zLT5tYXhpbXVtX3NpemUpOwogCi0JLyogQ2hlY2sgdGhhdCB3ZSdy ZSBpbiB0aGUgcmlnaHQgc3RhdGUgKi8KLQlpZiAoc2htZW1fcmVxdWVzdF9zdGF0ZSAhPSBTUlNf UkVRVUVTVElORykKLQkJZWxvZyhFUlJPUiwgIlNobWVtUmVxdWVzdFN0cnVjdCBjYW4gb25seSBi ZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVlc3QgY2FsbGJhY2siKTsKKwlpZiAob3B0aW9ucy0+ bWluaW11bV9zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUgJiYgb3B0aW9ucy0+c2l6 ZSAhPSBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFICYmCisJCW9wdGlvbnMtPm1pbmltdW1fc2l6 ZSA+IG9wdGlvbnMtPnNpemUpCisJCWVsb2coRVJST1IsICJyZXNpemFibGUgc2hhcmVkIG1lbW9y eSBzdHJ1Y3R1cmUgXCIlc1wiIHNob3VsZCBoYXZlIG1pbmltdW0gc2l6ZSAoJXpkKSBsZXNzIHRo YW4gb3IgZXF1YWwgdG8gc2l6ZSAoJXpkKSIsCisJCQkgb3B0aW9ucy0+bmFtZSwgb3B0aW9ucy0+ bWluaW11bV9zaXplLCBvcHRpb25zLT5zaXplKTsKKworCWlmIChvcHRpb25zLT5tYXhpbXVtX3Np emUgIT0gU0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSAmJiBvcHRpb25zLT5zaXplICE9IFNITUVN X0FUVEFDSF9VTktOT1dOX1NJWkUgJiYKKwkJb3B0aW9ucy0+c2l6ZSA+IG9wdGlvbnMtPm1heGlt dW1fc2l6ZSkKKwkJZWxvZyhFUlJPUiwgInJlc2l6YWJsZSBzaGFyZWQgbWVtb3J5IHN0cnVjdHVy ZSBcIiVzXCIgc2hvdWxkIGhhdmUgc2l6ZSAoJXpkKSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4 aW11bSBzaXplICglemQpIiwKKwkJCSBvcHRpb25zLT5uYW1lLCBvcHRpb25zLT5zaXplLCBvcHRp b25zLT5tYXhpbXVtX3NpemUpOwogCiAJLyogQ2hlY2sgdGhhdCBpdCdzIG5vdCBhbHJlYWR5IHJl Z2lzdGVyZWQgaW4gdGhpcyBwcm9jZXNzICovCiAJZm9yZWFjaF9wdHIoU2htZW1SZXF1ZXN0LCBl eGlzdGluZywgcGVuZGluZ19zaG1lbV9yZXF1ZXN0cykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAppbmRleCBmOGRk YjBkZDdjMC4uMjY4MjcwNGIzZWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ht ZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKQEAgLTU4LDE4ICs1OCwyMSBA QCB0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVjdE9wdHMKIAlzaXplX3QJCWFsaWdubWVudDsKIAog CS8qCi0JICogTWluaW11bSBzaXplIHRoaXMgc3RydWN0dXJlIGNhbiBzaHJpbmsgdG8uIFNob3Vs ZCBiZSBzZXQgdG8gMCBmb3IKLQkgKiBmaXhlZC1zaXplIHN0cnVjdHVyZXMuCisJICogTWluaW11 bSBzaXplIHRoaXMgc3RydWN0dXJlIGNhbiBzaHJpbmsgdG8uCisJICogV2hlbiBpbml0aWFsaXpl ZCB0byAwLCBpdCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIC5zaXplIGZpZWxkOyB1c2UK KwkgKiBTSE1FTV9SRVNJWkVfVE9fWkVSTyBpbnN0ZWFkIGlmIHlvdSB3YW50IHlvdXIgc2htZW0g YWxsb2NhdGlvbiB0byBiZQorCSAqIGFibGUgdG8gc2hyaW5rIHRvICdubyBtZW1vcnkgdXNhZ2Un LgogCSAqLwogCXNzaXplX3QJCW1pbmltdW1fc2l6ZTsKIAogCS8qCi0JICogTWF4aW11bSBzaXpl IHRoaXMgc3RydWN0dXJlIGNhbiBncm93IHVwdG8gaW4gZnV0dXJlLiBUaGUgbWVtb3J5IGlzIG5v dAotCSAqIGFsbG9jYXRlZCByaWdodCBhd2F5IGJ1dCB0aGUgY29ycmVzcG9uZGluZyBhZGRyZXNz IHNwYWNlIGlzIHJlc2VydmVkIHNvCi0JICogdGhhdCBtZW1vcnkgY2FuIGJlIG1hcHBlZCB0byBp dCB3aGVuIHRoZSBzdHJ1Y3R1cmUgZ3Jvd3MuIFR5cGljYWxseQotCSAqIHNob3VsZCBiZSB1c2Vk IGZvciBsYXJnZSByZXNpemFibGUgc3RydWN0dXJlcyB3aGljaCBuZWVkIHNldmVyYWwgcGFnZXMK LQkgKiB3b3J0aCBvZiBjb250aWd1b3VzIG1lbW9yeS4gU2hvdWxkIGJlIHNldCB0byAwIGZvciBm aXhlZC1zaXplCi0JICogc3RydWN0dXJlcy4KKwkgKiBNYXhpbXVtIHNpemUgdGhpcyBzdHJ1Y3R1 cmUgY2FuIGdyb3cgdXAgdG8gaW4gdGhlIGZ1dHVyZS4gVGhlIG1lbW9yeSBub3QKKwkgKiByZXF1 aXJlZCBmb3IgLnNpemUgaXMgbm90IGFsbG9jYXRlZCByaWdodCBhd2F5LCBidXQgdGhlIGNvcnJl c3BvbmRpbmcKKwkgKiBhZGRyZXNzIHNwYWNlIGlzIHJlc2VydmVkIHNvIHRoYXQgbWVtb3J5IGNh biBiZSBtYXBwZWQgdG8gaXQgd2hlbiB0aGUKKwkgKiBzdHJ1Y3R1cmUgZ3Jvd3MuIFR5cGljYWxs eSwgdGhpcyBzaG91bGQgYmUgdXNlZCBmb3IgbGFyZ2UgcmVzaXphYmxlCisJICogc3RydWN0dXJl cyB3aGljaCBuZWVkIHNldmVyYWwgcGFnZXMgd29ydGggb2YgY29udGlndW91cyBtZW1vcnkuCisJ ICoKKwkgKiBXaGVuIHNldCB0byAwLCBpdCBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIC5z aXplIGZpZWxkLgogCSAqLwogCXNzaXplX3QJCW1heGltdW1fc2l6ZTsKIApAQCAtODMsNiArODYs NyBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVjdE9wdHMKIH0gU2htZW1TdHJ1Y3RPcHRzOwog CiAjZGVmaW5lIFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUgKC0xKQorI2RlZmluZSBTSE1FTV9S RVNJWkVfVE9fWkVSTyAoLTIpCiAKIC8qCiAgKiBPcHRpb25zIGZvciBTaG1lbVJlcXVlc3RIYXNo KCkKLS0gCjIuNTAuMSAoQXBwbGUgR2l0LTE1NSkKCg== --000000000000b9cbe1064ee3ee75--