Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp15321089ybl; Tue, 31 Dec 2019 05:43:36 -0800 (PST) X-Google-Smtp-Source: APXvYqzB20cJcYfrmFg6uBxSwunIf99BHacGIqDP/7t7gDjeeL2vjo2bE0KmqTCMJmgwDcMnrMDW X-Received: by 2002:a05:6830:151a:: with SMTP id k26mr63170655otp.74.1577799816003; Tue, 31 Dec 2019 05:43:36 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1577799815; cv=none; d=google.com; s=arc-20160816; b=ndjGghtxEbUaDHvI0t0LuCQmAs+tNg1ZYXS2NcWjurIQRtyDepa+0ZwkHbzGeVu0K1 Uwod97vcHp1TXIYaTR4zx3ozPh1ztv1XiUxEHlWKwQSZttS01mEMG0hdFnL2OvfQfFFE dGXGPK8aJhgDUlyAtIz9suKkhu8rLtsL8C5ZGTHxfKo9zvjm76ZIPA5PvSM5O0cxRQ7b 8zrwRYhtYoks3gFyDYN7vNgVoErsKlOILOfEYATNbM5SYO3EDUzBla5LfXsGezD3rNSv Nn8Xhc2Kf+Kj7Ax9E7ZBkBElh8zgGG2bxlOyC5A/UmHPJdF4MRnLeOeOTjD1OAZwRJvU KsIw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=0N5XEumgJF8cftqf20U3FSrMr1ta60Azg7iO4Bu1LTI=; b=Fb0niZY61skQNaHnURZJEUjetO3LvLQQcUGtE7fVaGpdWvmsdshv9IQ2R+sIuGIBFX wCkcjzU7fCbRHrx1mlbooZiqUGN9b3Q/sxUO/QxHr3dnfmViYVjLwk5vjsY/LtWQVgpC 4q77F6kApxxRkqCkL4y5ibClyedbvVXyK2scw50xZC+a1CbP0JnVxwBMm6q3CfR2pTGW nnfqh2b/+xzikVFc4CJsai9DCTr/533eKtSIDROe8yEFEYR6aA1W4fg/EkzrTbptzcmt HF+yRzjNSY75mxCQ2GOGF2sRM5L7jDpMNagTH9jdWaUimeLiaKQTkNxvN1RfHdNgiZk0 IPhg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=RK1E1mlJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id f17si22004488otq.96.2019.12.31.05.43.24; Tue, 31 Dec 2019 05:43:35 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@mediatek.com header.s=dk header.b=RK1E1mlJ; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727152AbfLaNmI (ORCPT + 99 others); Tue, 31 Dec 2019 08:42:08 -0500 Received: from mailgw01.mediatek.com ([210.61.82.183]:21678 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1727075AbfLaNmF (ORCPT ); Tue, 31 Dec 2019 08:42:05 -0500 X-UUID: 16755d090f874599915789c37385e93f-20191231 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Transfer-Encoding:Content-Type:MIME-Version:References:In-Reply-To:Message-ID:Date:Subject:CC:To:From; bh=0N5XEumgJF8cftqf20U3FSrMr1ta60Azg7iO4Bu1LTI=; b=RK1E1mlJWCQwhswMLUAsWpPbexiVQ7wr0gMOco0dnd9Q0bNl8eDiGyYnikiTaZF4yLelY28lSgK0vUt6kkJAjwod5zqE0SW9v8zJVRtN7dXN7+0keL3f72tK6j5P+SXMIyAncPn48ygVpsdSXv//uhAMJupyDSRfYNtvb7eUkIk=; X-UUID: 16755d090f874599915789c37385e93f-20191231 Received: from mtkcas09.mediatek.inc [(172.21.101.178)] by mailgw01.mediatek.com (envelope-from ) (Cellopoint E-mail Firewall v4.1.10 Build 0809 with TLS) with ESMTP id 2060077219; Tue, 31 Dec 2019 21:41:50 +0800 Received: from mtkcas07.mediatek.inc (172.21.101.84) by mtkmbs02n1.mediatek.inc (172.21.101.77) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 31 Dec 2019 21:41:02 +0800 Received: from mtkswgap22.mediatek.inc (172.21.77.33) by mtkcas07.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 31 Dec 2019 21:41:17 +0800 From: Light Hsieh To: CC: , , , , , Light Hsieh Subject: [PATCH v7 5/6] Backward compatible to previous Mediatek's bias-pull usage Date: Tue, 31 Dec 2019 21:41:46 +0800 Message-ID: <1577799707-11855-5-git-send-email-light.hsieh@mediatek.com> X-Mailer: git-send-email 1.8.1.1.dirty In-Reply-To: <1577799707-11855-1-git-send-email-light.hsieh@mediatek.com> References: <1577799707-11855-1-git-send-email-light.hsieh@mediatek.com> MIME-Version: 1.0 Content-Type: text/plain X-MTK: N Content-Transfer-Encoding: base64 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org UmVmaW5lIG10a19waW5jb25mX3NldCgpL210a19waW5jb25mX2dldCgpIGZvciBiYWNrd2FyZCBj b21wYXRpYmlsaXR5IHRvDQpwcmV2aW91cyBNZWRpYVRlaydzIGJpYXMtcHVsbCB1c2FnZS4NCklu IFBJTkNUUkxfTVRLIHRoYXQgdXNlIHBpbmN0cmwtbXRrLWNvbW1vbi5jLCBiaWFzLXB1bGwgc2V0 dGluZyBmb3IgcGlucw0Kd2l0aCAyIHB1bGwgcmVzaXN0b3JzIGNhbiBiZSBzcGVjaWZpZWQgYXMg dmFsdWUgZm9yIGJpYXMtcHVsbC11cCBhbmQNCmJpYXMtcHVsbC1kb3duLiBGb3IgZXhhbXBsZToN CiAgICBiaWFzLXB1bGwtdXAgPSA8TVRLX1BVUERfU0VUX1IxUjBfMDA+Ow0KICAgIGJpYXMtcHVs bC11cCA9IDxNVEtfUFVQRF9TRVRfUjFSMF8wMT47DQogICAgYmlhcy1wdWxsLXVwID0gPE1US19Q VVBEX1NFVF9SMVIwXzEwPjsNCiAgICBiaWFzLXB1bGwtdXAgPSA8TVRLX1BVUERfU0VUX1IxUjBf MTE+Ow0KICAgIGJpYXMtcHVsbC1kb3duID0gPE1US19QVVBEX1NFVF9SMVIwXzAwPjsNCiAgICBi aWFzLXB1bGwtZG93biA9IDxNVEtfUFVQRF9TRVRfUjFSMF8wMT47DQogICAgYmlhcy1wdWxsLWRv d24gPSA8TVRLX1BVUERfU0VUX1IxUjBfMTA+Ow0KICAgIGJpYXMtcHVsbC1kb3duID0gPE1US19Q VVBEX1NFVF9SMVIwXzExPjsNCg0KT24gdGhlIG90aGVyIGhhbmQsIFBJTkNUUkxfTVRLX1BBUklT IHVzZSBjdXN0b21pemVkIHByb3BlcnRpZXMNCiJtZWRpYXRlayxwdWxsLXVwLWFkdiIgYW5kICJt ZWRpYXRlayxwdWxsLWRvd24tYWR2IiB0byBzcGVjaWZ5IGJpYXMtcHVsbA0Kc2V0dGluZyBmb3Ig cGlucyB3aXRoIDIgcHVsbCByZXNpc3RvcnMuDQpUaGlzIGludHJvZHVjZSBpbi1jb21wYXRpYmls aXR5IGluIGRldmljZSB0cmVlIGFuZCBpbmNyZWFzZSBwb3J0aW5nDQplZmZvcnQgdG8gTWVkaWFU ZWsncyBjdXN0b21lciB0aGF0IGhhZCBhbHJlYWR5IHVzZWQgUElOQ1RSTF9NVEsgdmVyc2lvbi4N CkJlc2lkZXMsIGlmIGN1c3RvbWVycyBhcmUgbm90IGF3YXJlIG9mIHRoaXMgY2hhbmdlIGFuZCBz dGlsbCB3cml0ZSBkZXZpY2V0cmVlDQpmb3IgUElOQ1RSTF9NVEsgdmVyc2lvbiwgdGhleSBtYXkg ZW5jb3VudGVyIHJ1bnRpbWUgZmFpbHVyZSB3aXRoIHBpbmN0cmwgYW5kDQpzcGVudCB0aW1lIHRv IGRlYnVnLg0KDQpUaGlzIHBhdGNoIGFkZHMgYmFja3dhcmQgY29tcGF0aWJsZSB0byBwcmV2aW91 cyBNZWRpYVRlaydzIGJpYXMtcHVsbCB1c2FnZQ0Kc28gdGhhdCBNZWRpYXRlaydzIGN1c3RvbWVy IG5lZWQgbm90IHVzZSBhIG5ldyBkZXZpY2V0cmVlIHByb3BlcnR5IG5hbWUuDQpUaGUgcmF0aW9u YWxlIGlzIHRoYXQ6IGNoYW5naW5nIGRyaXZlciBpbXBsZW1lbnRhdGlvbiBoYWQgYmV0dGVyIGxl YXZlDQppbnRlcmZhY2UgdW5jaGFuZ2VkLg0KDQpDaGFuZ2UtSWQ6IEk4ZjU3Yzk1ZTNiYWVmY2Fh YmRjYmE0YmJmYjBkYzY5ZDJhODI1YzM0DQotLS0NCiBkcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsv cGluY3RybC1tdDY3NjUuYyAgICAgICAgfCAgIDYgKy0NCiBkcml2ZXJzL3BpbmN0cmwvbWVkaWF0 ZWsvcGluY3RybC1tdDgxODMuYyAgICAgICAgfCAgIDYgKy0NCiBkcml2ZXJzL3BpbmN0cmwvbWVk aWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmMgfCAyNDEgKysrKysrKysrKysrKysrKysrKysr KysNCiBkcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmggfCAg MTEgKysNCiBkcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1wYXJpcy5jICAgICAgICAg fCAgNDkgKysrLS0NCiA1IGZpbGVzIGNoYW5nZWQsIDI4NSBpbnNlcnRpb25zKCspLCAyOCBkZWxl dGlvbnMoLSkNCg0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJs LW10Njc2NS5jIGIvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXQ2NzY1LmMNCmlu ZGV4IDdmYWUzOTcuLjkwNWRhZThjIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9waW5jdHJsL21lZGlh dGVrL3BpbmN0cmwtbXQ2NzY1LmMNCisrKyBiL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5j dHJsLW10Njc2NS5jDQpAQCAtMTA3MiwxMCArMTA3Miw4IEBADQogCS5ncGlvX20gPSAwLA0KIAku YmFzZV9uYW1lcyA9IG10Njc2NV9waW5jdHJsX3JlZ2lzdGVyX2Jhc2VfbmFtZXMsDQogCS5uYmFz ZV9uYW1lcyA9IEFSUkFZX1NJWkUobXQ2NzY1X3BpbmN0cmxfcmVnaXN0ZXJfYmFzZV9uYW1lcyks DQotCS5iaWFzX2Rpc2FibGVfc2V0ID0gbXRrX3BpbmNvbmZfYmlhc19kaXNhYmxlX3NldCwNCi0J LmJpYXNfZGlzYWJsZV9nZXQgPSBtdGtfcGluY29uZl9iaWFzX2Rpc2FibGVfZ2V0LA0KLQkuYmlh c19zZXQgPSBtdGtfcGluY29uZl9iaWFzX3NldCwNCi0JLmJpYXNfZ2V0ID0gbXRrX3BpbmNvbmZf Ymlhc19nZXQsDQorCS5iaWFzX3NldF9jb21ibyA9IG10a19waW5jb25mX2JpYXNfc2V0X2NvbWJv LA0KKwkuYmlhc19nZXRfY29tYm8gPSBtdGtfcGluY29uZl9iaWFzX2dldF9jb21ibywNCiAJLmRy aXZlX3NldCA9IG10a19waW5jb25mX2RyaXZlX3NldF9yYXcsDQogCS5kcml2ZV9nZXQgPSBtdGtf cGluY29uZl9kcml2ZV9nZXRfcmF3LA0KIAkuYWR2X3B1bGxfZ2V0ID0gbXRrX3BpbmNvbmZfYWR2 X3B1bGxfZ2V0LA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJs LW10ODE4My5jIGIvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXQ4MTgzLmMNCmlu ZGV4IDRlY2E4MTguLjYwMzE4MzMgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0 ZWsvcGluY3RybC1tdDgxODMuYw0KKysrIGIvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0 cmwtbXQ4MTgzLmMNCkBAIC01NTYsMTAgKzU1Niw4IEBADQogCS5ncGlvX20gPSAwLA0KIAkuYmFz ZV9uYW1lcyA9IG10ODE4M19waW5jdHJsX3JlZ2lzdGVyX2Jhc2VfbmFtZXMsDQogCS5uYmFzZV9u YW1lcyA9IEFSUkFZX1NJWkUobXQ4MTgzX3BpbmN0cmxfcmVnaXN0ZXJfYmFzZV9uYW1lcyksDQot CS5iaWFzX2Rpc2FibGVfc2V0ID0gbXRrX3BpbmNvbmZfYmlhc19kaXNhYmxlX3NldF9yZXYxLA0K LQkuYmlhc19kaXNhYmxlX2dldCA9IG10a19waW5jb25mX2JpYXNfZGlzYWJsZV9nZXRfcmV2MSwN Ci0JLmJpYXNfc2V0ID0gbXRrX3BpbmNvbmZfYmlhc19zZXRfcmV2MSwNCi0JLmJpYXNfZ2V0ID0g bXRrX3BpbmNvbmZfYmlhc19nZXRfcmV2MSwNCisJLmJpYXNfc2V0X2NvbWJvID0gbXRrX3BpbmNv bmZfYmlhc19zZXRfY29tYm8sDQorCS5iaWFzX2dldF9jb21ibyA9IG10a19waW5jb25mX2JpYXNf Z2V0X2NvbWJvLA0KIAkuZHJpdmVfc2V0ID0gbXRrX3BpbmNvbmZfZHJpdmVfc2V0X3JldjEsDQog CS5kcml2ZV9nZXQgPSBtdGtfcGluY29uZl9kcml2ZV9nZXRfcmV2MSwNCiAJLmFkdl9wdWxsX2dl dCA9IG10a19waW5jb25mX2Fkdl9wdWxsX2dldCwNCmRpZmYgLS1naXQgYS9kcml2ZXJzL3BpbmN0 cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmMgYi9kcml2ZXJzL3BpbmN0cmwvbWVk aWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmMNCmluZGV4IDIyNDdlYWUuLjE5MWIxYzQgMTAw NjQ0DQotLS0gYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYy LmMNCisrKyBiL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJsLW10ay1jb21tb24tdjIu Yw0KQEAgLTYsNiArNiw3IEBADQogICoNCiAgKi8NCiANCisjaW5jbHVkZSA8ZHQtYmluZGluZ3Mv cGluY3RybC9tdDY1eHguaD4NCiAjaW5jbHVkZSA8bGludXgvZGV2aWNlLmg+DQogI2luY2x1ZGUg PGxpbnV4L2Vyci5oPg0KICNpbmNsdWRlIDxsaW51eC9ncGlvL2RyaXZlci5oPg0KQEAgLTIwNiw2 ICsyMDcsMjAgQEAgaW50IG10a19od19zZXRfdmFsdWUoc3RydWN0IG10a19waW5jdHJsICpodywg Y29uc3Qgc3RydWN0IG10a19waW5fZGVzYyAqZGVzYywNCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3Zv aWQgbXRrX2h3X3NldF92YWx1ZV9ub19sb29rdXAoc3RydWN0IG10a19waW5jdHJsICpodywNCisJ CQkJY29uc3Qgc3RydWN0IG10a19waW5fZGVzYyAqZGVzYywNCisJCQkJaW50IHZhbHVlLCBzdHJ1 Y3QgbXRrX3Bpbl9maWVsZCAqcGYpDQorew0KKwlpZiAodmFsdWUgPCAwIHx8IHZhbHVlID4gcGYt Pm1hc2spDQorCQlyZXR1cm47DQorDQorCWlmICghcGYtPm5leHQpDQorCQltdGtfcm13KGh3LCBw Zi0+aW5kZXgsIHBmLT5vZmZzZXQsIHBmLT5tYXNrIDw8IHBmLT5iaXRwb3MsDQorCQkJKHZhbHVl ICYgcGYtPm1hc2spIDw8IHBmLT5iaXRwb3MpOw0KKwllbHNlDQorCQltdGtfaHdfd3JpdGVfY3Jv c3NfZmllbGQoaHcsIHBmLCB2YWx1ZSk7DQorfQ0KKw0KIGludCBtdGtfaHdfZ2V0X3ZhbHVlKHN0 cnVjdCBtdGtfcGluY3RybCAqaHcsIGNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2MsDQog CQkgICAgIGludCBmaWVsZCwgaW50ICp2YWx1ZSkNCiB7DQpAQCAtMjI1LDYgKzI0MCwxNyBAQCBp bnQgbXRrX2h3X2dldF92YWx1ZShzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LCBjb25zdCBzdHJ1Y3Qg bXRrX3Bpbl9kZXNjICpkZXNjLA0KIAlyZXR1cm4gMDsNCiB9DQogDQordm9pZCBtdGtfaHdfZ2V0 X3ZhbHVlX25vX2xvb2t1cChzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LA0KKwkJCQljb25zdCBzdHJ1 Y3QgbXRrX3Bpbl9kZXNjICpkZXNjLA0KKwkJCQlpbnQgKnZhbHVlLCBzdHJ1Y3QgbXRrX3Bpbl9m aWVsZCAqcGYpDQorew0KKwlpZiAoIXBmLT5uZXh0KQ0KKwkJKnZhbHVlID0gKG10a19yMzIoaHcs IHBmLT5pbmRleCwgcGYtPm9mZnNldCkNCisJCQkgID4+IHBmLT5iaXRwb3MpICYgcGYtPm1hc2s7 DQorCWVsc2UNCisJCW10a19od19yZWFkX2Nyb3NzX2ZpZWxkKGh3LCBwZiwgdmFsdWUpOw0KK30N CisNCiBzdGF0aWMgaW50IG10a194dF9maW5kX2VpbnRfbnVtKHN0cnVjdCBtdGtfcGluY3RybCAq aHcsIHVuc2lnbmVkIGxvbmcgZWludF9uKQ0KIHsNCiAJY29uc3Qgc3RydWN0IG10a19waW5fZGVz YyAqZGVzYzsNCkBAIC01MTcsNiArNTQzLDIyMSBAQCBpbnQgbXRrX3BpbmNvbmZfYmlhc19nZXRf cmV2MShzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LA0KIAlyZXR1cm4gMDsNCiB9DQogDQorLyogQ29t Ym8gZm9yIHRoZSBmb2xsb3dpbmcgcHVsbCByZWdpc3RlciB0eXBlOg0KKyAqIDEuIFBVICsgUEQN CisgKiAyLiBQVUxMU0VMICsgUFVMTEVODQorICogMy4gUFVQRCArIFIwICsgUjENCisgKi8NCitz dGF0aWMgaW50IG10a19waW5jb25mX2JpYXNfc2V0X3B1X3BkKHN0cnVjdCBtdGtfcGluY3RybCAq aHcsDQorCQkJCWNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2MsDQorCQkJCXUzMiBwdWxs dXAsIHUzMiBhcmcpDQorew0KKwlpbnQgZXJyLCBwdSwgcGQ7DQorDQorCWlmIChhcmcgPT0gTVRL X0RJU0FCTEUpIHsNCisJCXB1ID0gMDsNCisJCXBkID0gMDsNCisJfSBlbHNlIGlmICgoYXJnID09 IE1US19FTkFCTEUpICYmIHB1bGx1cCkgew0KKwkJcHUgPSAxOw0KKwkJcGQgPSAwOw0KKwl9IGVs c2UgaWYgKChhcmcgPT0gTVRLX0VOQUJMRSkgJiYgIXB1bGx1cCkgew0KKwkJcHUgPSAwOw0KKwkJ cGQgPSAxOw0KKwl9IGVsc2Ugew0KKwkJZ290byBvdXQ7DQorCX0NCisNCisJZXJyID0gbXRrX2h3 X3NldF92YWx1ZShodywgZGVzYywgUElOQ1RSTF9QSU5fUkVHX1BVLCBwdSk7DQorCWlmIChlcnIp DQorCQlnb3RvIG91dDsNCisNCisJZXJyID0gbXRrX2h3X3NldF92YWx1ZShodywgZGVzYywgUElO Q1RSTF9QSU5fUkVHX1BELCBwZCk7DQorDQorb3V0Og0KKwlyZXR1cm4gZXJyOw0KK30NCisNCitz dGF0aWMgaW50IG10a19waW5jb25mX2JpYXNfc2V0X3B1bGxzZWxfcHVsbGVuKHN0cnVjdCBtdGtf cGluY3RybCAqaHcsDQorCQkJCWNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2MsDQorCQkJ CXUzMiBwdWxsdXAsIHUzMiBhcmcpDQorew0KKwlpbnQgZXJyLCBlbmFibGU7DQorDQorCWlmIChh cmcgPT0gTVRLX0RJU0FCTEUpDQorCQllbmFibGUgPSAwOw0KKwllbHNlIGlmIChhcmcgPT0gTVRL X0VOQUJMRSkNCisJCWVuYWJsZSA9IDE7DQorCWVsc2UNCisJCWdvdG8gb3V0Ow0KKw0KKwllcnIg PSBtdGtfaHdfc2V0X3ZhbHVlKGh3LCBkZXNjLCBQSU5DVFJMX1BJTl9SRUdfUFVMTEVOLCBlbmFi bGUpOw0KKwlpZiAoZXJyKQ0KKwkJZ290byBvdXQ7DQorDQorCWVyciA9IG10a19od19zZXRfdmFs dWUoaHcsIGRlc2MsIFBJTkNUUkxfUElOX1JFR19QVUxMU0VMLCBwdWxsdXApOw0KKw0KK291dDoN CisJcmV0dXJuIGVycjsNCit9DQorDQorc3RhdGljIGludCBtdGtfcGluY29uZl9iaWFzX3NldF9w dXBkX3IxX3IwKHN0cnVjdCBtdGtfcGluY3RybCAqaHcsDQorCQkJCWNvbnN0IHN0cnVjdCBtdGtf cGluX2Rlc2MgKmRlc2MsDQorCQkJCXUzMiBwdWxsdXAsIHUzMiBhcmcpDQorew0KKwlpbnQgZXJy LCByMCwgcjE7DQorDQorCWlmICgoYXJnID09IE1US19ESVNBQkxFKSB8fCAoYXJnID09IE1US19Q VVBEX1NFVF9SMVIwXzAwKSkgew0KKwkJcHVsbHVwID0gMDsNCisJCXIwID0gMDsNCisJCXIxID0g MDsNCisJfSBlbHNlIGlmIChhcmcgPT0gTVRLX1BVUERfU0VUX1IxUjBfMDEpIHsNCisJCXIwID0g MTsNCisJCXIxID0gMDsNCisJfSBlbHNlIGlmIChhcmcgPT0gTVRLX1BVUERfU0VUX1IxUjBfMTAp IHsNCisJCXIwID0gMDsNCisJCXIxID0gMTsNCisJfSBlbHNlIGlmIChhcmcgPT0gTVRLX1BVUERf U0VUX1IxUjBfMTEpIHsNCisJCXIwID0gMTsNCisJCXIxID0gMTsNCisJfSBlbHNlDQorCQlnb3Rv IG91dDsNCisNCisJLyogTVRLIEhXIFBVUEQgYml0OiAxIGZvciBwdWxsLWRvd24sIDAgZm9yIHB1 bGwtdXAgKi8NCisJZXJyID0gbXRrX2h3X3NldF92YWx1ZShodywgZGVzYywgUElOQ1RSTF9QSU5f UkVHX1BVUEQsICFwdWxsdXApOw0KKwlpZiAoZXJyKQ0KKwkJZ290byBvdXQ7DQorDQorCWVyciA9 IG10a19od19zZXRfdmFsdWUoaHcsIGRlc2MsIFBJTkNUUkxfUElOX1JFR19SMCwgcjApOw0KKwlp ZiAoZXJyKQ0KKwkJZ290byBvdXQ7DQorDQorCWVyciA9IG10a19od19zZXRfdmFsdWUoaHcsIGRl c2MsIFBJTkNUUkxfUElOX1JFR19SMSwgcjEpOw0KKw0KK291dDoNCisJcmV0dXJuIGVycjsNCit9 DQorDQorc3RhdGljIGludCBtdGtfcGluY29uZl9iaWFzX2dldF9wdV9wZChzdHJ1Y3QgbXRrX3Bp bmN0cmwgKmh3LA0KKwkJCQljb25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICpkZXNjLA0KKwkJCQl1 MzIgKnB1bGx1cCwgdTMyICplbmFibGUpDQorew0KKwlpbnQgZXJyLCBwdSwgcGQ7DQorDQorCWVy ciA9IG10a19od19nZXRfdmFsdWUoaHcsIGRlc2MsIFBJTkNUUkxfUElOX1JFR19QVSwgJnB1KTsN CisJaWYgKGVycikNCisJCWdvdG8gb3V0Ow0KKw0KKwllcnIgPSBtdGtfaHdfZ2V0X3ZhbHVlKGh3 LCBkZXNjLCBQSU5DVFJMX1BJTl9SRUdfUEQsICZwZCk7DQorCWlmIChlcnIpDQorCQlnb3RvIG91 dDsNCisNCisJaWYgKHB1ID09IDAgJiYgcGQgPT0gMCkgew0KKwkJKnB1bGx1cCA9IDA7DQorCQkq ZW5hYmxlID0gTVRLX0RJU0FCTEU7DQorCX0gZWxzZSBpZiAocHUgPT0gMSAmJiBwZCA9PSAwKSB7 DQorCQkqcHVsbHVwID0gMTsNCisJCSplbmFibGUgPSBNVEtfRU5BQkxFOw0KKwl9IGVsc2UgaWYg KHB1ID09IDAgJiYgcGQgPT0gMSkgew0KKwkJKnB1bGx1cCA9IDA7DQorCQkqZW5hYmxlID0gTVRL X0VOQUJMRTsNCisJfSBlbHNlDQorCQllcnIgPSAtRUlOVkFMOw0KKw0KK291dDoNCisJcmV0dXJu IGVycjsNCit9DQorDQorc3RhdGljIGludCBtdGtfcGluY29uZl9iaWFzX2dldF9wdWxsc2VsX3B1 bGxlbihzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LA0KKwkJCQljb25zdCBzdHJ1Y3QgbXRrX3Bpbl9k ZXNjICpkZXNjLA0KKwkJCQl1MzIgKnB1bGx1cCwgdTMyICplbmFibGUpDQorew0KKwlpbnQgZXJy Ow0KKw0KKwllcnIgPSBtdGtfaHdfZ2V0X3ZhbHVlKGh3LCBkZXNjLCBQSU5DVFJMX1BJTl9SRUdf UFVMTFNFTCwgcHVsbHVwKTsNCisJaWYgKGVycikNCisJCWdvdG8gb3V0Ow0KKw0KKwllcnIgPSBt dGtfaHdfZ2V0X3ZhbHVlKGh3LCBkZXNjLCBQSU5DVFJMX1BJTl9SRUdfUFVMTEVOLCBlbmFibGUp Ow0KKw0KK291dDoNCisJcmV0dXJuIGVycjsNCit9DQorDQorc3RhdGljIGludCBtdGtfcGluY29u Zl9iaWFzX2dldF9wdXBkX3IxX3IwKHN0cnVjdCBtdGtfcGluY3RybCAqaHcsDQorCQkJCWNvbnN0 IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2MsDQorCQkJCXUzMiAqcHVsbHVwLCB1MzIgKmVuYWJs ZSkNCit7DQorCWludCBlcnIsIHIwLCByMTsNCisNCisJZXJyID0gbXRrX2h3X2dldF92YWx1ZSho dywgZGVzYywgUElOQ1RSTF9QSU5fUkVHX1BVUEQsIHB1bGx1cCk7DQorCWlmIChlcnIpDQorCQln b3RvIG91dDsNCisJLyogTVRLIEhXIFBVUEQgYml0OiAxIGZvciBwdWxsLWRvd24sIDAgZm9yIHB1 bGwtdXAgKi8NCisJKnB1bGx1cCA9ICEoKnB1bGx1cCk7DQorDQorCWVyciA9IG10a19od19nZXRf dmFsdWUoaHcsIGRlc2MsIFBJTkNUUkxfUElOX1JFR19SMCwgJnIwKTsNCisJaWYgKGVycikNCisJ CWdvdG8gb3V0Ow0KKw0KKwllcnIgPSBtdGtfaHdfZ2V0X3ZhbHVlKGh3LCBkZXNjLCBQSU5DVFJM X1BJTl9SRUdfUjEsICZyMSk7DQorCWlmIChlcnIpDQorCQlnb3RvIG91dDsNCisNCisJaWYgKChy MSA9PSAwKSAmJiAocjAgPT0gMCkpDQorCQkqZW5hYmxlID0gTVRLX1BVUERfU0VUX1IxUjBfMDA7 DQorCWVsc2UgaWYgKChyMSA9PSAwKSAmJiAocjAgPT0gMSkpDQorCQkqZW5hYmxlID0gTVRLX1BV UERfU0VUX1IxUjBfMDE7DQorCWVsc2UgaWYgKChyMSA9PSAxKSAmJiAocjAgPT0gMCkpDQorCQkq ZW5hYmxlID0gTVRLX1BVUERfU0VUX1IxUjBfMTA7DQorCWVsc2UgaWYgKChyMSA9PSAxKSAmJiAo cjAgPT0gMSkpDQorCQkqZW5hYmxlID0gTVRLX1BVUERfU0VUX1IxUjBfMTE7DQorCWVsc2UNCisJ CWVyciA9IC1FSU5WQUw7DQorDQorb3V0Og0KKwlyZXR1cm4gZXJyOw0KK30NCisNCitpbnQgbXRr X3BpbmNvbmZfYmlhc19zZXRfY29tYm8oc3RydWN0IG10a19waW5jdHJsICpodywNCisJCQkJY29u c3Qgc3RydWN0IG10a19waW5fZGVzYyAqZGVzYywNCisJCQkJdTMyIHB1bGx1cCwgdTMyIGFyZykN Cit7DQorCWludCBlcnI7DQorDQorCWVyciA9IG10a19waW5jb25mX2JpYXNfc2V0X3B1X3BkKGh3 LCBkZXNjLCBwdWxsdXAsIGFyZyk7DQorCWlmICghZXJyKQ0KKwkJZ290byBvdXQ7DQorDQorCWVy ciA9IG10a19waW5jb25mX2JpYXNfc2V0X3B1bGxzZWxfcHVsbGVuKGh3LCBkZXNjLCBwdWxsdXAs IGFyZyk7DQorCWlmICghZXJyKQ0KKwkJZ290byBvdXQ7DQorDQorCWVyciA9IG10a19waW5jb25m X2JpYXNfc2V0X3B1cGRfcjFfcjAoaHcsIGRlc2MsIHB1bGx1cCwgYXJnKTsNCisNCitvdXQ6DQor CXJldHVybiBlcnI7DQorfQ0KKw0KK2ludCBtdGtfcGluY29uZl9iaWFzX2dldF9jb21ibyhzdHJ1 Y3QgbXRrX3BpbmN0cmwgKmh3LA0KKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2Mg KmRlc2MsDQorCQkJICAgICAgdTMyICpwdWxsdXAsIHUzMiAqZW5hYmxlKQ0KK3sNCisJaW50IGVy cjsNCisNCisJZXJyID0gbXRrX3BpbmNvbmZfYmlhc19nZXRfcHVfcGQoaHcsIGRlc2MsIHB1bGx1 cCwgZW5hYmxlKTsNCisJaWYgKCFlcnIpDQorCQlnb3RvIG91dDsNCisNCisJZXJyID0gbXRrX3Bp bmNvbmZfYmlhc19nZXRfcHVsbHNlbF9wdWxsZW4oaHcsIGRlc2MsIHB1bGx1cCwgZW5hYmxlKTsN CisJaWYgKCFlcnIpDQorCQlnb3RvIG91dDsNCisNCisJZXJyID0gbXRrX3BpbmNvbmZfYmlhc19n ZXRfcHVwZF9yMV9yMChodywgZGVzYywgcHVsbHVwLCBlbmFibGUpOw0KKw0KK291dDoNCisJcmV0 dXJuIGVycjsNCit9DQorDQogLyogUmV2aXNpb24gMCAqLw0KIGludCBtdGtfcGluY29uZl9kcml2 ZV9zZXQoc3RydWN0IG10a19waW5jdHJsICpodywNCiAJCQkgIGNvbnN0IHN0cnVjdCBtdGtfcGlu X2Rlc2MgKmRlc2MsIHUzMiBhcmcpDQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL21lZGlh dGVrL3BpbmN0cmwtbXRrLWNvbW1vbi12Mi5oIGIvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3Bp bmN0cmwtbXRrLWNvbW1vbi12Mi5oDQppbmRleCA3NWQwZTA3Li4yN2RmMDg3IDEwMDY0NA0KLS0t IGEvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtbXRrLWNvbW1vbi12Mi5oDQorKysg Yi9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1tdGstY29tbW9uLXYyLmgNCkBAIC0y MTYsNiArMjE2LDExIEBAIHN0cnVjdCBtdGtfcGluX3NvYyB7DQogCWludCAoKmJpYXNfZ2V0KShz dHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LA0KIAkJCWNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRl c2MsIGJvb2wgcHVsbHVwLCBpbnQgKnJlcyk7DQogDQorCWludCAoKmJpYXNfc2V0X2NvbWJvKShz dHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LA0KKwkJCWNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRl c2MsIHUzMiBwdWxsdXAsIHUzMiBhcmcpOw0KKwlpbnQgKCpiaWFzX2dldF9jb21ibykoc3RydWN0 IG10a19waW5jdHJsICpodywNCisJCQljb25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICpkZXNjLCB1 MzIgKnB1bGx1cCwgdTMyICphcmcpOw0KKw0KIAlpbnQgKCpkcml2ZV9zZXQpKHN0cnVjdCBtdGtf cGluY3RybCAqaHcsDQogCQkJIGNvbnN0IHN0cnVjdCBtdGtfcGluX2Rlc2MgKmRlc2MsIHUzMiBh cmcpOw0KIAlpbnQgKCpkcml2ZV9nZXQpKHN0cnVjdCBtdGtfcGluY3RybCAqaHcsDQpAQCAtMjc3 LDYgKzI4MiwxMiBAQCBpbnQgbXRrX3BpbmNvbmZfYmlhc19zZXRfcmV2MShzdHJ1Y3QgbXRrX3Bp bmN0cmwgKmh3LA0KIGludCBtdGtfcGluY29uZl9iaWFzX2dldF9yZXYxKHN0cnVjdCBtdGtfcGlu Y3RybCAqaHcsDQogCQkJICAgICAgY29uc3Qgc3RydWN0IG10a19waW5fZGVzYyAqZGVzYywgYm9v bCBwdWxsdXAsDQogCQkJICAgICAgaW50ICpyZXMpOw0KK2ludCBtdGtfcGluY29uZl9iaWFzX3Nl dF9jb21ibyhzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3LA0KKwkJCQljb25zdCBzdHJ1Y3QgbXRrX3Bp bl9kZXNjICpkZXNjLA0KKwkJCQl1MzIgcHVsbHVwLCB1MzIgZW5hYmxlKTsNCitpbnQgbXRrX3Bp bmNvbmZfYmlhc19nZXRfY29tYm8oc3RydWN0IG10a19waW5jdHJsICpodywNCisJCQkgICAgICBj b25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICpkZXNjLA0KKwkJCSAgICAgIHUzMiAqcHVsbHVwLCB1 MzIgKmVuYWJsZSk7DQogDQogaW50IG10a19waW5jb25mX2RyaXZlX3NldChzdHJ1Y3QgbXRrX3Bp bmN0cmwgKmh3LA0KIAkJCSAgY29uc3Qgc3RydWN0IG10a19waW5fZGVzYyAqZGVzYywgdTMyIGFy Zyk7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9waW5jdHJsL21lZGlhdGVrL3BpbmN0cmwtcGFyaXMu YyBiL2RyaXZlcnMvcGluY3RybC9tZWRpYXRlay9waW5jdHJsLXBhcmlzLmMNCmluZGV4IGQwOWE3 MjYuLjExNWViYzEgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3Ry bC1wYXJpcy5jDQorKysgYi9kcml2ZXJzL3BpbmN0cmwvbWVkaWF0ZWsvcGluY3RybC1wYXJpcy5j DQpAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgaW50IG10a19waW5jb25mX2dldChzdHJ1Y3QgcGlu Y3RybF9kZXYgKnBjdGxkZXYsDQogew0KIAlzdHJ1Y3QgbXRrX3BpbmN0cmwgKmh3ID0gcGluY3Ry bF9kZXZfZ2V0X2RydmRhdGEocGN0bGRldik7DQogCXUzMiBwYXJhbSA9IHBpbmNvbmZfdG9fY29u ZmlnX3BhcmFtKCpjb25maWcpOw0KLQlpbnQgZXJyLCByZWcsIHJldCA9IDE7DQorCWludCBwdWxs dXAsIGVyciwgcmVnLCByZXQgPSAxOw0KIAljb25zdCBzdHJ1Y3QgbXRrX3Bpbl9kZXNjICpkZXNj Ow0KIA0KIAlpZiAocGluID49IGh3LT5zb2MtPm5waW5zKSB7DQpAQCAtODksMjIgKzg5LDMxIEBA IHN0YXRpYyBpbnQgbXRrX3BpbmNvbmZfZ2V0KHN0cnVjdCBwaW5jdHJsX2RldiAqcGN0bGRldiwN CiANCiAJc3dpdGNoIChwYXJhbSkgew0KIAljYXNlIFBJTl9DT05GSUdfQklBU19ESVNBQkxFOg0K LQkJaWYgKGh3LT5zb2MtPmJpYXNfZGlzYWJsZV9nZXQpDQotCQkJZXJyID0gaHctPnNvYy0+Ymlh c19kaXNhYmxlX2dldChodywgZGVzYywgJnJldCk7DQotCQllbHNlDQotCQkJZXJyID0gLUVOT1RT VVBQOw0KLQkJYnJlYWs7DQogCWNhc2UgUElOX0NPTkZJR19CSUFTX1BVTExfVVA6DQotCQlpZiAo aHctPnNvYy0+Ymlhc19nZXQpDQotCQkJZXJyID0gaHctPnNvYy0+Ymlhc19nZXQoaHcsIGRlc2Ms IDEsICZyZXQpOw0KLQkJZWxzZQ0KLQkJCWVyciA9IC1FTk9UU1VQUDsNCi0JCWJyZWFrOw0KIAlj YXNlIFBJTl9DT05GSUdfQklBU19QVUxMX0RPV046DQotCQlpZiAoaHctPnNvYy0+Ymlhc19nZXQp DQotCQkJZXJyID0gaHctPnNvYy0+Ymlhc19nZXQoaHcsIGRlc2MsIDAsICZyZXQpOw0KLQkJZWxz ZQ0KKwkJaWYgKGh3LT5zb2MtPmJpYXNfZ2V0X2NvbWJvKSB7DQorCQkJZXJyID0gaHctPnNvYy0+ Ymlhc19nZXRfY29tYm8oaHcsIGRlc2MsICZwdWxsdXAsICZyZXQpOw0KKwkJCWlmIChlcnIpDQor CQkJCWdvdG8gb3V0Ow0KKwkJCWlmIChwYXJhbSA9PSBQSU5fQ09ORklHX0JJQVNfRElTQUJMRSkg ew0KKwkJCQlpZiAocmV0ID09IE1US19QVVBEX1NFVF9SMVIwXzAwKQ0KKwkJCQkJcmV0ID0gTVRL X0RJU0FCTEU7DQorCQkJfSBlbHNlIGlmIChwYXJhbSA9PSBQSU5fQ09ORklHX0JJQVNfUFVMTF9V UCkgew0KKwkJCQkvKiBXaGVuIGRlc2lyZSB0byBnZXQgcHVsbC11cCB2YWx1ZSwgcmV0dXJuDQor CQkJCSAqICBlcnJvciBpZiBjdXJyZW50IHNldHRpbmcgaXMgcHVsbC1kb3duDQorCQkJCSAqLw0K KwkJCQlpZiAoIXB1bGx1cCkNCisJCQkJCWVyciA9IC1FSU5WQUw7DQorCQkJfSBlbHNlIGlmIChw YXJhbSA9PSBQSU5fQ09ORklHX0JJQVNfUFVMTF9ET1dOKSB7DQorCQkJCS8qIFdoZW4gZGVzaXJl IHRvIGdldCBwdWxsLWRvd24gdmFsdWUsIHJldHVybg0KKwkJCQkgKiAgZXJyb3IgaWYgY3VycmVu dCBzZXR0aW5nIGlzIHB1bGwtdXANCisJCQkJICovDQorCQkJCWlmIChwdWxsdXApDQorCQkJCQll cnIgPSAtRUlOVkFMOw0KKwkJCX0NCisJCX0gZWxzZSB7DQogCQkJZXJyID0gLUVOT1RTVVBQOw0K KwkJfQ0KIAkJYnJlYWs7DQogCWNhc2UgUElOX0NPTkZJR19TTEVXX1JBVEU6DQogCQllcnIgPSBt dGtfaHdfZ2V0X3ZhbHVlKGh3LCBkZXNjLCBQSU5DVFJMX1BJTl9SRUdfU1IsICZyZXQpOw0KQEAg LTE5NiwyMCArMjA1LDIwIEBAIHN0YXRpYyBpbnQgbXRrX3BpbmNvbmZfc2V0KHN0cnVjdCBwaW5j dHJsX2RldiAqcGN0bGRldiwgdW5zaWduZWQgaW50IHBpbiwNCiANCiAJc3dpdGNoICgodTMyKXBh cmFtKSB7DQogCWNhc2UgUElOX0NPTkZJR19CSUFTX0RJU0FCTEU6DQotCQlpZiAoaHctPnNvYy0+ Ymlhc19kaXNhYmxlX3NldCkNCi0JCQllcnIgPSBody0+c29jLT5iaWFzX2Rpc2FibGVfc2V0KGh3 LCBkZXNjKTsNCisJCWlmIChody0+c29jLT5iaWFzX3NldF9jb21ibykNCisJCQllcnIgPSBody0+ c29jLT5iaWFzX3NldF9jb21ibyhodywgZGVzYywgMCwgTVRLX0RJU0FCTEUpOw0KIAkJZWxzZQ0K IAkJCWVyciA9IC1FTk9UU1VQUDsNCiAJCWJyZWFrOw0KIAljYXNlIFBJTl9DT05GSUdfQklBU19Q VUxMX1VQOg0KLQkJaWYgKGh3LT5zb2MtPmJpYXNfc2V0KQ0KLQkJCWVyciA9IGh3LT5zb2MtPmJp YXNfc2V0KGh3LCBkZXNjLCAxKTsNCisJCWlmIChody0+c29jLT5iaWFzX3NldF9jb21ibykNCisJ CQllcnIgPSBody0+c29jLT5iaWFzX3NldF9jb21ibyhodywgZGVzYywgMSwgYXJnKTsNCiAJCWVs c2UNCiAJCQllcnIgPSAtRU5PVFNVUFA7DQogCQlicmVhazsNCiAJY2FzZSBQSU5fQ09ORklHX0JJ QVNfUFVMTF9ET1dOOg0KLQkJaWYgKGh3LT5zb2MtPmJpYXNfc2V0KQ0KLQkJCWVyciA9IGh3LT5z b2MtPmJpYXNfc2V0KGh3LCBkZXNjLCAwKTsNCisJCWlmIChody0+c29jLT5iaWFzX3NldF9jb21i bykNCisJCQllcnIgPSBody0+c29jLT5iaWFzX3NldF9jb21ibyhodywgZGVzYywgMCwgYXJnKTsN CiAJCWVsc2UNCiAJCQllcnIgPSAtRU5PVFNVUFA7DQogCQlicmVhazsNCi0tIA0KMS44LjEuMS5k aXJ0eQ0K