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 20D05C05027 for ; Fri, 17 Feb 2023 13:30:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229830AbjBQNah (ORCPT ); Fri, 17 Feb 2023 08:30:37 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53266 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229557AbjBQNaf (ORCPT ); Fri, 17 Feb 2023 08:30:35 -0500 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4CBE969292 for ; Fri, 17 Feb 2023 05:30:00 -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 2629022AE5; Fri, 17 Feb 2023 13:29:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1676640581; 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=bENFgS7ZVG2nQUXPZbAOkXgIZWrEKgc6hLLAVlTGeuY=; b=1cu0EDAtJjylKsZLfP4nxyJLYXjcUAAQQfBmNJEhKEibmFw30+dLZMsXV/+xVI7shpumO4 p3w3MCIVrjg9fOHi7K2+DbHDobICQcHyPiecm7L+/NFc/ez/mElTUG0Bxc2JEzrHH4db75 54OpIlWWu9rxTlLs9K0j/fqeylK3FZI= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1676640581; 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=bENFgS7ZVG2nQUXPZbAOkXgIZWrEKgc6hLLAVlTGeuY=; b=ymCKJkK/uCo7wccGnsLuG7t6mhnQCAtPWdtKmFv2+O+1cJR1taupl6LS55lE/XmNocAddB TV+cUAVWHVMmhUDg== 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 9DE4B138E3; Fri, 17 Feb 2023 13:29:40 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 6yVgJUSB72MfBAAAMHmgww (envelope-from ); Fri, 17 Feb 2023 13:29:40 +0000 Message-ID: Date: Fri, 17 Feb 2023 14:29:40 +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: kernel@collabora.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, 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="------------RrIn3yMct3PMMuUkiKv3lqdy" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------RrIn3yMct3PMMuUkiKv3lqdy Content-Type: multipart/mixed; boundary="------------A1hwvEEXrTSZPbW9fVqPC0EU"; 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: kernel@collabora.com, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, 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> --------------A1hwvEEXrTSZPbW9fVqPC0EU 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+DQoNCkkgZG9uJ3QgZGFyZSB0byBy LWIgdGhpcywgYnV0IHRha2UgbXkNCg0KQWNrZWQtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0 emltbWVybWFubkBzdXNlLmRlPg0KDQppZiB5b3Ugd2FudCB0byBsYW5kIHRoaXMgcGF0Y2gu DQoNCkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4gLS0tDQo+ICAgZHJpdmVycy9ncHUvZHJt L2RybV9nZW1fc2htZW1faGVscGVyLmMgICAgICAgIHwgMTg1ICsrKysrKystLS0tLS0tLS0t LQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMgICAgICAgICAgICAgICB8 ICAgOCArLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9kcnYuYyAg ICAgICB8ICAgNyArLQ0KPiAgIC4uLi9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X2dlbV9z aHJpbmtlci5jICB8ICAgNiArLQ0KPiAgIGRyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5m cm9zdF9tbXUuYyAgICAgICB8ICAxOSArLQ0KPiAgIGluY2x1ZGUvZHJtL2RybV9nZW1fc2ht ZW1faGVscGVyLmggICAgICAgICAgICB8ICAxNCArLQ0KPiAgIDYgZmlsZXMgY2hhbmdlZCwg OTQgaW5zZXJ0aW9ucygrKSwgMTQ1IGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5jIGIvZHJpdmVycy9ncHUv ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMNCj4gaW5kZXggMTM5MmNiZDNjYzAyLi5hMWYy ZjIxNThjNTAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVt X2hlbHBlci5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3NobWVtX2hlbHBl ci5jDQo+IEBAIC04OCw4ICs4OCw2IEBAIF9fZHJtX2dlbV9zaG1lbV9jcmVhdGUoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwgc2l6ZV90IHNpemUsIGJvb2wgcHJpdmF0ZSkNCj4gICAJaWYg KHJldCkNCj4gICAJCWdvdG8gZXJyX3JlbGVhc2U7DQo+ICAgDQo+IC0JbXV0ZXhfaW5pdCgm c2htZW0tPnBhZ2VzX2xvY2spOw0KPiAtCW11dGV4X2luaXQoJnNobWVtLT52bWFwX2xvY2sp Ow0KPiAgIAlJTklUX0xJU1RfSEVBRCgmc2htZW0tPm1hZHZfbGlzdCk7DQo+ICAgDQo+ICAg CWlmICghcHJpdmF0ZSkgew0KPiBAQCAtMTQxLDExICsxMzksMTMgQEAgdm9pZCBkcm1fZ2Vt X3NobWVtX2ZyZWUoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICB7 DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gJnNobWVtLT5iYXNlOw0KPiAg IA0KPiAtCWRybV9XQVJOX09OKG9iai0+ZGV2LCBzaG1lbS0+dm1hcF91c2VfY291bnQpOw0K PiAtDQo+ICAgCWlmIChvYmotPmltcG9ydF9hdHRhY2gpIHsNCj4gICAJCWRybV9wcmltZV9n ZW1fZGVzdHJveShvYmosIHNobWVtLT5zZ3QpOw0KPiAgIAl9IGVsc2Ugew0KPiArCQlkbWFf cmVzdl9sb2NrKHNobWVtLT5iYXNlLnJlc3YsIE5VTEwpOw0KPiArDQo+ICsJCWRybV9XQVJO X09OKG9iai0+ZGV2LCBzaG1lbS0+dm1hcF91c2VfY291bnQpOw0KPiArDQo+ICAgCQlpZiAo c2htZW0tPnNndCkgew0KPiAgIAkJCWRtYV91bm1hcF9zZ3RhYmxlKG9iai0+ZGV2LT5kZXYs IHNobWVtLT5zZ3QsDQo+ICAgCQkJCQkgIERNQV9CSURJUkVDVElPTkFMLCAwKTsNCj4gQEAg LTE1NCwxOCArMTU0LDE4IEBAIHZvaWQgZHJtX2dlbV9zaG1lbV9mcmVlKHN0cnVjdCBkcm1f Z2VtX3NobWVtX29iamVjdCAqc2htZW0pDQo+ICAgCQl9DQo+ICAgCQlpZiAoc2htZW0tPnBh Z2VzKQ0KPiAgIAkJCWRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKHNobWVtKTsNCj4gLQl9DQo+ ICAgDQo+IC0JZHJtX1dBUk5fT04ob2JqLT5kZXYsIHNobWVtLT5wYWdlc191c2VfY291bnQp Ow0KPiArCQlkcm1fV0FSTl9PTihvYmotPmRldiwgc2htZW0tPnBhZ2VzX3VzZV9jb3VudCk7 DQo+ICsNCj4gKwkJZG1hX3Jlc3ZfdW5sb2NrKHNobWVtLT5iYXNlLnJlc3YpOw0KPiArCX0N Cj4gICANCj4gICAJZHJtX2dlbV9vYmplY3RfcmVsZWFzZShvYmopOw0KPiAtCW11dGV4X2Rl c3Ryb3koJnNobWVtLT5wYWdlc19sb2NrKTsNCj4gLQltdXRleF9kZXN0cm95KCZzaG1lbS0+ dm1hcF9sb2NrKTsNCj4gICAJa2ZyZWUoc2htZW0pOw0KPiAgIH0NCj4gICBFWFBPUlRfU1lN Qk9MX0dQTChkcm1fZ2VtX3NobWVtX2ZyZWUpOw0KPiAgIA0KPiAtc3RhdGljIGludCBkcm1f Z2VtX3NobWVtX2dldF9wYWdlc19sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0 ICpzaG1lbSkNCj4gK3N0YXRpYyBpbnQgZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXMoc3RydWN0 IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqID0gJnNobWVtLT5iYXNlOw0KPiAgIAlzdHJ1Y3QgcGFnZSAqKnBh Z2VzOw0KPiBAQCAtMTk3LDM1ICsxOTcsMTYgQEAgc3RhdGljIGludCBkcm1fZ2VtX3NobWVt X2dldF9wYWdlc19sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkN Cj4gICB9DQo+ICAgDQo+ICAgLyoNCj4gLSAqIGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzIC0g QWxsb2NhdGUgYmFja2luZyBwYWdlcyBmb3IgYSBzaG1lbSBHRU0gb2JqZWN0DQo+ICsgKiBk cm1fZ2VtX3NobWVtX3B1dF9wYWdlcyAtIERlY3JlYXNlIHVzZSBjb3VudCBvbiB0aGUgYmFj a2luZyBwYWdlcyBmb3IgYSBzaG1lbSBHRU0gb2JqZWN0DQo+ICAgICogQHNobWVtOiBzaG1l bSBHRU0gb2JqZWN0DQo+ICAgICoNCj4gLSAqIFRoaXMgZnVuY3Rpb24gbWFrZXMgc3VyZSB0 aGF0IGJhY2tpbmcgcGFnZXMgZXhpc3RzIGZvciB0aGUgc2htZW0gR0VNIG9iamVjdA0KPiAt ICogYW5kIGluY3JlYXNlcyB0aGUgdXNlIGNvdW50Lg0KPiAtICoNCj4gLSAqIFJldHVybnM6 DQo+IC0gKiAwIG9uIHN1Y2Nlc3Mgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG9uIGZhaWx1 cmUuDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIGRlY3JlYXNlcyB0aGUgdXNlIGNvdW50IGFuZCBw dXRzIHRoZSBiYWNraW5nIHBhZ2VzIHdoZW4gdXNlIGRyb3BzIHRvIHplcm8uDQo+ICAgICov DQo+IC1pbnQgZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXMoc3RydWN0IGRybV9nZW1fc2htZW1f b2JqZWN0ICpzaG1lbSkNCj4gK3ZvaWQgZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXMoc3RydWN0 IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqID0gJnNobWVtLT5iYXNlOw0KPiAtCWludCByZXQ7DQo+ICAgDQo+ IC0JZHJtX1dBUk5fT04ob2JqLT5kZXYsIG9iai0+aW1wb3J0X2F0dGFjaCk7DQo+IC0NCj4g LQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnNobWVtLT5wYWdlc19sb2NrKTsN Cj4gLQlpZiAocmV0KQ0KPiAtCQlyZXR1cm4gcmV0Ow0KPiAtCXJldCA9IGRybV9nZW1fc2ht ZW1fZ2V0X3BhZ2VzX2xvY2tlZChzaG1lbSk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZzaG1lbS0+ cGFnZXNfbG9jayk7DQo+IC0NCj4gLQlyZXR1cm4gcmV0Ow0KPiAtfQ0KPiAtRVhQT1JUX1NZ TUJPTChkcm1fZ2VtX3NobWVtX2dldF9wYWdlcyk7DQo+IC0NCj4gLXN0YXRpYyB2b2lkIGRy bV9nZW1fc2htZW1fcHV0X3BhZ2VzX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmpl Y3QgKnNobWVtKQ0KPiAtew0KPiAtCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqID0gJnNo bWVtLT5iYXNlOw0KPiArCWRtYV9yZXN2X2Fzc2VydF9oZWxkKHNobWVtLT5iYXNlLnJlc3Yp Ow0KPiAgIA0KPiAgIAlpZiAoZHJtX1dBUk5fT05fT05DRShvYmotPmRldiwgIXNobWVtLT5w YWdlc191c2VfY291bnQpKQ0KPiAgIAkJcmV0dXJuOw0KPiBAQCAtMjQzLDE5ICsyMjQsNiBA QCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3B1dF9wYWdlc19sb2NrZWQoc3RydWN0IGRy bV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICAJCQkgIHNobWVtLT5wYWdlc19tYXJr X2FjY2Vzc2VkX29uX3B1dCk7DQo+ICAgCXNobWVtLT5wYWdlcyA9IE5VTEw7DQo+ICAgfQ0K PiAtDQo+IC0vKg0KPiAtICogZHJtX2dlbV9zaG1lbV9wdXRfcGFnZXMgLSBEZWNyZWFzZSB1 c2UgY291bnQgb24gdGhlIGJhY2tpbmcgcGFnZXMgZm9yIGEgc2htZW0gR0VNIG9iamVjdA0K PiAtICogQHNobWVtOiBzaG1lbSBHRU0gb2JqZWN0DQo+IC0gKg0KPiAtICogVGhpcyBmdW5j dGlvbiBkZWNyZWFzZXMgdGhlIHVzZSBjb3VudCBhbmQgcHV0cyB0aGUgYmFja2luZyBwYWdl cyB3aGVuIHVzZSBkcm9wcyB0byB6ZXJvLg0KPiAtICovDQo+IC12b2lkIGRybV9nZW1fc2ht ZW1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pDQo+IC17 DQo+IC0JbXV0ZXhfbG9jaygmc2htZW0tPnBhZ2VzX2xvY2spOw0KPiAtCWRybV9nZW1fc2ht ZW1fcHV0X3BhZ2VzX2xvY2tlZChzaG1lbSk7DQo+IC0JbXV0ZXhfdW5sb2NrKCZzaG1lbS0+ cGFnZXNfbG9jayk7DQo+IC19DQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3B1 dF9wYWdlcyk7DQo+ICAgDQo+ICAgLyoqDQo+IEBAIC0yNzIsNiArMjQwLDggQEAgaW50IGRy bV9nZW1fc2htZW1fcGluKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pDQo+ ICAgew0KPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZzaG1lbS0+YmFzZTsN Cj4gICANCj4gKwlkbWFfcmVzdl9hc3NlcnRfaGVsZChzaG1lbS0+YmFzZS5yZXN2KTsNCj4g Kw0KPiAgIAlkcm1fV0FSTl9PTihvYmotPmRldiwgb2JqLT5pbXBvcnRfYXR0YWNoKTsNCj4g ICANCj4gICAJcmV0dXJuIGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzKHNobWVtKTsNCj4gQEAg LTI4OSwxNCArMjU5LDMxIEBAIHZvaWQgZHJtX2dlbV9zaG1lbV91bnBpbihzdHJ1Y3QgZHJt X2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7DQo+ICAgDQo+ICsJZG1hX3Jlc3ZfYXNzZXJ0 X2hlbGQoc2htZW0tPmJhc2UucmVzdik7DQo+ICsNCj4gICAJZHJtX1dBUk5fT04ob2JqLT5k ZXYsIG9iai0+aW1wb3J0X2F0dGFjaCk7DQo+ICAgDQo+ICAgCWRybV9nZW1fc2htZW1fcHV0 X3BhZ2VzKHNobWVtKTsNCj4gICB9DQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVt X3VucGluKTsNCj4gICANCj4gLXN0YXRpYyBpbnQgZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tl ZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLA0KPiAtCQkJCSAgICAgc3Ry dWN0IGlvc3lzX21hcCAqbWFwKQ0KPiArLyoNCj4gKyAqIGRybV9nZW1fc2htZW1fdm1hcCAt IENyZWF0ZSBhIHZpcnR1YWwgbWFwcGluZyBmb3IgYSBzaG1lbSBHRU0gb2JqZWN0DQo+ICsg KiBAc2htZW06IHNobWVtIEdFTSBvYmplY3QNCj4gKyAqIEBtYXA6IFJldHVybnMgdGhlIGtl cm5lbCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIFNITUVNIEdFTSBvYmplY3QncyBiYWNraW5n DQo+ICsgKiAgICAgICBzdG9yZS4NCj4gKyAqDQo+ICsgKiBUaGlzIGZ1bmN0aW9uIG1ha2Vz IHN1cmUgdGhhdCBhIGNvbnRpZ3VvdXMga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBtYXBwaW5n DQo+ICsgKiBleGlzdHMgZm9yIHRoZSBidWZmZXIgYmFja2luZyB0aGUgc2htZW0gR0VNIG9i amVjdC4gSXQgaGlkZXMgdGhlIGRpZmZlcmVuY2VzDQo+ICsgKiBiZXR3ZWVuIGRtYS1idWYg aW1wb3J0ZWQgYW5kIG5hdGl2ZWx5IGFsbG9jYXRlZCBvYmplY3RzLg0KPiArICoNCj4gKyAq IEFjcXVpcmVkIG1hcHBpbmdzIHNob3VsZCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgZHJt X2dlbV9zaG1lbV92dW5tYXAoKS4NCj4gKyAqDQo+ICsgKiBSZXR1cm5zOg0KPiArICogMCBv biBzdWNjZXNzIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLg0KPiArICov DQo+ICtpbnQgZHJtX2dlbV9zaG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqc2htZW0sDQo+ICsJCSAgICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0K PiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZzaG1lbS0+YmFzZTsNCj4gICAJ aW50IHJldCA9IDA7DQo+IEBAIC0zMTIsNiArMjk5LDggQEAgc3RhdGljIGludCBkcm1fZ2Vt X3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0s DQo+ICAgCX0gZWxzZSB7DQo+ICAgCQlwZ3Byb3RfdCBwcm90ID0gUEFHRV9LRVJORUw7DQo+ ICAgDQo+ICsJCWRtYV9yZXN2X2Fzc2VydF9oZWxkKHNobWVtLT5iYXNlLnJlc3YpOw0KPiAr DQo+ICAgCQlpZiAoc2htZW0tPnZtYXBfdXNlX2NvdW50KysgPiAwKSB7DQo+ICAgCQkJaW9z eXNfbWFwX3NldF92YWRkcihtYXAsIHNobWVtLT52YWRkcik7DQo+ICAgCQkJcmV0dXJuIDA7 DQo+IEBAIC0zNDYsNDUgKzMzNSwzMCBAQCBzdGF0aWMgaW50IGRybV9nZW1fc2htZW1fdm1h cF9sb2NrZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4gICANCj4g ICAJcmV0dXJuIHJldDsNCj4gICB9DQo+ICtFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1f dm1hcCk7DQo+ICAgDQo+ICAgLyoNCj4gLSAqIGRybV9nZW1fc2htZW1fdm1hcCAtIENyZWF0 ZSBhIHZpcnR1YWwgbWFwcGluZyBmb3IgYSBzaG1lbSBHRU0gb2JqZWN0DQo+ICsgKiBkcm1f Z2VtX3NobWVtX3Z1bm1hcCAtIFVubWFwIGEgdmlydHVhbCBtYXBwaW5nIGZvciBhIHNobWVt IEdFTSBvYmplY3QNCj4gICAgKiBAc2htZW06IHNobWVtIEdFTSBvYmplY3QNCj4gLSAqIEBt YXA6IFJldHVybnMgdGhlIGtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIFNITUVNIEdF TSBvYmplY3QncyBiYWNraW5nDQo+IC0gKiAgICAgICBzdG9yZS4NCj4gLSAqDQo+IC0gKiBU aGlzIGZ1bmN0aW9uIG1ha2VzIHN1cmUgdGhhdCBhIGNvbnRpZ3VvdXMga2VybmVsIHZpcnR1 YWwgYWRkcmVzcyBtYXBwaW5nDQo+IC0gKiBleGlzdHMgZm9yIHRoZSBidWZmZXIgYmFja2lu ZyB0aGUgc2htZW0gR0VNIG9iamVjdC4gSXQgaGlkZXMgdGhlIGRpZmZlcmVuY2VzDQo+IC0g KiBiZXR3ZWVuIGRtYS1idWYgaW1wb3J0ZWQgYW5kIG5hdGl2ZWx5IGFsbG9jYXRlZCBvYmpl Y3RzLg0KPiArICogQG1hcDogS2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aGVyZSB0aGUgU0hN RU0gR0VNIG9iamVjdCB3YXMgbWFwcGVkDQo+ICAgICoNCj4gLSAqIEFjcXVpcmVkIG1hcHBp bmdzIHNob3VsZCBiZSBjbGVhbmVkIHVwIGJ5IGNhbGxpbmcgZHJtX2dlbV9zaG1lbV92dW5t YXAoKS4NCj4gKyAqIFRoaXMgZnVuY3Rpb24gY2xlYW5zIHVwIGEga2VybmVsIHZpcnR1YWwg YWRkcmVzcyBtYXBwaW5nIGFjcXVpcmVkIGJ5DQo+ICsgKiBkcm1fZ2VtX3NobWVtX3ZtYXAo KS4gVGhlIG1hcHBpbmcgaXMgb25seSByZW1vdmVkIHdoZW4gdGhlIHVzZSBjb3VudCBkcm9w cyB0bw0KPiArICogemVyby4NCj4gICAgKg0KPiAtICogUmV0dXJuczoNCj4gLSAqIDAgb24g c3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4NCj4gKyAqIFRo aXMgZnVuY3Rpb24gaGlkZXMgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gZG1hLWJ1ZiBpbXBv cnRlZCBhbmQgbmF0aXZlbHkNCj4gKyAqIGFsbG9jYXRlZCBvYmplY3RzLg0KPiAgICAqLw0K PiAtaW50IGRybV9nZW1fc2htZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3Qg KnNobWVtLA0KPiAtCQkgICAgICAgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAtew0KPiAt CWludCByZXQ7DQo+IC0NCj4gLQlyZXQgPSBtdXRleF9sb2NrX2ludGVycnVwdGlibGUoJnNo bWVtLT52bWFwX2xvY2spOw0KPiAtCWlmIChyZXQpDQo+IC0JCXJldHVybiByZXQ7DQo+IC0J cmV0ID0gZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzaG1lbSwgbWFwKTsNCj4gLQltdXRl eF91bmxvY2soJnNobWVtLT52bWFwX2xvY2spOw0KPiAtDQo+IC0JcmV0dXJuIHJldDsNCj4g LX0NCj4gLUVYUE9SVF9TWU1CT0woZHJtX2dlbV9zaG1lbV92bWFwKTsNCj4gLQ0KPiAtc3Rh dGljIHZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3No bWVtX29iamVjdCAqc2htZW0sDQo+IC0JCQkJCXN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4g K3ZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXAoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0 ICpzaG1lbSwNCj4gKwkJCSAgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJ c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7DQo+ICAgDQo+ICAg CWlmIChvYmotPmltcG9ydF9hdHRhY2gpIHsNCj4gICAJCWRtYV9idWZfdnVubWFwKG9iai0+ aW1wb3J0X2F0dGFjaC0+ZG1hYnVmLCBtYXApOw0KPiAgIAl9IGVsc2Ugew0KPiArCQlkbWFf cmVzdl9hc3NlcnRfaGVsZChzaG1lbS0+YmFzZS5yZXN2KTsNCj4gKw0KPiAgIAkJaWYgKGRy bV9XQVJOX09OX09OQ0Uob2JqLT5kZXYsICFzaG1lbS0+dm1hcF91c2VfY291bnQpKQ0KPiAg IAkJCXJldHVybjsNCj4gICANCj4gQEAgLTM5NywyNiArMzcxLDYgQEAgc3RhdGljIHZvaWQg ZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqc2htZW0sDQo+ICAgDQo+ICAgCXNobWVtLT52YWRkciA9IE5VTEw7DQo+ICAgfQ0KPiAt DQo+IC0vKg0KPiAtICogZHJtX2dlbV9zaG1lbV92dW5tYXAgLSBVbm1hcCBhIHZpcnR1YWwg bWFwcGluZyBmb3IgYSBzaG1lbSBHRU0gb2JqZWN0DQo+IC0gKiBAc2htZW06IHNobWVtIEdF TSBvYmplY3QNCj4gLSAqIEBtYXA6IEtlcm5lbCB2aXJ0dWFsIGFkZHJlc3Mgd2hlcmUgdGhl IFNITUVNIEdFTSBvYmplY3Qgd2FzIG1hcHBlZA0KPiAtICoNCj4gLSAqIFRoaXMgZnVuY3Rp b24gY2xlYW5zIHVwIGEga2VybmVsIHZpcnR1YWwgYWRkcmVzcyBtYXBwaW5nIGFjcXVpcmVk IGJ5DQo+IC0gKiBkcm1fZ2VtX3NobWVtX3ZtYXAoKS4gVGhlIG1hcHBpbmcgaXMgb25seSBy ZW1vdmVkIHdoZW4gdGhlIHVzZSBjb3VudCBkcm9wcyB0bw0KPiAtICogemVyby4NCj4gLSAq DQo+IC0gKiBUaGlzIGZ1bmN0aW9uIGhpZGVzIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGRt YS1idWYgaW1wb3J0ZWQgYW5kIG5hdGl2ZWx5DQo+IC0gKiBhbGxvY2F0ZWQgb2JqZWN0cy4N Cj4gLSAqLw0KPiAtdm9pZCBkcm1fZ2VtX3NobWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9z aG1lbV9vYmplY3QgKnNobWVtLA0KPiAtCQkJICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ IC17DQo+IC0JbXV0ZXhfbG9jaygmc2htZW0tPnZtYXBfbG9jayk7DQo+IC0JZHJtX2dlbV9z aG1lbV92dW5tYXBfbG9ja2VkKHNobWVtLCBtYXApOw0KPiAtCW11dGV4X3VubG9jaygmc2ht ZW0tPnZtYXBfbG9jayk7DQo+IC19DQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVt X3Z1bm1hcCk7DQo+ICAgDQo+ICAgc3RhdGljIHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqDQo+IEBAIC00NDksMjQgKzQwMywyNCBAQCBkcm1fZ2VtX3NobWVtX2NyZWF0ZV93aXRo X2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwNCj4gICAgKi8NCj4gICBpbnQg ZHJtX2dlbV9zaG1lbV9tYWR2aXNlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2ht ZW0sIGludCBtYWR2KQ0KPiAgIHsNCj4gLQltdXRleF9sb2NrKCZzaG1lbS0+cGFnZXNfbG9j ayk7DQo+ICsJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQoc2htZW0tPmJhc2UucmVzdik7DQo+ICAg DQo+ICAgCWlmIChzaG1lbS0+bWFkdiA+PSAwKQ0KPiAgIAkJc2htZW0tPm1hZHYgPSBtYWR2 Ow0KPiAgIA0KPiAgIAltYWR2ID0gc2htZW0tPm1hZHY7DQo+ICAgDQo+IC0JbXV0ZXhfdW5s b2NrKCZzaG1lbS0+cGFnZXNfbG9jayk7DQo+IC0NCj4gICAJcmV0dXJuIChtYWR2ID49IDAp Ow0KPiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fc2htZW1fbWFkdmlzZSk7DQo+ ICAgDQo+IC12b2lkIGRybV9nZW1fc2htZW1fcHVyZ2VfbG9ja2VkKHN0cnVjdCBkcm1fZ2Vt X3NobWVtX29iamVjdCAqc2htZW0pDQo+ICt2b2lkIGRybV9nZW1fc2htZW1fcHVyZ2Uoc3Ry dWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICB7DQo+ICAgCXN0cnVjdCBk cm1fZ2VtX29iamVjdCAqb2JqID0gJnNobWVtLT5iYXNlOw0KPiAgIAlzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2ID0gb2JqLT5kZXY7DQo+ICAgDQo+ICsJZG1hX3Jlc3ZfYXNzZXJ0X2hlbGQo c2htZW0tPmJhc2UucmVzdik7DQo+ICsNCj4gICAJZHJtX1dBUk5fT04ob2JqLT5kZXYsICFk cm1fZ2VtX3NobWVtX2lzX3B1cmdlYWJsZShzaG1lbSkpOw0KPiAgIA0KPiAgIAlkbWFfdW5t YXBfc2d0YWJsZShkZXYtPmRldiwgc2htZW0tPnNndCwgRE1BX0JJRElSRUNUSU9OQUwsIDAp Ow0KPiBAQCAtNDc0LDcgKzQyOCw3IEBAIHZvaWQgZHJtX2dlbV9zaG1lbV9wdXJnZV9sb2Nr ZWQoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICAJa2ZyZWUoc2ht ZW0tPnNndCk7DQo+ICAgCXNobWVtLT5zZ3QgPSBOVUxMOw0KPiAgIA0KPiAtCWRybV9nZW1f c2htZW1fcHV0X3BhZ2VzX2xvY2tlZChzaG1lbSk7DQo+ICsJZHJtX2dlbV9zaG1lbV9wdXRf cGFnZXMoc2htZW0pOw0KPiAgIA0KPiAgIAlzaG1lbS0+bWFkdiA9IC0xOw0KPiAgIA0KPiBA QCAtNDkwLDE3ICs0NDQsNiBAQCB2b2lkIGRybV9nZW1fc2htZW1fcHVyZ2VfbG9ja2VkKHN0 cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0pDQo+ICAgDQo+ICAgCWludmFsaWRh dGVfbWFwcGluZ19wYWdlcyhmaWxlX2lub2RlKG9iai0+ZmlscCktPmlfbWFwcGluZywgMCwg KGxvZmZfdCktMSk7DQo+ICAgfQ0KPiAtRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3B1 cmdlX2xvY2tlZCk7DQo+IC0NCj4gLWJvb2wgZHJtX2dlbV9zaG1lbV9wdXJnZShzdHJ1Y3Qg ZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAtew0KPiAtCWlmICghbXV0ZXhfdHJ5 bG9jaygmc2htZW0tPnBhZ2VzX2xvY2spKQ0KPiAtCQlyZXR1cm4gZmFsc2U7DQo+IC0JZHJt X2dlbV9zaG1lbV9wdXJnZV9sb2NrZWQoc2htZW0pOw0KPiAtCW11dGV4X3VubG9jaygmc2ht ZW0tPnBhZ2VzX2xvY2spOw0KPiAtDQo+IC0JcmV0dXJuIHRydWU7DQo+IC19DQo+ICAgRVhQ T1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3B1cmdlKTsNCj4gICANCj4gICAvKioNCj4gQEAg LTU1Niw3ICs0OTksNyBAQCBzdGF0aWMgdm1fZmF1bHRfdCBkcm1fZ2VtX3NobWVtX2ZhdWx0 KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQ0KPiAgIAkvKiBXZSBkb24ndCB1c2Ugdm1mLT5wZ29m ZiBzaW5jZSB0aGF0IGhhcyB0aGUgZmFrZSBvZmZzZXQgKi8NCj4gICAJcGFnZV9vZmZzZXQg PSAodm1mLT5hZGRyZXNzIC0gdm1hLT52bV9zdGFydCkgPj4gUEFHRV9TSElGVDsNCj4gICAN Cj4gLQltdXRleF9sb2NrKCZzaG1lbS0+cGFnZXNfbG9jayk7DQo+ICsJZG1hX3Jlc3ZfbG9j ayhzaG1lbS0+YmFzZS5yZXN2LCBOVUxMKTsNCj4gICANCj4gICAJaWYgKHBhZ2Vfb2Zmc2V0 ID49IG51bV9wYWdlcyB8fA0KPiAgIAkgICAgZHJtX1dBUk5fT05fT05DRShvYmotPmRldiwg IXNobWVtLT5wYWdlcykgfHwNCj4gQEAgLTU2OCw3ICs1MTEsNyBAQCBzdGF0aWMgdm1fZmF1 bHRfdCBkcm1fZ2VtX3NobWVtX2ZhdWx0KHN0cnVjdCB2bV9mYXVsdCAqdm1mKQ0KPiAgIAkJ cmV0ID0gdm1mX2luc2VydF9wZm4odm1hLCB2bWYtPmFkZHJlc3MsIHBhZ2VfdG9fcGZuKHBh Z2UpKTsNCj4gICAJfQ0KPiAgIA0KPiAtCW11dGV4X3VubG9jaygmc2htZW0tPnBhZ2VzX2xv Y2spOw0KPiArCWRtYV9yZXN2X3VubG9jayhzaG1lbS0+YmFzZS5yZXN2KTsNCj4gICANCj4g ICAJcmV0dXJuIHJldDsNCj4gICB9DQo+IEBAIC01ODAsNyArNTIzLDcgQEAgc3RhdGljIHZv aWQgZHJtX2dlbV9zaG1lbV92bV9vcGVuKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQ0K PiAgIA0KPiAgIAlkcm1fV0FSTl9PTihvYmotPmRldiwgb2JqLT5pbXBvcnRfYXR0YWNoKTsN Cj4gICANCj4gLQltdXRleF9sb2NrKCZzaG1lbS0+cGFnZXNfbG9jayk7DQo+ICsJZG1hX3Jl c3ZfbG9jayhzaG1lbS0+YmFzZS5yZXN2LCBOVUxMKTsNCj4gICANCj4gICAJLyoNCj4gICAJ ICogV2Ugc2hvdWxkIGhhdmUgYWxyZWFkeSBwaW5uZWQgdGhlIHBhZ2VzIHdoZW4gdGhlIGJ1 ZmZlciB3YXMgZmlyc3QNCj4gQEAgLTU5MCw3ICs1MzMsNyBAQCBzdGF0aWMgdm9pZCBkcm1f Z2VtX3NobWVtX3ZtX29wZW4oc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpDQo+ICAgCWlm ICghZHJtX1dBUk5fT05fT05DRShvYmotPmRldiwgIXNobWVtLT5wYWdlc191c2VfY291bnQp KQ0KPiAgIAkJc2htZW0tPnBhZ2VzX3VzZV9jb3VudCsrOw0KPiAgIA0KPiAtCW11dGV4X3Vu bG9jaygmc2htZW0tPnBhZ2VzX2xvY2spOw0KPiArCWRtYV9yZXN2X3VubG9jayhzaG1lbS0+ YmFzZS5yZXN2KTsNCj4gICANCj4gICAJZHJtX2dlbV92bV9vcGVuKHZtYSk7DQo+ICAgfQ0K PiBAQCAtNjAwLDcgKzU0MywxMCBAQCBzdGF0aWMgdm9pZCBkcm1fZ2VtX3NobWVtX3ZtX2Ns b3NlKHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKQ0KPiAgIAlzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiA9IHZtYS0+dm1fcHJpdmF0ZV9kYXRhOw0KPiAgIAlzdHJ1Y3QgZHJtX2dl bV9zaG1lbV9vYmplY3QgKnNobWVtID0gdG9fZHJtX2dlbV9zaG1lbV9vYmoob2JqKTsNCj4g ICANCj4gKwlkbWFfcmVzdl9sb2NrKHNobWVtLT5iYXNlLnJlc3YsIE5VTEwpOw0KPiAgIAlk cm1fZ2VtX3NobWVtX3B1dF9wYWdlcyhzaG1lbSk7DQo+ICsJZG1hX3Jlc3ZfdW5sb2NrKHNo bWVtLT5iYXNlLnJlc3YpOw0KPiArDQo+ICAgCWRybV9nZW1fdm1fY2xvc2Uodm1hKTsNCj4g ICB9DQo+ICAgDQo+IEBAIC02MzUsNyArNTgxLDEwIEBAIGludCBkcm1fZ2VtX3NobWVtX21t YXAoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgc3RydWN0IHZtX2FyZWFf c3RydWN0DQo+ICAgCQlyZXR1cm4gZG1hX2J1Zl9tbWFwKG9iai0+ZG1hX2J1Ziwgdm1hLCAw KTsNCj4gICAJfQ0KPiAgIA0KPiArCWRtYV9yZXN2X2xvY2soc2htZW0tPmJhc2UucmVzdiwg TlVMTCk7DQo+ICAgCXJldCA9IGRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzKHNobWVtKTsNCj4g KwlkbWFfcmVzdl91bmxvY2soc2htZW0tPmJhc2UucmVzdik7DQo+ICsNCj4gICAJaWYgKHJl dCkNCj4gICAJCXJldHVybiByZXQ7DQo+ICAgDQo+IEBAIC03MjEsOSArNjcwLDExIEBAIHN0 cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXNfc2d0KHN0cnVjdCBkcm1f Z2VtX3NobWVtX29iamVjdCAqc2htZW0pDQo+ICAgDQo+ICAgCWRybV9XQVJOX09OKG9iai0+ ZGV2LCBvYmotPmltcG9ydF9hdHRhY2gpOw0KPiAgIA0KPiArCWRtYV9yZXN2X2xvY2soc2ht ZW0tPmJhc2UucmVzdiwgTlVMTCk7DQo+ICsNCj4gICAJcmV0ID0gZHJtX2dlbV9zaG1lbV9n ZXRfcGFnZXMoc2htZW0pOw0KPiAgIAlpZiAocmV0KQ0KPiAtCQlyZXR1cm4gRVJSX1BUUihy ZXQpOw0KPiArCQlnb3RvIGVycl91bmxvY2s7DQo+ICAgDQo+ICAgCXNndCA9IGRybV9nZW1f c2htZW1fZ2V0X3NnX3RhYmxlKHNobWVtKTsNCj4gICAJaWYgKElTX0VSUihzZ3QpKSB7DQo+ IEBAIC03MzcsNiArNjg4LDggQEAgc3RydWN0IHNnX3RhYmxlICpkcm1fZ2VtX3NobWVtX2dl dF9wYWdlc19zZ3Qoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSkNCj4gICAN Cj4gICAJc2htZW0tPnNndCA9IHNndDsNCj4gICANCj4gKwlkbWFfcmVzdl91bmxvY2soc2ht ZW0tPmJhc2UucmVzdik7DQo+ICsNCj4gICAJcmV0dXJuIHNndDsNCj4gICANCj4gICBlcnJf ZnJlZV9zZ3Q6DQo+IEBAIC03NDQsNiArNjk3LDggQEAgc3RydWN0IHNnX3RhYmxlICpkcm1f Z2VtX3NobWVtX2dldF9wYWdlc19zZ3Qoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpz aG1lbSkNCj4gICAJa2ZyZWUoc2d0KTsNCj4gICBlcnJfcHV0X3BhZ2VzOg0KPiAgIAlkcm1f Z2VtX3NobWVtX3B1dF9wYWdlcyhzaG1lbSk7DQo+ICtlcnJfdW5sb2NrOg0KPiArCWRtYV9y ZXN2X3VubG9jayhzaG1lbS0+YmFzZS5yZXN2KTsNCj4gICAJcmV0dXJuIEVSUl9QVFIocmV0 KTsNCj4gICB9DQo+ICAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9zaG1lbV9nZXRfcGFn ZXNfc2d0KTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2Vt LmMgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jDQo+IGluZGV4IDBmMWNhMGIw ZGI0OS4uNTAwOGYwYzI0MjhmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbGlt YS9saW1hX2dlbS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfZ2VtLmMN Cj4gQEAgLTM0LDcgKzM0LDcgQEAgaW50IGxpbWFfaGVhcF9hbGxvYyhzdHJ1Y3QgbGltYV9i byAqYm8sIHN0cnVjdCBsaW1hX3ZtICp2bSkNCj4gICANCj4gICAJbmV3X3NpemUgPSBtaW4o bmV3X3NpemUsIGJvLT5iYXNlLmJhc2Uuc2l6ZSk7DQo+ICAgDQo+IC0JbXV0ZXhfbG9jaygm Ym8tPmJhc2UucGFnZXNfbG9jayk7DQo+ICsJZG1hX3Jlc3ZfbG9jayhiby0+YmFzZS5iYXNl LnJlc3YsIE5VTEwpOw0KPiAgIA0KPiAgIAlpZiAoYm8tPmJhc2UucGFnZXMpIHsNCj4gICAJ CXBhZ2VzID0gYm8tPmJhc2UucGFnZXM7DQo+IEBAIC00Miw3ICs0Miw3IEBAIGludCBsaW1h X2hlYXBfYWxsb2Moc3RydWN0IGxpbWFfYm8gKmJvLCBzdHJ1Y3QgbGltYV92bSAqdm0pDQo+ ICAgCQlwYWdlcyA9IGt2bWFsbG9jX2FycmF5KGJvLT5iYXNlLmJhc2Uuc2l6ZSA+PiBQQUdF X1NISUZULA0KPiAgIAkJCQkgICAgICAgc2l6ZW9mKCpwYWdlcyksIEdGUF9LRVJORUwgfCBf X0dGUF9aRVJPKTsNCj4gICAJCWlmICghcGFnZXMpIHsNCj4gLQkJCW11dGV4X3VubG9jaygm Ym8tPmJhc2UucGFnZXNfbG9jayk7DQo+ICsJCQlkbWFfcmVzdl91bmxvY2soYm8tPmJhc2Uu YmFzZS5yZXN2KTsNCj4gICAJCQlyZXR1cm4gLUVOT01FTTsNCj4gICAJCX0NCj4gICANCj4g QEAgLTU2LDEzICs1NiwxMyBAQCBpbnQgbGltYV9oZWFwX2FsbG9jKHN0cnVjdCBsaW1hX2Jv ICpibywgc3RydWN0IGxpbWFfdm0gKnZtKQ0KPiAgIAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSBz aG1lbV9yZWFkX21hcHBpbmdfcGFnZShtYXBwaW5nLCBpKTsNCj4gICANCj4gICAJCWlmIChJ U19FUlIocGFnZSkpIHsNCj4gLQkJCW11dGV4X3VubG9jaygmYm8tPmJhc2UucGFnZXNfbG9j ayk7DQo+ICsJCQlkbWFfcmVzdl91bmxvY2soYm8tPmJhc2UuYmFzZS5yZXN2KTsNCj4gICAJ CQlyZXR1cm4gUFRSX0VSUihwYWdlKTsNCj4gICAJCX0NCj4gICAJCXBhZ2VzW2ldID0gcGFn ZTsNCj4gICAJfQ0KPiAgIA0KPiAtCW11dGV4X3VubG9jaygmYm8tPmJhc2UucGFnZXNfbG9j ayk7DQo+ICsJZG1hX3Jlc3ZfdW5sb2NrKGJvLT5iYXNlLmJhc2UucmVzdik7DQo+ICAgDQo+ ICAgCXJldCA9IHNnX2FsbG9jX3RhYmxlX2Zyb21fcGFnZXMoJnNndCwgcGFnZXMsIGksIDAs DQo+ICAgCQkJCQluZXdfc2l6ZSwgR0ZQX0tFUk5FTCk7DQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0v cGFuZnJvc3QvcGFuZnJvc3RfZHJ2LmMNCj4gaW5kZXggYWJiMGRhZGQ4ZjYzLi45ZjNmMjI4 M2I2N2EgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9kcnYuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJvc3RfZHJ2 LmMNCj4gQEAgLTQxNCw2ICs0MTQsMTAgQEAgc3RhdGljIGludCBwYW5mcm9zdF9pb2N0bF9t YWR2aXNlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHZvaWQgKmRhdGEsDQo+ICAgDQo+ICAg CWJvID0gdG9fcGFuZnJvc3RfYm8oZ2VtX29iaik7DQo+ICAgDQo+ICsJcmV0ID0gZG1hX3Jl c3ZfbG9ja19pbnRlcnJ1cHRpYmxlKGJvLT5iYXNlLmJhc2UucmVzdiwgTlVMTCk7DQo+ICsJ aWYgKHJldCkNCj4gKwkJZ290byBvdXRfcHV0X29iamVjdDsNCj4gKw0KPiAgIAltdXRleF9s b2NrKCZwZmRldi0+c2hyaW5rZXJfbG9jayk7DQo+ICAgCW11dGV4X2xvY2soJmJvLT5tYXBw aW5ncy5sb2NrKTsNCj4gICAJaWYgKGFyZ3MtPm1hZHYgPT0gUEFORlJPU1RfTUFEVl9ET05U TkVFRCkgew0KPiBAQCAtNDUxLDcgKzQ1NSw4IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfaW9j dGxfbWFkdmlzZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLA0KPiAgIG91 dF91bmxvY2tfbWFwcGluZ3M6DQo+ICAgCW11dGV4X3VubG9jaygmYm8tPm1hcHBpbmdzLmxv Y2spOw0KPiAgIAltdXRleF91bmxvY2soJnBmZGV2LT5zaHJpbmtlcl9sb2NrKTsNCj4gLQ0K PiArCWRtYV9yZXN2X3VubG9jayhiby0+YmFzZS5iYXNlLnJlc3YpOw0KPiArb3V0X3B1dF9v YmplY3Q6DQo+ICAgCWRybV9nZW1fb2JqZWN0X3B1dChnZW1fb2JqKTsNCj4gICAJcmV0dXJu IHJldDsNCj4gICB9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3Qv cGFuZnJvc3RfZ2VtX3Nocmlua2VyLmMgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFu ZnJvc3RfZ2VtX3Nocmlua2VyLmMNCj4gaW5kZXggYmYwMTcwNzgyZjI1Li42YTcxYTI1NTVm ODUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9n ZW1fc2hyaW5rZXIuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcGFuZnJvc3QvcGFuZnJv c3RfZ2VtX3Nocmlua2VyLmMNCj4gQEAgLTQ4LDE0ICs0OCwxNCBAQCBzdGF0aWMgYm9vbCBw YW5mcm9zdF9nZW1fcHVyZ2Uoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopDQo+ICAgCWlm ICghbXV0ZXhfdHJ5bG9jaygmYm8tPm1hcHBpbmdzLmxvY2spKQ0KPiAgIAkJcmV0dXJuIGZh bHNlOw0KPiAgIA0KPiAtCWlmICghbXV0ZXhfdHJ5bG9jaygmc2htZW0tPnBhZ2VzX2xvY2sp KQ0KPiArCWlmICghZG1hX3Jlc3ZfdHJ5bG9jayhzaG1lbS0+YmFzZS5yZXN2KSkNCj4gICAJ CWdvdG8gdW5sb2NrX21hcHBpbmdzOw0KPiAgIA0KPiAgIAlwYW5mcm9zdF9nZW1fdGVhcmRv d25fbWFwcGluZ3NfbG9ja2VkKGJvKTsNCj4gLQlkcm1fZ2VtX3NobWVtX3B1cmdlX2xvY2tl ZCgmYm8tPmJhc2UpOw0KPiArCWRybV9nZW1fc2htZW1fcHVyZ2UoJmJvLT5iYXNlKTsNCj4g ICAJcmV0ID0gdHJ1ZTsNCj4gICANCj4gLQltdXRleF91bmxvY2soJnNobWVtLT5wYWdlc19s b2NrKTsNCj4gKwlkbWFfcmVzdl91bmxvY2soc2htZW0tPmJhc2UucmVzdik7DQo+ICAgDQo+ ICAgdW5sb2NrX21hcHBpbmdzOg0KPiAgIAltdXRleF91bmxvY2soJmJvLT5tYXBwaW5ncy5s b2NrKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9z dF9tbXUuYyBiL2RyaXZlcnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYw0KPiBp bmRleCA2NjZhNWU1M2ZlMTkuLjA2NzlkZjU3ZjM5NCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X21tdS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9tbXUuYw0KPiBAQCAtNDQzLDYgKzQ0Myw3IEBAIHN0 YXRpYyBpbnQgcGFuZnJvc3RfbW11X21hcF9mYXVsdF9hZGRyKHN0cnVjdCBwYW5mcm9zdF9k ZXZpY2UgKnBmZGV2LCBpbnQgYXMsDQo+ICAgCXN0cnVjdCBwYW5mcm9zdF9nZW1fbWFwcGlu ZyAqYm9tYXBwaW5nOw0KPiAgIAlzdHJ1Y3QgcGFuZnJvc3RfZ2VtX29iamVjdCAqYm87DQo+ ICAgCXN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nOw0KPiArCXN0cnVjdCBkcm1fZ2Vt X29iamVjdCAqb2JqOw0KPiAgIAlwZ29mZl90IHBhZ2Vfb2Zmc2V0Ow0KPiAgIAlzdHJ1Y3Qg c2dfdGFibGUgKnNndDsNCj4gICAJc3RydWN0IHBhZ2UgKipwYWdlczsNCj4gQEAgLTQ2NSwx NSArNDY2LDE2IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfbW11X21hcF9mYXVsdF9hZGRyKHN0 cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBpbnQgYXMsDQo+ICAgCXBhZ2Vfb2Zmc2V0 ID0gYWRkciA+PiBQQUdFX1NISUZUOw0KPiAgIAlwYWdlX29mZnNldCAtPSBib21hcHBpbmct Pm1tbm9kZS5zdGFydDsNCj4gICANCj4gLQltdXRleF9sb2NrKCZiby0+YmFzZS5wYWdlc19s b2NrKTsNCj4gKwlvYmogPSAmYm8tPmJhc2UuYmFzZTsNCj4gKw0KPiArCWRtYV9yZXN2X2xv Y2sob2JqLT5yZXN2LCBOVUxMKTsNCj4gICANCj4gICAJaWYgKCFiby0+YmFzZS5wYWdlcykg ew0KPiAgIAkJYm8tPnNndHMgPSBrdm1hbGxvY19hcnJheShiby0+YmFzZS5iYXNlLnNpemUg LyBTWl8yTSwNCj4gICAJCQkJICAgICBzaXplb2Yoc3RydWN0IHNnX3RhYmxlKSwgR0ZQX0tF Uk5FTCB8IF9fR0ZQX1pFUk8pOw0KPiAgIAkJaWYgKCFiby0+c2d0cykgew0KPiAtCQkJbXV0 ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsNCj4gICAJCQlyZXQgPSAtRU5PTUVN Ow0KPiAtCQkJZ290byBlcnJfYm87DQo+ICsJCQlnb3RvIGVycl91bmxvY2s7DQo+ICAgCQl9 DQo+ICAgDQo+ICAgCQlwYWdlcyA9IGt2bWFsbG9jX2FycmF5KGJvLT5iYXNlLmJhc2Uuc2l6 ZSA+PiBQQUdFX1NISUZULA0KPiBAQCAtNDgxLDkgKzQ4Myw4IEBAIHN0YXRpYyBpbnQgcGFu ZnJvc3RfbW11X21hcF9mYXVsdF9hZGRyKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2 LCBpbnQgYXMsDQo+ICAgCQlpZiAoIXBhZ2VzKSB7DQo+ICAgCQkJa3ZmcmVlKGJvLT5zZ3Rz KTsNCj4gICAJCQliby0+c2d0cyA9IE5VTEw7DQo+IC0JCQltdXRleF91bmxvY2soJmJvLT5i YXNlLnBhZ2VzX2xvY2spOw0KPiAgIAkJCXJldCA9IC1FTk9NRU07DQo+IC0JCQlnb3RvIGVy cl9ibzsNCj4gKwkJCWdvdG8gZXJyX3VubG9jazsNCj4gICAJCX0NCj4gICAJCWJvLT5iYXNl LnBhZ2VzID0gcGFnZXM7DQo+ICAgCQliby0+YmFzZS5wYWdlc191c2VfY291bnQgPSAxOw0K PiBAQCAtNDkxLDcgKzQ5Miw2IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfbW11X21hcF9mYXVs dF9hZGRyKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LCBpbnQgYXMsDQo+ICAgCQlw YWdlcyA9IGJvLT5iYXNlLnBhZ2VzOw0KPiAgIAkJaWYgKHBhZ2VzW3BhZ2Vfb2Zmc2V0XSkg ew0KPiAgIAkJCS8qIFBhZ2VzIGFyZSBhbHJlYWR5IG1hcHBlZCwgYmFpbCBvdXQuICovDQo+ IC0JCQltdXRleF91bmxvY2soJmJvLT5iYXNlLnBhZ2VzX2xvY2spOw0KPiAgIAkJCWdvdG8g b3V0Ow0KPiAgIAkJfQ0KPiAgIAl9DQo+IEBAIC01MDIsMTQgKzUwMiwxMSBAQCBzdGF0aWMg aW50IHBhbmZyb3N0X21tdV9tYXBfZmF1bHRfYWRkcihzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNl ICpwZmRldiwgaW50IGFzLA0KPiAgIAlmb3IgKGkgPSBwYWdlX29mZnNldDsgaSA8IHBhZ2Vf b2Zmc2V0ICsgTlVNX0ZBVUxUX1BBR0VTOyBpKyspIHsNCj4gICAJCXBhZ2VzW2ldID0gc2ht ZW1fcmVhZF9tYXBwaW5nX3BhZ2UobWFwcGluZywgaSk7DQo+ICAgCQlpZiAoSVNfRVJSKHBh Z2VzW2ldKSkgew0KPiAtCQkJbXV0ZXhfdW5sb2NrKCZiby0+YmFzZS5wYWdlc19sb2NrKTsN Cj4gICAJCQlyZXQgPSBQVFJfRVJSKHBhZ2VzW2ldKTsNCj4gICAJCQlnb3RvIGVycl9wYWdl czsNCj4gICAJCX0NCj4gICAJfQ0KPiAgIA0KPiAtCW11dGV4X3VubG9jaygmYm8tPmJhc2Uu cGFnZXNfbG9jayk7DQo+IC0NCj4gICAJc2d0ID0gJmJvLT5zZ3RzW3BhZ2Vfb2Zmc2V0IC8g KFNaXzJNIC8gUEFHRV9TSVpFKV07DQo+ICAgCXJldCA9IHNnX2FsbG9jX3RhYmxlX2Zyb21f cGFnZXMoc2d0LCBwYWdlcyArIHBhZ2Vfb2Zmc2V0LA0KPiAgIAkJCQkJTlVNX0ZBVUxUX1BB R0VTLCAwLCBTWl8yTSwgR0ZQX0tFUk5FTCk7DQo+IEBAIC01MjgsNiArNTI1LDggQEAgc3Rh dGljIGludCBwYW5mcm9zdF9tbXVfbWFwX2ZhdWx0X2FkZHIoc3RydWN0IHBhbmZyb3N0X2Rl dmljZSAqcGZkZXYsIGludCBhcywNCj4gICAJZGV2X2RiZyhwZmRldi0+ZGV2LCAibWFwcGVk IHBhZ2UgZmF1bHQgQCBBUyVkICVsbHgiLCBhcywgYWRkcik7DQo+ICAgDQo+ICAgb3V0Og0K PiArCWRtYV9yZXN2X3VubG9jayhvYmotPnJlc3YpOw0KPiArDQo+ICAgCXBhbmZyb3N0X2dl bV9tYXBwaW5nX3B1dChib21hcHBpbmcpOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gQEAg LTUzNiw2ICs1MzUsOCBAQCBzdGF0aWMgaW50IHBhbmZyb3N0X21tdV9tYXBfZmF1bHRfYWRk cihzdHJ1Y3QgcGFuZnJvc3RfZGV2aWNlICpwZmRldiwgaW50IGFzLA0KPiAgIAlzZ19mcmVl X3RhYmxlKHNndCk7DQo+ICAgZXJyX3BhZ2VzOg0KPiAgIAlkcm1fZ2VtX3NobWVtX3B1dF9w YWdlcygmYm8tPmJhc2UpOw0KPiArZXJyX3VubG9jazoNCj4gKwlkbWFfcmVzdl91bmxvY2so b2JqLT5yZXN2KTsNCj4gICBlcnJfYm86DQo+ICAgCXBhbmZyb3N0X2dlbV9tYXBwaW5nX3B1 dChib21hcHBpbmcpOw0KPiAgIAlyZXR1cm4gcmV0Ow0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVk ZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaCBiL2luY2x1ZGUvZHJtL2RybV9nZW1fc2ht ZW1faGVscGVyLmgNCj4gaW5kZXggNTk5NGZlZDVlMzI3Li4yMGRkY2Q3OTlkZjkgMTAwNjQ0 DQo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmgNCj4gKysrIGIv aW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaA0KPiBAQCAtMjYsMTEgKzI2LDYg QEAgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0IHsNCj4gICAJICovDQo+ICAgCXN0cnVj dCBkcm1fZ2VtX29iamVjdCBiYXNlOw0KPiAgIA0KPiAtCS8qKg0KPiAtCSAqIEBwYWdlc19s b2NrOiBQcm90ZWN0cyB0aGUgcGFnZSB0YWJsZSBhbmQgdXNlIGNvdW50DQo+IC0JICovDQo+ IC0Jc3RydWN0IG11dGV4IHBhZ2VzX2xvY2s7DQo+IC0NCj4gICAJLyoqDQo+ICAgCSAqIEBw YWdlczogUGFnZSB0YWJsZQ0KPiAgIAkgKi8NCj4gQEAgLTY1LDExICs2MCw2IEBAIHN0cnVj dCBkcm1fZ2VtX3NobWVtX29iamVjdCB7DQo+ICAgCSAqLw0KPiAgIAlzdHJ1Y3Qgc2dfdGFi bGUgKnNndDsNCj4gICANCj4gLQkvKioNCj4gLQkgKiBAdm1hcF9sb2NrOiBQcm90ZWN0cyB0 aGUgdm1hcCBhZGRyZXNzIGFuZCB1c2UgY291bnQNCj4gLQkgKi8NCj4gLQlzdHJ1Y3QgbXV0 ZXggdm1hcF9sb2NrOw0KPiAtDQo+ICAgCS8qKg0KPiAgIAkgKiBAdmFkZHI6IEtlcm5lbCB2 aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIGJhY2tpbmcgbWVtb3J5DQo+ICAgCSAqLw0KPiBAQCAt MTA5LDcgKzk5LDYgQEAgc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0IHsNCj4gICBzdHJ1 Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKmRybV9nZW1fc2htZW1fY3JlYXRlKHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsIHNpemVfdCBzaXplKTsNCj4gICB2b2lkIGRybV9nZW1fc2htZW1f ZnJlZShzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsNCj4gICANCj4gLWlu dCBkcm1fZ2VtX3NobWVtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3Qg KnNobWVtKTsNCj4gICB2b2lkIGRybV9nZW1fc2htZW1fcHV0X3BhZ2VzKHN0cnVjdCBkcm1f Z2VtX3NobWVtX29iamVjdCAqc2htZW0pOw0KPiAgIGludCBkcm1fZ2VtX3NobWVtX3Bpbihz dHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsNCj4gICB2b2lkIGRybV9nZW1f c2htZW1fdW5waW4oc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7DQo+IEBA IC0xMjgsOCArMTE3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGRybV9nZW1fc2htZW1faXNf cHVyZ2VhYmxlKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0NCj4gICAJCSFz aG1lbS0+YmFzZS5kbWFfYnVmICYmICFzaG1lbS0+YmFzZS5pbXBvcnRfYXR0YWNoOw0KPiAg IH0NCj4gICANCj4gLXZvaWQgZHJtX2dlbV9zaG1lbV9wdXJnZV9sb2NrZWQoc3RydWN0IGRy bV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7DQo+IC1ib29sIGRybV9nZW1fc2htZW1fcHVy Z2Uoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7DQo+ICt2b2lkIGRybV9n ZW1fc2htZW1fcHVyZ2Uoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7DQo+ ICAgDQo+ICAgc3RydWN0IHNnX3RhYmxlICpkcm1fZ2VtX3NobWVtX2dldF9zZ190YWJsZShz dHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsNCj4gICBzdHJ1Y3Qgc2dfdGFi bGUgKmRybV9nZW1fc2htZW1fZ2V0X3BhZ2VzX3NndChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9v YmplY3QgKnNobWVtKTsNCg0KLS0gDQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJp dmVyIERldmVsb3Blcg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpN YXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFH IE7DvHJuYmVyZykNCkdlc2Now6RmdHNmw7xocmVyOiBJdm8gVG90ZXYNCg== --------------A1hwvEEXrTSZPbW9fVqPC0EU-- --------------RrIn3yMct3PMMuUkiKv3lqdy 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+AFAmPvgUQFAwAAAAAACgkQlh/E3EQov+CV VhAAhesrxxP3i/erhSgTu3zsO/x5g/cFltEul5YecQu4F26JsqN99q/eO56GxD8dshiC1Wac76Qd 4COXVd937ine270hwXQD4YYBNEdCOUYFHf7XgDixwIL6X9KYmMZ/4CAjiBqwscO9JJavr9LNCbAM eArIQAa5KvpNPGaFKWJ7wFg3Txi6h34K24rEYORQLG2RLXd/oZ/60VuV8Tabb2eRRsGR8h+PRIzy 6MClpG3JS119UKE+4wJ54mpvIrn+nCJQhXFoM0+HVb/Fcpx9ZnOtiYG9cPyGemCNUxG72XHgdKFB hZizPlInaxC+U70Hq/eX/tKqhO/hCNGk3k4eLdgLFtzRGpkBCdFeYnEc1oNizSso+mlqDipMpU72 +hdBROGjjCYBh7w6Tgx39AlQqAdReAl/5iQNA2bcziQHIQTU/Bvc1xK6FcdL/P6ZXDAbUo8l0bVF Kn8jyyEldFufUDSvB7nDMyOy5v5nyLAxkhRDx+nD6W7IeIfslT4A6Uwwe+QdcSw6J1YbfbhoYGqo g8ToJiNCJzV2OxrT+LA1AV9XyyntZdTj2In0qfmlvJLJReu4jnDN31OF0R15LAGLTVnBCM6v5QjG 7PuIRCgYjGOMnsY1eiCnSlrbH7IzWtZB5P01LYZMj7858sw8sXHBGIMjUYCYtNd5U/2dXcg1lx46 X38= =kQ5x -----END PGP SIGNATURE----- --------------RrIn3yMct3PMMuUkiKv3lqdy--