Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C5DCEC05027 for ; Fri, 17 Feb 2023 12:52:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229736AbjBQMwz (ORCPT ); Fri, 17 Feb 2023 07:52:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54282 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229575AbjBQMwx (ORCPT ); Fri, 17 Feb 2023 07:52:53 -0500 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 67B232695 for ; Fri, 17 Feb 2023 04:52:50 -0800 (PST) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 0C40C33A23; Fri, 17 Feb 2023 12:52:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1676638369; h=from:from:reply-to: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=0YoKYzNqycaCLyfehwdodfhYUVBqJ9Wn0pLqJUdpcBs=; b=ua7OCdYbG/O/Klgfp3e6zzVlXTVMBo2n/QthSN00ozLCx0VefPw7ibRwttBIIcofMGgHp1 PO29hD7Wsb4Clawa+vylVe2dRw2rqqk8T4oMD7/X8USRRiNwY7KqbZ074iAZaps0+BSLN1 19RPCulmQUXpQdhZLxSnPiv48a3XOqA= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1676638369; h=from:from:reply-to: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=0YoKYzNqycaCLyfehwdodfhYUVBqJ9Wn0pLqJUdpcBs=; b=EI5EQQwtnalRchOo4dOYBJg3zMvl2gyZ7hXpvC3pBJqM8D5XytO/SUccy+oTHTIGDG6pLL TrbmawhvlUWlN7Dw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 85668138E3; Fri, 17 Feb 2023 12:52:48 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id BxOVH6B472PAcQAAMHmgww (envelope-from ); Fri, 17 Feb 2023 12:52:48 +0000 Message-ID: Date: Fri, 17 Feb 2023 13:52:48 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v10 07/11] drm/shmem-helper: Switch to reservation lock Content-Language: en-US To: Dmitry Osipenko , David Airlie , Gerd Hoffmann , Gurchetan Singh , Chia-I Wu , Daniel Vetter , Daniel Almeida , Gustavo Padovan , Daniel Stone , Tomeu Vizoso , Maarten Lankhorst , Maxime Ripard , Rob Clark , Sumit Semwal , =?UTF-8?Q?Christian_K=c3=b6nig?= , Qiang Yu , Steven Price , Alyssa Rosenzweig , Rob Herring , Sean Paul , Dmitry Baryshkov , Abhinav Kumar Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, virtualization@lists.linux-foundation.org References: <20230108210445.3948344-1-dmitry.osipenko@collabora.com> <20230108210445.3948344-8-dmitry.osipenko@collabora.com> From: Thomas Zimmermann In-Reply-To: <20230108210445.3948344-8-dmitry.osipenko@collabora.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------dqTn7Rpi2DJUiZqTbazpgAun" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------dqTn7Rpi2DJUiZqTbazpgAun Content-Type: multipart/mixed; boundary="------------fjh8o8iBKvqEJVauAUWlqWLh"; protected-headers="v1" From: Thomas Zimmermann To: Dmitry Osipenko , David Airlie , Gerd Hoffmann , Gurchetan Singh , Chia-I Wu , Daniel Vetter , Daniel Almeida , Gustavo Padovan , Daniel Stone , Tomeu Vizoso , Maarten Lankhorst , Maxime Ripard , Rob Clark , Sumit Semwal , =?UTF-8?Q?Christian_K=c3=b6nig?= , Qiang Yu , Steven Price , Alyssa Rosenzweig , Rob Herring , Sean Paul , Dmitry Baryshkov , Abhinav Kumar Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel@collabora.com, virtualization@lists.linux-foundation.org Message-ID: Subject: Re: [PATCH v10 07/11] drm/shmem-helper: Switch to reservation lock References: <20230108210445.3948344-1-dmitry.osipenko@collabora.com> <20230108210445.3948344-8-dmitry.osipenko@collabora.com> In-Reply-To: <20230108210445.3948344-8-dmitry.osipenko@collabora.com> --------------fjh8o8iBKvqEJVauAUWlqWLh Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDguMDEuMjMgdW0gMjI6MDQgc2NocmllYiBEbWl0cnkgT3NpcGVua286DQo+ IFJlcGxhY2UgYWxsIGRybS1zaG1lbSBsb2NrcyB3aXRoIGEgR0VNIHJlc2VydmF0aW9uIGxv Y2suIFRoaXMgbWFrZXMgbG9ja3MNCj4gY29uc2lzdGVudCB3aXRoIGRtYS1idWYgbG9ja2lu ZyBjb252ZW50aW9uIHdoZXJlIGltcG9ydGVycyBhcmUgcmVzcG9uc2libGUNCj4gZm9yIGhv bGRpbmcgcmVzZXJ2YXRpb24gbG9jayBmb3IgYWxsIG9wZXJhdGlvbnMgcGVyZm9ybWVkIG92 ZXIgZG1hLWJ1ZnMsDQo+IHByZXZlbnRpbmcgZGVhZGxvY2sgYmV0d2VlbiBkbWEtYnVmIGlt cG9ydGVycyBhbmQgZXhwb3J0ZXJzLg0KPiANCj4gU3VnZ2VzdGVkLWJ5OiBEYW5pZWwgVmV0 dGVyIDxkYW5pZWxAZmZ3bGwuY2g+DQo+IFNpZ25lZC1vZmYtYnk6IERtaXRyeSBPc2lwZW5r byA8ZG1pdHJ5Lm9zaXBlbmtvQGNvbGxhYm9yYS5jb20+DQoNCkhvdyBtdWNoIHRlc3Rpbmcg aGFzIHRoaXMgcGF0Y2ggc2Vlbj8NCg0KSSdtIGFza2luZyBiZWNhdXNlIHdoZW4gSSB0cmll ZCB0byBmaXggdGhlIGxvY2tpbmcgaW4gdGhpcyBjb2RlLCBJIGhhZCANCnRvIHJldmlldyBl dmVyeSBpbXBvcnRlciB0byBtYWtlIHN1cmUgdGhhdCBpdCBhcXVpcmVkIHRoZSBsb2NrLiBI YXMgdGhpcyANCnByb2JsZW0gYmVlbiByZXNvbHZlZD8NCg0KQmVzdCByZWdhcmRzDQpUaG9t YXMNCg0KPiAtLS0NCj4gICBkcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIu YyAgICAgICAgfCAxODUgKysrKysrKy0tLS0tLS0tLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJt L2xpbWEvbGltYV9nZW0uYyAgICAgICAgICAgICAgIHwgICA4ICstDQo+ICAgZHJpdmVycy9n cHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jICAgICAgIHwgICA3ICstDQo+ICAgLi4u L2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZ2VtX3Nocmlua2VyLmMgIHwgICA2ICstDQo+ ICAgZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jICAgICAgIHwgIDE5 ICstDQo+ICAgaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaCAgICAgICAgICAg IHwgIDE0ICstDQo+ICAgNiBmaWxlcyBjaGFuZ2VkLCA5NCBpbnNlcnRpb25zKCspLCAxNDUg ZGVsZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9n ZW1fc2htZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxw ZXIuYw0KPiBpbmRleCAxMzkyY2JkM2NjMDIuLmExZjJmMjE1OGM1MCAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMNCj4gQEAgLTg4LDggKzg4LDYg QEAgX19kcm1fZ2VtX3NobWVtX2NyZWF0ZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBzaXpl X3Qgc2l6ZSwgYm9vbCBwcml2YXRlKQ0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJZ290byBlcnJf cmVsZWFzZTsNCj4gICANCj4gLQltdXRleF9pbml0KCZzaG1lbS0+cGFnZXNfbG9jayk7DQo+ IC0JbXV0ZXhfaW5pdCgmc2htZW0tPnZtYXBfbG9jayk7DQo+ICAgCUlOSVRfTElTVF9IRUFE KCZzaG1lbS0+bWFkdl9saXN0KTsNCj4gICANCj4gICAJaWYgKCFwcml2YXRlKSB7DQo+IEBA IC0xNDEsMTEgKzEzOSwxMyBAQCB2b2lkIGRybV9nZW1fc2htZW1fZnJlZShzdHJ1Y3QgZHJt X2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7DQo+ICAgDQo+IC0JZHJtX1dBUk5fT04ob2Jq LT5kZXYsIHNobWVtLT52bWFwX3VzZV9jb3VudCk7DQo+IC0NCj4gICAJaWYgKG9iai0+aW1w b3J0X2F0dGFjaCkgew0KPiAgIAkJZHJtX3ByaW1lX2dlbV9kZXN0cm95KG9iaiwgc2htZW0t PnNndCk7DQo+ICAgCX0gZWxzZSB7DQo+ICsJCWRtYV9yZXN2X2xvY2soc2htZW0tPmJhc2Uu cmVzdiwgTlVMTCk7DQo+ICsNCj4gKwkJZHJtX1dBUk5fT04ob2JqLT5kZXYsIHNobWVtLT52 bWFwX3VzZV9jb3VudCk7DQo+ICsNCj4gICAJCWlmIChzaG1lbS0+c2d0KSB7DQo+ICAgCQkJ ZG1hX3VubWFwX3NndGFibGUob2JqLT5kZXYtPmRldiwgc2htZW0tPnNndCwNCj4gICAJCQkJ CSAgRE1BX0JJRElSRUNUSU9OQUwsIDApOw0KPiBAQCAtMTU0LDE4ICsxNTQsMTggQEAgdm9p ZCBkcm1fZ2VtX3NobWVtX2ZyZWUoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1l bSkNCj4gICAJCX0NCj4gICAJCWlmIChzaG1lbS0+cGFnZXMpDQo+ICAgCQkJZHJtX2dlbV9z aG1lbV9wdXRfcGFnZXMoc2htZW0pOw0KPiAtCX0NCj4gICANCj4gLQlkcm1fV0FSTl9PTihv YmotPmRldiwgc2htZW0tPnBhZ2VzX3VzZV9jb3VudCk7DQo+ICsJCWRybV9XQVJOX09OKG9i ai0+ZGV2LCBzaG1lbS0+cGFnZXNfdXNlX2NvdW50KTsNCj4gKw0KPiArCQlkbWFfcmVzdl91 bmxvY2soc2htZW0tPmJhc2UucmVzdik7DQo+ICsJfQ0KPiAgIA0KPiAgIAlkcm1fZ2VtX29i amVjdF9yZWxlYXNlKG9iaik7DQo+IC0JbXV0ZXhfZGVzdHJveSgmc2htZW0tPnBhZ2VzX2xv Y2spOw0KPiAtCW11dGV4X2Rlc3Ryb3koJnNobWVtLT52bWFwX2xvY2spOw0KPiAgIAlrZnJl ZShzaG1lbSk7DQo+ICAgfQ0KPiAgIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fc2htZW1f ZnJlZSk7DQo+ICAgDQo+IC1zdGF0aWMgaW50IGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX2xv Y2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiArc3RhdGljIGlu dCBkcm1fZ2VtX3NobWVtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3Qg KnNobWVtKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmc2ht ZW0tPmJhc2U7DQo+ICAgCXN0cnVjdCBwYWdlICoqcGFnZXM7DQo+IEBAIC0xOTcsMzUgKzE5 NywxNiBAQCBzdGF0aWMgaW50IGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX2xvY2tlZChzdHJ1 Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAgIH0NCj4gICANCj4gICAvKg0K PiAtICogZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXMgLSBBbGxvY2F0ZSBiYWNraW5nIHBhZ2Vz IGZvciBhIHNobWVtIEdFTSBvYmplY3QNCj4gKyAqIGRybV9nZW1fc2htZW1fcHV0X3BhZ2Vz IC0gRGVjcmVhc2UgdXNlIGNvdW50IG9uIHRoZSBiYWNraW5nIHBhZ2VzIGZvciBhIHNobWVt IEdFTSBvYmplY3QNCj4gICAgKiBAc2htZW06IHNobWVtIEdFTSBvYmplY3QNCj4gICAgKg0K PiAtICogVGhpcyBmdW5jdGlvbiBtYWtlcyBzdXJlIHRoYXQgYmFja2luZyBwYWdlcyBleGlz dHMgZm9yIHRoZSBzaG1lbSBHRU0gb2JqZWN0DQo+IC0gKiBhbmQgaW5jcmVhc2VzIHRoZSB1 c2UgY291bnQuDQo+IC0gKg0KPiAtICogUmV0dXJuczoNCj4gLSAqIDAgb24gc3VjY2VzcyBv ciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4NCj4gKyAqIFRoaXMgZnVuY3Rp b24gZGVjcmVhc2VzIHRoZSB1c2UgY291bnQgYW5kIHB1dHMgdGhlIGJhY2tpbmcgcGFnZXMg d2hlbiB1c2UgZHJvcHMgdG8gemVyby4NCj4gICAgKi8NCj4gLWludCBkcm1fZ2VtX3NobWVt X2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiArdm9p ZCBkcm1fZ2VtX3NobWVtX3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3Qg KnNobWVtKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmc2ht ZW0tPmJhc2U7DQo+IC0JaW50IHJldDsNCj4gICANCj4gLQlkcm1fV0FSTl9PTihvYmotPmRl diwgb2JqLT5pbXBvcnRfYXR0YWNoKTsNCj4gLQ0KPiAtCXJldCA9IG11dGV4X2xvY2tfaW50 ZXJydXB0aWJsZSgmc2htZW0tPnBhZ2VzX2xvY2spOw0KPiAtCWlmIChyZXQpDQo+IC0JCXJl dHVybiByZXQ7DQo+IC0JcmV0ID0gZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfbG9ja2VkKHNo bWVtKTsNCj4gLQltdXRleF91bmxvY2soJnNobWVtLT5wYWdlc19sb2NrKTsNCj4gLQ0KPiAt CXJldHVybiByZXQ7DQo+IC19DQo+IC1FWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fZ2V0 X3BhZ2VzKTsNCj4gLQ0KPiAtc3RhdGljIHZvaWQgZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXNf bG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pDQo+IC17DQo+IC0J c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7DQo+ICsJZG1hX3Jl c3ZfYXNzZXJ0X2hlbGQoc2htZW0tPmJhc2UucmVzdik7DQo+ICAgDQo+ICAgCWlmIChkcm1f V0FSTl9PTl9PTkNFKG9iai0+ZGV2LCAhc2htZW0tPnBhZ2VzX3VzZV9jb3VudCkpDQo+ICAg CQlyZXR1cm47DQo+IEBAIC0yNDMsMTkgKzIyNCw2IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1f c2htZW1fcHV0X3BhZ2VzX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNo bWVtKQ0KPiAgIAkJCSAgc2htZW0tPnBhZ2VzX21hcmtfYWNjZXNzZWRfb25fcHV0KTsNCj4g ICAJc2htZW0tPnBhZ2VzID0gTlVMTDsNCj4gICB9DQo+IC0NCj4gLS8qDQo+IC0gKiBkcm1f Z2VtX3NobWVtX3B1dF9wYWdlcyAtIERlY3JlYXNlIHVzZSBjb3VudCBvbiB0aGUgYmFja2lu ZyBwYWdlcyBmb3IgYSBzaG1lbSBHRU0gb2JqZWN0DQo+IC0gKiBAc2htZW06IHNobWVtIEdF TSBvYmplY3QNCj4gLSAqDQo+IC0gKiBUaGlzIGZ1bmN0aW9uIGRlY3JlYXNlcyB0aGUgdXNl IGNvdW50IGFuZCBwdXRzIHRoZSBiYWNraW5nIHBhZ2VzIHdoZW4gdXNlIGRyb3BzIHRvIHpl cm8uDQo+IC0gKi8NCj4gLXZvaWQgZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXMoc3RydWN0IGRy bV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gLXsNCj4gLQltdXRleF9sb2NrKCZzaG1l bS0+cGFnZXNfbG9jayk7DQo+IC0JZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXNfbG9ja2VkKHNo bWVtKTsNCj4gLQltdXRleF91bmxvY2soJnNobWVtLT5wYWdlc19sb2NrKTsNCj4gLX0NCj4g ICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKTsNCj4gICANCj4gICAv KioNCj4gQEAgLTI3Miw2ICsyNDAsOCBAQCBpbnQgZHJtX2dlbV9zaG1lbV9waW4oc3RydWN0 IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqID0gJnNobWVtLT5iYXNlOw0KPiAgIA0KPiArCWRtYV9yZXN2X2Fz c2VydF9oZWxkKHNobWVtLT5iYXNlLnJlc3YpOw0KPiArDQo+ICAgCWRybV9XQVJOX09OKG9i ai0+ZGV2LCBvYmotPmltcG9ydF9hdHRhY2gpOw0KPiAgIA0KPiAgIAlyZXR1cm4gZHJtX2dl bV9zaG1lbV9nZXRfcGFnZXMoc2htZW0pOw0KPiBAQCAtMjg5LDE0ICsyNTksMzEgQEAgdm9p ZCBkcm1fZ2VtX3NobWVtX3VucGluKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2ht ZW0pDQo+ICAgew0KPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZzaG1lbS0+ YmFzZTsNCj4gICANCj4gKwlkbWFfcmVzdl9hc3NlcnRfaGVsZChzaG1lbS0+YmFzZS5yZXN2 KTsNCj4gKw0KPiAgIAlkcm1fV0FSTl9PTihvYmotPmRldiwgb2JqLT5pbXBvcnRfYXR0YWNo KTsNCj4gICANCj4gICAJZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXMoc2htZW0pOw0KPiAgIH0N Cj4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fdW5waW4pOw0KPiAgIA0KPiAtc3Rh dGljIGludCBkcm1fZ2VtX3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVt X29iamVjdCAqc2htZW0sDQo+IC0JCQkJICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ ICsvKg0KPiArICogZHJtX2dlbV9zaG1lbV92bWFwIC0gQ3JlYXRlIGEgdmlydHVhbCBtYXBw aW5nIGZvciBhIHNobWVtIEdFTSBvYmplY3QNCj4gKyAqIEBzaG1lbTogc2htZW0gR0VNIG9i amVjdA0KPiArICogQG1hcDogUmV0dXJucyB0aGUga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBv ZiB0aGUgU0hNRU0gR0VNIG9iamVjdCdzIGJhY2tpbmcNCj4gKyAqICAgICAgIHN0b3JlLg0K PiArICoNCj4gKyAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3VyZSB0aGF0IGEgY29udGlndW91 cyBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcNCj4gKyAqIGV4aXN0cyBmb3IgdGhl IGJ1ZmZlciBiYWNraW5nIHRoZSBzaG1lbSBHRU0gb2JqZWN0LiBJdCBoaWRlcyB0aGUgZGlm ZmVyZW5jZXMNCj4gKyAqIGJldHdlZW4gZG1hLWJ1ZiBpbXBvcnRlZCBhbmQgbmF0aXZlbHkg YWxsb2NhdGVkIG9iamVjdHMuDQo+ICsgKg0KPiArICogQWNxdWlyZWQgbWFwcGluZ3Mgc2hv dWxkIGJlIGNsZWFuZWQgdXAgYnkgY2FsbGluZyBkcm1fZ2VtX3NobWVtX3Z1bm1hcCgpLg0K PiArICoNCj4gKyAqIFJldHVybnM6DQo+ICsgKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2 ZSBlcnJvciBjb2RlIG9uIGZhaWx1cmUuDQo+ICsgKi8NCj4gK2ludCBkcm1fZ2VtX3NobWVt X3ZtYXAoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4gKwkJICAgICAg IHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29i amVjdCAqb2JqID0gJnNobWVtLT5iYXNlOw0KPiAgIAlpbnQgcmV0ID0gMDsNCj4gQEAgLTMx Miw2ICsyOTksOCBAQCBzdGF0aWMgaW50IGRybV9nZW1fc2htZW1fdm1hcF9sb2NrZWQoc3Ry dWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4gICAJfSBlbHNlIHsNCj4gICAJ CXBncHJvdF90IHByb3QgPSBQQUdFX0tFUk5FTDsNCj4gICANCj4gKwkJZG1hX3Jlc3ZfYXNz ZXJ0X2hlbGQoc2htZW0tPmJhc2UucmVzdik7DQo+ICsNCj4gICAJCWlmIChzaG1lbS0+dm1h cF91c2VfY291bnQrKyA+IDApIHsNCj4gICAJCQlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwg c2htZW0tPnZhZGRyKTsNCj4gICAJCQlyZXR1cm4gMDsNCj4gQEAgLTM0Niw0NSArMzM1LDMw IEBAIHN0YXRpYyBpbnQgZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dl bV9zaG1lbV9vYmplY3QgKnNobWVtLA0KPiAgIA0KPiAgIAlyZXR1cm4gcmV0Ow0KPiAgIH0N Cj4gK0VYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV92bWFwKTsNCj4gICANCj4gICAvKg0K PiAtICogZHJtX2dlbV9zaG1lbV92bWFwIC0gQ3JlYXRlIGEgdmlydHVhbCBtYXBwaW5nIGZv ciBhIHNobWVtIEdFTSBvYmplY3QNCj4gKyAqIGRybV9nZW1fc2htZW1fdnVubWFwIC0gVW5t YXAgYSB2aXJ0dWFsIG1hcHBpbmcgZm9yIGEgc2htZW0gR0VNIG9iamVjdA0KPiAgICAqIEBz aG1lbTogc2htZW0gR0VNIG9iamVjdA0KPiAtICogQG1hcDogUmV0dXJucyB0aGUga2VybmVs IHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgU0hNRU0gR0VNIG9iamVjdCdzIGJhY2tpbmcNCj4g LSAqICAgICAgIHN0b3JlLg0KPiAtICoNCj4gLSAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3Vy ZSB0aGF0IGEgY29udGlndW91cyBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcNCj4g LSAqIGV4aXN0cyBmb3IgdGhlIGJ1ZmZlciBiYWNraW5nIHRoZSBzaG1lbSBHRU0gb2JqZWN0 LiBJdCBoaWRlcyB0aGUgZGlmZmVyZW5jZXMNCj4gLSAqIGJldHdlZW4gZG1hLWJ1ZiBpbXBv cnRlZCBhbmQgbmF0aXZlbHkgYWxsb2NhdGVkIG9iamVjdHMuDQo+ICsgKiBAbWFwOiBLZXJu ZWwgdmlydHVhbCBhZGRyZXNzIHdoZXJlIHRoZSBTSE1FTSBHRU0gb2JqZWN0IHdhcyBtYXBw ZWQNCj4gICAgKg0KPiAtICogQWNxdWlyZWQgbWFwcGluZ3Mgc2hvdWxkIGJlIGNsZWFuZWQg dXAgYnkgY2FsbGluZyBkcm1fZ2VtX3NobWVtX3Z1bm1hcCgpLg0KPiArICogVGhpcyBmdW5j dGlvbiBjbGVhbnMgdXAgYSBrZXJuZWwgdmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgYWNxdWly ZWQgYnkNCj4gKyAqIGRybV9nZW1fc2htZW1fdm1hcCgpLiBUaGUgbWFwcGluZyBpcyBvbmx5 IHJlbW92ZWQgd2hlbiB0aGUgdXNlIGNvdW50IGRyb3BzIHRvDQo+ICsgKiB6ZXJvLg0KPiAg ICAqDQo+IC0gKiBSZXR1cm5zOg0KPiAtICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRpdmUg ZXJyb3IgY29kZSBvbiBmYWlsdXJlLg0KPiArICogVGhpcyBmdW5jdGlvbiBoaWRlcyB0aGUg ZGlmZmVyZW5jZXMgYmV0d2VlbiBkbWEtYnVmIGltcG9ydGVkIGFuZCBuYXRpdmVseQ0KPiAr ICogYWxsb2NhdGVkIG9iamVjdHMuDQo+ICAgICovDQo+IC1pbnQgZHJtX2dlbV9zaG1lbV92 bWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sDQo+IC0JCSAgICAgICBz dHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+IC17DQo+IC0JaW50IHJldDsNCj4gLQ0KPiAtCXJl dCA9IG11dGV4X2xvY2tfaW50ZXJydXB0aWJsZSgmc2htZW0tPnZtYXBfbG9jayk7DQo+IC0J aWYgKHJldCkNCj4gLQkJcmV0dXJuIHJldDsNCj4gLQlyZXQgPSBkcm1fZ2VtX3NobWVtX3Zt YXBfbG9ja2VkKHNobWVtLCBtYXApOw0KPiAtCW11dGV4X3VubG9jaygmc2htZW0tPnZtYXBf bG9jayk7DQo+IC0NCj4gLQlyZXR1cm4gcmV0Ow0KPiAtfQ0KPiAtRVhQT1JUX1NZTUJPTChk cm1fZ2VtX3NobWVtX3ZtYXApOw0KPiAtDQo+IC1zdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVt X3Z1bm1hcF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4g LQkJCQkJc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiArdm9pZCBkcm1fZ2VtX3NobWVtX3Z1 bm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLA0KPiArCQkJICBzdHJ1 Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiA9ICZzaG1lbS0+YmFzZTsNCj4gICANCj4gICAJaWYgKG9iai0+aW1wb3J0X2F0dGFj aCkgew0KPiAgIAkJZG1hX2J1Zl92dW5tYXAob2JqLT5pbXBvcnRfYXR0YWNoLT5kbWFidWYs IG1hcCk7DQo+ICAgCX0gZWxzZSB7DQo+ICsJCWRtYV9yZXN2X2Fzc2VydF9oZWxkKHNobWVt LT5iYXNlLnJlc3YpOw0KPiArDQo+ICAgCQlpZiAoZHJtX1dBUk5fT05fT05DRShvYmotPmRl diwgIXNobWVtLT52bWFwX3VzZV9jb3VudCkpDQo+ICAgCQkJcmV0dXJuOw0KPiAgIA0KPiBA QCAtMzk3LDI2ICszNzEsNiBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcF9s b2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4gICANCj4gICAJ c2htZW0tPnZhZGRyID0gTlVMTDsNCj4gICB9DQo+IC0NCj4gLS8qDQo+IC0gKiBkcm1fZ2Vt X3NobWVtX3Z1bm1hcCAtIFVubWFwIGEgdmlydHVhbCBtYXBwaW5nIGZvciBhIHNobWVtIEdF TSBvYmplY3QNCj4gLSAqIEBzaG1lbTogc2htZW0gR0VNIG9iamVjdA0KPiAtICogQG1hcDog S2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aGVyZSB0aGUgU0hNRU0gR0VNIG9iamVjdCB3YXMg bWFwcGVkDQo+IC0gKg0KPiAtICogVGhpcyBmdW5jdGlvbiBjbGVhbnMgdXAgYSBrZXJuZWwg dmlydHVhbCBhZGRyZXNzIG1hcHBpbmcgYWNxdWlyZWQgYnkNCj4gLSAqIGRybV9nZW1fc2ht ZW1fdm1hcCgpLiBUaGUgbWFwcGluZyBpcyBvbmx5IHJlbW92ZWQgd2hlbiB0aGUgdXNlIGNv dW50IGRyb3BzIHRvDQo+IC0gKiB6ZXJvLg0KPiAtICoNCj4gLSAqIFRoaXMgZnVuY3Rpb24g aGlkZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gZG1hLWJ1ZiBpbXBvcnRlZCBhbmQgbmF0 aXZlbHkNCj4gLSAqIGFsbG9jYXRlZCBvYmplY3RzLg0KPiAtICovDQo+IC12b2lkIGRybV9n ZW1fc2htZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sDQo+ IC0JCQkgIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gLXsNCj4gLQltdXRleF9sb2NrKCZz aG1lbS0+dm1hcF9sb2NrKTsNCj4gLQlkcm1fZ2VtX3NobWVtX3Z1bm1hcF9sb2NrZWQoc2ht ZW0sIG1hcCk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZzaG1lbS0+dm1hcF9sb2NrKTsNCj4gLX0N Cj4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fdnVubWFwKTsNCj4gICANCj4gICBz dGF0aWMgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICoNCj4gQEAgLTQ0OSwyNCArNDAz LDI0IEBAIGRybV9nZW1fc2htZW1fY3JlYXRlX3dpdGhfaGFuZGxlKHN0cnVjdCBkcm1fZmls ZSAqZmlsZV9wcml2LA0KPiAgICAqLw0KPiAgIGludCBkcm1fZ2VtX3NobWVtX21hZHZpc2Uo c3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgaW50IG1hZHYpDQo+ICAgew0K PiAtCW11dGV4X2xvY2soJnNobWVtLT5wYWdlc19sb2NrKTsNCj4gKwlkbWFfcmVzdl9hc3Nl cnRfaGVsZChzaG1lbS0+YmFzZS5yZXN2KTsNCj4gICANCj4gICAJaWYgKHNobWVtLT5tYWR2 ID49IDApDQo+ICAgCQlzaG1lbS0+bWFkdiA9IG1hZHY7DQo+ICAgDQo+ICAgCW1hZHYgPSBz aG1lbS0+bWFkdjsNCj4gICANCj4gLQltdXRleF91bmxvY2soJnNobWVtLT5wYWdlc19sb2Nr KTsNCj4gLQ0KPiAgIAlyZXR1cm4gKG1hZHYgPj0gMCk7DQo+ICAgfQ0KPiAgIEVYUE9SVF9T WU1CT0woZHJtX2dlbV9zaG1lbV9tYWR2aXNlKTsNCj4gICANCj4gLXZvaWQgZHJtX2dlbV9z aG1lbV9wdXJnZV9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkN Cj4gK3ZvaWQgZHJtX2dlbV9zaG1lbV9wdXJnZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmpl Y3QgKnNobWVtKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAm c2htZW0tPmJhc2U7DQo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBvYmotPmRldjsN Cj4gICANCj4gKwlkbWFfcmVzdl9hc3NlcnRfaGVsZChzaG1lbS0+YmFzZS5yZXN2KTsNCj4g Kw0KPiAgIAlkcm1fV0FSTl9PTihvYmotPmRldiwgIWRybV9nZW1fc2htZW1faXNfcHVyZ2Vh YmxlKHNobWVtKSk7DQo+ICAgDQo+ICAgCWRtYV91bm1hcF9zZ3RhYmxlKGRldi0+ZGV2LCBz aG1lbS0+c2d0LCBETUFfQklESVJFQ1RJT05BTCwgMCk7DQo+IEBAIC00NzQsNyArNDI4LDcg QEAgdm9pZCBkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1l bV9vYmplY3QgKnNobWVtKQ0KPiAgIAlrZnJlZShzaG1lbS0+c2d0KTsNCj4gICAJc2htZW0t PnNndCA9IE5VTEw7DQo+ICAgDQo+IC0JZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXNfbG9ja2Vk KHNobWVtKTsNCj4gKwlkcm1fZ2VtX3NobWVtX3B1dF9wYWdlcyhzaG1lbSk7DQo+ICAgDQo+ ICAgCXNobWVtLT5tYWR2ID0gLTE7DQo+ICAgDQo+IEBAIC00OTAsMTcgKzQ0NCw2IEBAIHZv aWQgZHJtX2dlbV9zaG1lbV9wdXJnZV9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2Jq ZWN0ICpzaG1lbSkNCj4gICANCj4gICAJaW52YWxpZGF0ZV9tYXBwaW5nX3BhZ2VzKGZpbGVf aW5vZGUob2JqLT5maWxwKS0+aV9tYXBwaW5nLCAwLCAobG9mZl90KS0xKTsNCj4gICB9DQo+ IC1FWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fcHVyZ2VfbG9ja2VkKTsNCj4gLQ0KPiAt Ym9vbCBkcm1fZ2VtX3NobWVtX3B1cmdlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAq c2htZW0pDQo+IC17DQo+IC0JaWYgKCFtdXRleF90cnlsb2NrKCZzaG1lbS0+cGFnZXNfbG9j aykpDQo+IC0JCXJldHVybiBmYWxzZTsNCj4gLQlkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tl ZChzaG1lbSk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZzaG1lbS0+cGFnZXNfbG9jayk7DQo+IC0N Cj4gLQlyZXR1cm4gdHJ1ZTsNCj4gLX0NCj4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2ht ZW1fcHVyZ2UpOw0KPiAgIA0KPiAgIC8qKg0KPiBAQCAtNTU2LDcgKzQ5OSw3IEBAIHN0YXRp YyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fZmF1bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYp DQo+ICAgCS8qIFdlIGRvbid0IHVzZSB2bWYtPnBnb2ZmIHNpbmNlIHRoYXQgaGFzIHRoZSBm YWtlIG9mZnNldCAqLw0KPiAgIAlwYWdlX29mZnNldCA9ICh2bWYtPmFkZHJlc3MgLSB2bWEt PnZtX3N0YXJ0KSA+PiBQQUdFX1NISUZUOw0KPiAgIA0KPiAtCW11dGV4X2xvY2soJnNobWVt LT5wYWdlc19sb2NrKTsNCj4gKwlkbWFfcmVzdl9sb2NrKHNobWVtLT5iYXNlLnJlc3YsIE5V TEwpOw0KPiAgIA0KPiAgIAlpZiAocGFnZV9vZmZzZXQgPj0gbnVtX3BhZ2VzIHx8DQo+ICAg CSAgICBkcm1fV0FSTl9PTl9PTkNFKG9iai0+ZGV2LCAhc2htZW0tPnBhZ2VzKSB8fA0KPiBA QCAtNTY4LDcgKzUxMSw3IEBAIHN0YXRpYyB2bV9mYXVsdF90IGRybV9nZW1fc2htZW1fZmF1 bHQoc3RydWN0IHZtX2ZhdWx0ICp2bWYpDQo+ICAgCQlyZXQgPSB2bWZfaW5zZXJ0X3Bmbih2 bWEsIHZtZi0+YWRkcmVzcywgcGFnZV90b19wZm4ocGFnZSkpOw0KPiAgIAl9DQo+ICAgDQo+ IC0JbXV0ZXhfdW5sb2NrKCZzaG1lbS0+cGFnZXNfbG9jayk7DQo+ICsJZG1hX3Jlc3ZfdW5s b2NrKHNobWVtLT5iYXNlLnJlc3YpOw0KPiAgIA0KPiAgIAlyZXR1cm4gcmV0Ow0KPiAgIH0N Cj4gQEAgLTU4MCw3ICs1MjMsNyBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3ZtX29w ZW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpDQo+ICAgDQo+ICAgCWRybV9XQVJOX09O KG9iai0+ZGV2LCBvYmotPmltcG9ydF9hdHRhY2gpOw0KPiAgIA0KPiAtCW11dGV4X2xvY2so JnNobWVtLT5wYWdlc19sb2NrKTsNCj4gKwlkbWFfcmVzdl9sb2NrKHNobWVtLT5iYXNlLnJl c3YsIE5VTEwpOw0KPiAgIA0KPiAgIAkvKg0KPiAgIAkgKiBXZSBzaG91bGQgaGF2ZSBhbHJl YWR5IHBpbm5lZCB0aGUgcGFnZXMgd2hlbiB0aGUgYnVmZmVyIHdhcyBmaXJzdA0KPiBAQCAt NTkwLDcgKzUzMyw3IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fdm1fb3BlbihzdHJ1 Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZtYSkNCj4gICAJaWYgKCFkcm1fV0FSTl9PTl9PTkNFKG9i ai0+ZGV2LCAhc2htZW0tPnBhZ2VzX3VzZV9jb3VudCkpDQo+ICAgCQlzaG1lbS0+cGFnZXNf dXNlX2NvdW50Kys7DQo+ICAgDQo+IC0JbXV0ZXhfdW5sb2NrKCZzaG1lbS0+cGFnZXNfbG9j ayk7DQo+ICsJZG1hX3Jlc3ZfdW5sb2NrKHNobWVtLT5iYXNlLnJlc3YpOw0KPiAgIA0KPiAg IAlkcm1fZ2VtX3ZtX29wZW4odm1hKTsNCj4gICB9DQo+IEBAIC02MDAsNyArNTQzLDEwIEBA IHN0YXRpYyB2b2lkIGRybV9nZW1fc2htZW1fdm1fY2xvc2Uoc3RydWN0IHZtX2FyZWFfc3Ry dWN0ICp2bWEpDQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gdm1hLT52bV9w cml2YXRlX2RhdGE7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0g PSB0b19kcm1fZ2VtX3NobWVtX29iaihvYmopOw0KPiAgIA0KPiArCWRtYV9yZXN2X2xvY2so c2htZW0tPmJhc2UucmVzdiwgTlVMTCk7DQo+ICAgCWRybV9nZW1fc2htZW1fcHV0X3BhZ2Vz KHNobWVtKTsNCj4gKwlkbWFfcmVzdl91bmxvY2soc2htZW0tPmJhc2UucmVzdik7DQo+ICsN Cj4gICAJZHJtX2dlbV92bV9jbG9zZSh2bWEpOw0KPiAgIH0NCj4gICANCj4gQEAgLTYzNSw3 ICs1ODEsMTAgQEAgaW50IGRybV9nZW1fc2htZW1fbW1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1l bV9vYmplY3QgKnNobWVtLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QNCj4gICAJCXJldHVybiBk bWFfYnVmX21tYXAob2JqLT5kbWFfYnVmLCB2bWEsIDApOw0KPiAgIAl9DQo+ICAgDQo+ICsJ ZG1hX3Jlc3ZfbG9jayhzaG1lbS0+YmFzZS5yZXN2LCBOVUxMKTsNCj4gICAJcmV0ID0gZHJt X2dlbV9zaG1lbV9nZXRfcGFnZXMoc2htZW0pOw0KPiArCWRtYV9yZXN2X3VubG9jayhzaG1l bS0+YmFzZS5yZXN2KTsNCj4gKw0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0dXJuIHJldDsN Cj4gICANCj4gQEAgLTcyMSw5ICs2NzAsMTEgQEAgc3RydWN0IHNnX3RhYmxlICpkcm1fZ2Vt X3NobWVtX2dldF9wYWdlc19zZ3Qoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1l bSkNCj4gICANCj4gICAJZHJtX1dBUk5fT04ob2JqLT5kZXYsIG9iai0+aW1wb3J0X2F0dGFj aCk7DQo+ICAgDQo+ICsJZG1hX3Jlc3ZfbG9jayhzaG1lbS0+YmFzZS5yZXN2LCBOVUxMKTsN Cj4gKw0KPiAgIAlyZXQgPSBkcm1fZ2VtX3NobWVtX2dldF9wYWdlcyhzaG1lbSk7DQo+ICAg CWlmIChyZXQpDQo+IC0JCXJldHVybiBFUlJfUFRSKHJldCk7DQo+ICsJCWdvdG8gZXJyX3Vu bG9jazsNCj4gICANCj4gICAJc2d0ID0gZHJtX2dlbV9zaG1lbV9nZXRfc2dfdGFibGUoc2ht ZW0pOw0KPiAgIAlpZiAoSVNfRVJSKHNndCkpIHsNCj4gQEAgLTczNyw2ICs2ODgsOCBAQCBz dHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX3NndChzdHJ1Y3QgZHJt X2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAgIA0KPiAgIAlzaG1lbS0+c2d0ID0gc2d0 Ow0KPiAgIA0KPiArCWRtYV9yZXN2X3VubG9jayhzaG1lbS0+YmFzZS5yZXN2KTsNCj4gKw0K PiAgIAlyZXR1cm4gc2d0Ow0KPiAgIA0KPiAgIGVycl9mcmVlX3NndDoNCj4gQEAgLTc0NCw2 ICs2OTcsOCBAQCBzdHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX3Nn dChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAgIAlrZnJlZShzZ3Qp Ow0KPiAgIGVycl9wdXRfcGFnZXM6DQo+ICAgCWRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKHNo bWVtKTsNCj4gK2Vycl91bmxvY2s6DQo+ICsJZG1hX3Jlc3ZfdW5sb2NrKHNobWVtLT5iYXNl LnJlc3YpOw0KPiAgIAlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiAgIH0NCj4gICBFWFBPUlRf U1lNQk9MX0dQTChkcm1fZ2VtX3NobWVtX2dldF9wYWdlc19zZ3QpOw0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9s aW1hL2xpbWFfZ2VtLmMNCj4gaW5kZXggMGYxY2EwYjBkYjQ5Li41MDA4ZjBjMjQyOGYgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYw0KPiBAQCAtMzQsNyArMzQsNyBAQCBp bnQgbGltYV9oZWFwX2FsbG9jKHN0cnVjdCBsaW1hX2JvICpibywgc3RydWN0IGxpbWFfdm0g KnZtKQ0KPiAgIA0KPiAgIAluZXdfc2l6ZSA9IG1pbihuZXdfc2l6ZSwgYm8tPmJhc2UuYmFz ZS5zaXplKTsNCj4gICANCj4gLQltdXRleF9sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsN Cj4gKwlkbWFfcmVzdl9sb2NrKGJvLT5iYXNlLmJhc2UucmVzdiwgTlVMTCk7DQo+ICAgDQo+ ICAgCWlmIChiby0+YmFzZS5wYWdlcykgew0KPiAgIAkJcGFnZXMgPSBiby0+YmFzZS5wYWdl czsNCj4gQEAgLTQyLDcgKzQyLDcgQEAgaW50IGxpbWFfaGVhcF9hbGxvYyhzdHJ1Y3QgbGlt YV9ibyAqYm8sIHN0cnVjdCBsaW1hX3ZtICp2bSkNCj4gICAJCXBhZ2VzID0ga3ZtYWxsb2Nf YXJyYXkoYm8tPmJhc2UuYmFzZS5zaXplID4+IFBBR0VfU0hJRlQsDQo+ICAgCQkJCSAgICAg ICBzaXplb2YoKnBhZ2VzKSwgR0ZQX0tFUk5FTCB8IF9fR0ZQX1pFUk8pOw0KPiAgIAkJaWYg KCFwYWdlcykgew0KPiAtCQkJbXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsN Cj4gKwkJCWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5iYXNlLnJlc3YpOw0KPiAgIAkJCXJl dHVybiAtRU5PTUVNOw0KPiAgIAkJfQ0KPiAgIA0KPiBAQCAtNTYsMTMgKzU2LDEzIEBAIGlu dCBsaW1hX2hlYXBfYWxsb2Moc3RydWN0IGxpbWFfYm8gKmJvLCBzdHJ1Y3QgbGltYV92bSAq dm0pDQo+ICAgCQlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHNobWVtX3JlYWRfbWFwcGluZ19wYWdl KG1hcHBpbmcsIGkpOw0KPiAgIA0KPiAgIAkJaWYgKElTX0VSUihwYWdlKSkgew0KPiAtCQkJ bXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsNCj4gKwkJCWRtYV9yZXN2X3Vu bG9jayhiby0+YmFzZS5iYXNlLnJlc3YpOw0KPiAgIAkJCXJldHVybiBQVFJfRVJSKHBhZ2Up Ow0KPiAgIAkJfQ0KPiAgIAkJcGFnZXNbaV0gPSBwYWdlOw0KPiAgIAl9DQo+ICAgDQo+IC0J bXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsNCj4gKwlkbWFfcmVzdl91bmxv Y2soYm8tPmJhc2UuYmFzZS5yZXN2KTsNCj4gICANCj4gICAJcmV0ID0gc2dfYWxsb2NfdGFi bGVfZnJvbV9wYWdlcygmc2d0LCBwYWdlcywgaSwgMCwNCj4gICAJCQkJCW5ld19zaXplLCBH RlBfS0VSTkVMKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9w YW5mcm9zdF9kcnYuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYu Yw0KPiBpbmRleCBhYmIwZGFkZDhmNjMuLjlmM2YyMjgzYjY3YSAxMDA2NDQNCj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2Rydi5jDQo+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYw0KPiBAQCAtNDE0LDYgKzQxNCwx MCBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X2lvY3RsX21hZHZpc2Uoc3RydWN0IGRybV9kZXZp Y2UgKmRldiwgdm9pZCAqZGF0YSwNCj4gICANCj4gICAJYm8gPSB0b19wYW5mcm9zdF9ibyhn ZW1fb2JqKTsNCj4gICANCj4gKwlyZXQgPSBkbWFfcmVzdl9sb2NrX2ludGVycnVwdGlibGUo Ym8tPmJhc2UuYmFzZS5yZXN2LCBOVUxMKTsNCj4gKwlpZiAocmV0KQ0KPiArCQlnb3RvIG91 dF9wdXRfb2JqZWN0Ow0KPiArDQo+ICAgCW11dGV4X2xvY2soJnBmZGV2LT5zaHJpbmtlcl9s b2NrKTsNCj4gICAJbXV0ZXhfbG9jaygmYm8tPm1hcHBpbmdzLmxvY2spOw0KPiAgIAlpZiAo YXJncy0+bWFkdiA9PSBQQU5GUk9TVF9NQURWX0RPTlRORUVEKSB7DQo+IEBAIC00NTEsNyAr NDU1LDggQEAgc3RhdGljIGludCBwYW5mcm9zdF9pb2N0bF9tYWR2aXNlKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsDQo+ICAgb3V0X3VubG9ja19tYXBwaW5nczoNCj4g ICAJbXV0ZXhfdW5sb2NrKCZiby0+bWFwcGluZ3MubG9jayk7DQo+ICAgCW11dGV4X3VubG9j aygmcGZkZXYtPnNocmlua2VyX2xvY2spOw0KPiAtDQo+ICsJZG1hX3Jlc3ZfdW5sb2NrKGJv LT5iYXNlLmJhc2UucmVzdik7DQo+ICtvdXRfcHV0X29iamVjdDoNCj4gICAJZHJtX2dlbV9v YmplY3RfcHV0KGdlbV9vYmopOw0KPiAgIAlyZXR1cm4gcmV0Ow0KPiAgIH0NCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW1fc2hyaW5rZXIu YyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW1fc2hyaW5rZXIuYw0K PiBpbmRleCBiZjAxNzA3ODJmMjUuLjZhNzFhMjU1NWY4NSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbV9zaHJpbmtlci5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9nZW1fc2hyaW5rZXIuYw0KPiBA QCAtNDgsMTQgKzQ4LDE0IEBAIHN0YXRpYyBib29sIHBhbmZyb3N0X2dlbV9wdXJnZShzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaikNCj4gICAJaWYgKCFtdXRleF90cnlsb2NrKCZiby0+ bWFwcGluZ3MubG9jaykpDQo+ICAgCQlyZXR1cm4gZmFsc2U7DQo+ICAgDQo+IC0JaWYgKCFt dXRleF90cnlsb2NrKCZzaG1lbS0+cGFnZXNfbG9jaykpDQo+ICsJaWYgKCFkbWFfcmVzdl90 cnlsb2NrKHNobWVtLT5iYXNlLnJlc3YpKQ0KPiAgIAkJZ290byB1bmxvY2tfbWFwcGluZ3M7 DQo+ICAgDQo+ICAgCXBhbmZyb3N0X2dlbV90ZWFyZG93bl9tYXBwaW5nc19sb2NrZWQoYm8p Ow0KPiAtCWRybV9nZW1fc2htZW1fcHVyZ2VfbG9ja2VkKCZiby0+YmFzZSk7DQo+ICsJZHJt X2dlbV9zaG1lbV9wdXJnZSgmYm8tPmJhc2UpOw0KPiAgIAlyZXQgPSB0cnVlOw0KPiAgIA0K PiAtCW11dGV4X3VubG9jaygmc2htZW0tPnBhZ2VzX2xvY2spOw0KPiArCWRtYV9yZXN2X3Vu bG9jayhzaG1lbS0+YmFzZS5yZXN2KTsNCj4gICANCj4gICB1bmxvY2tfbWFwcGluZ3M6DQo+ ICAgCW11dGV4X3VubG9jaygmYm8tPm1hcHBpbmdzLmxvY2spOw0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jIGIvZHJpdmVycy9ncHUv ZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jDQo+IGluZGV4IDY2NmE1ZTUzZmUxOS4uMDY3 OWRmNTdmMzk0IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfbW11LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0 X21tdS5jDQo+IEBAIC00NDMsNiArNDQzLDcgQEAgc3RhdGljIGludCBwYW5mcm9zdF9tbXVf bWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIGludCBhcywN Cj4gICAJc3RydWN0IHBhbmZyb3N0X2dlbV9tYXBwaW5nICpib21hcHBpbmc7DQo+ICAgCXN0 cnVjdCBwYW5mcm9zdF9nZW1fb2JqZWN0ICpibzsNCj4gICAJc3RydWN0IGFkZHJlc3Nfc3Bh Y2UgKm1hcHBpbmc7DQo+ICsJc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmo7DQo+ICAgCXBn b2ZmX3QgcGFnZV9vZmZzZXQ7DQo+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2d0Ow0KPiAgIAlz dHJ1Y3QgcGFnZSAqKnBhZ2VzOw0KPiBAQCAtNDY1LDE1ICs0NjYsMTYgQEAgc3RhdGljIGlu dCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAq cGZkZXYsIGludCBhcywNCj4gICAJcGFnZV9vZmZzZXQgPSBhZGRyID4+IFBBR0VfU0hJRlQ7 DQo+ICAgCXBhZ2Vfb2Zmc2V0IC09IGJvbWFwcGluZy0+bW1ub2RlLnN0YXJ0Ow0KPiAgIA0K PiAtCW11dGV4X2xvY2soJmJvLT5iYXNlLnBhZ2VzX2xvY2spOw0KPiArCW9iaiA9ICZiby0+ YmFzZS5iYXNlOw0KPiArDQo+ICsJZG1hX3Jlc3ZfbG9jayhvYmotPnJlc3YsIE5VTEwpOw0K PiAgIA0KPiAgIAlpZiAoIWJvLT5iYXNlLnBhZ2VzKSB7DQo+ICAgCQliby0+c2d0cyA9IGt2 bWFsbG9jX2FycmF5KGJvLT5iYXNlLmJhc2Uuc2l6ZSAvIFNaXzJNLA0KPiAgIAkJCQkgICAg IHNpemVvZihzdHJ1Y3Qgc2dfdGFibGUpLCBHRlBfS0VSTkVMIHwgX19HRlBfWkVSTyk7DQo+ ICAgCQlpZiAoIWJvLT5zZ3RzKSB7DQo+IC0JCQltdXRleF91bmxvY2soJmJvLT5iYXNlLnBh Z2VzX2xvY2spOw0KPiAgIAkJCXJldCA9IC1FTk9NRU07DQo+IC0JCQlnb3RvIGVycl9ibzsN Cj4gKwkJCWdvdG8gZXJyX3VubG9jazsNCj4gICAJCX0NCj4gICANCj4gICAJCXBhZ2VzID0g a3ZtYWxsb2NfYXJyYXkoYm8tPmJhc2UuYmFzZS5zaXplID4+IFBBR0VfU0hJRlQsDQo+IEBA IC00ODEsOSArNDgzLDggQEAgc3RhdGljIGludCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2Fk ZHIoc3RydWN0IHBhbmZyb3N0X2RldmljZSAqcGZkZXYsIGludCBhcywNCj4gICAJCWlmICgh cGFnZXMpIHsNCj4gICAJCQlrdmZyZWUoYm8tPnNndHMpOw0KPiAgIAkJCWJvLT5zZ3RzID0g TlVMTDsNCj4gLQkJCW11dGV4X3VubG9jaygmYm8tPmJhc2UucGFnZXNfbG9jayk7DQo+ICAg CQkJcmV0ID0gLUVOT01FTTsNCj4gLQkJCWdvdG8gZXJyX2JvOw0KPiArCQkJZ290byBlcnJf dW5sb2NrOw0KPiAgIAkJfQ0KPiAgIAkJYm8tPmJhc2UucGFnZXMgPSBwYWdlczsNCj4gICAJ CWJvLT5iYXNlLnBhZ2VzX3VzZV9jb3VudCA9IDE7DQo+IEBAIC00OTEsNyArNDkyLDYgQEAg c3RhdGljIGludCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0 X2RldmljZSAqcGZkZXYsIGludCBhcywNCj4gICAJCXBhZ2VzID0gYm8tPmJhc2UucGFnZXM7 DQo+ICAgCQlpZiAocGFnZXNbcGFnZV9vZmZzZXRdKSB7DQo+ICAgCQkJLyogUGFnZXMgYXJl IGFscmVhZHkgbWFwcGVkLCBiYWlsIG91dC4gKi8NCj4gLQkJCW11dGV4X3VubG9jaygmYm8t PmJhc2UucGFnZXNfbG9jayk7DQo+ICAgCQkJZ290byBvdXQ7DQo+ICAgCQl9DQo+ICAgCX0N Cj4gQEAgLTUwMiwxNCArNTAyLDExIEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfbW11X21hcF9m YXVsdF9hZGRyKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBpbnQgYXMsDQo+ICAg CWZvciAoaSA9IHBhZ2Vfb2Zmc2V0OyBpIDwgcGFnZV9vZmZzZXQgKyBOVU1fRkFVTFRfUEFH RVM7IGkrKykgew0KPiAgIAkJcGFnZXNbaV0gPSBzaG1lbV9yZWFkX21hcHBpbmdfcGFnZSht YXBwaW5nLCBpKTsNCj4gICAJCWlmIChJU19FUlIocGFnZXNbaV0pKSB7DQo+IC0JCQltdXRl eF91bmxvY2soJmJvLT5iYXNlLnBhZ2VzX2xvY2spOw0KPiAgIAkJCXJldCA9IFBUUl9FUlIo cGFnZXNbaV0pOw0KPiAgIAkJCWdvdG8gZXJyX3BhZ2VzOw0KPiAgIAkJfQ0KPiAgIAl9DQo+ ICAgDQo+IC0JbXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsNCj4gLQ0KPiAg IAlzZ3QgPSAmYm8tPnNndHNbcGFnZV9vZmZzZXQgLyAoU1pfMk0gLyBQQUdFX1NJWkUpXTsN Cj4gICAJcmV0ID0gc2dfYWxsb2NfdGFibGVfZnJvbV9wYWdlcyhzZ3QsIHBhZ2VzICsgcGFn ZV9vZmZzZXQsDQo+ICAgCQkJCQlOVU1fRkFVTFRfUEFHRVMsIDAsIFNaXzJNLCBHRlBfS0VS TkVMKTsNCj4gQEAgLTUyOCw2ICs1MjUsOCBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X21tdV9t YXBfZmF1bHRfYWRkcihzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgaW50IGFzLA0K PiAgIAlkZXZfZGJnKHBmZGV2LT5kZXYsICJtYXBwZWQgcGFnZSBmYXVsdCBAIEFTJWQgJWxs eCIsIGFzLCBhZGRyKTsNCj4gICANCj4gICBvdXQ6DQo+ICsJZG1hX3Jlc3ZfdW5sb2NrKG9i ai0+cmVzdik7DQo+ICsNCj4gICAJcGFuZnJvc3RfZ2VtX21hcHBpbmdfcHV0KGJvbWFwcGlu Zyk7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiBAQCAtNTM2LDYgKzUzNSw4IEBAIHN0YXRp YyBpbnQgcGFuZnJvc3RfbW11X21hcF9mYXVsdF9hZGRyKHN0cnVjdCBwYW5mcm9zdF9kZXZp Y2UgKnBmZGV2LCBpbnQgYXMsDQo+ICAgCXNnX2ZyZWVfdGFibGUoc2d0KTsNCj4gICBlcnJf cGFnZXM6DQo+ICAgCWRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKCZiby0+YmFzZSk7DQo+ICtl cnJfdW5sb2NrOg0KPiArCWRtYV9yZXN2X3VubG9jayhvYmotPnJlc3YpOw0KPiAgIGVycl9i bzoNCj4gICAJcGFuZnJvc3RfZ2VtX21hcHBpbmdfcHV0KGJvbWFwcGluZyk7DQo+ICAgCXJl dHVybiByZXQ7DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtX3NobWVtX2hl bHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaA0KPiBpbmRleCA1 OTk0ZmVkNWUzMjcuLjIwZGRjZDc5OWRmOSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9kcm0v ZHJtX2dlbV9zaG1lbV9oZWxwZXIuaA0KPiArKysgYi9pbmNsdWRlL2RybS9kcm1fZ2VtX3No bWVtX2hlbHBlci5oDQo+IEBAIC0yNiwxMSArMjYsNiBAQCBzdHJ1Y3QgZHJtX2dlbV9zaG1l bV9vYmplY3Qgew0KPiAgIAkgKi8NCj4gICAJc3RydWN0IGRybV9nZW1fb2JqZWN0IGJhc2U7 DQo+ICAgDQo+IC0JLyoqDQo+IC0JICogQHBhZ2VzX2xvY2s6IFByb3RlY3RzIHRoZSBwYWdl IHRhYmxlIGFuZCB1c2UgY291bnQNCj4gLQkgKi8NCj4gLQlzdHJ1Y3QgbXV0ZXggcGFnZXNf bG9jazsNCj4gLQ0KPiAgIAkvKioNCj4gICAJICogQHBhZ2VzOiBQYWdlIHRhYmxlDQo+ICAg CSAqLw0KPiBAQCAtNjUsMTEgKzYwLDYgQEAgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0 IHsNCj4gICAJICovDQo+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2d0Ow0KPiAgIA0KPiAtCS8q Kg0KPiAtCSAqIEB2bWFwX2xvY2s6IFByb3RlY3RzIHRoZSB2bWFwIGFkZHJlc3MgYW5kIHVz ZSBjb3VudA0KPiAtCSAqLw0KPiAtCXN0cnVjdCBtdXRleCB2bWFwX2xvY2s7DQo+IC0NCj4g ICAJLyoqDQo+ICAgCSAqIEB2YWRkcjogS2VybmVsIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUg YmFja2luZyBtZW1vcnkNCj4gICAJICovDQo+IEBAIC0xMDksNyArOTksNiBAQCBzdHJ1Y3Qg ZHJtX2dlbV9zaG1lbV9vYmplY3Qgew0KPiAgIHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqZHJtX2dlbV9zaG1lbV9jcmVhdGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90 IHNpemUpOw0KPiAgIHZvaWQgZHJtX2dlbV9zaG1lbV9mcmVlKHN0cnVjdCBkcm1fZ2VtX3No bWVtX29iamVjdCAqc2htZW0pOw0KPiAgIA0KPiAtaW50IGRybV9nZW1fc2htZW1fZ2V0X3Bh Z2VzKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pOw0KPiAgIHZvaWQgZHJt X2dlbV9zaG1lbV9wdXRfcGFnZXMoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1l bSk7DQo+ICAgaW50IGRybV9nZW1fc2htZW1fcGluKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29i amVjdCAqc2htZW0pOw0KPiAgIHZvaWQgZHJtX2dlbV9zaG1lbV91bnBpbihzdHJ1Y3QgZHJt X2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsNCj4gQEAgLTEyOCw4ICsxMTcsNyBAQCBzdGF0 aWMgaW5saW5lIGJvb2wgZHJtX2dlbV9zaG1lbV9pc19wdXJnZWFibGUoc3RydWN0IGRybV9n ZW1fc2htZW1fb2JqZWN0ICpzaG1lbQ0KPiAgIAkJIXNobWVtLT5iYXNlLmRtYV9idWYgJiYg IXNobWVtLT5iYXNlLmltcG9ydF9hdHRhY2g7DQo+ICAgfQ0KPiAgIA0KPiAtdm9pZCBkcm1f Z2VtX3NobWVtX3B1cmdlX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNo bWVtKTsNCj4gLWJvb2wgZHJtX2dlbV9zaG1lbV9wdXJnZShzdHJ1Y3QgZHJtX2dlbV9zaG1l bV9vYmplY3QgKnNobWVtKTsNCj4gK3ZvaWQgZHJtX2dlbV9zaG1lbV9wdXJnZShzdHJ1Y3Qg ZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsNCj4gICANCj4gICBzdHJ1Y3Qgc2dfdGFi bGUgKmRybV9nZW1fc2htZW1fZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29i amVjdCAqc2htZW0pOw0KPiAgIHN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9zaG1lbV9nZXRf cGFnZXNfc2d0KHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pOw0KDQotLSAN ClRob21hcyBaaW1tZXJtYW5uDQpHcmFwaGljcyBEcml2ZXIgRGV2ZWxvcGVyDQpTVVNFIFNv ZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgNCk1heGZlbGRzdHIuIDUsIDkwNDA5IE7D vHJuYmVyZywgR2VybWFueQ0KKEhSQiAzNjgwOSwgQUcgTsO8cm5iZXJnKQ0KR2VzY2jDpGZ0 c2bDvGhyZXI6IEl2byBUb3Rldg0K --------------fjh8o8iBKvqEJVauAUWlqWLh-- --------------dqTn7Rpi2DJUiZqTbazpgAun Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmPveKAFAwAAAAAACgkQlh/E3EQov+Cp 4Q//d6/WxD0UOS5W3eNNOIWkZrN6hP+pHxJ3AZibOheX2ucYseDOofmrB2ZbcUs1oG/+1+/LJH5A j7MTPzotnJF+/1WIsyKnd2jXe78E6t/hBkATSMhblMcAfe7naIIRW+IxzI9N/Oas5IFfZAugP+Z+ QfjVevqZfjhw2yWRHId81sLeaVoGj40cQSerK0RhET+ncCFvNAwhIzAXLXv1WJBAnEC7EwD58Yzq PPxSwoL3Rr5pYsmIGxLCKj8r3Sh4CX+4uUUhenOyt9V0MAU9EIQ8lCg0vtdU2rFICfbrzAvvYdn+ GvEuDt5Ymfw4hbItzZ4z3ygwAIqXJSUugCOVuyJs2H/m21vE6H7MRjHNuC48m4P5N6kq+lqmFygn q2O0fFIc5GXnm1l10P5EGNZr1cS4bEbC0L3Ccv3LF/ojMeyN2ZdUNU3BuSsFzMGKMQ76gOTAfPaP GRrwLPnB5MSJgwsKCAn5dRTbyCb09mU9dH7TNbSNhvVx1MjZvZMsjWTbCZUhVIz6+Jjf7ASS8CTh QlgGGc2UiE3KnBBHTEQqiSXWIoVRid2sc8fhbuBOMtJ/iAtTv1hcWGWF8Diu/Vl8m6Zx33+fzJnf LJMvz+tve5W2zuuu1Z5t4LbEiGh7ZnMnUJj0bjpfIhgIAsvTMeUiQDhfmJ8a/87aMGZN98p881ry JuI= =F59b -----END PGP SIGNATURE----- --------------dqTn7Rpi2DJUiZqTbazpgAun--