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 1tzFrj-00HLnJ-F5 for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2025 14:11:52 +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 1tzFri-006WdJ-6Y for pgsql-hackers@arkaria.postgresql.org; Mon, 31 Mar 2025 14:11:50 +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 1tzFrh-006WdB-Cw for pgsql-hackers@lists.postgresql.org; Mon, 31 Mar 2025 14:11:49 +0000 Received: from relay1-d.mail.gandi.net ([217.70.183.193]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tzFrd-0029AT-0G for pgsql-hackers@postgresql.org; Mon, 31 Mar 2025 14:11:48 +0000 Received: by mail.gandi.net (Postfix) with ESMTPSA id CF93A4432D; Mon, 31 Mar 2025 14:11:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vondra.me; s=gm1; t=1743430301; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=GhWWgwXI1zS4vWLt/XspCXxg2XB5mYsUY0TjYWxNe/o=; b=DfmczhU2/LVY9lEMPJbnVbDXaqv624MZwT2KNCB8y04XhKjC4c8iCTTstqLa4HpERlbVpr 1Qi3d3gaHtcyXUya+YnV3CegzuVkluI8889c+ICd9BPUOXxSYH+58mQcvX3qaWRHJeZWIa HjDIh19f6L2dF6IwBF1IMuDZoAgqH1mhuNp5BiIiDkFYNYjVsRd+6ys6md+k0iMHpMkp/A ZILKS2uwQ0txo3X67+/ivZIQtNPPZAutB+bYYgpuTdS79O/9bfCK6Pj2zDEnESApuaSmLJ 73Q+CeGE7Oe/95vjiHXgbvhIf5D1Lq1DLukZNWmWcE+aPqTVUyOUEUvQMADb4Q== Content-Type: multipart/mixed; boundary="------------7QzZYNqB1pkAwJ5ZLtCW1iX2" Message-ID: <7987a0b5-9933-457a-b5ba-d28e9cce883b@vondra.me> Date: Mon, 31 Mar 2025 16:11:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Improve monitoring of shared memory allocations To: Rahila Syed Cc: Nazir Bilal Yavuz , Andres Freund , PostgreSQL-development References: <3e40eeec-d8bf-4496-854e-485dd901f6a2@vondra.me> <6bf7194e-4c34-4e6d-8215-f6acf8903974@vondra.me> <6705dbd2-060b-4f3c-9fcb-1c7f10880b26@vondra.me> <66283922-0448-44e7-bbdd-38aaf2be34b9@vondra.me> Content-Language: en-US From: Tomas Vondra In-Reply-To: X-GND-State: clean X-GND-Score: -100 X-GND-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddukedtudefucetufdoteggodetrfdotffvucfrrhhofhhilhgvmecuifetpfffkfdpucggtfgfnhhsuhgsshgtrhhisggvnecuuegrihhlohhuthemuceftddunecusecvtfgvtghiphhivghnthhsucdlqddutddtmdenucfjughrpegtkfffgggfuffvvehfhfgjsehmtderredtvdejnecuhfhrohhmpefvohhmrghsucggohhnughrrgcuoehtohhmrghssehvohhnughrrgdrmhgvqeenucggtffrrghtthgvrhhnpeekudfhgfelgefhjedtheelhffgudegjedufefftedutdehlefhjeeftdevieefieenucfkphepkeeirdegledrvdefiedrudelfeenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepihhnvghtpeekiedrgeelrddvfeeirdduleefpdhhvghloheplgdutddrudefjedrtddrvdgnpdhmrghilhhfrhhomhepthhomhgrshesvhhonhgurhgrrdhmvgdpnhgspghrtghpthhtohepgedprhgtphhtthhopehrrghhihhlrghshigvugeltdesghhmrghilhdrtghomhdprhgtphhtthhopegshigrvhhuiiekudesghhmrghilhdrtghomhdprhgtphhtthhopegrnhgurhgvshesrghnrghrrgiivghlrdguvgdprhgtphhtthhopehpghhsqhhlqdhhrggtkhgvrhhssehpohhsthhgrhgvshhqlhdrohhrgh X-GND-Sasl: tomas@vondra.me List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------7QzZYNqB1pkAwJ5ZLtCW1iX2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On 3/31/25 01:01, Rahila Syed wrote: > ... > > > > I will improve the comment in the next version. > > > > OK. Do we even need to pass nelem_alloc to hash_get_init_size? It's not > really used except for this bit: > > +    if (init_size > nelem_alloc) > +        element_alloc = false; > > Can't we determine before calling the function, to make it a bit less > confusing? > > > Yes, we could determine whether the pre-allocated elements are zero before > calling the function, I have fixed it accordingly in the attached 0001 > patch.  > Now, there's no need to pass `nelem_alloc` as a parameter. Instead, I've > passed this information as a boolean variable-initial_elems. If it is > false, > no elements are pre-allocated. > > Please find attached the v7-series, which incorporates your review patches > and addresses a few remaining comments. > I think it's almost committable. Attached is v8 with some minor review adjustments, and updated commit messages. Please read through those and feel free to suggest changes. I still found the hash_get_init_size() comment unclear, and it also referenced init_size, which is no longer relevant. I improved the comment a bit (I find it useful to mimic comments of nearby functions, so I did that too here). The "initial_elems" name was a bit confusing, as it seemed to suggest "number of elements", but it's a simple flag. So I renamed it to "prealloc", which seems clearer to me. I also tweaked (reordered/reformatted) the conditions a bit. For the other patch, I realized we can simply MemSet() the whole chunk, instead of resetting the individual parts. regards -- Tomas Vondra --------------7QzZYNqB1pkAwJ5ZLtCW1iX2 Content-Type: text/x-patch; charset=UTF-8; name="v8-0001-Improve-acounting-for-memory-used-by-shared-hash-.patch" Content-Disposition: attachment; filename*0="v8-0001-Improve-acounting-for-memory-used-by-shared-hash-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxYTgyYWM3NDA3ZWI4OGJjMDg1Njk0NTE5NzM5MTE1ZjcxOGNjNTlhIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFp bC5jb20+CkRhdGU6IE1vbiwgMzEgTWFyIDIwMjUgMDM6MjM6MjAgKzA1MzAKU3ViamVjdDog W1BBVENIIHY4IDEvNV0gSW1wcm92ZSBhY291bnRpbmcgZm9yIG1lbW9yeSB1c2VkIGJ5IHNo YXJlZCBoYXNoCiB0YWJsZXMKCnBnX3NobWVtX2FsbG9jYXRpb25zIHRyYWNrcyB0aGUgbWVt b3J5IGFsbG9jYXRlZCBieSBTaG1lbUluaXRTdHJ1Y3QoKSwKYnV0IGZvciBzaGFyZWQgaGFz aCB0YWJsZXMgdGhhdCBjb3ZlcmVkIG9ubHkgdGhlIGhlYWRlciBhbmQgaGFzaApkaXJlY3Rv cnkuICBUaGUgcmVtYWluaW5nIHBhcnRzIChzZWdtZW50cyBhbmQgYnVja2V0cykgd2VyZSBh bGxvY2F0ZWQKbGF0ZXIgdXNpbmcgU2htZW1BbGxvYygpLCB3aGljaCBkb2VzIG5vdCB1cGRh dGUgdGhlIHNobWVtIGFjY291bnRpbmcuClRodXMsIHRoZXNlIGFsbG9jYXRpb25zIHdlcmUg bm90IHNob3duIGluIHBnX3NobWVtX2FsbG9jYXRpb25zLgoKVGhpcyBjb21taXQgaW1wcm92 ZXMgdGhlIHNpdHVhdGlvbiBieSBhbGxvY2F0aW5nIGFsbCB0aGUgaGFzaCB0YWJsZQpwYXJ0 cyBhdCBvbmNlLCB1c2luZyBhIHNpbmdsZSBTaG1lbUluaXRTdHJ1Y3QoKSBjYWxsLiBUaGlz IHdheSB0aGUKU2htZW1JbmRleCBlbnRyaWVzIChhbmQgdGh1cyBwZ19zaG1lbV9hbGxvY2F0 aW9ucykgYmV0dGVyIHJlZmxlY3QgdGhlCnByb3BlciBzaXplIG9mIHRoZSBoYXNoIHRhYmxl LgoKVGhpcyBhZmZlY3RzIGFsbG9jYXRpb25zIGZvciBwcml2YXRlIChub24tc2hhcmVkKSBo YXNoIHRhYmxlcyB0b28sIGFzCnRoZSBoYXNoX2NyZWF0ZSgpIGNvZGUgaXMgc2hhcmVkLiBG b3Igbm9uLXNoYXJlZCB0YWJsZXMgdGhpcyBob3dldmVyCm1ha2VzIG5vIHByYWN0aWNhbCBk aWZmZXJlbmNlLgoKVGhpcyBjaGFuZ2VzIHRoZSBhbGlnbm1lbnQgYSBiaXQuIFNobWVtQWxs b2MoKSBhbGlnbnMgdGhlIGNodW5rcyB1c2luZwpDQUNIRUxJTkVBTElHTigpLCB3aGljaCBt ZWFucyBzb21lIHBhcnRzIChoZWFkZXIsIGRpcmVjdG9yeSwgc2VnbWVudHMpCndlcmUgYWxp Z25lZCB0aGlzIHdheS4gQWxsb2NhdGluZyBhbGwgcGFydHMgYXMgYSBzaW5nbGUgY2h1bmtz IHJlbW92ZXMKdGhpcyAoaW1wbGljaXQpIGFsaWdubWVudC4gV2UndmUgY29uc2lkZXJlZCBh ZGRpbmcgZXhwbGljaXQgYWxpZ25tZW50LApidXQgd2UndmUgZGVjaWRlZCBub3QgdG8gLSBp dCBzZWVtcyB0byBiZSBtZXJlbHkgYSBjb2luY2lkZW5jZSBkdWUgdG8KdXNpbmcgdGhlIFNo bWVtQWxsb2MoKSBBUEksIG5vdCBkdWUgdG8gbmVjZXNzaXR5LgoKQXV0aG9yOiBSYWhpbGEg U3llZCA8cmFoaWxhc3llZDkwQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFuZHJlcyBGcmV1 bmQgPGFuZHJlc0BhbmFyYXplbC5kZT4KUmV2aWV3ZWQtYnk6IE5hemlyIEJpbGFsIFlhdnV6 IDxieWF2dXo4MUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBUb21hcyBWb25kcmEgPHRvbWFz QHZvbmRyYS5tZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly9wb3N0Z3IuZXMvbS9DQUgyTDI4dkh6 UmFua3N6aHF6N2RlWFVSeEtuY3hmaXJudVc2OHpENytoVkFxYVM1R1FAbWFpbC5nbWFpbC5j b20KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jICAgfCAgIDQgKy0KIHNy Yy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyB8IDI4MyArKysrKysrKysrKysrKysr KysrKysrKy0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCAgICAgICB8ICAg MyArLQogMyBmaWxlcyBjaGFuZ2VkLCAyMjIgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25z KC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggODk1YTQzZmIzOWUuLjNjMDMw ZDU3NDNkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisr KyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTczLDYgKzczLDcgQEAK ICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgi CiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9keW5haGFz aC5oIgogCiBzdGF0aWMgdm9pZCAqU2htZW1BbGxvY1JhdyhTaXplIHNpemUsIFNpemUgKmFs bG9jYXRlZF9zaXplKTsKIApAQCAtMzQ2LDcgKzM0Nyw4IEBAIFNobWVtSW5pdEhhc2goY29u c3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAq LwogCiAJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggKi8KIAlsb2NhdGlvbiA9 IFNobWVtSW5pdFN0cnVjdChuYW1lLAotCQkJCQkJCSAgIGhhc2hfZ2V0X3NoYXJlZF9zaXpl KGluZm9QLCBoYXNoX2ZsYWdzKSwKKwkJCQkJCQkgICBoYXNoX2dldF9pbml0X3NpemUoaW5m b1AsIGhhc2hfZmxhZ3MsCisJCQkJCQkJCQkJCQkgIHRydWUsIGluaXRfc2l6ZSksCiAJCQkJ CQkJICAgJmZvdW5kKTsKIAogCS8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9o YXNoL2R5bmFoYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKaW5k ZXggM2YyNTkyOWYyZDguLjNkZWRlOWNhYTVkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91 dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5h aGFzaC5jCkBAIC0yNjAsMTIgKzI2MCwzNiBAQCBzdGF0aWMgbG9uZyBoYXNoX2FjY2Vzc2Vz LAogCQkJaGFzaF9leHBhbnNpb25zOwogI2VuZGlmCiAKKyNkZWZpbmUJSEFTSF9ESVJFQ1RP UllfUFRSKGhhc2hwKSBcCisJKCgoY2hhciAqKSAoaGFzaHApLT5oY3RsKSArIHNpemVvZihI QVNISERSKSkKKworI2RlZmluZSBIQVNIX1NFR01FTlRfT0ZGU0VUKGhjdGwsIGlkeCkgXAor CShzaXplb2YoSEFTSEhEUikgKyBcCisJICgoaGN0bCktPmRzaXplICogc2l6ZW9mKEhBU0hT RUdNRU5UKSkgKyBcCisJICgoaGN0bCktPnNzaXplICogKGlkeCkgKiBzaXplb2YoSEFTSEJV Q0tFVCkpKQorCisjZGVmaW5lIEhBU0hfU0VHTUVOVF9QVFIoaGFzaHAsIGlkeCkgXAorCSgo Y2hhciAqKSAoaGFzaHApLT5oY3RsICsgSEFTSF9TRUdNRU5UX09GRlNFVCgoaGFzaHApLT5o Y3RsLCAoaWR4KSkpCisKKyNkZWZpbmUgSEFTSF9TRUdNRU5UX1NJWkUoaGFzaHApIFwKKwko KGhhc2hwKS0+c3NpemUgKiBzaXplb2YoSEFTSEJVQ0tFVCkpCisKKyNkZWZpbmUgSEFTSF9F TEVNRU5UU19QVFIoaGFzaHAsIG5zZWdzKSBcCisJKChjaGFyICopIChoYXNocCktPmhjdGwg KyBIQVNIX1NFR01FTlRfT0ZGU0VUKChoYXNocCktPmhjdGwsIG5zZWdzKSkKKworLyogRWFj aCBlbGVtZW50IGhhcyBhIEhBU0hFTEVNRU5UIGhlYWRlciBwbHVzIHVzZXIgZGF0YS4gKi8K KyNkZWZpbmUgSEFTSF9FTEVNRU5UX1NJWkUoaGN0bCkgXAorCShNQVhBTElHTihzaXplb2Yo SEFTSEVMRU1FTlQpKSArIE1BWEFMSUdOKChoY3RsKS0+ZW50cnlzaXplKSkKKworI2RlZmlu ZSBIQVNIX0VMRU1FTlRfTkVYVChoY3RsLCBudW0sIHB0cikgXAorCSgoY2hhciAqKSAocHRy KSArICgobnVtKSAqIEhBU0hfRUxFTUVOVF9TSVpFKGhjdGwpKSkKKwogLyoKICAqIFByaXZh dGUgZnVuY3Rpb24gcHJvdG90eXBlcwogICovCiBzdGF0aWMgdm9pZCAqRHluYUhhc2hBbGxv YyhTaXplIHNpemUpOwogc3RhdGljIEhBU0hTRUdNRU5UIHNlZ19hbGxvYyhIVEFCICpoYXNo cCk7Ci1zdGF0aWMgYm9vbCBlbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0s IGludCBmcmVlbGlzdF9pZHgpOworc3RhdGljIEhBU0hFTEVNRU5UICplbGVtZW50X2FsbG9j KEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0pOwogc3RhdGljIGJvb2wgZGlyX3JlYWxsb2MoSFRB QiAqaGFzaHApOwogc3RhdGljIGJvb2wgZXhwYW5kX3RhYmxlKEhUQUIgKmhhc2hwKTsKIHN0 YXRpYyBIQVNIQlVDS0VUIGdldF9oYXNoX2VudHJ5KEhUQUIgKmhhc2hwLCBpbnQgZnJlZWxp c3RfaWR4KTsKQEAgLTI4MSw2ICszMDUsMTEgQEAgc3RhdGljIHZvaWQgcmVnaXN0ZXJfc2Vx X3NjYW4oSFRBQiAqaGFzaHApOwogc3RhdGljIHZvaWQgZGVyZWdpc3Rlcl9zZXFfc2NhbihI VEFCICpoYXNocCk7CiBzdGF0aWMgYm9vbCBoYXNfc2VxX3NjYW5zKEhUQUIgKmhhc2hwKTsK IAorc3RhdGljIHZvaWQgY29tcHV0ZV9idWNrZXRzX2FuZF9zZWdzKGxvbmcgbmVsZW0sIGxv bmcgbnVtX3BhcnRpdGlvbnMsCisJCQkJCQkJCQkgbG9uZyBzc2l6ZSwKKwkJCQkJCQkJCSBp bnQgKm5idWNrZXRzLCBpbnQgKm5zZWdtZW50cyk7CitzdGF0aWMgdm9pZCBlbGVtZW50X2Fk ZChIVEFCICpoYXNocCwgSEFTSEVMRU1FTlQgKmZpcnN0RWxlbWVudCwKKwkJCQkJCWludCBu ZWxlbSwgaW50IGZyZWVsaXN0X2lkeCk7CiAKIC8qCiAgKiBtZW1vcnkgYWxsb2NhdGlvbiBz dXBwb3J0CkBAIC0zNTMsNiArMzgyLDggQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFi bmFtZSwgbG9uZyBuZWxlbSwgY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogewog CUhUQUIJICAgKmhhc2hwOwogCUhBU0hIRFIgICAgKmhjdGw7CisJaW50CQkJbmVsZW1fYmF0 Y2g7CisJYm9vbCAJaW5pdGlhbF9lbGVtcyA9IGZhbHNlOwogCiAJLyoKIAkgKiBIYXNoIHRh YmxlcyBub3cgYWxsb2NhdGUgc3BhY2UgZm9yIGtleSBhbmQgZGF0YSwgYnV0IHlvdSBoYXZl IHRvIHNheQpAQCAtNTA3LDkgKzUzOCwzNSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0 YWJuYW1lLCBsb25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJ CWhhc2hwLT5pc3NoYXJlZCA9IGZhbHNlOwogCX0KIAorCS8qIENob29zZSB0aGUgbnVtYmVy IG9mIGVudHJpZXMgdG8gYWxsb2NhdGUgYXQgYSB0aW1lLiAqLworCW5lbGVtX2JhdGNoID0g Y2hvb3NlX25lbGVtX2FsbG9jKGluZm8tPmVudHJ5c2l6ZSk7CisKKwkvKgorCSAqIENhbGN1 bGF0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGFsbG9jYXRlCisJICoKKwkgKiBGb3Ig YSBzaGFyZWQgaGFzaCB0YWJsZSwgcHJlYWxsb2NhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIg b2YgZWxlbWVudHMuCisJICogVGhpcyByZWR1Y2VzIHByb2JsZW1zIHdpdGggcnVuLXRpbWUg b3V0LW9mLXNoYXJlZC1tZW1vcnkgY29uZGl0aW9ucy4KKwkgKgorCSAqIEZvciBhIG5vbi1z aGFyZWQgaGFzaCB0YWJsZSwgcHJlYWxsb2NhdGUgdGhlIHJlcXVlc3RlZCBudW1iZXIgb2YK KwkgKiBlbGVtZW50cyBpZiBpdCdzIGxlc3MgdGhhbiBvdXIgY2hvc2VuIG5lbGVtX2FsbG9j LiAgVGhpcyBhdm9pZHMgd2FzdGluZworCSAqIHNwYWNlIGlmIHRoZSBjYWxsZXIgY29ycmVj dGx5IGVzdGltYXRlcyBhIHNtYWxsIHRhYmxlIHNpemUuCisJICovCisJaWYgKChmbGFncyAm IEhBU0hfU0hBUkVEX01FTSkgfHwKKwkJbmVsZW0gPCBuZWxlbV9iYXRjaCkKKwkJaW5pdGlh bF9lbGVtcyA9IHRydWU7CisJZWxzZQorCQlpbml0aWFsX2VsZW1zID0gZmFsc2U7CisKKwkv KgorCSAqIEFsbG9jYXRlIHRoZSBtZW1vcnkgbmVlZGVkIGZvciBoYXNoIGhlYWRlciwgZGly ZWN0b3J5LCBzZWdtZW50cyBhbmQKKwkgKiBlbGVtZW50cyB0b2dldGhlci4gVXNlIHBvaW50 ZXIgYXJpdGhtZXRpYyB0byBhcnJpdmUgYXQgdGhlIHN0YXJ0IG9mCisJICogZWFjaCBvZiB0 aGVzZSBzdHJ1Y3R1cmVzIGxhdGVyLgorCSAqLwogCWlmICghaGFzaHAtPmhjdGwpCiAJewot CQloYXNocC0+aGN0bCA9IChIQVNISERSICopIGhhc2hwLT5hbGxvYyhzaXplb2YoSEFTSEhE UikpOworCQlTaXplCQlzaXplID0gaGFzaF9nZXRfaW5pdF9zaXplKGluZm8sIGZsYWdzLCBp bml0aWFsX2VsZW1zLCBuZWxlbSk7CisKKwkJaGFzaHAtPmhjdGwgPSAoSEFTSEhEUiAqKSBo YXNocC0+YWxsb2Moc2l6ZSk7CiAJCWlmICghaGFzaHAtPmhjdGwpCiAJCQllcmVwb3J0KEVS Uk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLApAQCAtNTU4LDYg KzYxNSw5IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0s IGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAloY3RsLT5rZXlzaXplID0gaW5m by0+a2V5c2l6ZTsKIAloY3RsLT5lbnRyeXNpemUgPSBpbmZvLT5lbnRyeXNpemU7CiAKKwkv KiByZW1lbWJlciBob3cgbWFueSBlbGVtZW50cyB0byBhbGxvY2F0ZSBhdCBvbmNlICovCisJ aGN0bC0+bmVsZW1fYWxsb2MgPSBuZWxlbV9iYXRjaDsKKwogCS8qIG1ha2UgbG9jYWwgY29w aWVzIG9mIGhlYXZpbHktdXNlZCBjb25zdGFudCBmaWVsZHMgKi8KIAloYXNocC0+a2V5c2l6 ZSA9IGhjdGwtPmtleXNpemU7CiAJaGFzaHAtPnNzaXplID0gaGN0bC0+c3NpemU7CkBAIC01 NjcsMTQgKzYyNyw2IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUsIGxvbmcg bmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAlpZiAoIWluaXRfaHRh YihoYXNocCwgbmVsZW0pKQogCQllbG9nKEVSUk9SLCAiZmFpbGVkIHRvIGluaXRpYWxpemUg aGFzaCB0YWJsZSBcIiVzXCIiLCBoYXNocC0+dGFibmFtZSk7CiAKLQkvKgotCSAqIEZvciBh IHNoYXJlZCBoYXNoIHRhYmxlLCBwcmVhbGxvY2F0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBv ZiBlbGVtZW50cy4KLQkgKiBUaGlzIHJlZHVjZXMgcHJvYmxlbXMgd2l0aCBydW4tdGltZSBv dXQtb2Ytc2hhcmVkLW1lbW9yeSBjb25kaXRpb25zLgotCSAqCi0JICogRm9yIGEgbm9uLXNo YXJlZCBoYXNoIHRhYmxlLCBwcmVhbGxvY2F0ZSB0aGUgcmVxdWVzdGVkIG51bWJlciBvZgot CSAqIGVsZW1lbnRzIGlmIGl0J3MgbGVzcyB0aGFuIG91ciBjaG9zZW4gbmVsZW1fYWxsb2Mu ICBUaGlzIGF2b2lkcyB3YXN0aW5nCi0JICogc3BhY2UgaWYgdGhlIGNhbGxlciBjb3JyZWN0 bHkgZXN0aW1hdGVzIGEgc21hbGwgdGFibGUgc2l6ZS4KLQkgKi8KIAlpZiAoKGZsYWdzICYg SEFTSF9TSEFSRURfTUVNKSB8fAogCQluZWxlbSA8IGhjdGwtPm5lbGVtX2FsbG9jKQogCXsK QEAgLTU4Miw2ICs2MzQsOSBAQCBoYXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBs b25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJCQkJCWZyZWVs aXN0X3BhcnRpdGlvbnMsCiAJCQkJCW5lbGVtX2FsbG9jLAogCQkJCQluZWxlbV9hbGxvY19m aXJzdDsKKwkJdm9pZAkgICAqcHRyID0gTlVMTDsKKwkJaW50CQkJbnNlZ3M7CisJCWludAkJ CW5idWNrZXRzOwogCiAJCS8qCiAJCSAqIElmIGhhc2ggdGFibGUgaXMgcGFydGl0aW9uZWQs IGdpdmUgZWFjaCBmcmVlbGlzdCBhbiBlcXVhbCBzaGFyZSBvZgpAQCAtNjA2LDE0ICs2NjEs MzEgQEAgaGFzaF9jcmVhdGUoY29uc3QgY2hhciAqdGFibmFtZSwgbG9uZyBuZWxlbSwgY29u c3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKQogCQllbHNlCiAJCQluZWxlbV9hbGxvY19m aXJzdCA9IG5lbGVtX2FsbG9jOwogCisJCS8qCisJCSAqIENhbGN1bGF0ZSB0aGUgb2Zmc2V0 IGF0IHdoaWNoIHRvIGZpbmQgdGhlIGZpcnN0IHBhcnRpdGlvbiBvZgorCQkgKiBlbGVtZW50 cy4gV2UgaGF2ZSB0byBza2lwIHNwYWNlIGZvciB0aGUgaGVhZGVyLCBzZWdtZW50cyBhbmQK KwkJICogYnVja2V0cy4KKwkJICovCisJCWNvbXB1dGVfYnVja2V0c19hbmRfc2VncyhuZWxl bSwgaGN0bC0+bnVtX3BhcnRpdGlvbnMsIGhjdGwtPnNzaXplLAorCQkJCQkJCQkgJm5idWNr ZXRzLCAmbnNlZ3MpOworCisJCXB0ciA9IEhBU0hfRUxFTUVOVFNfUFRSKGhhc2hwLCBuc2Vn cyk7CisKKwkJLyoKKwkJICogQXNzaWduIHRoZSBjb3JyZWN0IGxvY2F0aW9uIG9mIGVhY2gg cGFyaXRpb24gd2l0aGluIGEgcHJlLWFsbG9jYXRlZAorCQkgKiBidWZmZXIuCisJCSAqCisJ CSAqIEFjdHVhbCBtZW1vcnkgYWxsb2NhdGlvbiBoYXBwZW5zIGluIFNobWVtSW5pdEhhc2gg Zm9yIHNoYXJlZCBoYXNoCisJCSAqIHRhYmxlcyBvciBlYXJsaWVyIGluIHRoaXMgZnVuY3Rp b24gZm9yIG5vbi1zaGFyZWQgaGFzaCB0YWJsZXMuCisJCSAqCisJCSAqIFdlIGp1c3QgbmVl ZCB0byBzcGxpdCB0aGF0IGFsbG9jYXRpb24gaW50byBwZXItYmF0Y2ggZnJlZWxpc3RzLgor CQkgKi8KIAkJZm9yIChpID0gMDsgaSA8IGZyZWVsaXN0X3BhcnRpdGlvbnM7IGkrKykKIAkJ ewogCQkJaW50CQkJdGVtcCA9IChpID09IDApID8gbmVsZW1fYWxsb2NfZmlyc3QgOiBuZWxl bV9hbGxvYzsKIAotCQkJaWYgKCFlbGVtZW50X2FsbG9jKGhhc2hwLCB0ZW1wLCBpKSkKLQkJ CQllcmVwb3J0KEVSUk9SLAotCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZ KSwKLQkJCQkJCSBlcnJtc2coIm91dCBvZiBtZW1vcnkiKSkpOworCQkJZWxlbWVudF9hZGQo aGFzaHAsIChIQVNIRUxFTUVOVCAqKSBwdHIsIHRlbXAsIGkpOworCQkJcHRyID0gSEFTSF9F TEVNRU5UX05FWFQoaGN0bCwgdGVtcCwgcHRyKTsKIAkJfQogCX0KIApAQCAtNzAxLDMwICs3 NzMsMTIgQEAgaW5pdF9odGFiKEhUQUIgKmhhc2hwLCBsb25nIG5lbGVtKQogCQlmb3IgKGkg PSAwOyBpIDwgTlVNX0ZSRUVMSVNUUzsgaSsrKQogCQkJU3BpbkxvY2tJbml0KCYoaGN0bC0+ ZnJlZUxpc3RbaV0ubXV0ZXgpKTsKIAotCS8qCi0JICogQWxsb2NhdGUgc3BhY2UgZm9yIHRo ZSBuZXh0IGdyZWF0ZXIgcG93ZXIgb2YgdHdvIG51bWJlciBvZiBidWNrZXRzLAotCSAqIGFz c3VtaW5nIGEgZGVzaXJlZCBtYXhpbXVtIGxvYWQgZmFjdG9yIG9mIDEuCi0JICovCi0JbmJ1 Y2tldHMgPSBuZXh0X3BvdzJfaW50KG5lbGVtKTsKLQotCS8qCi0JICogSW4gYSBwYXJ0aXRp b25lZCB0YWJsZSwgbmJ1Y2tldHMgbXVzdCBiZSBhdCBsZWFzdCBlcXVhbCB0bwotCSAqIG51 bV9wYXJ0aXRpb25zOyB3ZXJlIGl0IGxlc3MsIGtleXMgd2l0aCBhcHBhcmVudGx5IGRpZmZl cmVudCBwYXJ0aXRpb24KLQkgKiBudW1iZXJzIHdvdWxkIG1hcCB0byB0aGUgc2FtZSBidWNr ZXQsIGJyZWFraW5nIHBhcnRpdGlvbiBpbmRlcGVuZGVuY2UuCi0JICogKE5vcm1hbGx5IG5i dWNrZXRzIHdpbGwgYmUgbXVjaCBiaWdnZXI7IHRoaXMgaXMganVzdCBhIHNhZmV0eSBjaGVj ay4pCi0JICovCi0Jd2hpbGUgKG5idWNrZXRzIDwgaGN0bC0+bnVtX3BhcnRpdGlvbnMpCi0J CW5idWNrZXRzIDw8PSAxOworCWNvbXB1dGVfYnVja2V0c19hbmRfc2VncyhuZWxlbSwgaGN0 bC0+bnVtX3BhcnRpdGlvbnMsIGhjdGwtPnNzaXplLAorCQkJCQkJCSAmbmJ1Y2tldHMsICZu c2Vncyk7CiAKIAloY3RsLT5tYXhfYnVja2V0ID0gaGN0bC0+bG93X21hc2sgPSBuYnVja2V0 cyAtIDE7CiAJaGN0bC0+aGlnaF9tYXNrID0gKG5idWNrZXRzIDw8IDEpIC0gMTsKIAotCS8q Ci0JICogRmlndXJlIG51bWJlciBvZiBkaXJlY3Rvcnkgc2VnbWVudHMgbmVlZGVkLCByb3Vu ZCB1cCB0byBhIHBvd2VyIG9mIDIKLQkgKi8KLQluc2VncyA9IChuYnVja2V0cyAtIDEpIC8g aGN0bC0+c3NpemUgKyAxOwotCW5zZWdzID0gbmV4dF9wb3cyX2ludChuc2Vncyk7Ci0KIAkv KgogCSAqIE1ha2Ugc3VyZSBkaXJlY3RvcnkgaXMgYmlnIGVub3VnaC4gSWYgcHJlLWFsbG9j YXRlZCBkaXJlY3RvcnkgaXMgdG9vCiAJICogc21hbGwsIGNob2tlIChjYWxsZXIgc2NyZXdl ZCB1cCkuCkBAIC03MzcsMjYgKzc5MSwyNSBAQCBpbml0X2h0YWIoSFRBQiAqaGFzaHAsIGxv bmcgbmVsZW0pCiAJCQlyZXR1cm4gZmFsc2U7CiAJfQogCi0JLyogQWxsb2NhdGUgYSBkaXJl Y3RvcnkgKi8KKwkvKgorCSAqIEFzc2lnbiBhIGRpcmVjdG9yeSBieSBtYWtpbmcgaXQgcG9p bnQgdG8gdGhlIGNvcnJlY3QgbG9jYXRpb24gaW4gdGhlCisJICogcHJlLWFsbG9jYXRlZCBi dWZmZXIuCisJICovCiAJaWYgKCEoaGFzaHAtPmRpcikpCiAJewogCQlDdXJyZW50RHluYUhh c2hDeHQgPSBoYXNocC0+aGN4dDsKLQkJaGFzaHAtPmRpciA9IChIQVNIU0VHTUVOVCAqKQot CQkJaGFzaHAtPmFsbG9jKGhjdGwtPmRzaXplICogc2l6ZW9mKEhBU0hTRUdNRU5UKSk7Ci0J CWlmICghaGFzaHAtPmRpcikKLQkJCXJldHVybiBmYWxzZTsKKwkJaGFzaHAtPmRpciA9IChI QVNIU0VHTUVOVCAqKSBIQVNIX0RJUkVDVE9SWV9QVFIoaGFzaHApOwogCX0KIAotCS8qIEFs bG9jYXRlIGluaXRpYWwgc2VnbWVudHMgKi8KKwkvKiBBc3NpZ24gaW5pdGlhbCBzZWdtZW50 cywgd2hpY2ggYXJlIGFsc28gcHJlLWFsbG9jYXRlZCAqLworCWkgPSAwOwogCWZvciAoc2Vn cCA9IGhhc2hwLT5kaXI7IGhjdGwtPm5zZWdzIDwgbnNlZ3M7IGhjdGwtPm5zZWdzKyssIHNl Z3ArKykKIAl7Ci0JCSpzZWdwID0gc2VnX2FsbG9jKGhhc2hwKTsKLQkJaWYgKCpzZWdwID09 IE5VTEwpCi0JCQlyZXR1cm4gZmFsc2U7CisJCSpzZWdwID0gKEhBU0hTRUdNRU5UKSBIQVNI X1NFR01FTlRfUFRSKGhhc2hwLCBpKyspOworCQlNZW1TZXQoKnNlZ3AsIDAsIEhBU0hfU0VH TUVOVF9TSVpFKGhhc2hwKSk7CiAJfQogCi0JLyogQ2hvb3NlIG51bWJlciBvZiBlbnRyaWVz IHRvIGFsbG9jYXRlIGF0IGEgdGltZSAqLwotCWhjdGwtPm5lbGVtX2FsbG9jID0gY2hvb3Nl X25lbGVtX2FsbG9jKGhjdGwtPmVudHJ5c2l6ZSk7CisJQXNzZXJ0KGkgPT0gbnNlZ3MpOwog CiAjaWZkZWYgSEFTSF9ERUJVRwogCWZwcmludGYoc3RkZXJyLCAiaW5pdF9odGFiOlxuJXMl cFxuJXMlbGRcbiVzJWxkXG4lcyVkXG4lcyVsZFxuJXMldVxuJXMleFxuJXMleFxuJXMlbGRc biIsCkBAIC04NDYsMTYgKzg5OSw3MCBAQCBoYXNoX3NlbGVjdF9kaXJzaXplKGxvbmcgbnVt X2VudHJpZXMpCiB9CiAKIC8qCi0gKiBDb21wdXRlIHRoZSByZXF1aXJlZCBpbml0aWFsIG1l bW9yeSBhbGxvY2F0aW9uIGZvciBhIHNoYXJlZC1tZW1vcnkKLSAqIGhhc2h0YWJsZSB3aXRo IHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiAgV2UgbmVlZCBzcGFjZSBmb3IgdGhlIEhBU0hIRFIK LSAqIGFuZCBmb3IgdGhlIChub24gZXhwYW5zaWJsZSkgZGlyZWN0b3J5LgorICogQ29tcHV0 ZSB0aGUgcmVxdWlyZWQgaW5pdGlhbCBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgYSBoYXNodGFi bGUgd2l0aCB0aGUgZ2l2ZW4KKyAqIHBhcmFtZXRlcnMuIFRoZSBoYXNoIHRhYmxlIG1heSBi ZSBzaGFyZWQgb3IgcHJpdmF0ZS4gV2UgbmVlZCBzcGFjZSBmb3IgdGhlCisgKiBIQVNISERS LCBmb3IgdGhlIGRpcmVjdG9yeSwgc2VnbWVudHMgYW5kIHRoZSBpbml0X3NpemUgZWxlbWVu dHMgaW4gYnVja2V0cy4KKyAqCisgKiBGb3Igc2hhcmVkIGhhc2ggdGFibGVzIHRoZSBkaXJl Y3Rvcnkgc2l6ZSBpcyBub24tZXhwYW5zaXZlLgorICoKKyAqIG5lbGVtIGlzIHRvdGFsIG51 bWJlciBvZiBlbGVtZW50cyByZXF1ZXN0ZWQgZHVyaW5nIGhhc2ggdGFibGUgY3JlYXRpb24u CisgKgorICogaW5pdGlhbF9uZWxlbXMgaXMgdHJ1ZSBpZiBpdCBpcyBkZWNpZGVkIHRvIHBy ZS1hbGxvY2F0ZSBlbGVtZW50cyBhbmQgZmFsc2UKKyAqIG90aGVyd2lzZS4KKyAqCisgKiBG b3IgYSBzaGFyZWQgaGFzaCB0YWJsZSBpbml0aWFsX2VsZW1zIGlzIGFsd2F5cyB0cnVlLgog ICovCiBTaXplCi1oYXNoX2dldF9zaGFyZWRfc2l6ZShIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MpCitoYXNoX2dldF9pbml0X3NpemUoY29uc3QgSEFTSENUTCAqaW5mbywgaW50IGZsYWdz LCBib29sIGluaXRpYWxfZWxlbXMsIGxvbmcgbmVsZW0pCiB7Ci0JQXNzZXJ0KGZsYWdzICYg SEFTSF9ESVJTSVpFKTsKLQlBc3NlcnQoaW5mby0+ZHNpemUgPT0gaW5mby0+bWF4X2RzaXpl KTsKLQlyZXR1cm4gc2l6ZW9mKEhBU0hIRFIpICsgaW5mby0+ZHNpemUgKiBzaXplb2YoSEFT SFNFR01FTlQpOworCWludAkJCW5idWNrZXRzOworCWludAkJCW5zZWdzOworCWludAkJCW51 bV9wYXJ0aXRpb25zOworCWxvbmcJCXNzaXplOworCWxvbmcJCWRzaXplOworCVNpemUJCWVs ZW1lbnRTaXplID0gSEFTSF9FTEVNRU5UX1NJWkUoaW5mbyk7CisJaW50IAlpbml0X3NpemUg PSAwOworCisJaWYgKGZsYWdzICYgSEFTSF9TSEFSRURfTUVNKQorCXsKKwkJQXNzZXJ0KGZs YWdzICYgSEFTSF9ESVJTSVpFKTsKKwkJQXNzZXJ0KGluZm8tPmRzaXplID09IGluZm8tPm1h eF9kc2l6ZSk7CisJfQorCisJLyogTm9uLXNoYXJlZCBoYXNoIHRhYmxlcyBtYXkgbm90IHNw ZWNpZnkgZGlyIHNpemUgKi8KKwlpZiAoIShmbGFncyAmIEhBU0hfRElSU0laRSkpCisJewor CQlkc2l6ZSA9IERFRl9ESVJTSVpFOworCX0KKwllbHNlCisJCWRzaXplID0gaW5mby0+ZHNp emU7CisKKwlpZiAoZmxhZ3MgJiBIQVNIX1BBUlRJVElPTikKKwl7CisJCW51bV9wYXJ0aXRp b25zID0gaW5mby0+bnVtX3BhcnRpdGlvbnM7CisKKwkJLyogTnVtYmVyIG9mIGVudHJpZXMg c2hvdWxkIGJlIGF0bGVhc3QgZXF1YWwgdG8gdGhlIGZyZWVsaXN0cyAqLworCQlpZiAobmVs ZW0gPCBOVU1fRlJFRUxJU1RTKQorCQkJbmVsZW0gPSBOVU1fRlJFRUxJU1RTOworCX0KKwll bHNlCisJCW51bV9wYXJ0aXRpb25zID0gMDsKKworCWlmIChmbGFncyAmIEhBU0hfU0VHTUVO VCkKKwkJc3NpemUgPSBpbmZvLT5zc2l6ZTsKKwllbHNlCisJCXNzaXplID0gREVGX1NFR1NJ WkU7CisKKwljb21wdXRlX2J1Y2tldHNfYW5kX3NlZ3MobmVsZW0sIG51bV9wYXJ0aXRpb25z LCBzc2l6ZSwKKwkJCQkJCQkgJm5idWNrZXRzLCAmbnNlZ3MpOworCisJLyogaW5pdGlhbF9l bGVtcyBhcyBmYWxzZSBpbmRpY2F0ZXMgbm8gZWxlbWVudHMgYXJlIHRvIGJlIHByZS1hbGxv Y2F0ZWQgKi8KKwlpZiAoaW5pdGlhbF9lbGVtcykKKwkJaW5pdF9zaXplID0gbmVsZW07CisK KwlyZXR1cm4gc2l6ZW9mKEhBU0hIRFIpICsgZHNpemUgKiBzaXplb2YoSEFTSFNFR01FTlQp CisJCSsgc2l6ZW9mKEhBU0hCVUNLRVQpICogc3NpemUgKiBuc2VncworCQkrIGluaXRfc2l6 ZSAqIGVsZW1lbnRTaXplOwogfQogCiAKQEAgLTEyODUsNyArMTM5Miw3IEBAIGdldF9oYXNo X2VudHJ5KEhUQUIgKmhhc2hwLCBpbnQgZnJlZWxpc3RfaWR4KQogCQkgKiBGYWlsaW5nIGJl Y2F1c2UgdGhlIG5lZWRlZCBlbGVtZW50IGlzIGluIGEgZGlmZmVyZW50IGZyZWVsaXN0IGlz CiAJCSAqIG5vdCBhY2NlcHRhYmxlLgogCQkgKi8KLQkJaWYgKCFlbGVtZW50X2FsbG9jKGhh c2hwLCBoY3RsLT5uZWxlbV9hbGxvYywgZnJlZWxpc3RfaWR4KSkKKwkJaWYgKChuZXdFbGVt ZW50ID0gZWxlbWVudF9hbGxvYyhoYXNocCwgaGN0bC0+bmVsZW1fYWxsb2MpKSA9PSBOVUxM KQogCQl7CiAJCQlpbnQJCQlib3Jyb3dfZnJvbV9pZHg7CiAKQEAgLTEzMjIsNiArMTQyOSw3 IEBAIGdldF9oYXNoX2VudHJ5KEhUQUIgKmhhc2hwLCBpbnQgZnJlZWxpc3RfaWR4KQogCQkJ Lyogbm8gZWxlbWVudHMgYXZhaWxhYmxlIHRvIGJvcnJvdyBlaXRoZXIsIHNvIG91dCBvZiBt ZW1vcnkgKi8KIAkJCXJldHVybiBOVUxMOwogCQl9CisJCWVsZW1lbnRfYWRkKGhhc2hwLCBu ZXdFbGVtZW50LCBoY3RsLT5uZWxlbV9hbGxvYywgZnJlZWxpc3RfaWR4KTsKIAl9CiAKIAkv KiByZW1vdmUgZW50cnkgZnJvbSBmcmVlbGlzdCwgYnVtcCBuZW50cmllcyAqLwpAQCAtMTcw MCwyOSArMTgwOCw0MyBAQCBzZWdfYWxsb2MoSFRBQiAqaGFzaHApCiB9CiAKIC8qCi0gKiBh bGxvY2F0ZSBzb21lIG5ldyBlbGVtZW50cyBhbmQgbGluayB0aGVtIGludG8gdGhlIGluZGlj YXRlZCBmcmVlIGxpc3QKKyAqIGFsbG9jYXRlIHNvbWUgbmV3IGVsZW1lbnRzCiAgKi8KLXN0 YXRpYyBib29sCi1lbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQgbmVsZW0sIGludCBm cmVlbGlzdF9pZHgpCitzdGF0aWMgSEFTSEVMRU1FTlQgKgorZWxlbWVudF9hbGxvYyhIVEFC ICpoYXNocCwgaW50IG5lbGVtKQogewogCUhBU0hIRFIgICAgKmhjdGwgPSBoYXNocC0+aGN0 bDsKIAlTaXplCQllbGVtZW50U2l6ZTsKLQlIQVNIRUxFTUVOVCAqZmlyc3RFbGVtZW50Owot CUhBU0hFTEVNRU5UICp0bXBFbGVtZW50OwotCUhBU0hFTEVNRU5UICpwcmV2RWxlbWVudDsK LQlpbnQJCQlpOworCUhBU0hFTEVNRU5UICpmaXJzdEVsZW1lbnQgPSBOVUxMOwogCiAJaWYg KGhhc2hwLT5pc2ZpeGVkKQotCQlyZXR1cm4gZmFsc2U7CisJCXJldHVybiBOVUxMOwogCiAJ LyogRWFjaCBlbGVtZW50IGhhcyBhIEhBU0hFTEVNRU5UIGhlYWRlciBwbHVzIHVzZXIgZGF0 YS4gKi8KLQllbGVtZW50U2l6ZSA9IE1BWEFMSUdOKHNpemVvZihIQVNIRUxFTUVOVCkpICsg TUFYQUxJR04oaGN0bC0+ZW50cnlzaXplKTsKLQorCWVsZW1lbnRTaXplID0gSEFTSF9FTEVN RU5UX1NJWkUoaGN0bCk7CiAJQ3VycmVudER5bmFIYXNoQ3h0ID0gaGFzaHAtPmhjeHQ7CiAJ Zmlyc3RFbGVtZW50ID0gKEhBU0hFTEVNRU5UICopIGhhc2hwLT5hbGxvYyhuZWxlbSAqIGVs ZW1lbnRTaXplKTsKIAogCWlmICghZmlyc3RFbGVtZW50KQotCQlyZXR1cm4gZmFsc2U7CisJ CXJldHVybiBOVUxMOworCisJcmV0dXJuIGZpcnN0RWxlbWVudDsKK30KKworLyoKKyAqIGxp bmsgdGhlIGVsZW1lbnRzIGFsbG9jYXRlZCBieSBlbGVtZW50X2FsbG9jIGludG8gdGhlIGlu ZGljYXRlZCBmcmVlIGxpc3QKKyAqLworc3RhdGljIHZvaWQKK2VsZW1lbnRfYWRkKEhUQUIg Kmhhc2hwLCBIQVNIRUxFTUVOVCAqZmlyc3RFbGVtZW50LCBpbnQgbmVsZW0sIGludCBmcmVl bGlzdF9pZHgpCit7CisJSEFTSEhEUiAgICAqaGN0bCA9IGhhc2hwLT5oY3RsOworCVNpemUJ CWVsZW1lbnRTaXplOworCUhBU0hFTEVNRU5UICp0bXBFbGVtZW50OworCUhBU0hFTEVNRU5U ICpwcmV2RWxlbWVudDsKKwlpbnQJCQlpOworCisJLyogRWFjaCBlbGVtZW50IGhhcyBhIEhB U0hFTEVNRU5UIGhlYWRlciBwbHVzIHVzZXIgZGF0YS4gKi8KKwllbGVtZW50U2l6ZSA9IEhB U0hfRUxFTUVOVF9TSVpFKGhjdGwpOwogCiAJLyogcHJlcGFyZSB0byBsaW5rIGFsbCB0aGUg bmV3IGVudHJpZXMgaW50byB0aGUgZnJlZWxpc3QgKi8KIAlwcmV2RWxlbWVudCA9IE5VTEw7 CkBAIC0xNzQ0LDggKzE4NjYsNiBAQCBlbGVtZW50X2FsbG9jKEhUQUIgKmhhc2hwLCBpbnQg bmVsZW0sIGludCBmcmVlbGlzdF9pZHgpCiAKIAlpZiAoSVNfUEFSVElUSU9ORUQoaGN0bCkp CiAJCVNwaW5Mb2NrUmVsZWFzZSgmaGN0bC0+ZnJlZUxpc3RbZnJlZWxpc3RfaWR4XS5tdXRl eCk7Ci0KLQlyZXR1cm4gdHJ1ZTsKIH0KIAogLyoKQEAgLTE5NTcsMyArMjA3NywzNCBAQCBB dEVPU3ViWGFjdF9IYXNoVGFibGVzKGJvb2wgaXNDb21taXQsIGludCBuZXN0RGVwdGgpCiAJ CX0KIAl9CiB9CisKKy8qCisgKiBDYWxjdWxhdGUgdGhlIG51bWJlciBvZiBidWNrZXRzIGFu ZCBzZWdtZW50cyB0byBzdG9yZSB0aGUgZ2l2ZW4KKyAqIG51bWJlciBvZiBlbGVtZW50cyBp biBhIGhhc2ggdGFibGUuIFNlZ21lbnRzIGNvbnRhaW4gYnVja2V0cyB3aGljaAorICogaW4g dHVybiBjb250YWluIGVsZW1lbnRzLgorICovCitzdGF0aWMgdm9pZAorY29tcHV0ZV9idWNr ZXRzX2FuZF9zZWdzKGxvbmcgbmVsZW0sIGxvbmcgbnVtX3BhcnRpdGlvbnMsIGxvbmcgc3Np emUsCisJCQkJCQkgaW50ICpuYnVja2V0cywgaW50ICpuc2VnbWVudHMpCit7CisJLyoKKwkg KiBBbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIG5leHQgZ3JlYXRlciBwb3dlciBvZiB0d28gbnVt YmVyIG9mIGJ1Y2tldHMsCisJICogYXNzdW1pbmcgYSBkZXNpcmVkIG1heGltdW0gbG9hZCBm YWN0b3Igb2YgMS4KKwkgKi8KKwkqbmJ1Y2tldHMgPSBuZXh0X3BvdzJfaW50KG5lbGVtKTsK KworCS8qCisJICogSW4gYSBwYXJ0aXRpb25lZCB0YWJsZSwgbmJ1Y2tldHMgbXVzdCBiZSBh dCBsZWFzdCBlcXVhbCB0bworCSAqIG51bV9wYXJ0aXRpb25zOyB3ZXJlIGl0IGxlc3MsIGtl eXMgd2l0aCBhcHBhcmVudGx5IGRpZmZlcmVudCBwYXJ0aXRpb24KKwkgKiBudW1iZXJzIHdv dWxkIG1hcCB0byB0aGUgc2FtZSBidWNrZXQsIGJyZWFraW5nIHBhcnRpdGlvbiBpbmRlcGVu ZGVuY2UuCisJICogKE5vcm1hbGx5IG5idWNrZXRzIHdpbGwgYmUgbXVjaCBiaWdnZXI7IHRo aXMgaXMganVzdCBhIHNhZmV0eSBjaGVjay4pCisJICovCisJd2hpbGUgKCgqbmJ1Y2tldHMp IDwgbnVtX3BhcnRpdGlvbnMpCisJCSgqbmJ1Y2tldHMpIDw8PSAxOworCisJLyoKKwkgKiBG aWd1cmUgbnVtYmVyIG9mIGRpcmVjdG9yeSBzZWdtZW50cyBuZWVkZWQsIHJvdW5kIHVwIHRv IGEgcG93ZXIgb2YgMgorCSAqLworCSpuc2VnbWVudHMgPSAoKCpuYnVja2V0cykgLSAxKSAv IHNzaXplICsgMTsKKwkqbnNlZ21lbnRzID0gbmV4dF9wb3cyX2ludCgqbnNlZ21lbnRzKTsK K30KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaCBiL3NyYy9pbmNs dWRlL3V0aWxzL2hzZWFyY2guaAppbmRleCA5MzJjYzRmMzRkOS4uNGQ1ZjA5MDgxYjQgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2guaAorKysgYi9zcmMvaW5jbHVk ZS91dGlscy9oc2VhcmNoLmgKQEAgLTE1MSw3ICsxNTEsOCBAQCBleHRlcm4gdm9pZCBoYXNo X3NlcV90ZXJtKEhBU0hfU0VRX1NUQVRVUyAqc3RhdHVzKTsKIGV4dGVybiB2b2lkIGhhc2hf ZnJlZXplKEhUQUIgKmhhc2hwKTsKIGV4dGVybiBTaXplIGhhc2hfZXN0aW1hdGVfc2l6ZShs b25nIG51bV9lbnRyaWVzLCBTaXplIGVudHJ5c2l6ZSk7CiBleHRlcm4gbG9uZyBoYXNoX3Nl bGVjdF9kaXJzaXplKGxvbmcgbnVtX2VudHJpZXMpOwotZXh0ZXJuIFNpemUgaGFzaF9nZXRf c2hhcmVkX3NpemUoSEFTSENUTCAqaW5mbywgaW50IGZsYWdzKTsKK2V4dGVybiBTaXplIGhh c2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MsCisJCQkJ CQkJICAgYm9vbCBpbml0aWFsX2VsZW1zLCBsb25nIG5lbGVtKTsKIGV4dGVybiB2b2lkIEF0 RU9YYWN0X0hhc2hUYWJsZXMoYm9vbCBpc0NvbW1pdCk7CiBleHRlcm4gdm9pZCBBdEVPU3Vi WGFjdF9IYXNoVGFibGVzKGJvb2wgaXNDb21taXQsIGludCBuZXN0RGVwdGgpOwogCi0tIAoy LjQ5LjAKCg== --------------7QzZYNqB1pkAwJ5ZLtCW1iX2 Content-Type: text/x-patch; charset=UTF-8; name="v8-0002-review.patch" Content-Disposition: attachment; filename="v8-0002-review.patch" Content-Transfer-Encoding: base64 RnJvbSBkODBjZGJjYWM4Y2I0MTA1ZDM1YWVhYThmMDYwMGIzYjVmNTMwOTQyIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogTW9uLCAzMSBNYXIgMjAyNSAxNDo1NDowNiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djggMi81XSByZXZpZXcKCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAg IHwgIDIgKy0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyB8IDcxICsrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL3V0aWxzL2hzZWFyY2gu aCAgICAgICB8ICAyICstCiAzIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDM2 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bWVtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDNjMDMwZDU3 NDNkLi44ZTE5MTM0Y2I1YyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2htZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC0zNDgs NyArMzQ4LDcgQEAgU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFibGUg c3RyaW5nIG5hbWUgZm9yIHNobWVtIGluZGV4ICovCiAJLyogbG9vayBpdCB1cCBpbiB0aGUg c2htZW0gaW5kZXggKi8KIAlsb2NhdGlvbiA9IFNobWVtSW5pdFN0cnVjdChuYW1lLAogCQkJ CQkJCSAgIGhhc2hfZ2V0X2luaXRfc2l6ZShpbmZvUCwgaGFzaF9mbGFncywKLQkJCQkJCQkJ CQkJCSAgdHJ1ZSwgaW5pdF9zaXplKSwKKwkJCQkJCQkJCQkJCSAgaW5pdF9zaXplLCB0cnVl KSwKIAkJCQkJCQkgICAmZm91bmQpOwogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2hhc2gvZHluYWhhc2guYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhh c2guYwppbmRleCAzZGVkZTljYWE1ZC4uMDI0MGE4NzEzOTUgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYworKysgYi9zcmMvYmFja2VuZC91dGlscy9o YXNoL2R5bmFoYXNoLmMKQEAgLTM4Myw3ICszODMsNyBAQCBoYXNoX2NyZWF0ZShjb25zdCBj aGFyICp0YWJuYW1lLCBsb25nIG5lbGVtLCBjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MpCiAJSFRBQgkgICAqaGFzaHA7CiAJSEFTSEhEUiAgICAqaGN0bDsKIAlpbnQJCQluZWxl bV9iYXRjaDsKLQlib29sIAlpbml0aWFsX2VsZW1zID0gZmFsc2U7CisJYm9vbAkJcHJlYWxs b2M7CiAKIAkvKgogCSAqIEhhc2ggdGFibGVzIG5vdyBhbGxvY2F0ZSBzcGFjZSBmb3Iga2V5 IGFuZCBkYXRhLCBidXQgeW91IGhhdmUgdG8gc2F5CkBAIC01NDcsMTUgKzU0NywxMSBAQCBo YXNoX2NyZWF0ZShjb25zdCBjaGFyICp0YWJuYW1lLCBsb25nIG5lbGVtLCBjb25zdCBIQVNI Q1RMICppbmZvLCBpbnQgZmxhZ3MpCiAJICogRm9yIGEgc2hhcmVkIGhhc2ggdGFibGUsIHBy ZWFsbG9jYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mIGVsZW1lbnRzLgogCSAqIFRoaXMg cmVkdWNlcyBwcm9ibGVtcyB3aXRoIHJ1bi10aW1lIG91dC1vZi1zaGFyZWQtbWVtb3J5IGNv bmRpdGlvbnMuCiAJICoKLQkgKiBGb3IgYSBub24tc2hhcmVkIGhhc2ggdGFibGUsIHByZWFs bG9jYXRlIHRoZSByZXF1ZXN0ZWQgbnVtYmVyIG9mCi0JICogZWxlbWVudHMgaWYgaXQncyBs ZXNzIHRoYW4gb3VyIGNob3NlbiBuZWxlbV9hbGxvYy4gIFRoaXMgYXZvaWRzIHdhc3RpbmcK LQkgKiBzcGFjZSBpZiB0aGUgY2FsbGVyIGNvcnJlY3RseSBlc3RpbWF0ZXMgYSBzbWFsbCB0 YWJsZSBzaXplLgorCSAqIEZvciBhIHByaXZhdGUgaGFzaCB0YWJsZSwgcHJlYWxsb2NhdGUg dGhlIHJlcXVlc3RlZCBudW1iZXIgb2YgZWxlbWVudHMKKwkgKiBpZiBpdCdzIGxlc3MgdGhh biBvdXIgY2hvc2VuIG5lbGVtX2FsbG9jLiAgVGhpcyBhdm9pZHMgd2FzdGluZyBzcGFjZSBp ZgorCSAqIHRoZSBjYWxsZXIgY29ycmVjdGx5IGVzdGltYXRlcyBhIHNtYWxsIHRhYmxlIHNp emUuCiAJICovCi0JaWYgKChmbGFncyAmIEhBU0hfU0hBUkVEX01FTSkgfHwKLQkJbmVsZW0g PCBuZWxlbV9iYXRjaCkKLQkJaW5pdGlhbF9lbGVtcyA9IHRydWU7Ci0JZWxzZQotCQlpbml0 aWFsX2VsZW1zID0gZmFsc2U7CisJcHJlYWxsb2MgPSAoZmxhZ3MgJiBIQVNIX1NIQVJFRF9N RU0pIHx8IChuZWxlbSA8IG5lbGVtX2JhdGNoKTsKIAogCS8qCiAJICogQWxsb2NhdGUgdGhl IG1lbW9yeSBuZWVkZWQgZm9yIGhhc2ggaGVhZGVyLCBkaXJlY3RvcnksIHNlZ21lbnRzIGFu ZApAQCAtNTY0LDcgKzU2MCw3IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNoYXIgKnRhYm5hbWUs IGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFncykKIAkgKi8KIAlp ZiAoIWhhc2hwLT5oY3RsKQogCXsKLQkJU2l6ZQkJc2l6ZSA9IGhhc2hfZ2V0X2luaXRfc2l6 ZShpbmZvLCBmbGFncywgaW5pdGlhbF9lbGVtcywgbmVsZW0pOworCQlTaXplCQlzaXplID0g aGFzaF9nZXRfaW5pdF9zaXplKGluZm8sIGZsYWdzLCBuZWxlbSwgcHJlYWxsb2MpOwogCiAJ CWhhc2hwLT5oY3RsID0gKEhBU0hIRFIgKikgaGFzaHAtPmFsbG9jKHNpemUpOwogCQlpZiAo IWhhc2hwLT5oY3RsKQpAQCAtNjY0LDcgKzY2MCw4IEBAIGhhc2hfY3JlYXRlKGNvbnN0IGNo YXIgKnRhYm5hbWUsIGxvbmcgbmVsZW0sIGNvbnN0IEhBU0hDVEwgKmluZm8sIGludCBmbGFn cykKIAkJLyoKIAkJICogQ2FsY3VsYXRlIHRoZSBvZmZzZXQgYXQgd2hpY2ggdG8gZmluZCB0 aGUgZmlyc3QgcGFydGl0aW9uIG9mCiAJCSAqIGVsZW1lbnRzLiBXZSBoYXZlIHRvIHNraXAg c3BhY2UgZm9yIHRoZSBoZWFkZXIsIHNlZ21lbnRzIGFuZAotCQkgKiBidWNrZXRzLgorCQkg KiBidWNrZXRzLiBXZSBuZWVkIHRvIHJlY2FsY3VsYXRlIHRoZSBudW1iZXIgb2Ygc2VnbWVu dHMsIHdoaWNoIHdlCisJCSAqIGRvbid0IHN0b3JlIGFueXdoZXJlLgogCQkgKi8KIAkJY29t cHV0ZV9idWNrZXRzX2FuZF9zZWdzKG5lbGVtLCBoY3RsLT5udW1fcGFydGl0aW9ucywgaGN0 bC0+c3NpemUsCiAJCQkJCQkJCSAmbmJ1Y2tldHMsICZuc2Vncyk7CkBAIC04OTksMjEgKzg5 NiwyNCBAQCBoYXNoX3NlbGVjdF9kaXJzaXplKGxvbmcgbnVtX2VudHJpZXMpCiB9CiAKIC8q Ci0gKiBDb21wdXRlIHRoZSByZXF1aXJlZCBpbml0aWFsIG1lbW9yeSBhbGxvY2F0aW9uIGZv ciBhIGhhc2h0YWJsZSB3aXRoIHRoZSBnaXZlbgotICogcGFyYW1ldGVycy4gVGhlIGhhc2gg dGFibGUgbWF5IGJlIHNoYXJlZCBvciBwcml2YXRlLiBXZSBuZWVkIHNwYWNlIGZvciB0aGUK LSAqIEhBU0hIRFIsIGZvciB0aGUgZGlyZWN0b3J5LCBzZWdtZW50cyBhbmQgdGhlIGluaXRf c2l6ZSBlbGVtZW50cyBpbiBidWNrZXRzLgorICogaGFzaF9nZXRfaW5pdF9zaXplIC0tIGRl dGVybWluZSBtZW1vcnkgbmVlZGVkIGZvciBhIG5ldyBkeW5hbWljIGhhc2ggdGFibGUKICAq Ci0gKiBGb3Igc2hhcmVkIGhhc2ggdGFibGVzIHRoZSBkaXJlY3Rvcnkgc2l6ZSBpcyBub24t ZXhwYW5zaXZlLgotICoKLSAqIG5lbGVtIGlzIHRvdGFsIG51bWJlciBvZiBlbGVtZW50cyBy ZXF1ZXN0ZWQgZHVyaW5nIGhhc2ggdGFibGUgY3JlYXRpb24uCisgKglpbmZvOiBoYXNoIHRh YmxlIHBhcmFtZXRlcnMKKyAqCWZsYWdzOiBiaXRtYXNrIGluZGljYXRpbmcgd2hpY2ggcGFy YW1ldGVycyB0byB0YWtlIGZyb20gKmluZm8KKyAqCW5lbGVtOiBtYXhpbXVtIG51bWJlciBv ZiBlbGVtZW50cyBleHBlY3RlZAorICoJcHJlYWxsb2M6IHJlcXVlc3QgcHJlYWxsb2NhdGlv biBvZiBlbGVtZW50cwogICoKLSAqIGluaXRpYWxfbmVsZW1zIGlzIHRydWUgaWYgaXQgaXMg ZGVjaWRlZCB0byBwcmUtYWxsb2NhdGUgZWxlbWVudHMgYW5kIGZhbHNlCi0gKiBvdGhlcndp c2UuCisgKiBDb21wdXRlIHRoZSByZXF1aXJlZCBpbml0aWFsIG1lbW9yeSBhbGxvY2F0aW9u IGZvciBhIGhhc2h0YWJsZSB3aXRoIHRoZSBnaXZlbgorICogcGFyYW1ldGVycy4gV2UgbmVl ZCBzcGFjZSBmb3IgdGhlIEhBU0hIRFIsIGZvciB0aGUgZGlyZWN0b3J5LCBzZWdtZW50cyBh bmQKKyAqIHByZWFsbG9jYXRlZCBlbGVtZW50cy4KICAqCi0gKiBGb3IgYSBzaGFyZWQgaGFz aCB0YWJsZSBpbml0aWFsX2VsZW1zIGlzIGFsd2F5cyB0cnVlLgorICogVGhlIGhhc2ggdGFi bGUgbWF5IGJlIHByaXZhdGUgb3Igc2hhcmVkLiBGb3Igc2hhcmVkIGhhc2ggdGFibGVzIHRo ZSBkaXJlY3RvcnkKKyAqIHNpemUgaXMgbm9uLWV4cGFuc2l2ZSwgYW5kIHdlIHByZWFsbG9j YXRlIGFsbCBlbGVtZW50cyAobmVsZW0pLiBGb3IgcHJpdmF0ZQorICogaGFzaCB0YWJsZXMs IHdlIHByZWFsbG9jYXRlIGVsZW1lbnRzIG9ubHkgaWYgdGhlIGV4cGVjdGVkIG51bWJlciBv ZiBlbGVtZW50cworICogaXMgc21hbGwgKGxlc3MgdGhhbiBuZWxlbV9hbGxvYykuCiAgKi8K IFNpemUKLWhhc2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxh Z3MsIGJvb2wgaW5pdGlhbF9lbGVtcywgbG9uZyBuZWxlbSkKK2hhc2hfZ2V0X2luaXRfc2l6 ZShjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MsIGxvbmcgbmVsZW0sIGJvb2wgcHJl YWxsb2MpCiB7CiAJaW50CQkJbmJ1Y2tldHM7CiAJaW50CQkJbnNlZ3M7CkBAIC05MjEsMjEg KzkyMSwyOSBAQCBoYXNoX2dldF9pbml0X3NpemUoY29uc3QgSEFTSENUTCAqaW5mbywgaW50 IGZsYWdzLCBib29sIGluaXRpYWxfZWxlbXMsIGxvbmcgbmVsZQogCWxvbmcJCXNzaXplOwog CWxvbmcJCWRzaXplOwogCVNpemUJCWVsZW1lbnRTaXplID0gSEFTSF9FTEVNRU5UX1NJWkUo aW5mbyk7Ci0JaW50IAlpbml0X3NpemUgPSAwOworCWxvbmcJCW5lbGVtX3ByZWFsbG9jID0g MDsKIAorI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkvKiBzaGFyZWQgaGFzaCB0YWJs ZXMgaGF2ZSBub24tZXhwYW5zaXZlIGRpcmVjdG9yeSAqLworCS8qIFhYWCB3aGF0IGFib3V0 IHNlZ21lbnQgc2l6ZT8gc2hvdWxkIGNoZWNrIGhhdmUgSEFTSF9TRUdNRU5UPyAqLwogCWlm IChmbGFncyAmIEhBU0hfU0hBUkVEX01FTSkKIAl7CiAJCUFzc2VydChmbGFncyAmIEhBU0hf RElSU0laRSk7CiAJCUFzc2VydChpbmZvLT5kc2l6ZSA9PSBpbmZvLT5tYXhfZHNpemUpOwor CQlBc3NlcnQocHJlYWxsb2MpOwogCX0KKyNlbmRpZgogCiAJLyogTm9uLXNoYXJlZCBoYXNo IHRhYmxlcyBtYXkgbm90IHNwZWNpZnkgZGlyIHNpemUgKi8KLQlpZiAoIShmbGFncyAmIEhB U0hfRElSU0laRSkpCi0JeworCWlmIChmbGFncyAmIEhBU0hfRElSU0laRSkKKwkJZHNpemUg PSBpbmZvLT5kc2l6ZTsKKwllbHNlCiAJCWRzaXplID0gREVGX0RJUlNJWkU7Ci0JfQorCisJ aWYgKGZsYWdzICYgSEFTSF9TRUdNRU5UKQorCQlzc2l6ZSA9IGluZm8tPnNzaXplOwogCWVs c2UKLQkJZHNpemUgPSBpbmZvLT5kc2l6ZTsKKwkJc3NpemUgPSBERUZfU0VHU0laRTsKIAog CWlmIChmbGFncyAmIEhBU0hfUEFSVElUSU9OKQogCXsKQEAgLTk0OCwyMSArOTU2LDE2IEBA IGhhc2hfZ2V0X2luaXRfc2l6ZShjb25zdCBIQVNIQ1RMICppbmZvLCBpbnQgZmxhZ3MsIGJv b2wgaW5pdGlhbF9lbGVtcywgbG9uZyBuZWxlCiAJZWxzZQogCQludW1fcGFydGl0aW9ucyA9 IDA7CiAKLQlpZiAoZmxhZ3MgJiBIQVNIX1NFR01FTlQpCi0JCXNzaXplID0gaW5mby0+c3Np emU7Ci0JZWxzZQotCQlzc2l6ZSA9IERFRl9TRUdTSVpFOwotCiAJY29tcHV0ZV9idWNrZXRz X2FuZF9zZWdzKG5lbGVtLCBudW1fcGFydGl0aW9ucywgc3NpemUsCiAJCQkJCQkJICZuYnVj a2V0cywgJm5zZWdzKTsKIAogCS8qIGluaXRpYWxfZWxlbXMgYXMgZmFsc2UgaW5kaWNhdGVz IG5vIGVsZW1lbnRzIGFyZSB0byBiZSBwcmUtYWxsb2NhdGVkICovCi0JaWYgKGluaXRpYWxf ZWxlbXMpCi0JCWluaXRfc2l6ZSA9IG5lbGVtOworCWlmIChwcmVhbGxvYykKKwkJbmVsZW1f cHJlYWxsb2MgPSBuZWxlbTsKIAogCXJldHVybiBzaXplb2YoSEFTSEhEUikgKyBkc2l6ZSAq IHNpemVvZihIQVNIU0VHTUVOVCkKIAkJKyBzaXplb2YoSEFTSEJVQ0tFVCkgKiBzc2l6ZSAq IG5zZWdzCi0JCSsgaW5pdF9zaXplICogZWxlbWVudFNpemU7CisJCSsgbmVsZW1fcHJlYWxs b2MgKiBlbGVtZW50U2l6ZTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS91dGls cy9oc2VhcmNoLmggYi9zcmMvaW5jbHVkZS91dGlscy9oc2VhcmNoLmgKaW5kZXggNGQ1ZjA5 MDgxYjQuLjVkYzc0ZGI2ZTk2IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9oc2Vh cmNoLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRpbHMvaHNlYXJjaC5oCkBAIC0xNTIsNyArMTUy LDcgQEAgZXh0ZXJuIHZvaWQgaGFzaF9mcmVlemUoSFRBQiAqaGFzaHApOwogZXh0ZXJuIFNp emUgaGFzaF9lc3RpbWF0ZV9zaXplKGxvbmcgbnVtX2VudHJpZXMsIFNpemUgZW50cnlzaXpl KTsKIGV4dGVybiBsb25nIGhhc2hfc2VsZWN0X2RpcnNpemUobG9uZyBudW1fZW50cmllcyk7 CiBleHRlcm4gU2l6ZSBoYXNoX2dldF9pbml0X3NpemUoY29uc3QgSEFTSENUTCAqaW5mbywg aW50IGZsYWdzLAotCQkJCQkJCSAgIGJvb2wgaW5pdGlhbF9lbGVtcywgbG9uZyBuZWxlbSk7 CisJCQkJCQkJICAgbG9uZyBuZWxlbSwgYm9vbCBwcmVhbGxvYyk7CiBleHRlcm4gdm9pZCBB dEVPWGFjdF9IYXNoVGFibGVzKGJvb2wgaXNDb21taXQpOwogZXh0ZXJuIHZvaWQgQXRFT1N1 YlhhY3RfSGFzaFRhYmxlcyhib29sIGlzQ29tbWl0LCBpbnQgbmVzdERlcHRoKTsKIAotLSAK Mi40OS4wCgo= --------------7QzZYNqB1pkAwJ5ZLtCW1iX2 Content-Type: text/x-patch; charset=UTF-8; name="v8-0003-Improve-accounting-for-PredXactList-RWConflictPoo.patch" Content-Disposition: attachment; filename*0="v8-0003-Improve-accounting-for-PredXactList-RWConflictPoo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA2MDk0MDRjNjgyZTI4YTU5ZjgwYWM3NjMwZTRiZThlNDZkMTI1NjZlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFp bC5jb20+CkRhdGU6IE1vbiwgMzEgTWFyIDIwMjUgMDM6NDU6NTAgKzA1MzAKU3ViamVjdDog W1BBVENIIHY4IDMvNV0gSW1wcm92ZSBhY2NvdW50aW5nIGZvciBQcmVkWGFjdExpc3QsIFJX Q29uZmxpY3RQb29sCiBhbmQgUEdQUk9DCgpWYXJpb3VzIHBsYWNlcyBhbGxvY2F0ZWQgc2hh cmVkIG1lbW9yeSBieSBmaXJzdCBhbGxvY2F0aW5nIGEgc21hbGwgY2h1bmsKdXNpbmcgU2ht ZW1Jbml0U3RydWN0KCksIGZvbGxvd2VkIGJ5IFNobWVtQWxsb2MoKSBjYWxscyB0byBhbGxv Y2F0ZSBtb3JlCm1lbW9yeS4gVW5mb3J0dW5hdGVseSwgU2htZW1BbGxvYygpIGRvZXMgbm90 IHVwZGF0ZSBTaG1lbUluZGV4LCBzbyB0aGlzCmFmZmVjdGVkIHBnX3NobWVtX2FsbG9jYXRp b25zIC0gaXQgb25seSBzaG93biB0aGUgaW5pdGlhbCBjaHVuay4KClRoaXMgY29tbWl0IG1v ZGlmaWVzIHRoZSBmb2xsb3dpbmcgYWxsb2NhdGlvbnMsIHRvIGFsbG9jYXRlIGV2ZXJ5dGhp bmcKYXMgYSBzaW5nbGUgY2h1bmssIGFuZCB0aGVuIHNwbGl0IGl0IGludGVybmFsbHkuCgot IFByZWRYYWN0TGlzdAotIFJXQ29uZmxpY3RQb29sCi0gUEdQUk9DIHN0cnVjdHVyZXMKLSBG YXN0LVBhdGggbG9jayBhcnJheXMKCkF1dGhvcjogUmFoaWxhIFN5ZWQgPHJhaGlsYXN5ZWQ5 MEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbmRyZXMgRnJldW5kIDxhbmRyZXNAYW5hcmF6 ZWwuZGU+ClJldmlld2VkLWJ5OiBOYXppciBCaWxhbCBZYXZ1eiA8YnlhdnV6ODFAZ21haWwu Y29tPgpSZXZpZXdlZC1ieTogVG9tYXMgVm9uZHJhIDx0b21hc0B2b25kcmEubWU+CkRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FIMkwyOHZIelJhbmtzemhxejdkZVhVUnhL bmN4ZmlybnVXNjh6RDcraFZBcWFTNUdRQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jIHwgMzAgKysrKysrKysrKy0tLS0tCiBzcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jICAgICAgfCA1NyArKysrKysrKysrKysrKysr KysrKysrKy0tLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDIwIGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVk aWNhdGUuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYwppbmRleCA1 YjIxYTA1Mzk4MS4uZDgyMTE0ZmZjYTEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcmVkaWNhdGUuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJl ZGljYXRlLmMKQEAgLTEyMjYsMTQgKzEyMjYsMjEgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5p dCh2b2lkKQogCSAqLwogCW1heF90YWJsZV9zaXplICo9IDEwOwogCisJcmVxdWVzdFNpemUg PSBhZGRfc2l6ZShQcmVkWGFjdExpc3REYXRhU2l6ZSwKKwkJCQkJCSAgIChtdWxfc2l6ZSgo U2l6ZSkgbWF4X3RhYmxlX3NpemUsCisJCQkJCQkJCQkgc2l6ZW9mKFNFUklBTElaQUJMRVhB Q1QpKSkpOworCiAJUHJlZFhhY3QgPSBTaG1lbUluaXRTdHJ1Y3QoIlByZWRYYWN0TGlzdCIs Ci0JCQkJCQkJICAgUHJlZFhhY3RMaXN0RGF0YVNpemUsCisJCQkJCQkJICAgcmVxdWVzdFNp emUsCiAJCQkJCQkJICAgJmZvdW5kKTsKIAlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3Rt YXN0ZXIpOwogCWlmICghZm91bmQpCiAJewogCQlpbnQJCQlpOwogCisJCS8qIGNsZWFuIGV2 ZXJ5dGhpbmcsIGJvdGggdGhlIGhlYWRlciBhbmQgdGhlIGVsZW1lbnQgKi8KKwkJbWVtc2V0 KFByZWRYYWN0LCAwLCByZXF1ZXN0U2l6ZSk7CisKIAkJZGxpc3RfaW5pdCgmUHJlZFhhY3Qt PmF2YWlsYWJsZUxpc3QpOwogCQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YWN0aXZlTGlzdCk7 CiAJCVByZWRYYWN0LT5TeGFjdEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsK QEAgLTEyNDIsMTEgKzEyNDksOSBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJ CVByZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFObyA9IEZpcnN0Tm9ybWFsU2VyQ29tbWl0 U2VxTm8gLSAxOwogCQlQcmVkWGFjdC0+Q2FuUGFydGlhbENsZWFyVGhyb3VnaCA9IDA7CiAJ CVByZWRYYWN0LT5IYXZlUGFydGlhbENsZWFyZWRUaHJvdWdoID0gMDsKLQkJcmVxdWVzdFNp emUgPSBtdWxfc2l6ZSgoU2l6ZSkgbWF4X3RhYmxlX3NpemUsCi0JCQkJCQkJICAgc2l6ZW9m KFNFUklBTElaQUJMRVhBQ1QpKTsKLQkJUHJlZFhhY3QtPmVsZW1lbnQgPSBTaG1lbUFsbG9j KHJlcXVlc3RTaXplKTsKKwkJUHJlZFhhY3QtPmVsZW1lbnQKKwkJCT0gKFNFUklBTElaQUJM RVhBQ1QgKikgKChjaGFyICopIFByZWRYYWN0ICsgUHJlZFhhY3RMaXN0RGF0YVNpemUpOwog CQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVhbi4gKi8KLQkJ bWVtc2V0KFByZWRYYWN0LT5lbGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CiAJCWZvciAoaSA9 IDA7IGkgPCBtYXhfdGFibGVfc2l6ZTsgaSsrKQogCQl7CiAJCQlMV0xvY2tJbml0aWFsaXpl KCZQcmVkWGFjdC0+ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCkBAIC0x MzAwLDIwICsxMzA1LDI1IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkgKi8K IAltYXhfdGFibGVfc2l6ZSAqPSA1OwogCisJcmVxdWVzdFNpemUgPSBSV0NvbmZsaWN0UG9v bEhlYWRlckRhdGFTaXplICsKKwkJbXVsX3NpemUoKFNpemUpIG1heF90YWJsZV9zaXplLAor CQkJCSBSV0NvbmZsaWN0RGF0YVNpemUpOworCiAJUldDb25mbGljdFBvb2wgPSBTaG1lbUlu aXRTdHJ1Y3QoIlJXQ29uZmxpY3RQb29sIiwKLQkJCQkJCQkJCSBSV0NvbmZsaWN0UG9vbEhl YWRlckRhdGFTaXplLAorCQkJCQkJCQkJIHJlcXVlc3RTaXplLAogCQkJCQkJCQkJICZmb3Vu ZCk7CiAJQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKIAlpZiAoIWZvdW5k KQogCXsKIAkJaW50CQkJaTsKIAorCQkvKiBjbGVhbiBldmVyeXRoaW5nLCBpbmNsdWRpbmcg dGhlIGVsZW1lbnRzICovCisJCW1lbXNldChSV0NvbmZsaWN0UG9vbCwgMCwgcmVxdWVzdFNp emUpOworCiAJCWRsaXN0X2luaXQoJlJXQ29uZmxpY3RQb29sLT5hdmFpbGFibGVMaXN0KTsK LQkJcmVxdWVzdFNpemUgPSBtdWxfc2l6ZSgoU2l6ZSkgbWF4X3RhYmxlX3NpemUsCi0JCQkJ CQkJICAgUldDb25mbGljdERhdGFTaXplKTsKLQkJUldDb25mbGljdFBvb2wtPmVsZW1lbnQg PSBTaG1lbUFsbG9jKHJlcXVlc3RTaXplKTsKKwkJUldDb25mbGljdFBvb2wtPmVsZW1lbnQg PSAoUldDb25mbGljdCkgKChjaGFyICopIFJXQ29uZmxpY3RQb29sICsKKwkJCQkJCQkJCQkJ CVJXQ29uZmxpY3RQb29sSGVhZGVyRGF0YVNpemUpOwogCQkvKiBBZGQgYWxsIGVsZW1lbnRz IHRvIGF2YWlsYWJsZSBsaXN0LCBjbGVhbi4gKi8KLQkJbWVtc2V0KFJXQ29uZmxpY3RQb29s LT5lbGVtZW50LCAwLCByZXF1ZXN0U2l6ZSk7CiAJCWZvciAoaSA9IDA7IGkgPCBtYXhfdGFi bGVfc2l6ZTsgaSsrKQogCQl7CiAJCQlkbGlzdF9wdXNoX3RhaWwoJlJXQ29uZmxpY3RQb29s LT5hdmFpbGFibGVMaXN0LApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3Byb2MuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKaW5kZXggMDY2MzE5 YWZlMmIuLjRlMjNjNzkzZjdmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvcHJvYy5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKQEAgLTEy Myw2ICsxMjMsMjUgQEAgUHJvY0dsb2JhbFNobWVtU2l6ZSh2b2lkKQogCXJldHVybiBzaXpl OwogfQogCisvKgorICogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFBH UFJPQy4KKyAqLworc3RhdGljIFNpemUKK1BHUHJvY1NobWVtU2l6ZSh2b2lkKQoreworCVNp emUJCXNpemU7CisJdWludDMyCQlUb3RhbFByb2NzOworCisJVG90YWxQcm9jcyA9IE1heEJh Y2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1heF9wcmVwYXJlZF94YWN0czsKKwor CXNpemUgPSBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7CisJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKKwlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3Vi eGlkU3RhdGVzKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFRvdGFsUHJvY3MgKiBzaXpl b2YoKlByb2NHbG9iYWwtPnN0YXR1c0ZsYWdzKSk7CisKKwlyZXR1cm4gc2l6ZTsKK30KKwog LyoKICAqIFJlcG9ydCBudW1iZXIgb2Ygc2VtYXBob3JlcyBuZWVkZWQgYnkgSW5pdFByb2NH bG9iYWwuCiAgKi8KQEAgLTE3NSw2ICsxOTQsOCBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQog CQkJICAgKmZwRW5kUHRyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAlTaXplCQlmcExv Y2tCaXRzU2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKKwlTaXplCQlyZXF1ZXN0U2l6ZTsKKwlj aGFyCSAgICpwdHI7CiAKIAkvKiBDcmVhdGUgdGhlIFByb2NHbG9iYWwgc2hhcmVkIHN0cnVj dHVyZSAqLwogCVByb2NHbG9iYWwgPSAoUFJPQ19IRFIgKikKQEAgLTIwNCw3ICsyMjUsMTUg QEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAkgKiB3aXRoIGEgc2luZ2xlIGZyZWVsaXN0Likg IEVhY2ggUEdQUk9DIHN0cnVjdHVyZSBpcyBkZWRpY2F0ZWQgdG8gZXhhY3RseQogCSAqIG9u ZSBvZiB0aGVzZSBwdXJwb3NlcywgYW5kIHRoZXkgZG8gbm90IG1vdmUgYmV0d2VlbiBncm91 cHMuCiAJICovCi0JcHJvY3MgPSAoUEdQUk9DICopIFNobWVtQWxsb2MoVG90YWxQcm9jcyAq IHNpemVvZihQR1BST0MpKTsKKwlyZXF1ZXN0U2l6ZSA9IFBHUHJvY1NobWVtU2l6ZSgpOwor CisJcHRyID0gU2htZW1Jbml0U3RydWN0KCJQR1BST0Mgc3RydWN0dXJlcyIsCisJCQkJCQkg IHJlcXVlc3RTaXplLAorCQkJCQkJICAmZm91bmQpOworCisJcHJvY3MgPSAoUEdQUk9DICop IHB0cjsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJP Qyk7CisKIAlNZW1TZXQocHJvY3MsIDAsIFRvdGFsUHJvY3MgKiBzaXplb2YoUEdQUk9DKSk7 CiAJUHJvY0dsb2JhbC0+YWxsUHJvY3MgPSBwcm9jczsKIAkvKiBYWFggYWxsUHJvY0NvdW50 IGlzbid0IHJlYWxseSBhbGwgb2YgdGhlbTsgaXQgZXhjbHVkZXMgcHJlcGFyZWQgeGFjdHMg Ki8KQEAgLTIxMywxNyArMjQyLDIxIEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJLyoKIAkg KiBBbGxvY2F0ZSBhcnJheXMgbWlycm9yaW5nIFBHUFJPQyBmaWVsZHMgaW4gYSBkZW5zZSBt YW5uZXIuIFNlZQogCSAqIFBST0NfSERSLgotCSAqCi0JICogWFhYOiBJdCBtaWdodCBtYWtl IHNlbnNlIHRvIGluY3JlYXNlIHBhZGRpbmcgZm9yIHRoZXNlIGFycmF5cywgZ2l2ZW4KLQkg KiBob3cgaG90bHkgdGhleSBhcmUgYWNjZXNzZWQuCiAJICovCi0JUHJvY0dsb2JhbC0+eGlk cyA9Ci0JCShUcmFuc2FjdGlvbklkICopIFNobWVtQWxsb2MoVG90YWxQcm9jcyAqIHNpemVv ZigqUHJvY0dsb2JhbC0+eGlkcykpOworCVByb2NHbG9iYWwtPnhpZHMgPSAoVHJhbnNhY3Rp b25JZCAqKSBwdHI7CiAJTWVtU2V0KFByb2NHbG9iYWwtPnhpZHMsIDAsIFRvdGFsUHJvY3Mg KiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKLQlQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0 ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgU2htZW1BbGxvYyhUb3RhbFByb2NzICogc2l6ZW9m KCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyAo VG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+eGlkcykpOworCisJUHJvY0dsb2Jh bC0+c3VieGlkU3RhdGVzID0gKFhpZENhY2hlU3RhdHVzICopIHB0cjsKIAlNZW1TZXQoUHJv Y0dsb2JhbC0+c3VieGlkU3RhdGVzLCAwLCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xv YmFsLT5zdWJ4aWRTdGF0ZXMpKTsKLQlQcm9jR2xvYmFsLT5zdGF0dXNGbGFncyA9ICh1aW50 OCAqKSBTaG1lbUFsbG9jKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN0YXR1 c0ZsYWdzKSk7CisJcHRyID0gKGNoYXIgKikgcHRyICsgKFRvdGFsUHJvY3MgKiBzaXplb2Yo KlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykpOworCisJUHJvY0dsb2JhbC0+c3RhdHVzRmxh Z3MgPSAodWludDggKikgcHRyOwogCU1lbVNldChQcm9jR2xvYmFsLT5zdGF0dXNGbGFncywg MCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKKwlw dHIgPSAoY2hhciAqKSBwdHIgKyAoVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+ c3RhdHVzRmxhZ3MpKTsKKworCS8qIG1ha2Ugc3VyZSB3ZXIgZGlkbid0IG92ZXJmbG93ICov CisJQXNzZXJ0KChwdHIgPiAoY2hhciAqKSBwcm9jcykgJiYgKHB0ciA8PSAoY2hhciAqKSBw cm9jcyArIHJlcXVlc3RTaXplKSk7CiAKIAkvKgogCSAqIEFsbG9jYXRlIGFycmF5cyBmb3Ig ZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBhcmUgdmFyaWFibGUtbGVuZ3RoLCBzbwpAQCAtMjMz LDcgKzI2Niw5IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJZnBMb2NrQml0c1NpemUgPSBN QVhBTElHTihGYXN0UGF0aExvY2tHcm91cHNQZXJCYWNrZW5kICogc2l6ZW9mKHVpbnQ2NCkp OwogCWZwUmVsSWRTaXplID0gTUFYQUxJR04oRmFzdFBhdGhMb2NrU2xvdHNQZXJCYWNrZW5k KCkgKiBzaXplb2YoT2lkKSk7CiAKLQlmcFB0ciA9IFNobWVtQWxsb2MoVG90YWxQcm9jcyAq IChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSk7CisJZnBQdHIgPSBTaG1lbUluaXRT dHJ1Y3QoIkZhc3QgcGF0aCBsb2NrIGFycmF5cyIsCisJCQkJCQkJVG90YWxQcm9jcyAqIChm cExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSwKKwkJCQkJCQkmZm91bmQpOwogCU1lbVNl dChmcFB0ciwgMCwgVG90YWxQcm9jcyAqIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXpl KSk7CiAKIAkvKiBGb3IgYXNzZXJ0cyBjaGVja2luZyB3ZSBkaWQgbm90IG92ZXJmbG93LiAq LwpAQCAtMzMwLDcgKzM2NSw5IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJUHJlcGFyZWRY YWN0UHJvY3MgPSAmcHJvY3NbTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTXTsK IAogCS8qIENyZWF0ZSBQcm9jU3RydWN0TG9jayBzcGlubG9jaywgdG9vICovCi0JUHJvY1N0 cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1lbUFsbG9jKHNpemVvZihzbG9ja190KSk7CisJ UHJvY1N0cnVjdExvY2sgPSAoc2xvY2tfdCAqKSBTaG1lbUluaXRTdHJ1Y3QoIlByb2NTdHJ1 Y3RMb2NrIHNwaW5sb2NrIiwKKwkJCQkJCQkJCQkJCSBzaXplb2Yoc2xvY2tfdCksCisJCQkJ CQkJCQkJCQkgJmZvdW5kKTsKIAlTcGluTG9ja0luaXQoUHJvY1N0cnVjdExvY2spOwogfQog Ci0tIAoyLjQ5LjAKCg== --------------7QzZYNqB1pkAwJ5ZLtCW1iX2 Content-Type: text/x-patch; charset=UTF-8; name="v8-0004-review.patch" Content-Disposition: attachment; filename="v8-0004-review.patch" Content-Transfer-Encoding: base64 RnJvbSBhMGQ4MTk3NjQwNmVhNDdhYzI0OWYwN2JmODUwZTY1ZDEyNjYyN2NiIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBUb21hcyBWb25kcmEgPHRvbWFzQHZvbmRyYS5tZT4K RGF0ZTogTW9uLCAzMSBNYXIgMjAyNSAxNDo1Njo1NiArMDIwMApTdWJqZWN0OiBbUEFUQ0gg djggNC81XSByZXZpZXcKCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyB8 IDYgKystLS0tCiAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9u cygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCmluZGV4IDRlMjNjNzkzZjdmLi5iYTFh YzdlNDg2MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwor KysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jCkBAIC0yMzEsMTAgKzIzMSwx MSBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQogCQkJCQkJICByZXF1ZXN0U2l6ZSwKIAkJCQkJ CSAgJmZvdW5kKTsKIAorCU1lbVNldChwdHIsIDAsIHJlcXVlc3RTaXplKTsKKwogCXByb2Nz ID0gKFBHUFJPQyAqKSBwdHI7CiAJcHRyID0gKGNoYXIgKikgcHRyICsgVG90YWxQcm9jcyAq IHNpemVvZihQR1BST0MpOwogCi0JTWVtU2V0KHByb2NzLCAwLCBUb3RhbFByb2NzICogc2l6 ZW9mKFBHUFJPQykpOwogCVByb2NHbG9iYWwtPmFsbFByb2NzID0gcHJvY3M7CiAJLyogWFhY IGFsbFByb2NDb3VudCBpc24ndCByZWFsbHkgYWxsIG9mIHRoZW07IGl0IGV4Y2x1ZGVzIHBy ZXBhcmVkIHhhY3RzICovCiAJUHJvY0dsb2JhbC0+YWxsUHJvY0NvdW50ID0gTWF4QmFja2Vu ZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTOwpAQCAtMjQ0LDE1ICsyNDUsMTIgQEAgSW5pdFBy b2NHbG9iYWwodm9pZCkKIAkgKiBQUk9DX0hEUi4KIAkgKi8KIAlQcm9jR2xvYmFsLT54aWRz ID0gKFRyYW5zYWN0aW9uSWQgKikgcHRyOwotCU1lbVNldChQcm9jR2xvYmFsLT54aWRzLCAw LCBUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSk7CiAJcHRyID0gKGNo YXIgKikgcHRyICsgKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsK IAogCVByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcyA9IChYaWRDYWNoZVN0YXR1cyAqKSBwdHI7 Ci0JTWVtU2V0KFByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcywgMCwgVG90YWxQcm9jcyAqIHNp emVvZigqUHJvY0dsb2JhbC0+c3VieGlkU3RhdGVzKSk7CiAJcHRyID0gKGNoYXIgKikgcHRy ICsgKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykpOwog CiAJUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgcHRyOwotCU1lbVNldChQ cm9jR2xvYmFsLT5zdGF0dXNGbGFncywgMCwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0ds b2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAlwdHIgPSAoY2hhciAqKSBwdHIgKyAoVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAogCS8qIG1ha2Ugc3Vy ZSB3ZXIgZGlkbid0IG92ZXJmbG93ICovCi0tIAoyLjQ5LjAKCg== --------------7QzZYNqB1pkAwJ5ZLtCW1iX2 Content-Type: text/x-patch; charset=UTF-8; name="v8-0005-Add-cacheline-padding-between-heavily-accessed-ar.patch" Content-Disposition: attachment; filename*0="v8-0005-Add-cacheline-padding-between-heavily-accessed-ar.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3MWIyMDZlM2IxN2IxNjc3MzMwNTVjOGEzOTJiZTY4N2RlZWU2NDEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBSYWhpbGEgU3llZCA8cmFoaWxhc3llZC45MEBnbWFp bC5jb20+CkRhdGU6IE1vbiwgMzEgTWFyIDIwMjUgMDQ6Mjc6NDMgKzA1MzAKU3ViamVjdDog W1BBVENIIHY4IDUvNV0gQWRkIGNhY2hlbGluZSBwYWRkaW5nIGJldHdlZW4gaGVhdmlseSBh Y2Nlc3NlZCBhcnJheXMKCi0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyB8 IDEyICsrKysrKy0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJv Yy5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCBiYTFhYzdlNDg2 MS4uYzM5YjUxMTI3YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9w cm9jLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTM0LDkg KzEzNCw5IEBAIFBHUHJvY1NobWVtU2l6ZSh2b2lkKQogCiAJVG90YWxQcm9jcyA9IE1heEJh Y2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUyArIG1heF9wcmVwYXJlZF94YWN0czsKIAot CXNpemUgPSBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7Ci0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKTsKLQlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3Vi eGlkU3RhdGVzKSk7CisJc2l6ZSA9IENBQ0hFTElORUFMSUdOKFRvdGFsUHJvY3MgKiBzaXpl b2YoUEdQUk9DKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUsIENBQ0hFTElORUFMSUdOKFRv dGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9iYWwtPnhpZHMpKSk7CisJc2l6ZSA9IGFkZF9z aXplKHNpemUsIENBQ0hFTElORUFMSUdOKFRvdGFsUHJvY3MgKiBzaXplb2YoKlByb2NHbG9i YWwtPnN1YnhpZFN0YXRlcykpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgVG90YWxQcm9j cyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsKIAogCXJldHVybiBzaXpl OwpAQCAtMjM0LDcgKzIzNCw3IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJTWVtU2V0KHB0 ciwgMCwgcmVxdWVzdFNpemUpOwogCiAJcHJvY3MgPSAoUEdQUk9DICopIHB0cjsKLQlwdHIg PSAoY2hhciAqKSBwdHIgKyBUb3RhbFByb2NzICogc2l6ZW9mKFBHUFJPQyk7CisJcHRyID0g KGNoYXIgKikgcHRyICsgQ0FDSEVMSU5FQUxJR04oVG90YWxQcm9jcyAqIHNpemVvZihQR1BS T0MpKTsKIAogCVByb2NHbG9iYWwtPmFsbFByb2NzID0gcHJvY3M7CiAJLyogWFhYIGFsbFBy b2NDb3VudCBpc24ndCByZWFsbHkgYWxsIG9mIHRoZW07IGl0IGV4Y2x1ZGVzIHByZXBhcmVk IHhhY3RzICovCkBAIC0yNDUsMTAgKzI0NSwxMCBAQCBJbml0UHJvY0dsb2JhbCh2b2lkKQog CSAqIFBST0NfSERSLgogCSAqLwogCVByb2NHbG9iYWwtPnhpZHMgPSAoVHJhbnNhY3Rpb25J ZCAqKSBwdHI7Ci0JcHRyID0gKGNoYXIgKikgcHRyICsgKFRvdGFsUHJvY3MgKiBzaXplb2Yo KlByb2NHbG9iYWwtPnhpZHMpKTsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyBDQUNIRUxJTkVB TElHTihUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSk7CiAKIAlQcm9j R2xvYmFsLT5zdWJ4aWRTdGF0ZXMgPSAoWGlkQ2FjaGVTdGF0dXMgKikgcHRyOwotCXB0ciA9 IChjaGFyICopIHB0ciArIChUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4 aWRTdGF0ZXMpKTsKKwlwdHIgPSAoY2hhciAqKSBwdHIgKyBDQUNIRUxJTkVBTElHTihUb3Rh bFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKTsKIAogCVByb2NH bG9iYWwtPnN0YXR1c0ZsYWdzID0gKHVpbnQ4ICopIHB0cjsKIAlwdHIgPSAoY2hhciAqKSBw dHIgKyAoVG90YWxQcm9jcyAqIHNpemVvZigqUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MpKTsK LS0gCjIuNDkuMAoK --------------7QzZYNqB1pkAwJ5ZLtCW1iX2--