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 1vYevK-00AMlW-1C for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Dec 2025 06:34:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vYevI-006rzW-33 for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Dec 2025 06:34:09 +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.96) (envelope-from ) id 1vYevI-006rzO-1r for pgsql-hackers@lists.postgresql.org; Thu, 25 Dec 2025 06:34:09 +0000 Received: from mail-ej1-x633.google.com ([2a00:1450:4864:20::633]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vYevG-002eL6-1N for pgsql-hackers@lists.postgresql.org; Thu, 25 Dec 2025 06:34:08 +0000 Received: by mail-ej1-x633.google.com with SMTP id a640c23a62f3a-b7a02592efaso960620466b.1 for ; Wed, 24 Dec 2025 22:34:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1766644440; x=1767249240; darn=lists.postgresql.org; h=to:subject:message-id:date:from:in-reply-to:references:mime-version :from:to:cc:subject:date:message-id:reply-to; bh=miHCssAI4GY5pqqr/a7q2J3CFm6njVYikbGEs9Q0wfQ=; b=Z/oq2y7lsRCnIE4fKLipp1RijCcEI7jybfOMaLOcWXNVLmAhLBxW90TWcLQdpi8cbI t02qF9zWBaa8NrzaxQ51MU01xMNJDQbpneFi65yYfvjTVZERyKGvH2EEW0om9GFjgjuu uUuXL7jAQAlcrvkin4wRuqEMelsTgK8H9QWEzc5KUH17qtkX6oBWCIYPc7V78TIUx/p4 nA0gdiqZf5CSWH2Gd8vSOrPzK1T4jPCd9J7Id9oGvDNVrQUJs/xTJLmLs6DTVBe/kGUn nsw3/9IkuO0Cgu/wQiXfbmSgLCcxhPpEcMSrQhSXUQUiYEZx0yYbBR9cEeg0AQ+SlJce QrJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766644440; x=1767249240; h=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=miHCssAI4GY5pqqr/a7q2J3CFm6njVYikbGEs9Q0wfQ=; b=UJ83hKadYNrWXA/198/XOQYEqoMie6zwd8QhA4kcofvqKwUxKZNJktePguWSsCRruK 2eXwbfIP5cjUxR7N7dLr2R7VHhzStQKvYy6hE1Oz2VbcTYgng6Z42l9iEm5Uqq69Pc3Z /as9pA6PB/+dJW2n6VEUxmr4aIMamVfuS4p7in+kw4NN/e5F4UDew1xrjq/RhXT/QcDZ ZnVJQqIK24bHfkjDiHRqYrUa1H33bWZcLdLY8YUko0i3JXr1SR1omr1qyCJAfUWNf7cQ VVtXVhAiOA1dQ2w8R3Jav0NFy1t7AHiG6kDBd24pZE8gf8slamWhpAmAhQVHYC156cQa 1EmQ== X-Gm-Message-State: AOJu0YxmVdW36OyLAK+HQ7w5/+awNh74yyPBlUqYJ8/dIEq3hhfuUU4m aFH+36eX3mSRGFDfVPEyZk8VpuCWn02SAHw1KMTwMbywQZmvy330GIwjsSaWvxJtgbX396u1svL tXk73LCPxVqlkLkBg4fSRuJ0qUyakYIS/mJSL0UI= X-Gm-Gg: AY/fxX7tlVZpai8rLvngIthBcL8cnBMVWXrfHeZLpYZFhKaRwXigTrtbivN2iiRTyam PrBmqjiP/75U7LQ8+kvHZQfkE565ZTUw4y1N8T0nmMJLPr5d1NGjLPad2OohAA7ucmrSOyjRbsF efDPigPxMbC9SXEhd827CWlcpDTUD38HuJ/CIp8FzspnrBvQCIDw1/rpI8OsuCny7w7gbgUeiHk 4SKkc5KUFdV9CyDhl5P9arHbAkTapMNCAnwvGbRYVsrCFAlqV4xViInBrvupob5rsGnK5cUA+zb JcVDirysp0nU76Dxj2T4/pvqvwnBW8BJOI1Pg0lgMl+L+E1qlculyw66YPdR1XXpM1adzM5KvRt Az9klrQ== X-Google-Smtp-Source: AGHT+IGGHsk3U87EbKuQpWcXzFqDS858d16U/4c0mNBgAag8x9BcheoNhwCmCnYP898lQ6+qlcU5/GzvIn4lGVSQm3A= X-Received: by 2002:a17:907:3d91:b0:b79:f734:4d66 with SMTP id a640c23a62f3a-b8036f28dabmr1995737666b.18.1766644439650; Wed, 24 Dec 2025 22:33:59 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Xuneng Zhou Date: Thu, 25 Dec 2025 14:33:47 +0800 X-Gm-Features: AQt7F2oZVpFrqTxMBYRP243_8Zh7TYyUThctsv2_DCUec82J4GC-XyLaxWOUKqM Message-ID: Subject: Re: Streamify more code paths To: pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000458c160646c0f6ab" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000458c160646c0f6ab Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Thu, Dec 25, 2025 at 1:51=E2=80=AFPM Xuneng Zhou = wrote: > > Hi Hackers, > > I noticed several additional paths in contrib modules, beyond [1], > that are potentially suitable for streamification: > > 1) pgstattuple =E2=80=94 pgstatapprox.c and parts of pgstattuple_approx_i= nternal > 2) Bloom =E2=80=94 scan paths in blgetbitmap() and maintenance paths in b= lbulkdelete() > > The following patches streamify those code paths. No benchmarks have > been run yet. > > [1] https://www.postgresql.org/message-id/flat/CABPTF7UeN2o-trr9r7K76rZEx= nO2M4SLfvTfbUY2CwQjCekgnQ%40mail.gmail.com > > Feedbacks welcome. > One more in ginvacuumcleanup(). --=20 Best, Xuneng --000000000000458c160646c0f6ab Content-Type: application/octet-stream; name="v1-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch" Content-Disposition: attachment; filename="v1-0004-Replace-synchronous-ReadBufferExtended-loop-with-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl2d71p3 RnJvbSBiZDNmMWIzMjUyOGJmZjM4OTdhYWIwOWM3MmMxMTQzYzkzOTk3YjdkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxNDoxMjowOCArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgNC80XSBS ZXBsYWNlIHN5bmNocm9ub3VzIFJlYWRCdWZmZXJFeHRlbmRlZCgpIGxvb3Agd2l0aCB0aGUKIHN0 cmVhbWluZyByZWFkIGluIGdpbnZhY3V1bWNsZWFudXAoKSB0byBpbXByb3ZlIEkvTyBlZmZpY2ll bmN5IGR1cmluZyBHSU4KIGluZGV4IHZhY3V1bSBjbGVhbnVwIG9wZXJhdGlvbnMKCi0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYyB8IDI4ICsrKysrKysrKysrKysrKysrKysr KysrKysrLS0KIDEgZmlsZSBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9naW4vZ2ludmFjdXVtLmMgYi9zcmMv YmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCmluZGV4IGQ3YmFmN2M4NDdjLi41OGUwNWM3 MTI1NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL2dpbi9naW52YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvZ2luL2dpbnZhY3V1bS5jCkBAIC0yMiw2ICsyMiw3IEBACiAj aW5jbHVkZSAic3RvcmFnZS9pbmRleGZzbS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJlZGljYXRlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9yZWFkX3N0 cmVhbS5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAKIHN0cnVjdCBHaW5WYWN1dW1T dGF0ZQpAQCAtNjkzLDYgKzY5NCw4IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZv ICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCUJsb2NrTnVtYmVyIHRvdEZy ZWVQYWdlczsKIAlHaW5TdGF0ZQlnaW5zdGF0ZTsKIAlHaW5TdGF0c0RhdGEgaWR4U3RhdDsKKwlC bG9ja1JhbmdlUmVhZFN0cmVhbVByaXZhdGUgcDsKKwlSZWFkU3RyZWFtICpzdHJlYW07CiAKIAkv KgogCSAqIEluIGFuIGF1dG92YWN1dW0gYW5hbHl6ZSwgd2Ugd2FudCB0byBjbGVhbiB1cCBwZW5k aW5nIGluc2VydGlvbnMuCkBAIC03NDMsNiArNzQ2LDI0IEBAIGdpbnZhY3V1bWNsZWFudXAoSW5k ZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJdG90 RnJlZVBhZ2VzID0gMDsKIAorCS8qIFNjYW4gYWxsIGJsb2NrcyBzdGFydGluZyBmcm9tIHRoZSBy b290IHVzaW5nIHN0cmVhbWluZyByZWFkcyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEdJTl9S T09UX0JMS05POworCXAubGFzdF9leGNsdXNpdmUgPSBucGFnZXM7CisKKwkvKgorCSAqIEl0IGlz IHNhZmUgdG8gdXNlIGJhdGNobW9kZSBhcyBibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiB0YWtl cyBubworCSAqIGxvY2tzLgorCSAqLworCXN0cmVhbSA9IHJlYWRfc3RyZWFtX2JlZ2luX3JlbGF0 aW9uKFJFQURfU1RSRUFNX01BSU5URU5BTkNFIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9GVUxM IHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcsCisJCQkJCQkJCQkJaW5mby0+ c3RyYXRlZ3ksCisJCQkJCQkJCQkJaW5kZXgsCisJCQkJCQkJCQkJTUFJTl9GT1JLTlVNLAorCQkJ CQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLAorCQkJCQkJCQkJCSZwLAorCQkJCQkJ CQkJCTApOworCiAJZm9yIChibGtubyA9IEdJTl9ST09UX0JMS05POyBibGtubyA8IG5wYWdlczsg Ymxrbm8rKykKIAl7CiAJCUJ1ZmZlcgkJYnVmZmVyOwpAQCAtNzUwLDggKzc3MSw4IEBAIGdpbnZh Y3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQg KnN0YXRzKQogCiAJCXZhY3V1bV9kZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVh ZEJ1ZmZlckV4dGVuZGVkKGluZGV4LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJN X05PUk1BTCwgaW5mby0+c3RyYXRlZ3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1 ZmZlcihzdHJlYW0sIE5VTEwpOworCiAJCUxvY2tCdWZmZXIoYnVmZmVyLCBHSU5fU0hBUkUpOwog CQlwYWdlID0gQnVmZmVyR2V0UGFnZShidWZmZXIpOwogCkBAIC03NzYsNiArNzk3LDkgQEAgZ2lu dmFjdXVtY2xlYW51cChJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3Vs dCAqc3RhdHMpCiAJCVVubG9ja1JlbGVhc2VCdWZmZXIoYnVmZmVyKTsKIAl9CiAKKwlBc3NlcnQo cmVhZF9zdHJlYW1fbmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKSA9PSBJbnZhbGlkQnVmZmVyKTsK KwlyZWFkX3N0cmVhbV9lbmQoc3RyZWFtKTsKKwogCS8qIFVwZGF0ZSB0aGUgbWV0YXBhZ2Ugd2l0 aCBhY2N1cmF0ZSBwYWdlIGFuZCBlbnRyeSBjb3VudHMgKi8KIAlpZHhTdGF0Lm5Ub3RhbFBhZ2Vz ID0gbnBhZ2VzOwogCWdpblVwZGF0ZVN0YXRzKGluZm8tPmluZGV4LCAmaWR4U3RhdCwgZmFsc2Up OwotLSAKMi41MS4wCgo= --000000000000458c160646c0f6ab Content-Type: application/octet-stream; name="v1-0001-Switch-Bloom-scan-paths-to-the-streaming-read.patch" Content-Disposition: attachment; filename="v1-0001-Switch-Bloom-scan-paths-to-the-streaming-read.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl2d71i0 RnJvbSAwYTIxMWU3ODhkOTY0YWViZDg3NmRjNDQ3MjQ0MGU4ZjIzNGNlMzhhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxMzozOTo0MiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMS80XSBT d2l0Y2ggQmxvb20gc2NhbiBwYXRocyB0byB0aGUgc3RyZWFtaW5nIHJlYWQuCgpSZXBsYWNlIHBl ci1wYWdlIFJlYWRCdWZmZXIgbG9vcHMgaW4gYmxnZXRiaXRtYXAoKSB3aXRoIHJlYWRfc3RyZWFt X2JlZ2luX3JlbGF0aW9uKCkgYW5kIHNlcXVlbnRpYWwgYnVmZmVyIGl0ZXJhdGlvbiwgcmVkdWNp bmcgYnVmZmVyIGNodXJuIGFuZCBpbXByb3Zpbmcgc2NhbiBlZmZpY2llbmN5IG9uIGxhcmdlIEJs b29tIGluZGV4ZXMuCi0tLQogY29udHJpYi9ibG9vbS9ibHNjYW4uYyB8IDI5ICsrKysrKysrKysr KysrKysrKysrKysrKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250cmliL2Jsb29tL2Jsc2Nhbi5jIGIvY29udHJp Yi9ibG9vbS9ibHNjYW4uYwppbmRleCAwZDcxZWRiZTkxYy4uYjFmZGFiYWFiNzQgMTAwNjQ0Ci0t LSBhL2NvbnRyaWIvYmxvb20vYmxzY2FuLmMKKysrIGIvY29udHJpYi9ibG9vbS9ibHNjYW4uYwpA QCAtMTcsNiArMTcsNyBAQAogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgInBnc3Rh dC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9yZWFk X3N0cmVhbS5oIgogCiAvKgogICogQmVnaW4gc2NhbiBvZiBibG9vbSBpbmRleC4KQEAgLTc1LDEx ICs3NiwxMyBAQCBpbnQ2NAogYmxnZXRiaXRtYXAoSW5kZXhTY2FuRGVzYyBzY2FuLCBUSURCaXRt YXAgKnRibSkKIHsKIAlpbnQ2NAkJbnRpZHMgPSAwOwotCUJsb2NrTnVtYmVyIGJsa25vID0gQkxP T01fSEVBRF9CTEtOTywKKwlCbG9ja051bWJlciBibGtubywKIAkJCQlucGFnZXM7CiAJaW50CQkJ aTsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBiYXM7CiAJQmxvb21TY2FuT3BhcXVlIHNvID0gKEJs b29tU2Nhbk9wYXF1ZSkgc2Nhbi0+b3BhcXVlOworCUJsb2NrUmFuZ2VSZWFkU3RyZWFtUHJpdmF0 ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAogCWlmIChzby0+c2lnbiA9PSBOVUxMKQogCXsK QEAgLTExOSwxNCArMTIyLDI5IEBAIGJsZ2V0Yml0bWFwKEluZGV4U2NhbkRlc2Mgc2NhbiwgVElE Qml0bWFwICp0Ym0pCiAJaWYgKHNjYW4tPmluc3RydW1lbnQpCiAJCXNjYW4tPmluc3RydW1lbnQt Pm5zZWFyY2hlcysrOwogCisJLyogU2NhbiBhbGwgYmxvY2tzIGV4Y2VwdCB0aGUgbWV0YXBhZ2Ug dXNpbmcgc3RyZWFtaW5nIHJlYWRzICovCisJcC5jdXJyZW50X2Jsb2NrbnVtID0gQkxPT01fSEVB RF9CTEtOTzsKKwlwLmxhc3RfZXhjbHVzaXZlID0gbnBhZ2VzOworCisJLyoKKwkgKiBJdCBpcyBz YWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgdGFrZXMg bm8KKwkgKiBsb2Nrcy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlv bihSRUFEX1NUUkVBTV9GVUxMIHwKKwkJCQkJCQkJCQlSRUFEX1NUUkVBTV9VU0VfQkFUQ0hJTkcs CisJCQkJCQkJCQkJYmFzLAorCQkJCQkJCQkJCXNjYW4tPmluZGV4UmVsYXRpb24sCisJCQkJCQkJ CQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCWJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiLAor CQkJCQkJCQkJCSZwLAorCQkJCQkJCQkJCTApOworCiAJZm9yIChibGtubyA9IEJMT09NX0hFQURf QkxLTk87IGJsa25vIDwgbnBhZ2VzOyBibGtubysrKQogCXsKIAkJQnVmZmVyCQlidWZmZXI7CiAJ CVBhZ2UJCXBhZ2U7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKHNjYW4tPmluZGV4 UmVsYXRpb24sIE1BSU5fRk9SS05VTSwKLQkJCQkJCQkJCWJsa25vLCBSQk1fTk9STUFMLCBiYXMp OwotCisJCWJ1ZmZlciA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCk7CiAJ CUxvY2tCdWZmZXIoYnVmZmVyLCBCVUZGRVJfTE9DS19TSEFSRSk7CiAJCXBhZ2UgPSBCdWZmZXJH ZXRQYWdlKGJ1ZmZlcik7CiAKQEAgLTE2Miw2ICsxODAsOSBAQCBibGdldGJpdG1hcChJbmRleFNj YW5EZXNjIHNjYW4sIFRJREJpdG1hcCAqdGJtKQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZl cik7CiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAJfQorCisJQXNzZXJ0KHJlYWRfc3RyZWFt X25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52YWxpZEJ1ZmZlcik7CisJcmVhZF9zdHJl YW1fZW5kKHN0cmVhbSk7CiAJRnJlZUFjY2Vzc1N0cmF0ZWd5KGJhcyk7CiAKIAlyZXR1cm4gbnRp ZHM7Ci0tIAoyLjUxLjAKCg== --000000000000458c160646c0f6ab Content-Type: application/octet-stream; name="v1-0002-Streamify-Bloom-VACUUM-paths.patch" Content-Disposition: attachment; filename="v1-0002-Streamify-Bloom-VACUUM-paths.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl2d71m1 RnJvbSBkM2IxNTc5MmVlMDlkN2FiYTRkZjc2MjczZDg4ODNhNzM5ZDIxNWNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxMzo0MDowMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMi80XSBT dHJlYW1pZnkgQmxvb20gVkFDVVVNIHBhdGhzLgoKVXNlIHN0cmVhbWluZyByZWFkcyBpbiBibGJ1 bGtkZWxldGUoKSBhbmQgYmx2YWN1dW1jbGVhbnVwKCkgdG8gaXRlcmF0ZSBpbmRleCBwYWdlcyB3 aXRob3V0IHJlcGVhdGVkIFJlYWRCdWZmZXIgY2FsbHMsIGltcHJvdmluZyBWQUNVVU0gcGVyZm9y bWFuY2UgYW5kIHJlZHVjaW5nIGJ1ZmZlciBtYW5hZ2VyIG92ZXJoZWFkIGR1cmluZyBtYWludGVu YW5jZSBvcGVyYXRpb25zLgotLS0KIGNvbnRyaWIvYmxvb20vYmx2YWN1dW0uYyB8IDU1ICsrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KIDEgZmlsZSBjaGFuZ2VkLCA1MSBp bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvYmxvb20v Ymx2YWN1dW0uYyBiL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYwppbmRleCBlNjhhOTAwOGY1Ni4u NzQ1MjMwMmYwMjIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvYmxvb20vYmx2YWN1dW0uYworKysgYi9j b250cmliL2Jsb29tL2JsdmFjdXVtLmMKQEAgLTE3LDYgKzE3LDcgQEAKICNpbmNsdWRlICJjb21t YW5kcy92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvaW5kZXhmc20uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3JlYWRfc3RyZWFtLmgiCiAKIAog LyoKQEAgLTQwLDYgKzQxLDggQEAgYmxidWxrZGVsZXRlKEluZGV4VmFjdXVtSW5mbyAqaW5mbywg SW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cywKIAlQYWdlCQlwYWdlOwogCUJsb29tTWV0YVBh Z2VEYXRhICptZXRhRGF0YTsKIAlHZW5lcmljWExvZ1N0YXRlICpneGxvZ1N0YXRlOworCUJsb2Nr UmFuZ2VSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0gKnN0cmVhbTsKIAogCWlmIChz dGF0cyA9PSBOVUxMKQogCQlzdGF0cyA9IHBhbGxvYzBfb2JqZWN0KEluZGV4QnVsa0RlbGV0ZVJl c3VsdCk7CkBAIC01MSw2ICs1NCwyNSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICpp bmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzLAogCSAqIHRoZXkgY2FuJ3QgY29udGFp biB0dXBsZXMgdG8gZGVsZXRlLgogCSAqLwogCW5wYWdlcyA9IFJlbGF0aW9uR2V0TnVtYmVyT2ZC bG9ja3MoaW5kZXgpOworCisJLyogU2NhbiBhbGwgYmxvY2tzIGV4Y2VwdCB0aGUgbWV0YXBhZ2Ug dXNpbmcgc3RyZWFtaW5nIHJlYWRzICovCisJcC5jdXJyZW50X2Jsb2NrbnVtID0gQkxPT01fSEVB RF9CTEtOTzsKKwlwLmxhc3RfZXhjbHVzaXZlID0gbnBhZ2VzOworCisJLyoKKwkgKiBJdCBpcyBz YWZlIHRvIHVzZSBiYXRjaG1vZGUgYXMgYmxvY2tfcmFuZ2VfcmVhZF9zdHJlYW1fY2IgdGFrZXMg bm8KKwkgKiBsb2Nrcy4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlv bihSRUFEX1NUUkVBTV9NQUlOVEVOQU5DRSB8CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fRlVMTCB8 CisJCQkJCQkJCQkJUkVBRF9TVFJFQU1fVVNFX0JBVENISU5HLAorCQkJCQkJCQkJCWluZm8tPnN0 cmF0ZWd5LAorCQkJCQkJCQkJCWluZGV4LAorCQkJCQkJCQkJCU1BSU5fRk9SS05VTSwKKwkJCQkJ CQkJCQlibG9ja19yYW5nZV9yZWFkX3N0cmVhbV9jYiwKKwkJCQkJCQkJCQkmcCwKKwkJCQkJCQkJ CQkwKTsKKwogCWZvciAoYmxrbm8gPSBCTE9PTV9IRUFEX0JMS05POyBibGtubyA8IG5wYWdlczsg Ymxrbm8rKykKIAl7CiAJCUJsb29tVHVwbGUgKml0dXAsCkBAIC01OSw4ICs4MSw3IEBAIGJsYnVs a2RlbGV0ZShJbmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3Rh dHMsCiAKIAkJdmFjdXVtX2RlbGF5X3BvaW50KGZhbHNlKTsKIAotCQlidWZmZXIgPSBSZWFkQnVm ZmVyRXh0ZW5kZWQoaW5kZXgsIE1BSU5fRk9SS05VTSwgYmxrbm8sCi0JCQkJCQkJCQlSQk1fTk9S TUFMLCBpbmZvLT5zdHJhdGVneSk7CisJCWJ1ZmZlciA9IHJlYWRfc3RyZWFtX25leHRfYnVmZmVy KHN0cmVhbSwgTlVMTCk7CiAKIAkJTG9ja0J1ZmZlcihidWZmZXIsIEJVRkZFUl9MT0NLX0VYQ0xV U0lWRSk7CiAJCWd4bG9nU3RhdGUgPSBHZW5lcmljWExvZ1N0YXJ0KGluZGV4KTsKQEAgLTEzMyw2 ICsxNTQsOSBAQCBibGJ1bGtkZWxldGUoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1bGtE ZWxldGVSZXN1bHQgKnN0YXRzLAogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1ZmZlcik7CiAJfQog CisJQXNzZXJ0KHJlYWRfc3RyZWFtX25leHRfYnVmZmVyKHN0cmVhbSwgTlVMTCkgPT0gSW52YWxp ZEJ1ZmZlcik7CisJcmVhZF9zdHJlYW1fZW5kKHN0cmVhbSk7CisKIAkvKgogCSAqIFVwZGF0ZSB0 aGUgbWV0YXBhZ2UncyBub3RGdWxsUGFnZSBsaXN0IHdpdGggd2hhdGV2ZXIgd2UgZm91bmQuICBP dXIKIAkgKiBpbmZvIGNvdWxkIGFscmVhZHkgYmUgb3V0IG9mIGRhdGUgYXQgdGhpcyBwb2ludCwg YnV0IGJsaW5zZXJ0KCkgd2lsbApAQCAtMTY2LDYgKzE5MCw4IEBAIGJsdmFjdXVtY2xlYW51cChJ bmRleFZhY3V1bUluZm8gKmluZm8sIEluZGV4QnVsa0RlbGV0ZVJlc3VsdCAqc3RhdHMpCiAJUmVs YXRpb24JaW5kZXggPSBpbmZvLT5pbmRleDsKIAlCbG9ja051bWJlciBucGFnZXMsCiAJCQkJYmxr bm87CisJQmxvY2tSYW5nZVJlYWRTdHJlYW1Qcml2YXRlIHA7CisJUmVhZFN0cmVhbSAqc3RyZWFt OwogCiAJaWYgKGluZm8tPmFuYWx5emVfb25seSkKIAkJcmV0dXJuIHN0YXRzOwpAQCAtMTgxLDYg KzIwNywyNSBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1dW1JbmZvICppbmZvLCBJbmRleEJ1 bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCXN0YXRzLT5udW1fcGFnZXMgPSBucGFnZXM7CiAJc3Rh dHMtPnBhZ2VzX2ZyZWUgPSAwOwogCXN0YXRzLT5udW1faW5kZXhfdHVwbGVzID0gMDsKKworCS8q IFNjYW4gYWxsIGJsb2NrcyBleGNlcHQgdGhlIG1ldGFwYWdlIHVzaW5nIHN0cmVhbWluZyByZWFk cyAqLworCXAuY3VycmVudF9ibG9ja251bSA9IEJMT09NX0hFQURfQkxLTk87CisJcC5sYXN0X2V4 Y2x1c2l2ZSA9IG5wYWdlczsKKworCS8qCisJICogSXQgaXMgc2FmZSB0byB1c2UgYmF0Y2htb2Rl IGFzIGJsb2NrX3JhbmdlX3JlYWRfc3RyZWFtX2NiIHRha2VzIG5vCisJICogbG9ja3MuCisJICov CisJc3RyZWFtID0gcmVhZF9zdHJlYW1fYmVnaW5fcmVsYXRpb24oUkVBRF9TVFJFQU1fTUFJTlRF TkFOQ0UgfAorCQkJCQkJCQkJCVJFQURfU1RSRUFNX0ZVTEwgfAorCQkJCQkJCQkJCVJFQURfU1RS RUFNX1VTRV9CQVRDSElORywKKwkJCQkJCQkJCQlpbmZvLT5zdHJhdGVneSwKKwkJCQkJCQkJCQlp bmRleCwKKwkJCQkJCQkJCQlNQUlOX0ZPUktOVU0sCisJCQkJCQkJCQkJYmxvY2tfcmFuZ2VfcmVh ZF9zdHJlYW1fY2IsCisJCQkJCQkJCQkJJnAsCisJCQkJCQkJCQkJMCk7CisKIAlmb3IgKGJsa25v ID0gQkxPT01fSEVBRF9CTEtOTzsgYmxrbm8gPCBucGFnZXM7IGJsa25vKyspCiAJewogCQlCdWZm ZXIJCWJ1ZmZlcjsKQEAgLTE4OCw4ICsyMzMsNyBAQCBibHZhY3V1bWNsZWFudXAoSW5kZXhWYWN1 dW1JbmZvICppbmZvLCBJbmRleEJ1bGtEZWxldGVSZXN1bHQgKnN0YXRzKQogCiAJCXZhY3V1bV9k ZWxheV9wb2ludChmYWxzZSk7CiAKLQkJYnVmZmVyID0gUmVhZEJ1ZmZlckV4dGVuZGVkKGluZGV4 LCBNQUlOX0ZPUktOVU0sIGJsa25vLAotCQkJCQkJCQkJUkJNX05PUk1BTCwgaW5mby0+c3RyYXRl Z3kpOworCQlidWZmZXIgPSByZWFkX3N0cmVhbV9uZXh0X2J1ZmZlcihzdHJlYW0sIE5VTEwpOwog CQlMb2NrQnVmZmVyKGJ1ZmZlciwgQlVGRkVSX0xPQ0tfU0hBUkUpOwogCQlwYWdlID0gQnVmZmVy R2V0UGFnZShidWZmZXIpOwogCkBAIC0yMDYsNiArMjUwLDkgQEAgYmx2YWN1dW1jbGVhbnVwKElu ZGV4VmFjdXVtSW5mbyAqaW5mbywgSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICpzdGF0cykKIAkJVW5s b2NrUmVsZWFzZUJ1ZmZlcihidWZmZXIpOwogCX0KIAorCUFzc2VydChyZWFkX3N0cmVhbV9uZXh0 X2J1ZmZlcihzdHJlYW0sIE5VTEwpID09IEludmFsaWRCdWZmZXIpOworCXJlYWRfc3RyZWFtX2Vu ZChzdHJlYW0pOworCiAJSW5kZXhGcmVlU3BhY2VNYXBWYWN1dW0oaW5mby0+aW5kZXgpOwogCiAJ cmV0dXJuIHN0YXRzOwotLSAKMi41MS4wCgo= --000000000000458c160646c0f6ab Content-Type: application/octet-stream; name="v1-0003-Streamify-heap-bloat-estimation-scan.patch" Content-Disposition: attachment; filename="v1-0003-Streamify-heap-bloat-estimation-scan.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjl2d71n2 RnJvbSA4NDQ0MTA3MTEzYTNiOWEyMzc1MjBiNDFkMzIyZjcyMDJlOGMxNTAyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VGh1LCAyNSBEZWMgMjAyNSAxMzo0MDoxMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMy80XSBT dHJlYW1pZnkgaGVhcCBibG9hdCBlc3RpbWF0aW9uIHNjYW4uCgpJbnRyb2R1Y2UgYSByZWFkLXN0 cmVhbSBjYWxsYmFjayB0byBza2lwIGFsbC12aXNpYmxlIHBhZ2VzIHZpYSBWTS9GU00gbG9va3Vw IGFuZCBzdHJlYW0tcmVhZCB0aGUgcmVzdCwgcmVkdWNpbmcgcGFnZSByZWFkcyBhbmQgaW1wcm92 aW5nIHBnc3RhdHR1cGxlX2FwcHJveCBleGVjdXRpb24gdGltZSBvbiBsYXJnZSByZWxhdGlvbnMu Ci0tLQogY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRhcHByb3guYyB8IDEyNSArKysrKysrKysr KysrKysrKysrKysrLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDk0IGluc2VydGlvbnMoKyksIDMx IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcGdzdGF0dHVwbGUvcGdzdGF0YXBw cm94LmMgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCmluZGV4IGE1OWZmNGU5 ZDRmLi5lYjVjMjZmZmMxMCAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ3N0YXR0dXBsZS9wZ3N0YXRh cHByb3guYworKysgYi9jb250cmliL3Bnc3RhdHR1cGxlL3Bnc3RhdGFwcHJveC5jCkBAIC0yMyw2 ICsyMyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdl L2ZyZWVzcGFjZS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9yZWFkX3N0cmVhbS5oIgogCiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxl X2FwcHJveCk7CiBQR19GVU5DVElPTl9JTkZPX1YxKHBnc3RhdHR1cGxlX2FwcHJveF92MV81KTsK QEAgLTQ1LDYgKzQ2LDYxIEBAIHR5cGVkZWYgc3RydWN0IG91dHB1dF90eXBlCiAKICNkZWZpbmUg TlVNX09VVFBVVF9DT0xVTU5TIDEwCiAKKy8qCisgKiBTdHJ1Y3QgZm9yIHN0YXRhcHByb3hfaGVh cCByZWFkIHN0cmVhbSBjYWxsYmFjay4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgU3RhdEFwcHJveFJl YWRTdHJlYW1Qcml2YXRlCit7CisJUmVsYXRpb24JcmVsOworCW91dHB1dF90eXBlICpzdGF0Owor CUJsb2NrTnVtYmVyIGN1cnJlbnRfYmxvY2tudW07CisJQmxvY2tOdW1iZXIgbmJsb2NrczsKKwlC bG9ja051bWJlciBzY2FubmVkOwkJLyogY291bnQgb2YgcGFnZXMgYWN0dWFsbHkgcmVhZCAqLwor CUJ1ZmZlcgkJdm1idWZmZXI7CQkvKiBmb3IgVk0gbG9va3VwcyAqLworfQkJCVN0YXRBcHByb3hS ZWFkU3RyZWFtUHJpdmF0ZTsKKworLyoKKyAqIFJlYWQgc3RyZWFtIGNhbGxiYWNrIGZvciBzdGF0 YXBwcm94X2hlYXAuCisgKgorICogVGhpcyBjYWxsYmFjayBjaGVja3MgdGhlIHZpc2liaWxpdHkg bWFwIGZvciBlYWNoIGJsb2NrLiBJZiB0aGUgYmxvY2sgaXMKKyAqIGFsbC12aXNpYmxlLCB3ZSBj YW4gZ2V0IHRoZSBmcmVlIHNwYWNlIGZyb20gdGhlIEZTTSB3aXRob3V0IHJlYWRpbmcgdGhlCisg KiBhY3R1YWwgcGFnZSwgYW5kIHNraXAgdG8gdGhlIG5leHQgYmxvY2suIE9ubHkgYmxvY2tzIHRo YXQgYXJlIG5vdAorICogYWxsLXZpc2libGUgYXJlIHJldHVybmVkIGZvciBhY3R1YWwgcmVhZGlu Zy4KKyAqLworc3RhdGljIEJsb2NrTnVtYmVyCitzdGF0YXBwcm94X2hlYXBfcmVhZF9zdHJlYW1f bmV4dChSZWFkU3RyZWFtICpzdHJlYW0sCisJCQkJCQkJCSB2b2lkICpjYWxsYmFja19wcml2YXRl X2RhdGEsCisJCQkJCQkJCSB2b2lkICpwZXJfYnVmZmVyX2RhdGEpCit7CisJU3RhdEFwcHJveFJl YWRTdHJlYW1Qcml2YXRlICpwID0gY2FsbGJhY2tfcHJpdmF0ZV9kYXRhOworCisJd2hpbGUgKHAt PmN1cnJlbnRfYmxvY2tudW0gPCBwLT5uYmxvY2tzKQorCXsKKwkJQmxvY2tOdW1iZXIgYmxrbm8g PSBwLT5jdXJyZW50X2Jsb2NrbnVtKys7CisJCVNpemUJCWZyZWVzcGFjZTsKKworCQlDSEVDS19G T1JfSU5URVJSVVBUUygpOworCisJCS8qCisJCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2li bGUgdHVwbGVzLCB0aGVuIHdlIGNhbiBmaW5kIG91dCB0aGUgZnJlZQorCQkgKiBzcGFjZSBmcm9t IHRoZSBGU00gYW5kIG1vdmUgb24gd2l0aG91dCByZWFkaW5nIHRoZSBwYWdlLgorCQkgKi8KKwkJ aWYgKFZNX0FMTF9WSVNJQkxFKHAtPnJlbCwgYmxrbm8sICZwLT52bWJ1ZmZlcikpCisJCXsKKwkJ CWZyZWVzcGFjZSA9IEdldFJlY29yZGVkRnJlZVNwYWNlKHAtPnJlbCwgYmxrbm8pOworCQkJcC0+ c3RhdC0+dHVwbGVfbGVuICs9IEJMQ0tTWiAtIGZyZWVzcGFjZTsKKwkJCXAtPnN0YXQtPmZyZWVf c3BhY2UgKz0gZnJlZXNwYWNlOworCQkJY29udGludWU7CisJCX0KKworCQkvKiBUaGlzIGJsb2Nr IG5lZWRzIHRvIGJlIHJlYWQgKi8KKwkJcC0+c2Nhbm5lZCsrOworCQlyZXR1cm4gYmxrbm87CisJ fQorCisJcmV0dXJuIEludmFsaWRCbG9ja051bWJlcjsKK30KKwogLyoKICAqIFRoaXMgZnVuY3Rp b24gdGFrZXMgYW4gYWxyZWFkeSBvcGVuIHJlbGF0aW9uIGFuZCBzY2FucyBpdHMgcGFnZXMsCiAg KiBza2lwcGluZyB0aG9zZSB0aGF0IGhhdmUgdGhlIGNvcnJlc3BvbmRpbmcgdmlzaWJpbGl0eSBt YXAgYml0IHNldC4KQEAgLTU4LDUzICsxMTQsNTggQEAgdHlwZWRlZiBzdHJ1Y3Qgb3V0cHV0X3R5 cGUKIHN0YXRpYyB2b2lkCiBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24gcmVsLCBvdXRwdXRfdHlw ZSAqc3RhdCkKIHsKLQlCbG9ja051bWJlciBzY2FubmVkLAotCQkJCW5ibG9ja3MsCi0JCQkJYmxr bm87Ci0JQnVmZmVyCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJQmxvY2tOdW1iZXIgbmJs b2NrczsKIAlCdWZmZXJBY2Nlc3NTdHJhdGVneSBic3RyYXRlZ3k7CiAJVHJhbnNhY3Rpb25JZCBP bGRlc3RYbWluOworCVN0YXRBcHByb3hSZWFkU3RyZWFtUHJpdmF0ZSBwOworCVJlYWRTdHJlYW0g KnN0cmVhbTsKIAogCU9sZGVzdFhtaW4gPSBHZXRPbGRlc3ROb25SZW1vdmFibGVUcmFuc2FjdGlv bklkKHJlbCk7CiAJYnN0cmF0ZWd5ID0gR2V0QWNjZXNzU3RyYXRlZ3koQkFTX0JVTEtSRUFEKTsK IAogCW5ibG9ja3MgPSBSZWxhdGlvbkdldE51bWJlck9mQmxvY2tzKHJlbCk7Ci0Jc2Nhbm5lZCA9 IDA7CiAKLQlmb3IgKGJsa25vID0gMDsgYmxrbm8gPCBuYmxvY2tzOyBibGtubysrKQorCS8qIElu aXRpYWxpemUgcmVhZCBzdHJlYW0gcHJpdmF0ZSBkYXRhICovCisJcC5yZWwgPSByZWw7CisJcC5z dGF0ID0gc3RhdDsKKwlwLmN1cnJlbnRfYmxvY2tudW0gPSAwOworCXAubmJsb2NrcyA9IG5ibG9j a3M7CisJcC5zY2FubmVkID0gMDsKKwlwLnZtYnVmZmVyID0gSW52YWxpZEJ1ZmZlcjsKKworCS8q CisJICogQ3JlYXRlIHRoZSByZWFkIHN0cmVhbS4gV2UgZG9uJ3QgdXNlIFJFQURfU1RSRUFNX1VT RV9CQVRDSElORyBiZWNhdXNlCisJICogdGhlIGNhbGxiYWNrIGFjY2Vzc2VzIHRoZSB2aXNpYmls aXR5IG1hcCB3aGljaCBtYXkgbmVlZCB0byByZWFkIFZNCisJICogcGFnZXMuIFdoaWxlIHRoaXMg c2hvdWxkbid0IGNhdXNlIGRlYWRsb2Nrcywgd2UgZXJyIG9uIHRoZSBzaWRlIG9mCisJICogY2F1 dGlvbi4KKwkgKi8KKwlzdHJlYW0gPSByZWFkX3N0cmVhbV9iZWdpbl9yZWxhdGlvbihSRUFEX1NU UkVBTV9GVUxMLAorCQkJCQkJCQkJCWJzdHJhdGVneSwKKwkJCQkJCQkJCQlyZWwsCisJCQkJCQkJ CQkJTUFJTl9GT1JLTlVNLAorCQkJCQkJCQkJCXN0YXRhcHByb3hfaGVhcF9yZWFkX3N0cmVhbV9u ZXh0LAorCQkJCQkJCQkJCSZwLAorCQkJCQkJCQkJCTApOworCisJZm9yICg7OykKIAl7CiAJCUJ1 ZmZlcgkJYnVmOwogCQlQYWdlCQlwYWdlOwogCQlPZmZzZXROdW1iZXIgb2ZmbnVtLAogCQkJCQlt YXhvZmY7Ci0JCVNpemUJCWZyZWVzcGFjZTsKLQotCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwot Ci0JCS8qCi0JCSAqIElmIHRoZSBwYWdlIGhhcyBvbmx5IHZpc2libGUgdHVwbGVzLCB0aGVuIHdl IGNhbiBmaW5kIG91dCB0aGUgZnJlZQotCQkgKiBzcGFjZSBmcm9tIHRoZSBGU00gYW5kIG1vdmUg b24uCi0JCSAqLwotCQlpZiAoVk1fQUxMX1ZJU0lCTEUocmVsLCBibGtubywgJnZtYnVmZmVyKSkK LQkJewotCQkJZnJlZXNwYWNlID0gR2V0UmVjb3JkZWRGcmVlU3BhY2UocmVsLCBibGtubyk7Ci0J CQlzdGF0LT50dXBsZV9sZW4gKz0gQkxDS1NaIC0gZnJlZXNwYWNlOwotCQkJc3RhdC0+ZnJlZV9z cGFjZSArPSBmcmVlc3BhY2U7Ci0JCQljb250aW51ZTsKLQkJfQorCQlCbG9ja051bWJlciBibGtu bzsKIAotCQlidWYgPSBSZWFkQnVmZmVyRXh0ZW5kZWQocmVsLCBNQUlOX0ZPUktOVU0sIGJsa25v LAotCQkJCQkJCQkgUkJNX05PUk1BTCwgYnN0cmF0ZWd5KTsKKwkJYnVmID0gcmVhZF9zdHJlYW1f bmV4dF9idWZmZXIoc3RyZWFtLCBOVUxMKTsKKwkJaWYgKGJ1ZiA9PSBJbnZhbGlkQnVmZmVyKQor CQkJYnJlYWs7CiAKIAkJTG9ja0J1ZmZlcihidWYsIEJVRkZFUl9MT0NLX1NIQVJFKTsKIAogCQlw YWdlID0gQnVmZmVyR2V0UGFnZShidWYpOworCQlibGtubyA9IEJ1ZmZlckdldEJsb2NrTnVtYmVy KGJ1Zik7CiAKIAkJc3RhdC0+ZnJlZV9zcGFjZSArPSBQYWdlR2V0RXhhY3RGcmVlU3BhY2UocGFn ZSk7CiAKLQkJLyogV2UgbWF5IGNvdW50IHRoZSBwYWdlIGFzIHNjYW5uZWQgZXZlbiBpZiBpdCdz IG5ldy9lbXB0eSAqLwotCQlzY2FubmVkKys7Ci0KIAkJaWYgKFBhZ2VJc05ldyhwYWdlKSB8fCBQ YWdlSXNFbXB0eShwYWdlKSkKIAkJewogCQkJVW5sb2NrUmVsZWFzZUJ1ZmZlcihidWYpOwpAQCAt MTY5LDYgKzIzMCw4IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91dHB1dF90eXBl ICpzdGF0KQogCQlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7CiAJfQogCisJcmVhZF9zdHJlYW1f ZW5kKHN0cmVhbSk7CisKIAlzdGF0LT50YWJsZV9sZW4gPSAodWludDY0KSBuYmxvY2tzICogQkxD S1NaOwogCiAJLyoKQEAgLTE3OSw3ICsyNDIsNyBAQCBzdGF0YXBwcm94X2hlYXAoUmVsYXRpb24g cmVsLCBvdXRwdXRfdHlwZSAqc3RhdCkKIAkgKiB0dXBsZXMgaW4gYWxsLXZpc2libGUgcGFnZXMs IHNvIG5vIGNvcnJlY3Rpb24gaXMgbmVlZGVkIGZvciB0aGF0LCBhbmQKIAkgKiB3ZSBhbHJlYWR5 IGFjY291bnRlZCBmb3IgdGhlIHNwYWNlIGluIHRob3NlIHBhZ2VzLCB0b28uCiAJICovCi0Jc3Rh dC0+dHVwbGVfY291bnQgPSB2YWNfZXN0aW1hdGVfcmVsdHVwbGVzKHJlbCwgbmJsb2Nrcywgc2Nh bm5lZCwKKwlzdGF0LT50dXBsZV9jb3VudCA9IHZhY19lc3RpbWF0ZV9yZWx0dXBsZXMocmVsLCBu YmxvY2tzLCBwLnNjYW5uZWQsCiAJCQkJCQkJCQkJCSAgIHN0YXQtPnR1cGxlX2NvdW50KTsKIAog CS8qIEl0J3Mgbm90IGNsZWFyIGlmIHdlIGNvdWxkIGdldCAtMSBoZXJlLCBidXQgYmUgc2FmZS4g Ki8KQEAgLTE5MCwxNiArMjUzLDE2IEBAIHN0YXRhcHByb3hfaGVhcChSZWxhdGlvbiByZWwsIG91 dHB1dF90eXBlICpzdGF0KQogCSAqLwogCWlmIChuYmxvY2tzICE9IDApCiAJewotCQlzdGF0LT5z Y2FubmVkX3BlcmNlbnQgPSAxMDAuMCAqIHNjYW5uZWQgLyBuYmxvY2tzOworCQlzdGF0LT5zY2Fu bmVkX3BlcmNlbnQgPSAxMDAuMCAqIHAuc2Nhbm5lZCAvIG5ibG9ja3M7CiAJCXN0YXQtPnR1cGxl X3BlcmNlbnQgPSAxMDAuMCAqIHN0YXQtPnR1cGxlX2xlbiAvIHN0YXQtPnRhYmxlX2xlbjsKIAkJ c3RhdC0+ZGVhZF90dXBsZV9wZXJjZW50ID0gMTAwLjAgKiBzdGF0LT5kZWFkX3R1cGxlX2xlbiAv IHN0YXQtPnRhYmxlX2xlbjsKIAkJc3RhdC0+ZnJlZV9wZXJjZW50ID0gMTAwLjAgKiBzdGF0LT5m cmVlX3NwYWNlIC8gc3RhdC0+dGFibGVfbGVuOwogCX0KIAotCWlmIChCdWZmZXJJc1ZhbGlkKHZt YnVmZmVyKSkKKwlpZiAoQnVmZmVySXNWYWxpZChwLnZtYnVmZmVyKSkKIAl7Ci0JCVJlbGVhc2VC dWZmZXIodm1idWZmZXIpOwotCQl2bWJ1ZmZlciA9IEludmFsaWRCdWZmZXI7CisJCVJlbGVhc2VC dWZmZXIocC52bWJ1ZmZlcik7CisJCXAudm1idWZmZXIgPSBJbnZhbGlkQnVmZmVyOwogCX0KIH0K IAotLSAKMi41MS4wCgo= --000000000000458c160646c0f6ab--