Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp329135yba; Thu, 16 May 2019 01:16:11 -0700 (PDT) X-Google-Smtp-Source: APXvYqxUT4nOIKQUw3JqVpg24k/jqa/hw/lwc1CB8ANgaSqGRaEFJo9elrY0aS/YOANmRNrfxiMb X-Received: by 2002:a63:f54c:: with SMTP id e12mr49137061pgk.62.1557994571408; Thu, 16 May 2019 01:16:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1557994571; cv=none; d=google.com; s=arc-20160816; b=j+S/btqQTDyhAMU/Ak38fjO4rg7nPWvyHfwUvc+IhphWTcWfJc5h9eM6sjp7dR5S// zvgH7RSILmuE+peGWTuKT2ortaBIho27dhQbDnlvN0jfZoiQD5YffmdLB8AETjIYDOE7 b74aXXGL0vvFfiUpoIR0vajfiho4WUd4KFGrfgHIJ+CaD+/zJQEZSIot0LiTGbgziNE/ DLQwpftq8mVhpROexvsiuU/al+ZVXm/TYvRtR+oLHYZUULdgHSuEsfl+hVpV2NysTMV/ itYOekGqhyJAkcdlZr4itwHyqq0PVodRDRR8Rw2JZWpjhFoNK4mLfWV9xYCBkljuIUn3 r40Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :nodisclaimer:content-language:accept-language:message-id:date :thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=uHvj47z8PgINOVL6c9DJNong/qaIiYzqd0whpnsRe3I=; b=aysVTDriXJCHQd7yXJLe4t2uBFh6IUHMUlCoOWQBnFneoCpdFIA1MzzPh9o/jp0fD4 KExUnl/8UKiJ8zz5tf06Gj1AJTQm22L4l9hkmddGldfzHbjFhprIv/+A+3Yu9ls+wofP pMxnhXqIW/NIL7o9qKUB8XUUqZWQ0Kb3vsMRUKMFbnuhWHengQ1yjYfNYm9WCPNHl937 MPwiB7sVYO/eMgrpc7AxXRcXKrmFx1HvAYwrPbU4tmVSyT2KqByqIvUC6QbHhAb9+2Bb Aoakq7Eh+pl6/NFNRQyGfZp4NtXXONlqq+jbUWjNYz+AP2om4kGgoiOVDJR1p1NbJfoY FhSA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=xTDoMC+3; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p3si4320956plo.170.2019.05.16.01.15.55; Thu, 16 May 2019 01:16:11 -0700 (PDT) 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=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=xTDoMC+3; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726486AbfEPINj (ORCPT + 99 others); Thu, 16 May 2019 04:13:39 -0400 Received: from mail-eopbgr10044.outbound.protection.outlook.com ([40.107.1.44]:18446 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726272AbfEPINi (ORCPT ); Thu, 16 May 2019 04:13:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=uHvj47z8PgINOVL6c9DJNong/qaIiYzqd0whpnsRe3I=; b=xTDoMC+3bfkHJnf8sqUdP8ZtompGxEXjvaJX/iTurrJuBH3bj8VBeqZbirY4Jiizp38hPFY1VG1KJX+R8Xx+eNp0ffDF8lg6dzy6JJVyiehKApKDMFidfnTe1Ok605C3wEPXyFeMTIbkuzprtg29Hrgln7f+Hgix6Bw3xPkBZ3E= Received: from VE1PR08MB5006.eurprd08.prod.outlook.com (10.255.159.31) by VE1PR08MB4765.eurprd08.prod.outlook.com (10.255.113.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1900.16; Thu, 16 May 2019 08:13:27 +0000 Received: from VE1PR08MB5006.eurprd08.prod.outlook.com ([fe80::206b:5cf6:97e:1358]) by VE1PR08MB5006.eurprd08.prod.outlook.com ([fe80::206b:5cf6:97e:1358%7]) with mapi id 15.20.1900.010; Thu, 16 May 2019 08:13:27 +0000 From: "james qian wang (Arm Technology China)" To: Liviu Dudau , "airlied@linux.ie" , Brian Starkey , "maarten.lankhorst@linux.intel.com" , "sean@poorly.run" CC: "Jonathan Chai (Arm Technology China)" , "Julien Yin (Arm Technology China)" , "thomas Sun (Arm Technology China)" , "Lowry Li (Arm Technology China)" , Ayan Halder , "Tiannan Zhu (Arm Technology China)" , "Yiqi Kang (Arm Technology China)" , nd , "linux-kernel@vger.kernel.org" , "dri-devel@lists.freedesktop.org" , Ben Davis , "Oscar Zhang (Arm Technology China)" , "Channing Chen (Arm Technology China)" , "james qian wang (Arm Technology China)" Subject: [PATCH v3] drm/komeda: Add writeback support Thread-Topic: [PATCH v3] drm/komeda: Add writeback support Thread-Index: AQHVC789IjGa0UPk40CMGlet+6K8QA== Date: Thu, 16 May 2019 08:13:27 +0000 Message-ID: <20190516081300.25530-1-james.qian.wang@arm.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [113.29.88.7] x-clientproxiedby: HK2PR04CA0050.apcprd04.prod.outlook.com (2603:1096:202:14::18) To VE1PR08MB5006.eurprd08.prod.outlook.com (2603:10a6:803:113::31) authentication-results: spf=none (sender IP is ) smtp.mailfrom=james.qian.wang@arm.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 2.17.1 x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 428028cb-a1c5-4dd2-cc50-08d6d9d65fa8 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600141)(711020)(4605104)(4618075)(2017052603328)(7193020);SRVR:VE1PR08MB4765; x-ms-traffictypediagnostic: VE1PR08MB4765: x-ms-exchange-purlcount: 1 nodisclaimer: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0039C6E5C5 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39860400002)(366004)(136003)(376002)(396003)(346002)(189003)(199004)(54906003)(8676002)(81156014)(68736007)(103116003)(486006)(36756003)(8936002)(81166006)(110136005)(73956011)(4326008)(50226002)(66556008)(66476007)(3846002)(6116002)(66946007)(64756008)(66446008)(102836004)(53936002)(2906002)(25786009)(476003)(2616005)(55236004)(186003)(316002)(99286004)(386003)(6506007)(7736002)(305945005)(52116002)(1076003)(30864003)(966005)(71190400001)(2501003)(478600001)(6436002)(53946003)(71200400001)(6306002)(6512007)(6486002)(14454004)(5660300002)(256004)(26005)(14444005)(2201001)(86362001)(66066001)(5024004)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:VE1PR08MB4765;H:VE1PR08MB5006.eurprd08.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: M7qnrX5mm2EfZsQLrm4Wy582jCCMe2jpO2gqGAqjt2TaHD5A6l+sp1reWYNY36/C6i3+Z7bfrAmj7GZH3uSlYG4MoaJWJyJ7pXXEXBVD3+Bb2INRHVciRcpt9ugp555VxtqfB8uxv9pthQ9q8X9LuZKkiRj3nvF2/IL6Vg+yeqlV/AwAm4U3bgQILNanLbOctIsqClldVCrYcdkxCkBo/8ciYvJyRiqkIancizdcJWzL6BVBUOZ0ybglaTsND7LiMxy55exuLas2OPiXopr8MerfQD3wc+4ViRlSmHkor0YCAZoJzDp/ZOamwXlnSYyABXs+un/G7JPXSIvXhEERGHsu/vNF7wazo1nTrnbvkDEn9uxEoH0So6YGvm17kWf8LiCS1mbQ/83zwK4Qjqe21lJkWPR8ka6gyxXozD9qFK0= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-Network-Message-Id: 428028cb-a1c5-4dd2-cc50-08d6d9d65fa8 X-MS-Exchange-CrossTenant-originalarrivaltime: 16 May 2019 08:13:27.6257 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4765 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org S29tZWRhIGRyaXZlciB1c2VzIGEgaW5kaXZpZHVhbCBjb21wb25lbnQgdG8gZGVzY3JpYmUgdGhl IEhXJ3Mgd3JpdGViYWNrDQpjYXBzLCBidXQgZHJpdmVycyBkb2Vzbid0IGRlZmluZSBhIG5ldyBz dHJ1Y3R1cmUgYW5kIHN0aWxsIHVzZXMgdGhlDQpleGlzdGluZyAic3RydWN0IGtvbWVkYV9sYXll ciIgdG8gZGVzY3JpYmUgdGhpcyBuZXcgY29tcG9uZW50Lg0KVGhlIGRldGFpbGVkIGNoYW5nZXMg YXMgZm9sbG93Og0KDQoxLiBJbml0aWFsaXplIHdiX2xheWVyIGFjY29yZGluZyB0byBIVyBhbmQg cmVwb3J0IGl0IHRvIENPUkUuDQoyLiBDT1JFIGV4cG9zZXMgd2JfbGF5ZXIgYXMgYSByZXNvdXJj ZSB0byBLTVMgYnkgcHJpdmF0ZV9vYmouDQozLiBSZXBvcnQgd3JpdGViYWNrIHN1cHBvcnRpbmcg YnkgYWRkIGEgd2JfY29ubmVjdG9yIHRvIEtNUywgYW5kIHRoZW4NCiAgIHdiX2Nvbm5lY3RvciB3 aWxsIHRha2UgYWN0IGFzIGEgY29tcG9uZW50IHJlc291cmNlcyB1c2VyLA0KICAgc28gdGhlIGZ1 bmMga29tZWRhX3diX2VuY29kZXJfYXRvbWljX2NoZWNrIGNsYWltcyBrb21lZGEgcmVzb3VyY2Vz DQogICAoc2NhbGVyIGFuZCB3Yl9sYXllcikgYWNjcm9kaW5nIHRvIGl0cyBzdGF0ZSBjb25maWd1 cmF0aW9uIHRvIHRoZQ0KICAgd2JfY29ubmVjdG9yLiBhbmQgdGhlIHdiX3N0YXRlIGNvbmZpZ3Vy YXRpb24gd2lsbCBiZSB2YWxpZGF0ZWQgb24gdGhlDQogICBzcGVjaWZpYyBjb21wb25lbnQgcmVz b3VyY2VzIHRvIHNlZSBpZiB0aGUgY2FwcyBvZiBjb21wb25lbnQgY2FuDQogICBtZWV0IHRoZSBy ZXF1aXJlbWVudCBvZiB3Yl9jb25uZWN0b3IuIGlmIG5vdCBjaGVjayBmYWlsZWQuDQo0LiBVcGRh dGUgaXJxX2hhbmRsZXIgdG8gbm90aWZ5IHRoZSBjb21wbGV0aW9uIG9mIHdyaXRlYmFjay4NCg0K Tk9URToNClRoaXMgY2hhbmdlIGRvZXNuJ3QgYWRkIHNjYWxpbmcgd3JpdGViYWNrIHN1cHBvcnQs IHRoYXQgc3VwcG9ydCB3aWxsDQpiZSBhZGRlZCBpbiB0aGUgZnV0dXJlIGFmdGVyIHRoZSBzY2Fs ZXIgc3VwcG9ydC4NCg0KdjI6IFJlYmFzZQ0KdjM6IFJlYmFzZSBhbmQgY29uc3RpZnkgdGhlIGQ3 MV93Yl9sYXllcl9mdW5jcw0KDQpEZXBlbmRzIG9uOg0KLSBodHRwczovL3BhdGNod29yay5mcmVl ZGVza3RvcC5vcmcvc2VyaWVzLzU5OTE1Lw0KDQpTaWduZWQtb2ZmLWJ5OiBKYW1lcyBRaWFuIFdh bmcgKEFybSBUZWNobm9sb2d5IENoaW5hKSA8amFtZXMucWlhbi53YW5nQGFybS5jb20+DQotLS0N CiBkcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL01ha2VmaWxlICAgfCAgIDEgKw0K IC4uLi9hcm0vZGlzcGxheS9rb21lZGEvZDcxL2Q3MV9jb21wb25lbnQuYyAgICB8ICA5MCArKysr KysrKy0NCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYyAgfCAg MTUgKysNCiAuLi4vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mcmFtZWJ1ZmZlci5jICAgfCAg MTkgKysNCiAuLi4vZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jICAgfCAg IDQgKw0KIC4uLi9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmggICB8ICAy NyArKysNCiAuLi4vZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmUuaCAgfCAg IDcgKw0KIC4uLi9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcGlwZWxpbmVfc3RhdGUuYyAgICB8ICA1 MSArKysrLQ0KIC4uLi9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX3ByaXZhdGVfb2JqLmMgICB8 ICAgNiArDQogLi4uL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMgIHwg MTgxICsrKysrKysrKysrKysrKysrKw0KIDEwIGZpbGVzIGNoYW5nZWQsIDM5OCBpbnNlcnRpb25z KCspLCAzIGRlbGV0aW9ucygtKQ0KIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV93Yl9jb25uZWN0b3IuYw0KDQpkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtlZmlsZSBiL2RyaXZlcnMvZ3B1 L2RybS9hcm0vZGlzcGxheS9rb21lZGEvTWFrZWZpbGUNCmluZGV4IDYyYmQxYmZmNjZhMy4uZDdl MjlmYzY4OGMzIDEwMDY0NA0KLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9NYWtlZmlsZQ0KKysrIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9NYWtl ZmlsZQ0KQEAgLTE0LDYgKzE0LDcgQEAga29tZWRhLXkgOj0gXA0KIAlrb21lZGFfa21zLm8gXA0K IAlrb21lZGFfY3J0Yy5vIFwNCiAJa29tZWRhX3BsYW5lLm8gXA0KKwlrb21lZGFfd2JfY29ubmVj dG9yLm8gXA0KIAlrb21lZGFfcHJpdmF0ZV9vYmoubw0KIA0KIGtvbWVkYS15ICs9IFwNCmRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfY29tcG9u ZW50LmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfY29tcG9u ZW50LmMNCmluZGV4IDZiYWI4MTZlZDhlNy4uNjdlNjk4ZDBlNmFhIDEwMDY0NA0KLS0tIGEvZHJp dmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9kNzEvZDcxX2NvbXBvbmVudC5jDQorKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2Q3MS9kNzFfY29tcG9uZW50LmMN CkBAIC0yODgsMTAgKzI4OCw5OCBAQCBzdGF0aWMgaW50IGQ3MV9sYXllcl9pbml0KHN0cnVjdCBk NzFfZGV2ICpkNzEsDQogCXJldHVybiAwOw0KIH0NCiANCitzdGF0aWMgdm9pZCBkNzFfd2JfbGF5 ZXJfdXBkYXRlKHN0cnVjdCBrb21lZGFfY29tcG9uZW50ICpjLA0KKwkJCQlzdHJ1Y3Qga29tZWRh X2NvbXBvbmVudF9zdGF0ZSAqc3RhdGUpDQorew0KKwlzdHJ1Y3Qga29tZWRhX2xheWVyX3N0YXRl ICpzdCA9IHRvX2xheWVyX3N0KHN0YXRlKTsNCisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUg KmNvbm5fc3QgPSBzdGF0ZS0+d2JfY29ubi0+c3RhdGU7DQorCXN0cnVjdCBkcm1fZnJhbWVidWZm ZXIgKmZiID0gY29ubl9zdC0+d3JpdGViYWNrX2pvYi0+ZmI7DQorCXN0cnVjdCBrb21lZGFfZmIg KmtmYiA9IHRvX2tmYihmYik7DQorCXUzMiBfX2lvbWVtICpyZWcgPSBjLT5yZWc7DQorCXUzMiBj dHJsID0gTF9FTiB8IExXX09GTSwgbWFzayA9IExfRU4gfCBMV19PRk0gfCBMV19UQlVfRU47DQor CWludCBpOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgZmItPmZvcm1hdC0+bnVtX3BsYW5lczsgaSsr KSB7DQorCQltYWxpZHBfd3JpdGUzMihyZWcgKyBpICogTEFZRVJfUEVSX1BMQU5FX1JFR1MsIEJM S19QMF9QVFJfTE9XLA0KKwkJCSAgICAgICBsb3dlcl8zMl9iaXRzKHN0LT5hZGRyW2ldKSk7DQor CQltYWxpZHBfd3JpdGUzMihyZWcgKyBpICogTEFZRVJfUEVSX1BMQU5FX1JFR1MsIEJMS19QMF9Q VFJfSElHSCwNCisJCQkgICAgICAgdXBwZXJfMzJfYml0cyhzdC0+YWRkcltpXSkpOw0KKw0KKwkJ bWFsaWRwX3dyaXRlMzIocmVnICsgaSAqIExBWUVSX1BFUl9QTEFORV9SRUdTLCBCTEtfUDBfU1RS SURFLA0KKwkJCSAgICAgICBmYi0+cGl0Y2hlc1tpXSAmIDB4RkZGRik7DQorCX0NCisNCisJbWFs aWRwX3dyaXRlMzIocmVnLCBMQVlFUl9GTVQsIGtmYi0+Zm9ybWF0X2NhcHMtPmh3X2lkKTsNCisJ bWFsaWRwX3dyaXRlMzIocmVnLCBCTEtfSU5fU0laRSwgSFZfU0laRShzdC0+aHNpemUsIHN0LT52 c2l6ZSkpOw0KKwltYWxpZHBfd3JpdGUzMihyZWcsIEJMS19JTlBVVF9JRDAsIHRvX2Q3MV9pbnB1 dF9pZCgmc3RhdGUtPmlucHV0c1swXSkpOw0KKwltYWxpZHBfd3JpdGUzMl9tYXNrKHJlZywgQkxL X0NPTlRST0wsIG1hc2ssIGN0cmwpOw0KK30NCisNCitzdGF0aWMgdm9pZCBkNzFfd2JfbGF5ZXJf ZHVtcChzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYywgc3RydWN0IHNlcV9maWxlICpzZikNCit7 DQorCXUzMiB2WzEyXSwgaTsNCisNCisJZHVtcF9ibG9ja19oZWFkZXIoc2YsIGMtPnJlZyk7DQor DQorCWdldF92YWx1ZXNfZnJvbV9yZWcoYy0+cmVnLCAweDgwLCAxLCB2KTsNCisJc2VxX3ByaW50 ZihzZiwgIkxXX0lOUFVUX0lEMDpcdFx0MHglWFxuIiwgdlswXSk7DQorDQorCWdldF92YWx1ZXNf ZnJvbV9yZWcoYy0+cmVnLCAweEQwLCAzLCB2KTsNCisJc2VxX3ByaW50ZihzZiwgIkxXX0NPTlRS T0w6XHRcdDB4JVhcbiIsIHZbMF0pOw0KKwlzZXFfcHJpbnRmKHNmLCAiTFdfUFJPR19MSU5FOlx0 XHQweCVYXG4iLCB2WzFdKTsNCisJc2VxX3ByaW50ZihzZiwgIkxXX0ZPUk1BVDpcdFx0MHglWFxu IiwgdlsyXSk7DQorDQorCWdldF92YWx1ZXNfZnJvbV9yZWcoYy0+cmVnLCAweEUwLCAxLCB2KTsN CisJc2VxX3ByaW50ZihzZiwgIkxXX0lOX1NJWkU6XHRcdDB4JVhcbiIsIHZbMF0pOw0KKw0KKwlm b3IgKGkgPSAwOyBpIDwgMjsgaSsrKSB7DQorCQlnZXRfdmFsdWVzX2Zyb21fcmVnKGMtPnJlZywg MHgxMDAgKyBpICogMHgxMCwgMywgdik7DQorCQlzZXFfcHJpbnRmKHNmLCAiTFdfUCV1X1BUUl9M T1c6XHRcdDB4JVhcbiIsIGksIHZbMF0pOw0KKwkJc2VxX3ByaW50ZihzZiwgIkxXX1AldV9QVFJf SElHSDpcdFx0MHglWFxuIiwgaSwgdlsxXSk7DQorCQlzZXFfcHJpbnRmKHNmLCAiTFdfUCV1X1NU UklERTpcdFx0MHglWFxuIiwgaSwgdlsyXSk7DQorCX0NCisNCisJZ2V0X3ZhbHVlc19mcm9tX3Jl ZyhjLT5yZWcsIDB4MTMwLCAxMiwgdik7DQorCWZvciAoaSA9IDA7IGkgPCAxMjsgaSsrKQ0KKwkJ c2VxX3ByaW50ZihzZiwgIkxXX1JHQl9ZVVZfQ09FRkYldTpcdDB4JVhcbiIsIGksIHZbaV0pOw0K K30NCisNCitzdGF0aWMgdm9pZCBkNzFfd2JfbGF5ZXJfZGlzYWJsZShzdHJ1Y3Qga29tZWRhX2Nv bXBvbmVudCAqYykNCit7DQorCW1hbGlkcF93cml0ZTMyKGMtPnJlZywgQkxLX0lOUFVUX0lEMCwg MCk7DQorCW1hbGlkcF93cml0ZTMyX21hc2soYy0+cmVnLCBCTEtfQ09OVFJPTCwgTF9FTiwgMCk7 DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9mdW5jcyBkNzFf d2JfbGF5ZXJfZnVuY3MgPSB7DQorCS51cGRhdGUJCT0gZDcxX3diX2xheWVyX3VwZGF0ZSwNCisJ LmRpc2FibGUJPSBkNzFfd2JfbGF5ZXJfZGlzYWJsZSwNCisJLmR1bXBfcmVnaXN0ZXIJPSBkNzFf d2JfbGF5ZXJfZHVtcCwNCit9Ow0KKw0KIHN0YXRpYyBpbnQgZDcxX3diX2xheWVyX2luaXQoc3Ry dWN0IGQ3MV9kZXYgKmQ3MSwNCiAJCQkgICAgIHN0cnVjdCBibG9ja19oZWFkZXIgKmJsaywgdTMy IF9faW9tZW0gKnJlZykNCiB7DQotCURSTV9ERUJVRygiRGV0ZWN0IEQ3MV9XYl9MYXllci5cbiIp Ow0KKwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudCAqYzsNCisJc3RydWN0IGtvbWVkYV9sYXllciAq d2JfbGF5ZXI7DQorCXUzMiBwaXBlX2lkLCBsYXllcl9pZDsNCisNCisJZ2V0X3Jlc291cmNlc19p ZChibGstPmJsb2NrX2luZm8sICZwaXBlX2lkLCAmbGF5ZXJfaWQpOw0KKw0KKwljID0ga29tZWRh X2NvbXBvbmVudF9hZGQoJmQ3MS0+cGlwZXNbcGlwZV9pZF0tPmJhc2UsIHNpemVvZigqd2JfbGF5 ZXIpLA0KKwkJCQkgbGF5ZXJfaWQsIEJMT0NLX0lORk9fSU5QVVRfSUQoYmxrLT5ibG9ja19pbmZv KSwNCisJCQkJICZkNzFfd2JfbGF5ZXJfZnVuY3MsDQorCQkJCSAxLCBnZXRfdmFsaWRfaW5wdXRz KGJsayksIDAsIHJlZywNCisJCQkJICJMUFUlZF9MQVlFUl9XUiIsIHBpcGVfaWQpOw0KKwlpZiAo IWMpIHsNCisJCURSTV9FUlJPUigiRmFpbGVkIHRvIGFkZCB3Yl9sYXllciBjb21wb25lbnRcbiIp Ow0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJd2JfbGF5ZXIgPSB0b19sYXllcihjKTsN CisJd2JfbGF5ZXItPmxheWVyX3R5cGUgPSBLT01FREFfRk1UX1dCX0xBWUVSOw0KKw0KKwlzZXRf cmFuZ2UoJndiX2xheWVyLT5oc2l6ZV9pbiwgRDcxX01JTl9MSU5FX1NJWkUsIGQ3MS0+bWF4X2xp bmVfc2l6ZSk7DQorCXNldF9yYW5nZSgmd2JfbGF5ZXItPnZzaXplX2luLCBENzFfTUlOX1ZFUlRJ Q0FMX1NJWkUsIGQ3MS0+bWF4X3ZzaXplKTsNCiANCiAJcmV0dXJuIDA7DQogfQ0KZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYyBiL2Ry aXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYw0KaW5kZXggMjg0 Y2UwNzlkOGM0Li42NzEyNjAzYjhjN2EgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJt L2Rpc3BsYXkva29tZWRhL2tvbWVkYV9jcnRjLmMNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX2NydGMuYw0KQEAgLTE2NSw2ICsxNjUsMTUgQEAgdm9pZCBr b21lZGFfY3J0Y19oYW5kbGVfZXZlbnQoc3RydWN0IGtvbWVkYV9jcnRjICAgKmtjcnRjLA0KIAlp ZiAoZXZlbnRzICYgS09NRURBX0VWRU5UX1ZTWU5DKQ0KIAkJZHJtX2NydGNfaGFuZGxlX3ZibGFu ayhjcnRjKTsNCiANCisJaWYgKGV2ZW50cyAmIEtPTUVEQV9FVkVOVF9FT1cpIHsNCisJCXN0cnVj dCBrb21lZGFfd2JfY29ubmVjdG9yICp3Yl9jb25uID0ga2NydGMtPndiX2Nvbm47DQorDQorCQlp ZiAod2JfY29ubikNCisJCQlkcm1fd3JpdGViYWNrX3NpZ25hbF9jb21wbGV0aW9uKCZ3Yl9jb25u LT5iYXNlLCAwKTsNCisJCWVsc2UNCisJCQlEUk1fV0FSTigiQ1JUQ1slZF06IEVPVyBoYXBwZW4g YnV0IG5vIHdiX2Nvbm5lY3Rvci5cbiIsDQorCQkJCSBkcm1fY3J0Y19pbmRleCgma2NydGMtPmJh c2UpKTsNCisJfQ0KIAkvKiB3aWxsIGhhbmRsZSBpdCB0b2dldGhlciB3aXRoIHRoZSB3cml0ZSBi YWNrIHN1cHBvcnQgKi8NCiAJaWYgKGV2ZW50cyAmIEtPTUVEQV9FVkVOVF9FT1cpDQogCQlEUk1f REVCVUcoIkVPVy5cbiIpOw0KQEAgLTIwMSw2ICsyMTAsOCBAQCBrb21lZGFfY3J0Y19kb19mbHVz aChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQogCXN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2Ny dGNfc3QgPSB0b19rY3J0Y19zdChjcnRjLT5zdGF0ZSk7DQogCXN0cnVjdCBrb21lZGFfZGV2ICpt ZGV2ID0ga2NydGMtPmJhc2UuZGV2LT5kZXZfcHJpdmF0ZTsNCiAJc3RydWN0IGtvbWVkYV9waXBl bGluZSAqbWFzdGVyID0ga2NydGMtPm1hc3RlcjsNCisJc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0 b3IgKndiX2Nvbm4gPSBrY3J0Yy0+d2JfY29ubjsNCisJc3RydWN0IGRybV9jb25uZWN0b3Jfc3Rh dGUgKmNvbm5fc3Q7DQogDQogCURSTV9ERUJVR19BVE9NSUMoIkNSVEMlZF9GTFVTSDogYWN0aXZl X3BpcGVzOiAweCV4LCBhZmZlY3RlZDogMHgleC5cbiIsDQogCQkJIGRybV9jcnRjX2luZGV4KGNy dGMpLA0KQEAgLTIxMCw2ICsyMjEsMTAgQEAga29tZWRhX2NydGNfZG9fZmx1c2goc3RydWN0IGRy bV9jcnRjICpjcnRjLA0KIAlpZiAoaGFzX2JpdChtYXN0ZXItPmlkLCBrY3J0Y19zdC0+YWZmZWN0 ZWRfcGlwZXMpKQ0KIAkJa29tZWRhX3BpcGVsaW5lX3VwZGF0ZShtYXN0ZXIsIG9sZC0+c3RhdGUp Ow0KIA0KKwljb25uX3N0ID0gd2JfY29ubiA/IHdiX2Nvbm4tPmJhc2UuYmFzZS5zdGF0ZSA6IE5V TEw7DQorCWlmIChjb25uX3N0ICYmIGNvbm5fc3QtPndyaXRlYmFja19qb2IpDQorCQlkcm1fd3Jp dGViYWNrX3F1ZXVlX2pvYigmd2JfY29ubi0+YmFzZSwgY29ubl9zdCk7DQorDQogCS8qIHN0ZXAg Mjogbm90aWZ5IHRoZSBIVyB0byBraWNrb2ZmIHRoZSB1cGRhdGUgKi8NCiAJbWRldi0+ZnVuY3Mt PmZsdXNoKG1kZXYsIG1hc3Rlci0+aWQsIGtjcnRjX3N0LT5hY3RpdmVfcGlwZXMpOw0KIH0NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mcmFt ZWJ1ZmZlci5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfZnJh bWVidWZmZXIuYw0KaW5kZXggOWNjOTkzNTAyNGY3Li40ZDgxNjBjZjA5YzMgMTAwNjQ0DQotLS0g YS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mcmFtZWJ1ZmZlci5j DQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9mcmFtZWJ1 ZmZlci5jDQpAQCAtMTY1LDMgKzE2NSwyMiBAQCBrb21lZGFfZmJfZ2V0X3BpeGVsX2FkZHIoc3Ry dWN0IGtvbWVkYV9mYiAqa2ZiLCBpbnQgeCwgaW50IHksIGludCBwbGFuZSkNCiANCiAJcmV0dXJu IG9iai0+cGFkZHIgKyBvZmZzZXQ7DQogfQ0KKw0KKy8qIGlmIHRoZSBmYiBjYW4gYmUgc3VwcG9y dGVkIGJ5IGEgc3BlY2lmaWMgbGF5ZXIgKi8NCitib29sIGtvbWVkYV9mYl9pc19sYXllcl9zdXBw b3J0ZWQoc3RydWN0IGtvbWVkYV9mYiAqa2ZiLCB1MzIgbGF5ZXJfdHlwZSkNCit7DQorCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiID0gJmtmYi0+YmFzZTsNCisJc3RydWN0IGtvbWVkYV9kZXYg Km1kZXYgPSBmYi0+ZGV2LT5kZXZfcHJpdmF0ZTsNCisJY29uc3Qgc3RydWN0IGtvbWVkYV9mb3Jt YXRfY2FwcyAqY2FwczsNCisJdTMyIGZvdXJjYyA9IGZiLT5mb3JtYXQtPmZvcm1hdDsNCisJdTY0 IG1vZGlmaWVyID0gZmItPm1vZGlmaWVyOw0KKw0KKwljYXBzID0ga29tZWRhX2dldF9mb3JtYXRf Y2FwcygmbWRldi0+Zm10X3RibCwgZm91cmNjLCBtb2RpZmllcik7DQorCWlmICghY2FwcykNCisJ CXJldHVybiBmYWxzZTsNCisNCisJaWYgKCEoY2Fwcy0+c3VwcG9ydGVkX2xheWVyX3R5cGVzICYg bGF5ZXJfdHlwZSkpDQorCQlyZXR1cm4gZmFsc2U7DQorDQorCXJldHVybiB0cnVlOw0KK30NCmRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMu YyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jDQppbmRl eCA4NmY2NTQyYWZiNDAuLjNlNTg5MDFmYjc3NiAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9rbXMuYw0KQEAgLTE4OCw2ICsxODgsMTAgQEAgc3Ry dWN0IGtvbWVkYV9rbXNfZGV2ICprb21lZGFfa21zX2F0dGFjaChzdHJ1Y3Qga29tZWRhX2RldiAq bWRldikNCiAJaWYgKGVycikNCiAJCWdvdG8gY2xlYW51cF9tb2RlX2NvbmZpZzsNCiANCisJZXJy ID0ga29tZWRhX2ttc19hZGRfd2JfY29ubmVjdG9ycyhrbXMsIG1kZXYpOw0KKwlpZiAoZXJyKQ0K KwkJZ290byBjbGVhbnVwX21vZGVfY29uZmlnOw0KKw0KIAllcnIgPSBjb21wb25lbnRfYmluZF9h bGwobWRldi0+ZGV2LCBrbXMpOw0KIAlpZiAoZXJyKQ0KIAkJZ290byBjbGVhbnVwX21vZGVfY29u ZmlnOw0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29t ZWRhX2ttcy5oIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21z LmgNCmluZGV4IGFjM2Q5MjA5YjRkOS4uZjE2ZTllNTc3NTkzIDEwMDY0NA0KLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfa21zLmgNCisrKyBiL2RyaXZlcnMv Z3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEva29tZWRhX2ttcy5oDQpAQCAtMTIsNiArMTIsNyBA QA0KICNpbmNsdWRlIDxkcm0vZHJtX2NydGNfaGVscGVyLmg+DQogI2luY2x1ZGUgPGRybS9kcm1f ZGV2aWNlLmg+DQogI2luY2x1ZGUgPGRybS9kcm1fd3JpdGViYWNrLmg+DQorI2luY2x1ZGUgPGRy bS9kcm1fcHJpbnQuaD4NCiAjaW5jbHVkZSA8dmlkZW8vdmlkZW9tb2RlLmg+DQogI2luY2x1ZGUg PHZpZGVvL2Rpc3BsYXlfdGltaW5nLmg+DQogDQpAQCAtNzMsNiArNzQsOSBAQCBzdHJ1Y3Qga29t ZWRhX2NydGMgew0KIAkgKi8NCiAJc3RydWN0IGtvbWVkYV9waXBlbGluZSAqc2xhdmU7DQogDQor CS8qKiBAd2JfY29ubjoga29tZWRhIHdyaXRlIGJhY2sgY29ubmVjdG9yICovDQorCXN0cnVjdCBr b21lZGFfd2JfY29ubmVjdG9yICp3Yl9jb25uOw0KKw0KIAkvKiogQGRpc2FibGVfZG9uZTogdGhp cyBmbGlwX2RvbmUgaXMgZm9yIHRyYWNpbmcgdGhlIGRpc2FibGUgKi8NCiAJc3RydWN0IGNvbXBs ZXRpb24gKmRpc2FibGVfZG9uZTsNCiB9Ow0KQEAgLTExNiw2ICsxMjAsMjcgQEAgc3RydWN0IGtv bWVkYV9rbXNfZGV2IHsNCiAjZGVmaW5lIHRvX2tjcnRjKHApCWNvbnRhaW5lcl9vZihwLCBzdHJ1 Y3Qga29tZWRhX2NydGMsIGJhc2UpDQogI2RlZmluZSB0b19rY3J0Y19zdChwKQljb250YWluZXJf b2YocCwgc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlLCBiYXNlKQ0KICNkZWZpbmUgdG9fa2Rldihw KQljb250YWluZXJfb2YocCwgc3RydWN0IGtvbWVkYV9rbXNfZGV2LCBiYXNlKQ0KKyNkZWZpbmUg dG9fd2JfY29ubih4KQljb250YWluZXJfb2YoeCwgc3RydWN0IGRybV93cml0ZWJhY2tfY29ubmVj dG9yLCBiYXNlKQ0KKw0KK3N0YXRpYyBpbmxpbmUgYm9vbCBpc193cml0ZWJhY2tfb25seShzdHJ1 Y3QgZHJtX2NydGNfc3RhdGUgKnN0KQ0KK3sNCisJc3RydWN0IGtvbWVkYV93Yl9jb25uZWN0b3Ig KndiX2Nvbm4gPSB0b19rY3J0YyhzdC0+Y3J0YyktPndiX2Nvbm47DQorCXN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uID0gd2JfY29ubiA/ICZ3Yl9jb25uLT5iYXNlLmJhc2UgOiBOVUxMOw0KKw0K KwlyZXR1cm4gY29ubiAmJiAoc3QtPmNvbm5lY3Rvcl9tYXNrID09IEJJVChkcm1fY29ubmVjdG9y X2luZGV4KGNvbm4pKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgYm9vbA0KK2lzX29ubHlfY2hh bmdlZF9jb25uZWN0b3Ioc3RydWN0IGRybV9jcnRjX3N0YXRlICpzdCwgc3RydWN0IGRybV9jb25u ZWN0b3IgKmNvbm4pDQorew0KKwlzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKm9sZF9zdDsNCisJdTMy IGNoYW5nZWRfY29ubmVjdG9yczsNCisNCisJb2xkX3N0ID0gZHJtX2F0b21pY19nZXRfb2xkX2Ny dGNfc3RhdGUoc3QtPnN0YXRlLCBzdC0+Y3J0Yyk7DQorCWNoYW5nZWRfY29ubmVjdG9ycyA9IHN0 LT5jb25uZWN0b3JfbWFzayBeIG9sZF9zdC0+Y29ubmVjdG9yX21hc2s7DQorDQorCXJldHVybiBC SVQoZHJtX2Nvbm5lY3Rvcl9pbmRleChjb25uKSkgPT0gY2hhbmdlZF9jb25uZWN0b3JzOw0KK30N CiANCiBpbnQga29tZWRhX2ttc19zZXR1cF9jcnRjcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmtt cywgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpOw0KIA0KQEAgLTEyMyw2ICsxNDgsOCBAQCBpbnQg a29tZWRhX2ttc19hZGRfY3J0Y3Moc3RydWN0IGtvbWVkYV9rbXNfZGV2ICprbXMsIHN0cnVjdCBr b21lZGFfZGV2ICptZGV2KTsNCiBpbnQga29tZWRhX2ttc19hZGRfcGxhbmVzKHN0cnVjdCBrb21l ZGFfa21zX2RldiAqa21zLCBzdHJ1Y3Qga29tZWRhX2RldiAqbWRldik7DQogaW50IGtvbWVkYV9r bXNfYWRkX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qga29tZWRhX2ttc19kZXYgKmttcywNCiAJCQkJc3Ry dWN0IGtvbWVkYV9kZXYgKm1kZXYpOw0KK2ludCBrb21lZGFfa21zX2FkZF93Yl9jb25uZWN0b3Jz KHN0cnVjdCBrb21lZGFfa21zX2RldiAqa21zLA0KKwkJCQkgc3RydWN0IGtvbWVkYV9kZXYgKm1k ZXYpOw0KIHZvaWQga29tZWRhX2ttc19jbGVhbnVwX3ByaXZhdGVfb2JqcyhzdHJ1Y3Qga29tZWRh X2ttc19kZXYgKmttcyk7DQogDQogdm9pZCBrb21lZGFfY3J0Y19oYW5kbGVfZXZlbnQoc3RydWN0 IGtvbWVkYV9jcnRjICAgKmtjcnRjLA0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hcm0v ZGlzcGxheS9rb21lZGEva29tZWRhX3BpcGVsaW5lLmggYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rp c3BsYXkva29tZWRhL2tvbWVkYV9waXBlbGluZS5oDQppbmRleCBiYWU4YTMyYjgxYTYuLjFiN2U5 MzNlYTMwMyAxMDA2NDQNCi0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21lZGEv a29tZWRhX3BpcGVsaW5lLmgNCisrKyBiL2RyaXZlcnMvZ3B1L2RybS9hcm0vZGlzcGxheS9rb21l ZGEva29tZWRhX3BpcGVsaW5lLmgNCkBAIC00MjMsMTAgKzQyMywxNyBAQCBzdHJ1Y3Qga29tZWRh X3BsYW5lX3N0YXRlOw0KIHN0cnVjdCBrb21lZGFfY3J0Y19zdGF0ZTsNCiBzdHJ1Y3Qga29tZWRh X2NydGM7DQogDQordm9pZCBwaXBlbGluZV9jb21wb3NpdGlvbl9zaXplKHN0cnVjdCBrb21lZGFf Y3J0Y19zdGF0ZSAqa2NydGNfc3QsDQorCQkJICAgICAgIHUxNiAqaHNpemUsIHUxNiAqdnNpemUp Ow0KKw0KIGludCBrb21lZGFfYnVpbGRfbGF5ZXJfZGF0YV9mbG93KHN0cnVjdCBrb21lZGFfbGF5 ZXIgKmxheWVyLA0KIAkJCQkgc3RydWN0IGtvbWVkYV9wbGFuZV9zdGF0ZSAqa3BsYW5lX3N0LA0K IAkJCQkgc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICprY3J0Y19zdCwNCiAJCQkJIHN0cnVjdCBr b21lZGFfZGF0YV9mbG93X2NmZyAqZGZsb3cpOw0KK2ludCBrb21lZGFfYnVpbGRfd2JfZGF0YV9m bG93KHN0cnVjdCBrb21lZGFfbGF5ZXIgKndiX2xheWVyLA0KKwkJCSAgICAgIHN0cnVjdCBkcm1f Y29ubmVjdG9yX3N0YXRlICpjb25uX3N0LA0KKwkJCSAgICAgIHN0cnVjdCBrb21lZGFfY3J0Y19z dGF0ZSAqa2NydGNfc3QsDQorCQkJICAgICAgc3RydWN0IGtvbWVkYV9kYXRhX2Zsb3dfY2ZnICpk Zmxvdyk7DQogaW50IGtvbWVkYV9idWlsZF9kaXNwbGF5X2RhdGFfZmxvdyhzdHJ1Y3Qga29tZWRh X2NydGMgKmtjcnRjLA0KIAkJCQkgICBzdHJ1Y3Qga29tZWRhX2NydGNfc3RhdGUgKmtjcnRjX3N0 KTsNCiANCmRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tv bWVkYV9waXBlbGluZV9zdGF0ZS5jIGIvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVk YS9rb21lZGFfcGlwZWxpbmVfc3RhdGUuYw0KaW5kZXggMzY1NzBkN2RhZDYxLi45NzQ4Yzk0Mzg4 NjggMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVk YV9waXBlbGluZV9zdGF0ZS5jDQorKysgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29t ZWRhL2tvbWVkYV9waXBlbGluZV9zdGF0ZS5jDQpAQCAtMzA4LDggKzMwOCw0MSBAQCBrb21lZGFf bGF5ZXJfdmFsaWRhdGUoc3RydWN0IGtvbWVkYV9sYXllciAqbGF5ZXIsDQogCXJldHVybiAwOw0K IH0NCiANCi1zdGF0aWMgdm9pZCBwaXBlbGluZV9jb21wb3NpdGlvbl9zaXplKHN0cnVjdCBrb21l ZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QsDQotCQkJCSAgICAgIHUxNiAqaHNpemUsIHUxNiAqdnNp emUpDQorc3RhdGljIGludA0KK2tvbWVkYV93Yl9sYXllcl92YWxpZGF0ZShzdHJ1Y3Qga29tZWRh X2xheWVyICp3Yl9sYXllciwNCisJCQkgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5f c3QsDQorCQkJIHN0cnVjdCBrb21lZGFfZGF0YV9mbG93X2NmZyAqZGZsb3cpDQorew0KKwlzdHJ1 Y3Qga29tZWRhX2ZiICprZmIgPSB0b19rZmIoY29ubl9zdC0+d3JpdGViYWNrX2pvYi0+ZmIpOw0K KwlzdHJ1Y3Qga29tZWRhX2NvbXBvbmVudF9zdGF0ZSAqY19zdDsNCisJc3RydWN0IGtvbWVkYV9s YXllcl9zdGF0ZSAqc3Q7DQorCWludCBpOw0KKw0KKwlpZiAoIWtvbWVkYV9mYl9pc19sYXllcl9z dXBwb3J0ZWQoa2ZiLCB3Yl9sYXllci0+bGF5ZXJfdHlwZSkpDQorCQlyZXR1cm4gLUVJTlZBTDsN CisNCisJY19zdCA9IGtvbWVkYV9jb21wb25lbnRfZ2V0X3N0YXRlX2FuZF9zZXRfdXNlcigmd2Jf bGF5ZXItPmJhc2UsDQorCQkJY29ubl9zdC0+c3RhdGUsIGNvbm5fc3QtPmNvbm5lY3RvciwgY29u bl9zdC0+Y3J0Yyk7DQorCWlmIChJU19FUlIoY19zdCkpDQorCQlyZXR1cm4gUFRSX0VSUihjX3N0 KTsNCisNCisJc3QgPSB0b19sYXllcl9zdChjX3N0KTsNCisNCisJc3QtPmhzaXplID0gZGZsb3ct Pm91dF93Ow0KKwlzdC0+dnNpemUgPSBkZmxvdy0+b3V0X2g7DQorDQorCWZvciAoaSA9IDA7IGkg PCBrZmItPmJhc2UuZm9ybWF0LT5udW1fcGxhbmVzOyBpKyspDQorCQlzdC0+YWRkcltpXSA9IGtv bWVkYV9mYl9nZXRfcGl4ZWxfYWRkcihrZmIsIGRmbG93LT5vdXRfeCwNCisJCQkJCQkgICAgICAg ZGZsb3ctPm91dF95LCBpKTsNCisNCisJa29tZWRhX2NvbXBvbmVudF9hZGRfaW5wdXQoJnN0LT5i YXNlLCAmZGZsb3ctPmlucHV0LCAwKTsNCisJa29tZWRhX2NvbXBvbmVudF9zZXRfb3V0cHV0KCZk Zmxvdy0+aW5wdXQsICZ3Yl9sYXllci0+YmFzZSwgMCk7DQorDQorCXJldHVybiAwOw0KK30NCisN Cit2b2lkIHBpcGVsaW5lX2NvbXBvc2l0aW9uX3NpemUoc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRl ICprY3J0Y19zdCwNCisJCQkgICAgICAgdTE2ICpoc2l6ZSwgdTE2ICp2c2l6ZSkNCiB7DQogCXN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlICptID0gJmtjcnRjX3N0LT5iYXNlLmFkanVzdGVkX21vZGU7 DQogDQpAQCAtNDc4LDYgKzUxMSwyMCBAQCBpbnQga29tZWRhX2J1aWxkX2xheWVyX2RhdGFfZmxv dyhzdHJ1Y3Qga29tZWRhX2xheWVyICpsYXllciwNCiAJcmV0dXJuIGVycjsNCiB9DQogDQoraW50 IGtvbWVkYV9idWlsZF93Yl9kYXRhX2Zsb3coc3RydWN0IGtvbWVkYV9sYXllciAqd2JfbGF5ZXIs DQorCQkJICAgICAgc3RydWN0IGRybV9jb25uZWN0b3Jfc3RhdGUgKmNvbm5fc3QsDQorCQkJICAg ICAgc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICprY3J0Y19zdCwNCisJCQkgICAgICBzdHJ1Y3Qg a29tZWRhX2RhdGFfZmxvd19jZmcgKmRmbG93KQ0KK3sNCisJaWYgKChkZmxvdy0+aW5fdyAhPSBk Zmxvdy0+b3V0X3cpIHx8DQorCSAgICAoZGZsb3ctPmluX2ggIT0gZGZsb3ctPm91dF9oKSkgew0K KwkJRFJNX0RFQlVHX0FUT01JQygiY3VycmVudCBkbyBub3Qgc3VwcG9ydCBzY2FsaW5nIHdyaXRl YmFjay5cbiIpOw0KKwkJcmV0dXJuIC1FSU5WQUw7DQorCX0NCisNCisJcmV0dXJuIGtvbWVkYV93 Yl9sYXllcl92YWxpZGF0ZSh3Yl9sYXllciwgY29ubl9zdCwgZGZsb3cpOw0KK30NCisNCiAvKiBi dWlsZCBkaXNwbGF5IG91dHB1dCBkYXRhIGZsb3csIHRoZSBkYXRhIHBhdGggaXM6DQogICogY29t cGl6IC0+IGltcHJvYyAtPiB0aW1pbmdfY3RybHINCiAgKi8NCmRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jIGIvZHJpdmVy cy9ncHUvZHJtL2FybS9kaXNwbGF5L2tvbWVkYS9rb21lZGFfcHJpdmF0ZV9vYmouYw0KaW5kZXgg YTU0ODc4Y2JkNmU0Li5kNTNiZDZjMjNjNWQgMTAwNjQ0DQotLS0gYS9kcml2ZXJzL2dwdS9kcm0v YXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jDQorKysgYi9kcml2ZXJzL2dw dS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV9wcml2YXRlX29iai5jDQpAQCAtMjUyLDYg KzI1MiwxMiBAQCBpbnQga29tZWRhX2ttc19hZGRfcHJpdmF0ZV9vYmpzKHN0cnVjdCBrb21lZGFf a21zX2RldiAqa21zLA0KIAkJCQlyZXR1cm4gZXJyOw0KIAkJfQ0KIA0KKwkJaWYgKHBpcGUtPndi X2xheWVyKSB7DQorCQkJZXJyID0ga29tZWRhX2xheWVyX29ial9hZGQoa21zLCBwaXBlLT53Yl9s YXllcik7DQorCQkJaWYgKGVycikNCisJCQkJcmV0dXJuIGVycjsNCisJCX0NCisNCiAJCWVyciA9 IGtvbWVkYV9jb21waXpfb2JqX2FkZChrbXMsIHBpcGUtPmNvbXBpeik7DQogCQlpZiAoZXJyKQ0K IAkJCXJldHVybiBlcnI7DQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FybS9kaXNwbGF5 L2tvbWVkYS9rb21lZGFfd2JfY29ubmVjdG9yLmMgYi9kcml2ZXJzL2dwdS9kcm0vYXJtL2Rpc3Bs YXkva29tZWRhL2tvbWVkYV93Yl9jb25uZWN0b3IuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmlu ZGV4IDAwMDAwMDAwMDAwMC4uMGMxYTQyMjBjMjgwDQotLS0gL2Rldi9udWxsDQorKysgYi9kcml2 ZXJzL2dwdS9kcm0vYXJtL2Rpc3BsYXkva29tZWRhL2tvbWVkYV93Yl9jb25uZWN0b3IuYw0KQEAg LTAsMCArMSwxODEgQEANCisvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KKy8q DQorICogKEMpIENPUFlSSUdIVCAyMDE4IEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk Lg0KKyAqIEF1dGhvcjogSmFtZXMuUWlhbi5XYW5nIDxqYW1lcy5xaWFuLndhbmdAYXJtLmNvbT4N CisgKg0KKyAqLw0KKyNpbmNsdWRlICJrb21lZGFfZGV2LmgiDQorI2luY2x1ZGUgImtvbWVkYV9r bXMuaCINCisNCitzdGF0aWMgaW50DQora29tZWRhX3diX2luaXRfZGF0YV9mbG93KHN0cnVjdCBr b21lZGFfbGF5ZXIgKndiX2xheWVyLA0KKwkJCSBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAq Y29ubl9zdCwNCisJCQkgc3RydWN0IGtvbWVkYV9jcnRjX3N0YXRlICprY3J0Y19zdCwNCisJCQkg c3RydWN0IGtvbWVkYV9kYXRhX2Zsb3dfY2ZnICpkZmxvdykNCit7DQorCXN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiID0gY29ubl9zdC0+d3JpdGViYWNrX2pvYiA/DQorCQkJCSAgICAgY29ubl9z dC0+d3JpdGViYWNrX2pvYi0+ZmIgOiBOVUxMOw0KKw0KKwlpZiAoIWZiKQ0KKwkJcmV0dXJuIC1F SU5WQUw7DQorDQorCW1lbXNldChkZmxvdywgMCwgc2l6ZW9mKCpkZmxvdykpOw0KKw0KKwlkZmxv dy0+b3V0X3cgPSBmYi0+d2lkdGg7DQorCWRmbG93LT5vdXRfaCA9IGZiLT5oZWlnaHQ7DQorDQor CS8qIHRoZSB3cml0ZSBiYWNrIGRhdGEgY29tZXMgZnJvbSB0aGUgY29tcGl6ICovDQorCXBpcGVs aW5lX2NvbXBvc2l0aW9uX3NpemUoa2NydGNfc3QsICZkZmxvdy0+aW5fdywgJmRmbG93LT5pbl9o KTsNCisJZGZsb3ctPmlucHV0LmNvbXBvbmVudCA9ICZ3Yl9sYXllci0+YmFzZS5waXBlbGluZS0+ Y29tcGl6LT5iYXNlOw0KKwkvKiBjb21waXogZG9lc24ndCBvdXRwdXQgYWxwaGEgKi8NCisJZGZs b3ctPnBpeGVsX2JsZW5kX21vZGUgPSBEUk1fTU9ERV9CTEVORF9QSVhFTF9OT05FOw0KKwlkZmxv dy0+cm90ID0gRFJNX01PREVfUk9UQVRFXzA7DQorDQorCXJldHVybiAwOw0KK30NCisNCitzdGF0 aWMgaW50DQora29tZWRhX3diX2VuY29kZXJfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fZW5jb2Rl ciAqZW5jb2RlciwNCisJCQkgICAgICAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0LA0K KwkJCSAgICAgICBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9zdGF0ZSAqY29ubl9zdCkNCit7DQorCXN0 cnVjdCBrb21lZGFfY3J0Y19zdGF0ZSAqa2NydGNfc3QgPSB0b19rY3J0Y19zdChjcnRjX3N0KTsN CisJc3RydWN0IGtvbWVkYV9sYXllciAqd2JfbGF5ZXI7DQorCXN0cnVjdCBrb21lZGFfZGF0YV9m bG93X2NmZyBkZmxvdzsNCisJaW50IGVycjsNCisNCisJaWYgKCFjcnRjX3N0LT5hY3RpdmUpIHsN CisJCURSTV9ERUJVR19BVE9NSUMoIkNhbm5vdCB3cml0ZSB0aGUgY29tcG9zaXRpb24gcmVzdWx0 IG91dCBvbiBhIGluYWN0aXZlIENSVEMuXG4iKTsNCisJCXJldHVybiAtRUlOVkFMOw0KKwl9DQor DQorCXdiX2xheWVyID0gdG9fa2Nvbm4odG9fd2JfY29ubihjb25uX3N0LT5jb25uZWN0b3IpKS0+ d2JfbGF5ZXI7DQorDQorCS8qDQorCSAqIE5vIG5lZWQgZm9yIGEgZnVsbCBtb2Rlc3RlZCB3aGVu IHRoZSBvbmx5IGNvbm5lY3RvciBjaGFuZ2VkIGlzIHRoZQ0KKwkgKiB3cml0ZWJhY2sgY29ubmVj dG9yLg0KKwkgKi8NCisJaWYgKGNydGNfc3QtPmNvbm5lY3RvcnNfY2hhbmdlZCAmJg0KKwkgICAg aXNfb25seV9jaGFuZ2VkX2Nvbm5lY3RvcihjcnRjX3N0LCBjb25uX3N0LT5jb25uZWN0b3IpKQ0K KwkJY3J0Y19zdC0+Y29ubmVjdG9yc19jaGFuZ2VkID0gZmFsc2U7DQorDQorCWVyciA9IGtvbWVk YV93Yl9pbml0X2RhdGFfZmxvdyh3Yl9sYXllciwgY29ubl9zdCwga2NydGNfc3QsICZkZmxvdyk7 DQorCWlmIChlcnIpDQorCQlyZXR1cm4gZXJyOw0KKw0KKwlyZXR1cm4ga29tZWRhX2J1aWxkX3di X2RhdGFfZmxvdyh3Yl9sYXllciwgY29ubl9zdCwga2NydGNfc3QsICZkZmxvdyk7DQorfQ0KKw0K K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfaGVscGVyX2Z1bmNzIGtvbWVkYV93Yl9l bmNvZGVyX2hlbHBlcl9mdW5jcyA9IHsNCisJLmF0b21pY19jaGVjayA9IGtvbWVkYV93Yl9lbmNv ZGVyX2F0b21pY19jaGVjaywNCit9Ow0KKw0KK3N0YXRpYyBpbnQNCitrb21lZGFfd2JfY29ubmVj dG9yX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKQ0KK3sNCisJcmV0 dXJuIDA7DQorfQ0KKw0KK3N0YXRpYyBlbnVtIGRybV9tb2RlX3N0YXR1cw0KK2tvbWVkYV93Yl9j b25uZWN0b3JfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLA0KKwkJ CSAgICAgICBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSkNCit7DQorCXN0cnVjdCBkcm1f ZGV2aWNlICpkZXYgPSBjb25uZWN0b3ItPmRldjsNCisJc3RydWN0IGRybV9tb2RlX2NvbmZpZyAq bW9kZV9jb25maWcgPSAmZGV2LT5tb2RlX2NvbmZpZzsNCisJaW50IHcgPSBtb2RlLT5oZGlzcGxh eSwgaCA9IG1vZGUtPnZkaXNwbGF5Ow0KKw0KKwlpZiAoKHcgPCBtb2RlX2NvbmZpZy0+bWluX3dp ZHRoKSB8fCAodyA+IG1vZGVfY29uZmlnLT5tYXhfd2lkdGgpKQ0KKwkJcmV0dXJuIE1PREVfQkFE X0hWQUxVRTsNCisNCisJaWYgKChoIDwgbW9kZV9jb25maWctPm1pbl9oZWlnaHQpIHx8IChoID4g bW9kZV9jb25maWctPm1heF9oZWlnaHQpKQ0KKwkJcmV0dXJuIE1PREVfQkFEX1ZWQUxVRTsNCisN CisJcmV0dXJuIE1PREVfT0s7DQorfQ0KKw0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5l Y3Rvcl9oZWxwZXJfZnVuY3Mga29tZWRhX3diX2Nvbm5faGVscGVyX2Z1bmNzID0gew0KKwkuZ2V0 X21vZGVzCT0ga29tZWRhX3diX2Nvbm5lY3Rvcl9nZXRfbW9kZXMsDQorCS5tb2RlX3ZhbGlkCT0g a29tZWRhX3diX2Nvbm5lY3Rvcl9tb2RlX3ZhbGlkLA0KK307DQorDQorc3RhdGljIGVudW0gZHJt X2Nvbm5lY3Rvcl9zdGF0dXMNCitrb21lZGFfd2JfY29ubmVjdG9yX2RldGVjdChzdHJ1Y3QgZHJt X2Nvbm5lY3RvciAqY29ubmVjdG9yLCBib29sIGZvcmNlKQ0KK3sNCisJcmV0dXJuIGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkOw0KK30NCisNCitzdGF0aWMgaW50DQora29tZWRhX3diX2Nvbm5l Y3Rvcl9maWxsX21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsDQorCQkJICAg ICAgIHVpbnQzMl90IG1heFgsIHVpbnQzMl90IG1heFkpDQorew0KKwlyZXR1cm4gMDsNCit9DQor DQorc3RhdGljIHZvaWQga29tZWRhX3diX2Nvbm5lY3Rvcl9kZXN0cm95KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IpDQorew0KKwlkcm1fY29ubmVjdG9yX2NsZWFudXAoY29ubmVjdG9y KTsNCisJa2ZyZWUodG9fa2Nvbm4odG9fd2JfY29ubihjb25uZWN0b3IpKSk7DQorfQ0KKw0KK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyBrb21lZGFfd2JfY29ubmVjdG9y X2Z1bmNzID0gew0KKwkucmVzZXQJCQk9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9yZXNl dCwNCisJLmRldGVjdAkJCT0ga29tZWRhX3diX2Nvbm5lY3Rvcl9kZXRlY3QsDQorCS5maWxsX21v ZGVzCQk9IGtvbWVkYV93Yl9jb25uZWN0b3JfZmlsbF9tb2RlcywNCisJLmRlc3Ryb3kJCT0ga29t ZWRhX3diX2Nvbm5lY3Rvcl9kZXN0cm95LA0KKwkuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZQk9IGRy bV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsDQorCS5hdG9taWNfZGVz dHJveV9zdGF0ZQk9IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kZXN0cm95X3N0YXRlLA0K K307DQorDQorc3RhdGljIGludCBrb21lZGFfd2JfY29ubmVjdG9yX2FkZChzdHJ1Y3Qga29tZWRh X2ttc19kZXYgKmttcywNCisJCQkJICAgc3RydWN0IGtvbWVkYV9jcnRjICprY3J0YykNCit7DQor CXN0cnVjdCBrb21lZGFfZGV2ICptZGV2ID0ga21zLT5iYXNlLmRldl9wcml2YXRlOw0KKwlzdHJ1 Y3Qga29tZWRhX3diX2Nvbm5lY3RvciAqa3diX2Nvbm47DQorCXN0cnVjdCBkcm1fd3JpdGViYWNr X2Nvbm5lY3RvciAqd2JfY29ubjsNCisJdTMyICpmb3JtYXRzLCBuX2Zvcm1hdHMgPSAwOw0KKwlp bnQgZXJyOw0KKw0KKwlpZiAoIWtjcnRjLT5tYXN0ZXItPndiX2xheWVyKQ0KKwkJcmV0dXJuIDA7 DQorDQorCWt3Yl9jb25uID0ga3phbGxvYyhzaXplb2YoKndiX2Nvbm4pLCBHRlBfS0VSTkVMKTsN CisJaWYgKCFrd2JfY29ubikNCisJCXJldHVybiAtRU5PTUVNOw0KKw0KKwlrd2JfY29ubi0+d2Jf bGF5ZXIgPSBrY3J0Yy0+bWFzdGVyLT53Yl9sYXllcjsNCisNCisJd2JfY29ubiA9ICZrd2JfY29u bi0+YmFzZTsNCisJd2JfY29ubi0+ZW5jb2Rlci5wb3NzaWJsZV9jcnRjcyA9IEJJVChkcm1fY3J0 Y19pbmRleCgma2NydGMtPmJhc2UpKTsNCisNCisJZm9ybWF0cyA9IGtvbWVkYV9nZXRfbGF5ZXJf Zm91cmNjX2xpc3QoJm1kZXYtPmZtdF90YmwsDQorCQkJCQkgICAgICAga3diX2Nvbm4tPndiX2xh eWVyLT5sYXllcl90eXBlLA0KKwkJCQkJICAgICAgICZuX2Zvcm1hdHMpOw0KKw0KKwllcnIgPSBk cm1fd3JpdGViYWNrX2Nvbm5lY3Rvcl9pbml0KCZrbXMtPmJhc2UsIHdiX2Nvbm4sDQorCQkJCQkg ICAma29tZWRhX3diX2Nvbm5lY3Rvcl9mdW5jcywNCisJCQkJCSAgICZrb21lZGFfd2JfZW5jb2Rl cl9oZWxwZXJfZnVuY3MsDQorCQkJCQkgICBmb3JtYXRzLCBuX2Zvcm1hdHMpOw0KKwlrb21lZGFf cHV0X2ZvdXJjY19saXN0KGZvcm1hdHMpOw0KKwlpZiAoZXJyKQ0KKwkJcmV0dXJuIGVycjsNCisN CisJZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKCZ3Yl9jb25uLT5iYXNlLCAma29tZWRhX3diX2Nv bm5faGVscGVyX2Z1bmNzKTsNCisNCisJa2NydGMtPndiX2Nvbm4gPSBrd2JfY29ubjsNCisNCisJ cmV0dXJuIDA7DQorfQ0KKw0KK2ludCBrb21lZGFfa21zX2FkZF93Yl9jb25uZWN0b3JzKHN0cnVj dCBrb21lZGFfa21zX2RldiAqa21zLA0KKwkJCQkgc3RydWN0IGtvbWVkYV9kZXYgKm1kZXYpDQor ew0KKwlpbnQgaSwgZXJyOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwga21zLT5uX2NydGNzOyBpKysp IHsNCisJCWVyciA9IGtvbWVkYV93Yl9jb25uZWN0b3JfYWRkKGttcywgJmttcy0+Y3J0Y3NbaV0p Ow0KKwkJaWYgKGVycikNCisJCQlyZXR1cm4gZXJyOw0KKwl9DQorDQorCXJldHVybiAwOw0KK30N Ci0tIA0KMi4xNy4xDQoNCg==