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 1tB7e4-0020h0-6a for pgsql-bugs@arkaria.postgresql.org; Wed, 13 Nov 2024 07:18:31 +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 1tB7e1-00ById-Jg for pgsql-bugs@arkaria.postgresql.org; Wed, 13 Nov 2024 07:18:30 +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 1tB7e0-00ByIV-Uf for pgsql-bugs@lists.postgresql.org; Wed, 13 Nov 2024 07:18:29 +0000 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1tB7dt-001d1w-Og for pgsql-bugs@postgresql.org; Wed, 13 Nov 2024 07:18:28 +0000 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-20c9978a221so73615545ad.1 for ; Tue, 12 Nov 2024 23:18:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=j-davis-com.20230601.gappssmtp.com; s=20230601; t=1731482300; x=1732087100; darn=postgresql.org; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:from:to:cc:subject:date:message-id:reply-to; bh=cs0fyxCziwz/2MgZQvwc5AX1GwTWmEohHheRfQup8/U=; b=lFg0F6v1TWmlu1/YgIzHtvmNd9RKMKHLpKFtylVJ+XdMTkXbBd+lKAxfCTVPemShb8 yrBEachW/INXMHgY9rG0nccpry24qbBs956xoqCqnEtDp0Iuai6lcS+cQ2tQAQuHKVJh 1VIIFq7+2zyeIvm0rzNs0OVYZ5NwL7gFslGoWKO7FeOnK8KK+q1Z/HvUlS1c7fuve7M0 KnOufKNbP7FuTF3rZ+Mu06RCzuTE3aq6rYLh1gL96HFFjghVJhnWpH+96dGi8TlyYD76 ebNbAKlxT0RIRRYwGS3oVjBsfpQYcVcUIL0IvugWReVhYYRep7t2kzDgFNas9Xiw1rTq Jngg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1731482300; x=1732087100; h=mime-version:user-agent:references:in-reply-to:date:cc:to:from :subject:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cs0fyxCziwz/2MgZQvwc5AX1GwTWmEohHheRfQup8/U=; b=GbRFKyIKaRGW6NPWIZ+dbGUI4E/AsUqanScgoSbZU6fRxc3zUzYS/AhKn4ejgPV8eG svi4qlb7o6fQh1Bch3HJQkXOJRlcxllNJZctoGCHqyvv4AeknEShG0heKAQFCtHDauim fv/CyJ6na8vW8X+mcxQVx5mY9EDohMGSs7kJzVIjTDYWpeGaj1gqMp/cph6xiPrWxb0m 1TMHCmvmby6DxzxmcLQYC0QYpArbUdEf+laPIGX3cLE1329GF0LESuL5SmWoZkFeOr9V JxX2bIduL60VzgCq2ylf34m5z6ijFEUhOcOE3/DnHxNLZ/sNZpXZWJMiZStrbCBqwflD sM1Q== X-Gm-Message-State: AOJu0Yznf75iboQEaH/uTb9Qo/qo0CWK/RcmRlg4+b0GqVeSRF+/Ef5X DJQNBkvfWx+YpjRURWze5WuWSsW4zp1fkfgAkBv8yC65zj1PV1pcL3RgQt8LZg== X-Google-Smtp-Source: AGHT+IEerl5ViXxgqP/rehEunL733YwynIJIv2J4vf2Pu7kD7QuXaHGn6/i7EfqoAxlsGs91WwHdVg== X-Received: by 2002:a17:902:e5c6:b0:20b:57f0:b38b with SMTP id d9443c01a7336-21183c97540mr282698535ad.19.1731482300398; Tue, 12 Nov 2024 23:18:20 -0800 (PST) Received: from jeff-laptop.lan (c-76-102-242-158.hsd1.ca.comcast.net. [76.102.242.158]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-21177e6c368sm105222135ad.240.2024.11.12.23.18.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Nov 2024 23:18:19 -0800 (PST) Message-ID: Subject: Re: HashAgg degenerate case From: Jeff Davis To: Andres Freund Cc: pgsql-bugs@postgresql.org Date: Tue, 12 Nov 2024 23:18:18 -0800 In-Reply-To: References: <4tbbgdqqxvmy37fk75p36azkovyhrjhnul46lntj52jlobphf3@nxaqlaqupg2l> <33bcc1ef6c4acf80f4fb87c4d9d284c61abb3652.camel@j-davis.com> <8c60e698428962f33fdfbfab2206eedba09029fc.camel@j-davis.com> <3btw7dgj56k5samfzyrxnqdoiocbiycp44osza3iahzn3jqdro@ecxairlbdzqx> Content-Type: multipart/mixed; boundary="=-5GLyALDwRoFIeYovLTU2" User-Agent: Evolution 3.44.4-0ubuntu2 MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --=-5GLyALDwRoFIeYovLTU2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 2024-11-12 at 15:15 -0800, Jeff Davis wrote: > I attached a proof of concept patch, and it does add some complexity, > but it's not terrible. If tuplehash is going to be used for large > hash > tables, I don't think we can hide the doubling nature from the caller > forever, assuming that the caller can do something about it (like > spill). Previous version was incorrect, v2 attached, which is still rough, but hopefully better. Regards, Jeff Davis --=-5GLyALDwRoFIeYovLTU2 Content-Disposition: attachment; filename="v2-0001-simplehash-add-grow_ok-to-API.patch" Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v2-0001-simplehash-add-grow_ok-to-API.patch"; charset="UTF-8" RnJvbSBjMWM0ZjU2M2YzZjNiOTU0ZjI3ZDg1NzZmMGYzNGZlZjc4YzA5NWU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDExIE5vdiAyMDI0IDEzOjU2OjU5IC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAxLzJdIHNp bXBsZWhhc2g6IGFkZCAiZ3Jvd19vayIgdG8gQVBJLgoKQWxsb3dzIG1lbW9yeS1zZW5zaXRpdmUg Y2FsbGVycyB0byBhZGQgYW4gZWxlbWVudCBpZmYgaXQgd2lsbCBub3QKY2F1c2UgdGhlIGJ1Y2tl dCBhcnJheSB0byBncm93LgoKV2l0aG91dCB0aGlzIEFQSSwgY2FsbGVycyBzdWNoIGFzIEhhc2hB Z2cgY2Fubm90IGNvbnRyb2wgbWVtb3J5IHVzYWdlCmluY3JlbWVudGFsbHkgYmVjYXVzZSBoYXNo IHRhYmxlIGdyb3d0aCBtZWFucyB0aGF0IHRoZSBzaXplIGRvdWJsZXMuCi0tLQogc3JjL2luY2x1 ZGUvbGliL3NpbXBsZWhhc2guaCB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaCBiL3NyYy9pbmNsdWRlL2xp Yi9zaW1wbGVoYXNoLmgKaW5kZXggM2UxYjFmOTQ2MS4uOWM0OTQxMGNlZiAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvbGliL3NpbXBsZWhhc2guaAorKysgYi9zcmMvaW5jbHVkZS9saWIvc2ltcGxl aGFzaC5oCkBAIC0xMTUsNiArMTE1LDcgQEAKICNkZWZpbmUgU0hfUkVTRVQgU0hfTUFLRV9OQU1F KHJlc2V0KQogI2RlZmluZSBTSF9JTlNFUlQgU0hfTUFLRV9OQU1FKGluc2VydCkKICNkZWZpbmUg U0hfSU5TRVJUX0hBU0ggU0hfTUFLRV9OQU1FKGluc2VydF9oYXNoKQorI2RlZmluZSBTSF9JTlNF UlRfRVhUIFNIX01BS0VfTkFNRShpbnNlcnRfZXh0KQogI2RlZmluZSBTSF9ERUxFVEVfSVRFTSBT SF9NQUtFX05BTUUoZGVsZXRlX2l0ZW0pCiAjZGVmaW5lIFNIX0RFTEVURSBTSF9NQUtFX05BTUUo ZGVsZXRlKQogI2RlZmluZSBTSF9MT09LVVAgU0hfTUFLRV9OQU1FKGxvb2t1cCkKQEAgLTEzNSw3 ICsxMzYsNyBAQAogI2RlZmluZSBTSF9ESVNUQU5DRV9GUk9NX09QVElNQUwgU0hfTUFLRV9OQU1F KGRpc3RhbmNlKQogI2RlZmluZSBTSF9JTklUSUFMX0JVQ0tFVCBTSF9NQUtFX05BTUUoaW5pdGlh bF9idWNrZXQpCiAjZGVmaW5lIFNIX0VOVFJZX0hBU0ggU0hfTUFLRV9OQU1FKGVudHJ5X2hhc2gp Ci0jZGVmaW5lIFNIX0lOU0VSVF9IQVNIX0lOVEVSTkFMIFNIX01BS0VfTkFNRShpbnNlcnRfaGFz aF9pbnRlcm5hbCkKKyNkZWZpbmUgU0hfSU5TRVJUX0VYVF9JTlRFUk5BTCBTSF9NQUtFX05BTUUo aW5zZXJ0X2V4dF9pbnRlcm5hbCkKICNkZWZpbmUgU0hfTE9PS1VQX0hBU0hfSU5URVJOQUwgU0hf TUFLRV9OQU1FKGxvb2t1cF9oYXNoX2ludGVybmFsKQogCiAvKiBnZW5lcmF0ZSBmb3J3YXJkIGRl Y2xhcmF0aW9ucyBuZWNlc3NhcnkgdG8gdXNlIHRoZSBoYXNoIHRhYmxlICovCkBAIC0yMTcsNiAr MjE4LDEzIEBAIFNIX1NDT1BFCVNIX0VMRU1FTlRfVFlQRSAqU0hfSU5TRVJUKFNIX1RZUEUgKiB0 YiwgU0hfS0VZX1RZUEUga2V5LCBib29sICpmb3VuZCk7CiBTSF9TQ09QRQlTSF9FTEVNRU5UX1RZ UEUgKlNIX0lOU0VSVF9IQVNIKFNIX1RZUEUgKiB0YiwgU0hfS0VZX1RZUEUga2V5LAogCQkJCQkJ CQkJCQl1aW50MzIgaGFzaCwgYm9vbCAqZm91bmQpOwogCisvKgorICogPGVsZW1lbnQ+ICo8cHJl Zml4Pl9pbnNlcnRfZXh0KDxwcmVmaXg+X2hhc2ggKnRiLCA8a2V5PiBrZXksIHVpbnQzMiBoYXNo LAorICogCQkJCQkJCQkgIGJvb2wgZ3Jvd19vaywgYm9vbCAqZm91bmQpCisgKi8KK1NIX1NDT1BF CVNIX0VMRU1FTlRfVFlQRSAqU0hfSU5TRVJUX0VYVChTSF9UWVBFICogdGIsIFNIX0tFWV9UWVBF IGtleSwKKwkJCQkJCQkJCQkgICB1aW50MzIgaGFzaCwgYm9vbCBncm93X29rLCBib29sICpmb3Vu ZCk7CisKIC8qIDxlbGVtZW50PiAqPHByZWZpeD5fbG9va3VwKDxwcmVmaXg+X2hhc2ggKnRiLCA8 a2V5PiBrZXkpICovCiBTSF9TQ09QRQlTSF9FTEVNRU5UX1RZUEUgKlNIX0xPT0tVUChTSF9UWVBF ICogdGIsIFNIX0tFWV9UWVBFIGtleSk7CiAKQEAgLTYwNiw3ICs2MTQsOCBAQCBTSF9HUk9XKFNI X1RZUEUgKiB0YiwgdWludDY0IG5ld3NpemUpCiAgKiBpbnRvIGl0cyB3cmFwcGVyIGZ1bmN0aW9u cyBldmVuIGlmIFNIX1NDT1BFIGlzIGV4dGVybi4KICAqLwogc3RhdGljIGlubGluZSBTSF9FTEVN RU5UX1RZUEUgKgotU0hfSU5TRVJUX0hBU0hfSU5URVJOQUwoU0hfVFlQRSAqIHRiLCBTSF9LRVlf VFlQRSBrZXksIHVpbnQzMiBoYXNoLCBib29sICpmb3VuZCkKK1NIX0lOU0VSVF9FWFRfSU5URVJO QUwoU0hfVFlQRSAqIHRiLCBTSF9LRVlfVFlQRSBrZXksIHVpbnQzMiBoYXNoLCBib29sIGdyb3df b2ssCisJCQkJCSAgIGJvb2wgKmZvdW5kKQogewogCXVpbnQzMgkJc3RhcnRlbGVtOwogCXVpbnQz MgkJY3VyZWxlbTsKQEAgLTYyNCw3ICs2MzMsNyBAQCByZXN0YXJ0OgogCSAqIE5vdGUgdGhhdCB0 aGlzIGFsc28gcmVhY2hlZCB3aGVuIHJlc2l6aW5nIHRoZSB0YWJsZSBkdWUgdG8KIAkgKiBTSF9H Uk9XX01BWF9ESUIgLyBTSF9HUk9XX01BWF9NT1ZFLgogCSAqLwotCWlmICh1bmxpa2VseSh0Yi0+ bWVtYmVycyA+PSB0Yi0+Z3Jvd190aHJlc2hvbGQpKQorCWlmICh1bmxpa2VseShncm93X29rICYm IHRiLT5tZW1iZXJzID49IHRiLT5ncm93X3RocmVzaG9sZCkpCiAJewogCQlpZiAodW5saWtlbHko dGItPnNpemUgPT0gU0hfTUFYX1NJWkUpKQogCQkJc2hfZXJyb3IoImhhc2ggdGFibGUgc2l6ZSBl eGNlZWRlZCIpOwpAQCAtNjUxLDYgKzY2MCw5IEBAIHJlc3RhcnQ6CiAJCS8qIGFueSBlbXB0eSBi dWNrZXQgY2FuIGRpcmVjdGx5IGJlIHVzZWQgKi8KIAkJaWYgKGVudHJ5LT5zdGF0dXMgPT0gU0hf U1RBVFVTX0VNUFRZKQogCQl7CisJCQlpZiAodW5saWtlbHkoIWdyb3dfb2sgJiYgdGItPm1lbWJl cnMgPj0gdGItPmdyb3dfdGhyZXNob2xkKSkKKwkJCQlyZXR1cm4gTlVMTDsKKwogCQkJdGItPm1l bWJlcnMrKzsKIAkJCWVudHJ5LT5TSF9LRVkgPSBrZXk7CiAjaWZkZWYgU0hfU1RPUkVfSEFTSApA QCAtNjg3LDYgKzY5OSw5IEBAIHJlc3RhcnQ6CiAJCQl1aW50MzIJCW1vdmVlbGVtOwogCQkJaW50 MzIJCWVtcHR5ZGlzdCA9IDA7CiAKKwkJCWlmICh1bmxpa2VseSghZ3Jvd19vayAmJiB0Yi0+bWVt YmVycyA+PSB0Yi0+Z3Jvd190aHJlc2hvbGQpKQorCQkJCXJldHVybiBOVUxMOworCiAJCQkvKiBm aW5kIG5leHQgZW1wdHkgYnVja2V0ICovCiAJCQl3aGlsZSAodHJ1ZSkKIAkJCXsKQEAgLTc3OCw3 ICs3OTMsNyBAQCBTSF9JTlNFUlQoU0hfVFlQRSAqIHRiLCBTSF9LRVlfVFlQRSBrZXksIGJvb2wg KmZvdW5kKQogewogCXVpbnQzMgkJaGFzaCA9IFNIX0hBU0hfS0VZKHRiLCBrZXkpOwogCi0JcmV0 dXJuIFNIX0lOU0VSVF9IQVNIX0lOVEVSTkFMKHRiLCBrZXksIGhhc2gsIGZvdW5kKTsKKwlyZXR1 cm4gU0hfSU5TRVJUX0VYVF9JTlRFUk5BTCh0Yiwga2V5LCBoYXNoLCB0cnVlLCBmb3VuZCk7CiB9 CiAKIC8qCkBAIC03ODksNyArODA0LDIwIEBAIFNIX0lOU0VSVChTSF9UWVBFICogdGIsIFNIX0tF WV9UWVBFIGtleSwgYm9vbCAqZm91bmQpCiBTSF9TQ09QRQlTSF9FTEVNRU5UX1RZUEUgKgogU0hf SU5TRVJUX0hBU0goU0hfVFlQRSAqIHRiLCBTSF9LRVlfVFlQRSBrZXksIHVpbnQzMiBoYXNoLCBi b29sICpmb3VuZCkKIHsKLQlyZXR1cm4gU0hfSU5TRVJUX0hBU0hfSU5URVJOQUwodGIsIGtleSwg aGFzaCwgZm91bmQpOworCXJldHVybiBTSF9JTlNFUlRfRVhUX0lOVEVSTkFMKHRiLCBrZXksIGhh c2gsIHRydWUsIGZvdW5kKTsKK30KKworLyoKKyAqIEluc2VydCB0aGUga2V5IGludG8gdGhlIGhh c2gtdGFibGUgdXNpbmcgYW4gYWxyZWFkeS1jYWxjdWxhdGVkIGhhc2guIFNldAorICogKmZvdW5k IHRvIHRydWUgaWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cywgZmFsc2Ugb3RoZXJ3aXNlLiBJZiBn cm93aW5nIGlzCisgKiBuZWNlc3NhcnksIGFuZCBhbmQgIWdyb3dfb2ssIHJldHVybiBOVUxMOyBv dGhlcndpc2UgcmV0dXJucyB0aGUgaGFzaC10YWJsZQorICogZW50cnkuCisgKi8KK1NIX1NDT1BF CVNIX0VMRU1FTlRfVFlQRSAqCitTSF9JTlNFUlRfRVhUKFNIX1RZUEUgKiB0YiwgU0hfS0VZX1RZ UEUga2V5LCB1aW50MzIgaGFzaCwgYm9vbCBncm93X29rLAorCQkJICBib29sICpmb3VuZCkKK3sK KwlyZXR1cm4gU0hfSU5TRVJUX0VYVF9JTlRFUk5BTCh0Yiwga2V5LCBoYXNoLCBncm93X29rLCBm b3VuZCk7CiB9CiAKIC8qCkBAIC0xMjAyLDUgKzEyMzAsNSBAQCBTSF9TVEFUKFNIX1RZUEUgKiB0 YikKICN1bmRlZiBTSF9QUkVWCiAjdW5kZWYgU0hfRElTVEFOQ0VfRlJPTV9PUFRJTUFMCiAjdW5k ZWYgU0hfRU5UUllfSEFTSAotI3VuZGVmIFNIX0lOU0VSVF9IQVNIX0lOVEVSTkFMCisjdW5kZWYg U0hfSU5TRVJUX0VYVF9JTlRFUk5BTAogI3VuZGVmIFNIX0xPT0tVUF9IQVNIX0lOVEVSTkFMCi0t IAoyLjM0LjEKCg== --=-5GLyALDwRoFIeYovLTU2 Content-Disposition: attachment; filename*0=v2-0002-HashAgg-avoid-unexpected-hash-table-growth-near-m.pat; filename*1=ch Content-Transfer-Encoding: base64 Content-Type: text/x-patch; name="v2-0002-HashAgg-avoid-unexpected-hash-table-growth-near-m.patch"; charset="UTF-8" RnJvbSA0MGVlNjIzNjI3ZTQ5MDY4Y2U4YjNhN2RhOGRmMzFlMTdkMGJiMGQ2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBKZWZmIERhdmlzIDxqZWZmQGotZGF2aXMuY29tPgpEYXRlOiBN b24sIDExIE5vdiAyMDI0IDIxOjI4OjMxIC0wODAwClN1YmplY3Q6IFtQQVRDSCB2MiAyLzJdIEhh c2hBZ2c6IGF2b2lkIHVuZXhwZWN0ZWQgaGFzaCB0YWJsZSBncm93dGggbmVhcgogbWVtb3J5IGxp bWl0LgoKV2hlbiB0aGUgc2ltcGxlaGFzaCB0YWJsZSBzaXplIGlzIGFscmVhZHkgYSBzaWduaWZp Y2FudCBmcmFjdGlvbiBvZgp0aGUgbWVtb3J5LCBhbmQgZ3Jvd2luZyBpdCB3b3VsZCByaXNrIGV4 Y2VlZGluZyB0aGUgbWVtb3J5IGxpbWl0LCB0aGVuCmVudGVyIGEgbW9kZSBpbiB3aGljaCBuZXcg Z3JvdXBzIGNhbiBiZSBhZGRlZCBpZmYgdGhlcmUncyByb29tIGluIHRoZQpleGlzdGluZyBidWNr ZXQgYXJyYXkgKGkuZS4gaXQgd291bGRuJ3QgdHJpZ2dlciBTSF9HUk9XKCkpLgotLS0KIHNyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jIHwgNjEgKysrKysrKysrKysrKysrKysrKysr KysrLS0tLS0KIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cuYyAgICAgIHwgNjEgKysrKysr KysrKysrKysrKysrKysrKystLS0tLS0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgg ICAgIHwgMTEgKysrKy0tCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICB8ICAz ICstCiA0IGZpbGVzIGNoYW5nZWQsIDExMSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjR3JvdXBpbmcuYyBiL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCmluZGV4IDc3NGU0ZGU4ODIuLjQ0ZGM0OGM5 ODEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCisrKyBi L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNHcm91cGluZy5jCkBAIC0yNSw3ICsyNSw4IEBAIHN0 YXRpYyBpbmxpbmUgdWludDMyIFR1cGxlSGFzaFRhYmxlSGFzaF9pbnRlcm5hbChzdHJ1Y3QgdHVw bGVoYXNoX2hhc2ggKnRiLAogCQkJCQkJCQkJCQkJIGNvbnN0IE1pbmltYWxUdXBsZSB0dXBsZSk7 CiBzdGF0aWMgaW5saW5lIFR1cGxlSGFzaEVudHJ5IExvb2t1cFR1cGxlSGFzaEVudHJ5X2ludGVy bmFsKFR1cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSwKIAkJCQkJCQkJCQkJCQkJICAgVHVwbGVUYWJs ZVNsb3QgKnNsb3QsCi0JCQkJCQkJCQkJCQkJCSAgIGJvb2wgKmlzbmV3LCB1aW50MzIgaGFzaCk7 CisJCQkJCQkJCQkJCQkJCSAgIGJvb2wgZ3Jvd19vaywgYm9vbCAqaXNuZXcsCisJCQkJCQkJCQkJ CQkJCSAgIHVpbnQzMiBoYXNoKTsKIAogLyoKICAqIERlZmluZSBwYXJhbWV0ZXJzIGZvciB0dXBs ZSBoYXNoIHRhYmxlIGNvZGUgZ2VuZXJhdGlvbi4gVGhlIGludGVyZmFjZSBpcwpAQCAtMzIwLDcg KzMyMSw0MiBAQCBMb29rdXBUdXBsZUhhc2hFbnRyeShUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUs IFR1cGxlVGFibGVTbG90ICpzbG90LAogCWhhc2h0YWJsZS0+Y3VyX2VxX2Z1bmMgPSBoYXNodGFi bGUtPnRhYl9lcV9mdW5jOwogCiAJbG9jYWxfaGFzaCA9IFR1cGxlSGFzaFRhYmxlSGFzaF9pbnRl cm5hbChoYXNodGFibGUtPmhhc2h0YWIsIE5VTEwpOwotCWVudHJ5ID0gTG9va3VwVHVwbGVIYXNo RW50cnlfaW50ZXJuYWwoaGFzaHRhYmxlLCBzbG90LCBpc25ldywgbG9jYWxfaGFzaCk7CisJZW50 cnkgPSBMb29rdXBUdXBsZUhhc2hFbnRyeV9pbnRlcm5hbChoYXNodGFibGUsIHNsb3QsIHRydWUs IGlzbmV3LAorCQkJCQkJCQkJCSAgbG9jYWxfaGFzaCk7CisKKwlpZiAoaGFzaCAhPSBOVUxMKQor CQkqaGFzaCA9IGxvY2FsX2hhc2g7CisKKwlBc3NlcnQoZW50cnkgPT0gTlVMTCB8fCBlbnRyeS0+ aGFzaCA9PSBsb2NhbF9oYXNoKTsKKworCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0 KTsKKworCXJldHVybiBlbnRyeTsKK30KKworLyoKKyAqIExpa2UgTG9va3VwVHVwbGVIYXNoRW50 cnksIGJ1dCBhbGxvd3Mgc3BlY2lmeWluZyBncm93X29rIHRvIGZhbHNlLCB3aGljaAorICogcHJl dmVudHMgYSBuZXcgZW50cnkgZnJvbSBncm93aW5nIHRoZSBpbnRlcm5hbCBidWNrZXQgYXJyYXku CisgKi8KK1R1cGxlSGFzaEVudHJ5CitMb29rdXBUdXBsZUhhc2hFbnRyeUV4dChUdXBsZUhhc2hU YWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkJYm9vbCBncm93X29r LCBib29sICppc25ldywgdWludDMyICpoYXNoKQoreworCVR1cGxlSGFzaEVudHJ5IGVudHJ5Owor CU1lbW9yeUNvbnRleHQgb2xkQ29udGV4dDsKKwl1aW50MzIJCWxvY2FsX2hhc2g7CisKKwkvKiBO ZWVkIHRvIHJ1biB0aGUgaGFzaCBmdW5jdGlvbnMgaW4gc2hvcnQtbGl2ZWQgY29udGV4dCAqLwor CW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oaGFzaHRhYmxlLT50ZW1wY3h0KTsK KworCS8qIHNldCB1cCBkYXRhIG5lZWRlZCBieSBoYXNoIGFuZCBtYXRjaCBmdW5jdGlvbnMgKi8K KwloYXNodGFibGUtPmlucHV0c2xvdCA9IHNsb3Q7CisJaGFzaHRhYmxlLT5pbl9oYXNoX2Z1bmNz ID0gaGFzaHRhYmxlLT50YWJfaGFzaF9mdW5jczsKKwloYXNodGFibGUtPmN1cl9lcV9mdW5jID0g aGFzaHRhYmxlLT50YWJfZXFfZnVuYzsKKworCWxvY2FsX2hhc2ggPSBUdXBsZUhhc2hUYWJsZUhh c2hfaW50ZXJuYWwoaGFzaHRhYmxlLT5oYXNodGFiLCBOVUxMKTsKKwllbnRyeSA9IExvb2t1cFR1 cGxlSGFzaEVudHJ5X2ludGVybmFsKGhhc2h0YWJsZSwgc2xvdCwgZ3Jvd19vaywgaXNuZXcsCisJ CQkJCQkJCQkJICBsb2NhbF9oYXNoKTsKIAogCWlmIChoYXNoICE9IE5VTEwpCiAJCSpoYXNoID0g bG9jYWxfaGFzaDsKQEAgLTM1NiwxMSArMzkyLDEyIEBAIFR1cGxlSGFzaFRhYmxlSGFzaChUdXBs ZUhhc2hUYWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90KQogCiAvKgogICogQSB2 YXJpYW50IG9mIExvb2t1cFR1cGxlSGFzaEVudHJ5IGZvciBjYWxsZXJzIHRoYXQgaGF2ZSBhbHJl YWR5IGNvbXB1dGVkCi0gKiB0aGUgaGFzaCB2YWx1ZS4KKyAqIHRoZSBoYXNoIHZhbHVlLiBBbHNv IGFsbG93cyBzcGVjaWZ5aW5nIGdyb3dfb2sgdG8gZmFsc2UsIHdoaWNoIHByZXZlbnRzIGEKKyAq IG5ldyBlbnRyeSBmcm9tIGdyb3dpbmcgdGhlIGludGVybmFsIGJ1Y2tldCBhcnJheS4KICAqLwog VHVwbGVIYXNoRW50cnkKLUxvb2t1cFR1cGxlSGFzaEVudHJ5SGFzaChUdXBsZUhhc2hUYWJsZSBo YXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAotCQkJCQkJIGJvb2wgKmlzbmV3LCB1aW50 MzIgaGFzaCkKK0xvb2t1cFR1cGxlSGFzaEVudHJ5SGFzaEV4dChUdXBsZUhhc2hUYWJsZSBoYXNo dGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCQkJCWJvb2wgZ3Jvd19vaywgYm9vbCAq aXNuZXcsIHVpbnQzMiBoYXNoKQogewogCVR1cGxlSGFzaEVudHJ5IGVudHJ5OwogCU1lbW9yeUNv bnRleHQgb2xkQ29udGV4dDsKQEAgLTM3Myw3ICs0MTAsOCBAQCBMb29rdXBUdXBsZUhhc2hFbnRy eUhhc2goVHVwbGVIYXNoVGFibGUgaGFzaHRhYmxlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAlo YXNodGFibGUtPmluX2hhc2hfZnVuY3MgPSBoYXNodGFibGUtPnRhYl9oYXNoX2Z1bmNzOwogCWhh c2h0YWJsZS0+Y3VyX2VxX2Z1bmMgPSBoYXNodGFibGUtPnRhYl9lcV9mdW5jOwogCi0JZW50cnkg PSBMb29rdXBUdXBsZUhhc2hFbnRyeV9pbnRlcm5hbChoYXNodGFibGUsIHNsb3QsIGlzbmV3LCBo YXNoKTsKKwllbnRyeSA9IExvb2t1cFR1cGxlSGFzaEVudHJ5X2ludGVybmFsKGhhc2h0YWJsZSwg c2xvdCwgZ3Jvd19vaywgaXNuZXcsCisJCQkJCQkJCQkJICBoYXNoKTsKIAlBc3NlcnQoZW50cnkg PT0gTlVMTCB8fCBlbnRyeS0+aGFzaCA9PSBoYXNoKTsKIAogCU1lbW9yeUNvbnRleHRTd2l0Y2hU byhvbGRDb250ZXh0KTsKQEAgLTQ5MCwxMiArNTI4LDE1IEBAIFR1cGxlSGFzaFRhYmxlSGFzaF9p bnRlcm5hbChzdHJ1Y3QgdHVwbGVoYXNoX2hhc2ggKnRiLAogICogc28gdGhhdCB3ZSBjYW4gYXZv aWQgc3dpdGNoaW5nIHRoZSBtZW1vcnkgY29udGV4dCBtdWx0aXBsZSB0aW1lcyBmb3IKICAqIExv b2t1cFR1cGxlSGFzaEVudHJ5LgogICoKKyAqIElmIGdyb3dfb2sgaXMgZmFsc2UsIHJldHVybnMg TlVMTCBpZiBhZGRpbmcgYSBuZXcgZW50cnkgd291bGQgY2F1c2UgdGhlCisgKiBpbnRlcm5hbCB0 dXBsZWhhc2ggYnVja2V0IGFycmF5IHRvIGdyb3cgKHRoYXQgaXMsIHRvIGRvdWJsZSBpbiBzaXpl KS4KKyAqCiAgKiBOQjogVGhpcyBmdW5jdGlvbiBtYXkgb3IgbWF5IG5vdCBjaGFuZ2UgdGhlIG1l bW9yeSBjb250ZXh0LiBDYWxsZXIgaXMKICAqIGV4cGVjdGVkIHRvIGNoYW5nZSBpdCBiYWNrLgog ICovCiBzdGF0aWMgaW5saW5lIFR1cGxlSGFzaEVudHJ5CiBMb29rdXBUdXBsZUhhc2hFbnRyeV9p bnRlcm5hbChUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsIFR1cGxlVGFibGVTbG90ICpzbG90LAot CQkJCQkJCSAgYm9vbCAqaXNuZXcsIHVpbnQzMiBoYXNoKQorCQkJCQkJCSAgYm9vbCBncm93X29r LCBib29sICppc25ldywgdWludDMyIGhhc2gpCiB7CiAJVHVwbGVIYXNoRW50cnlEYXRhICplbnRy eTsKIAlib29sCQlmb3VuZDsKQEAgLTUwNSwxMSArNTQ2LDExIEBAIExvb2t1cFR1cGxlSGFzaEVu dHJ5X2ludGVybmFsKFR1cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSwgVHVwbGVUYWJsZVNsb3QgKnNs b3QsCiAKIAlpZiAoaXNuZXcpCiAJewotCQllbnRyeSA9IHR1cGxlaGFzaF9pbnNlcnRfaGFzaCho YXNodGFibGUtPmhhc2h0YWIsIGtleSwgaGFzaCwgJmZvdW5kKTsKKwkJZW50cnkgPSB0dXBsZWhh c2hfaW5zZXJ0X2V4dChoYXNodGFibGUtPmhhc2h0YWIsIGtleSwgaGFzaCwgZ3Jvd19vaywKKwkJ CQkJCQkJCSAmZm91bmQpOwogCi0JCWlmIChmb3VuZCkKKwkJaWYgKGVudHJ5ID09IE5VTEwgfHwg Zm91bmQpCiAJCXsKLQkJCS8qIGZvdW5kIHByZS1leGlzdGluZyBlbnRyeSAqLwogCQkJKmlzbmV3 ID0gZmFsc2U7CiAJCX0KIAkJZWxzZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Iv bm9kZUFnZy5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IDUzZWFkNzdl Y2UuLjk5OTFjMDFlNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVBZ2cu YworKysgYi9zcmMvYmFja2VuZC9leGVjdXRvci9ub2RlQWdnLmMKQEAgLTE0OTQsNiArMTQ5NCw3 IEBAIGJ1aWxkX2hhc2hfdGFibGVzKEFnZ1N0YXRlICphZ2dzdGF0ZSkKIAl9CiAKIAlhZ2dzdGF0 ZS0+aGFzaF9uZ3JvdXBzX2N1cnJlbnQgPSAwOworCWFnZ3N0YXRlLT5oYXNoX2dyb3dfb2sgPSB0 cnVlOwogfQogCiAvKgpAQCAtMTg2MSw2ICsxODYyLDE5IEBAIGhhc2hfYWdnX2NoZWNrX2xpbWl0 cyhBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJU2l6ZQkJaGFzaGtleV9tZW0gPSBNZW1vcnlDb250ZXh0 TWVtQWxsb2NhdGVkKGFnZ3N0YXRlLT5oYXNoY29udGV4dC0+ZWN4dF9wZXJfdHVwbGVfbWVtb3J5 LAogCQkJCQkJCQkJCQkJCQl0cnVlKTsKIAorCS8qCisJICogVGhlIGJ1Y2tldCBhcnJheSBpcyBz dG9yZWQgaW4gaGFzaF9tZXRhY3h0LCBhbmQgZWFjaCB0aW1lIGl0IGdyb3dzLCBpdAorCSAqIGRv dWJsZXMuIElmIGRvdWJsaW5nIHRoZSBidWNrZXQgYXJyYXkgd291bGQgcHV0IHVzIG92ZXIgdGhl IG1lbW9yeQorCSAqIGxpbWl0LCB0aGVuIHdlIG11c3Qgc2V0IGhhc2hfZ3Jvd19vayB0byBmYWxz ZSB0byBwcmV2ZW50IGl0LgorCSAqCisJICogV2hlbiBtdWx0aXBsZSBncm91cGluZyBzZXRzIGFy ZSBpbnZvbHZlZCwgdGhpcyBjYWxjdWxhdGlvbiBpcyBvdmVybHkKKwkgKiBjb25zZXJ2YXRpdmUs IGJlY2F1c2UgZ3Jvd2luZyBhIHNpbmdsZSBoYXNodGFibGUgd2lsbCBub3QgZG91YmxlIHRoZQor CSAqIG92ZXJhbGwgbWV0YV9tZW0uIEJ1dCB0aGF0IG9ubHkgYWZmZWN0cyB0aGUgZmlyc3QgYmF0 Y2g7IHN1YnNlcXVlbnQKKwkgKiBiYXRjaGVzIG9ubHkgZGVhbCB3aXRoIGEgc2luZ2xlIGdyb3Vw aW5nIHNldCBhdCBhIHRpbWUuCisJICovCisJaWYgKG1ldGFfbWVtICogMiArIGhhc2hrZXlfbWVt ID4gYWdnc3RhdGUtPmhhc2hfbWVtX2xpbWl0KQorCQlhZ2dzdGF0ZS0+aGFzaF9ncm93X29rID0g ZmFsc2U7CisKIAkvKgogCSAqIERvbid0IHNwaWxsIHVubGVzcyB0aGVyZSdzIGF0IGxlYXN0IG9u ZSBncm91cCBpbiB0aGUgaGFzaCB0YWJsZSBzbyB3ZQogCSAqIGNhbiBiZSBzdXJlIHRvIG1ha2Ug cHJvZ3Jlc3MgZXZlbiBpbiBlZGdlIGNhc2VzLgpAQCAtMjEwMyw3ICsyMTE3LDcgQEAgbG9va3Vw X2hhc2hfZW50cmllcyhBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJCUFnZ1N0YXRlUGVySGFzaCBwZXJo YXNoID0gJmFnZ3N0YXRlLT5wZXJoYXNoW3NldG5vXTsKIAkJVHVwbGVIYXNoVGFibGUgaGFzaHRh YmxlID0gcGVyaGFzaC0+aGFzaHRhYmxlOwogCQlUdXBsZVRhYmxlU2xvdCAqaGFzaHNsb3QgPSBw ZXJoYXNoLT5oYXNoc2xvdDsKLQkJVHVwbGVIYXNoRW50cnkgZW50cnk7CisJCVR1cGxlSGFzaEVu dHJ5IGVudHJ5ID0gTlVMTDsKIAkJdWludDMyCQloYXNoOwogCQlib29sCQlpc25ldyA9IGZhbHNl OwogCQlib29sCSAgICpwX2lzbmV3OwpAQCAtMjExNiwxNiArMjEzMCwyNSBAQCBsb29rdXBfaGFz aF9lbnRyaWVzKEFnZ1N0YXRlICphZ2dzdGF0ZSkKIAkJCQkJCSAgb3V0ZXJzbG90LAogCQkJCQkJ ICBoYXNoc2xvdCk7CiAKLQkJZW50cnkgPSBMb29rdXBUdXBsZUhhc2hFbnRyeShoYXNodGFibGUs IGhhc2hzbG90LAotCQkJCQkJCQkJIHBfaXNuZXcsICZoYXNoKTsKLQotCQlpZiAoZW50cnkgIT0g TlVMTCkKKwkJZW50cnkgPSBMb29rdXBUdXBsZUhhc2hFbnRyeUV4dChoYXNodGFibGUsIGhhc2hz bG90LAorCQkJCQkJCQkJCWFnZ3N0YXRlLT5oYXNoX2dyb3dfb2ssCisJCQkJCQkJCQkJcF9pc25l dywgJmhhc2gpOworCQlpZiAoZW50cnkpCiAJCXsKIAkJCWlmIChpc25ldykKIAkJCQlpbml0aWFs aXplX2hhc2hfZW50cnkoYWdnc3RhdGUsIGhhc2h0YWJsZSwgZW50cnkpOwogCQkJcGVyZ3JvdXBb c2V0bm9dID0gZW50cnktPmFkZGl0aW9uYWw7CiAJCX0KLQkJZWxzZQorCQllbHNlIGlmICghYWdn c3RhdGUtPmhhc2hfc3BpbGxfbW9kZSkKKwkJeworCQkJLyoKKwkJCSAqIE5ldyBlbnRyeSB3b3Vs ZCBncm93IGhhc2ggdGFibGUgYnVja2V0IGFycmF5LCBhbmQgbWF5IHB1dCB1cworCQkJICogb3Zl ciB0aGUgbWVtb3J5IGxpbWl0LgorCQkJICovCisJCQloYXNoX2FnZ19lbnRlcl9zcGlsbF9tb2Rl KGFnZ3N0YXRlKTsKKwkJfQorCisJCWlmICghZW50cnkpCiAJCXsKIAkJCUhhc2hBZ2dTcGlsbCAq c3BpbGwgPSAmYWdnc3RhdGUtPmhhc2hfc3BpbGxzW3NldG5vXTsKIAkJCVR1cGxlVGFibGVTbG90 ICpzbG90ID0gYWdnc3RhdGUtPnRtcGNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZTsKQEAgLTI2MjYs NiArMjY0OSw3IEBAIGFnZ19yZWZpbGxfaGFzaF90YWJsZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJ CVJlc2V0VHVwbGVIYXNoVGFibGUoYWdnc3RhdGUtPnBlcmhhc2hbc2V0bm9dLmhhc2h0YWJsZSk7 CiAKIAlhZ2dzdGF0ZS0+aGFzaF9uZ3JvdXBzX2N1cnJlbnQgPSAwOworCWFnZ3N0YXRlLT5oYXNo X2dyb3dfb2sgPSB0cnVlOwogCiAJLyoKIAkgKiBJbiBBR0dfTUlYRUQgbW9kZSwgaGFzaCBhZ2dy ZWdhdGlvbiBoYXBwZW5zIGluIHBoYXNlIDEgYW5kIHRoZSBvdXRwdXQKQEAgLTI2NTYsNyArMjY4 MCw3IEBAIGFnZ19yZWZpbGxfaGFzaF90YWJsZShBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAJewogCQlU dXBsZVRhYmxlU2xvdCAqc3BpbGxzbG90ID0gYWdnc3RhdGUtPmhhc2hfc3BpbGxfcnNsb3Q7CiAJ CVR1cGxlVGFibGVTbG90ICpoYXNoc2xvdCA9IHBlcmhhc2gtPmhhc2hzbG90OwotCQlUdXBsZUhh c2hFbnRyeSBlbnRyeTsKKwkJVHVwbGVIYXNoRW50cnkgZW50cnkgPSBOVUxMOwogCQlNaW5pbWFs VHVwbGUgdHVwbGU7CiAJCXVpbnQzMgkJaGFzaDsKIAkJYm9vbAkJaXNuZXcgPSBmYWxzZTsKQEAg LTI2NzQsMTcgKzI2OTgsMjggQEAgYWdnX3JlZmlsbF9oYXNoX3RhYmxlKEFnZ1N0YXRlICphZ2dz dGF0ZSkKIAkJcHJlcGFyZV9oYXNoX3Nsb3QocGVyaGFzaCwKIAkJCQkJCSAgYWdnc3RhdGUtPnRt cGNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSwKIAkJCQkJCSAgaGFzaHNsb3QpOwotCQllbnRyeSA9 IExvb2t1cFR1cGxlSGFzaEVudHJ5SGFzaChwZXJoYXNoLT5oYXNodGFibGUsIGhhc2hzbG90LAot CQkJCQkJCQkJCSBwX2lzbmV3LCBoYXNoKTsKIAotCQlpZiAoZW50cnkgIT0gTlVMTCkKKwkJZW50 cnkgPSBMb29rdXBUdXBsZUhhc2hFbnRyeUhhc2hFeHQocGVyaGFzaC0+aGFzaHRhYmxlLCBoYXNo c2xvdCwKKwkJCQkJCQkJCQkJYWdnc3RhdGUtPmhhc2hfZ3Jvd19vaywgcF9pc25ldywKKwkJCQkJ CQkJCQkJaGFzaCk7CisKKwkJaWYgKGVudHJ5KQogCQl7CiAJCQlpZiAoaXNuZXcpCiAJCQkJaW5p dGlhbGl6ZV9oYXNoX2VudHJ5KGFnZ3N0YXRlLCBwZXJoYXNoLT5oYXNodGFibGUsIGVudHJ5KTsK IAkJCWFnZ3N0YXRlLT5oYXNoX3Blcmdyb3VwW2JhdGNoLT5zZXRub10gPSBlbnRyeS0+YWRkaXRp b25hbDsKIAkJCWFkdmFuY2VfYWdncmVnYXRlcyhhZ2dzdGF0ZSk7CiAJCX0KLQkJZWxzZQorCQll bHNlIGlmICghYWdnc3RhdGUtPmhhc2hfc3BpbGxfbW9kZSkKKwkJeworCQkJLyoKKwkJCSAqIE5l dyBlbnRyeSB3b3VsZCBncm93IGhhc2ggdGFibGUgYnVja2V0IGFycmF5LCBhbmQgbWF5IHB1dCB1 cworCQkJICogb3ZlciB0aGUgbWVtb3J5IGxpbWl0LgorCQkJICovCisJCQloYXNoX2FnZ19lbnRl cl9zcGlsbF9tb2RlKGFnZ3N0YXRlKTsKKwkJfQorCisJCWlmICghZW50cnkpCiAJCXsKIAkJCWlm ICghc3BpbGxfaW5pdGlhbGl6ZWQpCiAJCQl7CkBAIC0yNzIzLDYgKzI3NTgsNyBAQCBhZ2dfcmVm aWxsX2hhc2hfdGFibGUoQWdnU3RhdGUgKmFnZ3N0YXRlKQogCWVsc2UKIAkJaGFzaF9hZ2dfdXBk YXRlX21ldHJpY3MoYWdnc3RhdGUsIHRydWUsIDApOwogCisJYWdnc3RhdGUtPmhhc2hfZ3Jvd19v ayA9IHRydWU7CiAJYWdnc3RhdGUtPmhhc2hfc3BpbGxfbW9kZSA9IGZhbHNlOwogCiAJLyogcHJl cGFyZSB0byB3YWxrIHRoZSBmaXJzdCBoYXNoIHRhYmxlICovCkBAIC0zMDgyLDYgKzMxMTgsNyBA QCBoYXNoYWdnX2ZpbmlzaF9pbml0aWFsX3NwaWxscyhBZ2dTdGF0ZSAqYWdnc3RhdGUpCiAKIAlo YXNoX2FnZ191cGRhdGVfbWV0cmljcyhhZ2dzdGF0ZSwgZmFsc2UsIHRvdGFsX25wYXJ0aXRpb25z KTsKIAlhZ2dzdGF0ZS0+aGFzaF9zcGlsbF9tb2RlID0gZmFsc2U7CisJYWdnc3RhdGUtPmhhc2hf Z3Jvd19vayA9IHRydWU7CiB9CiAKIC8qCkBAIC0zMjI1LDYgKzMyNjIsNyBAQCBFeGVjSW5pdEFn ZyhBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCWFnZ3N0YXRlLT5ncnBf Zmlyc3RUdXBsZSA9IE5VTEw7CiAJYWdnc3RhdGUtPnNvcnRfaW4gPSBOVUxMOwogCWFnZ3N0YXRl LT5zb3J0X291dCA9IE5VTEw7CisJYWdnc3RhdGUtPmhhc2hfZ3Jvd19vayA9IHRydWU7CiAKIAkv KgogCSAqIHBoYXNlc1swXSBhbHdheXMgZXhpc3RzLCBidXQgaXMgZHVtbXkgaW4gc29ydGVkL3Bs YWluIG1vZGUKQEAgLTQ0NDksNiArNDQ4Nyw3IEBAIEV4ZWNSZVNjYW5BZ2coQWdnU3RhdGUgKm5v ZGUpCiAJewogCQloYXNoYWdnX3Jlc2V0X3NwaWxsX3N0YXRlKG5vZGUpOwogCisJCW5vZGUtPmhh c2hfZ3Jvd19vayA9IHRydWU7CiAJCW5vZGUtPmhhc2hfZXZlcl9zcGlsbGVkID0gZmFsc2U7CiAJ CW5vZGUtPmhhc2hfc3BpbGxfbW9kZSA9IGZhbHNlOwogCQlub2RlLT5oYXNoX25ncm91cHNfY3Vy cmVudCA9IDA7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oIGIv c3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRleCA2OWMzZWJmZjAwLi4xMDBmYWNk MTU1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3Ny Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE1MiwxMSArMTUyLDE2IEBAIGV4dGVy biBUdXBsZUhhc2hUYWJsZSBCdWlsZFR1cGxlSGFzaFRhYmxlRXh0KFBsYW5TdGF0ZSAqcGFyZW50 LAogZXh0ZXJuIFR1cGxlSGFzaEVudHJ5IExvb2t1cFR1cGxlSGFzaEVudHJ5KFR1cGxlSGFzaFRh YmxlIGhhc2h0YWJsZSwKIAkJCQkJCQkJCQkgICBUdXBsZVRhYmxlU2xvdCAqc2xvdCwKIAkJCQkJ CQkJCQkgICBib29sICppc25ldywgdWludDMyICpoYXNoKTsKK2V4dGVybiBUdXBsZUhhc2hFbnRy eSBMb29rdXBUdXBsZUhhc2hFbnRyeUV4dChUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsCisJCQkJ CQkJCQkJCSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCQkJCQkJCQkJCSAgYm9vbCBncm93X29r LCBib29sICppc25ldywKKwkJCQkJCQkJCQkJICB1aW50MzIgKmhhc2gpOwogZXh0ZXJuIHVpbnQz MiBUdXBsZUhhc2hUYWJsZUhhc2goVHVwbGVIYXNoVGFibGUgaGFzaHRhYmxlLAogCQkJCQkJCQkg VHVwbGVUYWJsZVNsb3QgKnNsb3QpOwotZXh0ZXJuIFR1cGxlSGFzaEVudHJ5IExvb2t1cFR1cGxl SGFzaEVudHJ5SGFzaChUdXBsZUhhc2hUYWJsZSBoYXNodGFibGUsCi0JCQkJCQkJCQkJCSAgIFR1 cGxlVGFibGVTbG90ICpzbG90LAotCQkJCQkJCQkJCQkgICBib29sICppc25ldywgdWludDMyIGhh c2gpOworZXh0ZXJuIFR1cGxlSGFzaEVudHJ5IExvb2t1cFR1cGxlSGFzaEVudHJ5SGFzaEV4dChU dXBsZUhhc2hUYWJsZSBoYXNodGFibGUsCisJCQkJCQkJCQkJCQkgIFR1cGxlVGFibGVTbG90ICpz bG90LAorCQkJCQkJCQkJCQkJICBib29sIGdyb3dfb2ssIGJvb2wgKmlzbmV3LAorCQkJCQkJCQkJ CQkJICB1aW50MzIgaGFzaCk7CiBleHRlcm4gVHVwbGVIYXNoRW50cnkgRmluZFR1cGxlSGFzaEVu dHJ5KFR1cGxlSGFzaFRhYmxlIGhhc2h0YWJsZSwKIAkJCQkJCQkJCQkgVHVwbGVUYWJsZVNsb3Qg KnNsb3QsCiAJCQkJCQkJCQkJIEV4cHJTdGF0ZSAqZXFjb21wLApkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApp bmRleCAxODJhNjk1NmJiLi4wYzI1ZDcwNmY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rl cy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaApAQCAtMjU0 Myw2ICsyNTQzLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQWdnU3RhdGUKIAlUdXBsZVRhYmxlU2xvdCAq aGFzaF9zcGlsbF9yc2xvdDsJLyogZm9yIHJlYWRpbmcgc3BpbGwgZmlsZXMgKi8KIAlUdXBsZVRh YmxlU2xvdCAqaGFzaF9zcGlsbF93c2xvdDsJLyogZm9yIHdyaXRpbmcgc3BpbGwgZmlsZXMgKi8K IAlMaXN0CSAgICpoYXNoX2JhdGNoZXM7CS8qIGhhc2ggYmF0Y2hlcyByZW1haW5pbmcgdG8gYmUg cHJvY2Vzc2VkICovCisJYm9vbAkgICAgaGFzaF9ncm93X29rOwogCWJvb2wJCWhhc2hfZXZlcl9z cGlsbGVkOwkvKiBldmVyIHNwaWxsZWQgZHVyaW5nIHRoaXMgZXhlY3V0aW9uPyAqLwogCWJvb2wJ CWhhc2hfc3BpbGxfbW9kZTsJLyogd2UgaGl0IGEgbGltaXQgZHVyaW5nIHRoZSBjdXJyZW50IGJh dGNoCiAJCQkJCQkJCQkgKiBhbmQgd2UgbXVzdCBub3QgY3JlYXRlIG5ldyBncm91cHMgKi8KQEAg LTI1NjIsNyArMjU2Myw3IEBAIHR5cGVkZWYgc3RydWN0IEFnZ1N0YXRlCiAJCQkJCQkJCQkJICog cGVyLWdyb3VwIHBvaW50ZXJzICovCiAKIAkvKiBzdXBwb3J0IGZvciBldmFsdWF0aW9uIG9mIGFn ZyBpbnB1dCBleHByZXNzaW9uczogKi8KLSNkZWZpbmUgRklFTEROT19BR0dTVEFURV9BTExfUEVS R1JPVVBTIDUzCisjZGVmaW5lIEZJRUxETk9fQUdHU1RBVEVfQUxMX1BFUkdST1VQUyA1NAogCUFn Z1N0YXRlUGVyR3JvdXAgKmFsbF9wZXJncm91cHM7CS8qIGFycmF5IG9mIGZpcnN0IC0+cGVyZ3Jv dXBzLCB0aGFuCiAJCQkJCQkJCQkJICogLT5oYXNoX3Blcmdyb3VwICovCiAJU2hhcmVkQWdnSW5m byAqc2hhcmVkX2luZm87IC8qIG9uZSBlbnRyeSBwZXIgd29ya2VyICovCi0tIAoyLjM0LjEKCg== --=-5GLyALDwRoFIeYovLTU2--