Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Thu, 28 Mar 2002 02:58:52 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Thu, 28 Mar 2002 02:58:38 -0500 Received: from astound-64-85-224-253.ca.astound.net ([64.85.224.253]:40454 "EHLO master.linux-ide.org") by vger.kernel.org with ESMTP id ; Thu, 28 Mar 2002 02:58:12 -0500 Date: Wed, 27 Mar 2002 23:57:35 -0800 (PST) From: Andre Hedrick To: Anton Altaparmakov , Dave Jones cc: linux-kernel@vger.kernel.org Subject: LinuxATADeveloment-2.5.7.patch Message-ID: MIME-Version: 1.0 Content-Type: multipart/MIXED; BOUNDARY="1430322656-1564616397-1017301923=:6661" Content-ID: Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. Send mail to mime@docserver.cac.washington.edu for more info. --1430322656-1564616397-1017301923=:6661 Content-Type: text/PLAIN; CHARSET=us-ascii Content-ID: Here you go ... Anton, please try to break it :-/ Since there is no DIAG layer and I did not want to put it back in because it was taken out there are ZERO PIO checks except for the basic kernel calls. If this is fixed, I am out of 2.5 until I can fix BLOCK to allow for in process bio walking. Cheers, Andre Hedrick LAD Storage Consulting Group --1430322656-1564616397-1017301923=:6661 Content-Type: text/PLAIN; CHARSET=US-ASCII; NAME=dmesg Content-Transfer-Encoding: base64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME=dmesg TGludXggdmVyc2lvbiAyLjUuNyAocm9vdEBhdGh5LmxpbnV4LWlkZS5vcmcp IChnY2MgdmVyc2lvbiAyLjk2IDIwMDAwNzMxIChSZWQgSGF0IExpbnV4IDcu MSAyLjk2LTk4KSkgIzEgU01QIFRodSBNYXIgMjggMDA6MjQ6NTMgUFNUIDIw MDINCkJJT1MtcHJvdmlkZWQgcGh5c2ljYWwgUkFNIG1hcDoNCiBCSU9TLWU4 MjA6IDAwMDAwMDAwMDAwMDAwMDAgLSAwMDAwMDAwMDAwMDlmNDAwICh1c2Fi bGUpDQogQklPUy1lODIwOiAwMDAwMDAwMDAwMDlmNDAwIC0gMDAwMDAwMDAw MDBhMDAwMCAocmVzZXJ2ZWQpDQogQklPUy1lODIwOiAwMDAwMDAwMDAwMGU0 ODAwIC0gMDAwMDAwMDAwMDEwMDAwMCAocmVzZXJ2ZWQpDQogQklPUy1lODIw OiAwMDAwMDAwMDAwMTAwMDAwIC0gMDAwMDAwMDAwZmZmMDAwMCAodXNhYmxl KQ0KIEJJT1MtZTgyMDogMDAwMDAwMDAwZmZmMDAwMCAtIDAwMDAwMDAwMGZm ZjZjMDAgKEFDUEkgZGF0YSkNCiBCSU9TLWU4MjA6IDAwMDAwMDAwMGZmZjZj MDAgLSAwMDAwMDAwMDEwMDAwMDAwIChBQ1BJIE5WUykNCiBCSU9TLWU4MjA6 IDAwMDAwMDAwZmVjMDAwMDAgLSAwMDAwMDAwMGZlYzEwMDAwIChyZXNlcnZl ZCkNCiBCSU9TLWU4MjA6IDAwMDAwMDAwZmVlMDAwMDAgLSAwMDAwMDAwMGZl ZTAxMDAwIChyZXNlcnZlZCkNCiBCSU9TLWU4MjA6IDAwMDAwMDAwZmZmODAw MDAgLSAwMDAwMDAwMTAwMDAwMDAwIChyZXNlcnZlZCkNCjBNQiBISUdITUVN IGF2YWlsYWJsZS4NCjI1NU1CIExPV01FTSBhdmFpbGFibGUuDQpmb3VuZCBT TVAgTVAtdGFibGUgYXQgMDAwZjc0ZDANCmhtLCBwYWdlIDAwMGY3MDAwIHJl c2VydmVkIHR3aWNlLg0KaG0sIHBhZ2UgMDAwZjgwMDAgcmVzZXJ2ZWQgdHdp Y2UuDQpobSwgcGFnZSAwMDA5ZjAwMCByZXNlcnZlZCB0d2ljZS4NCmhtLCBw YWdlIDAwMGEwMDAwIHJlc2VydmVkIHR3aWNlLg0KT24gbm9kZSAwIHRvdGFs cGFnZXM6IDY1NTIwDQp6b25lKDApOiA0MDk2IHBhZ2VzLg0Kem9uZSgxKTog NjE0MjQgcGFnZXMuDQp6b25lKDIpOiAwIHBhZ2VzLg0KSW50ZWwgTXVsdGlQ cm9jZXNzb3IgU3BlY2lmaWNhdGlvbiB2MS40DQogICAgVmlydHVhbCBXaXJl IGNvbXBhdGliaWxpdHkgbW9kZS4NCk9FTSBJRDogVFlBTiAgICAgUHJvZHVj dCBJRDogR1VJTk5FU1MgICAgIEFQSUMgYXQ6IDB4RkVFMDAwMDANClByb2Nl c3NvciAjMSBQZW50aXVtKHRtKSBQcm8gQVBJQyB2ZXJzaW9uIDE2DQpQcm9j ZXNzb3IgIzAgUGVudGl1bSh0bSkgUHJvIEFQSUMgdmVyc2lvbiAxNg0KSS9P IEFQSUMgIzIgVmVyc2lvbiAxNyBhdCAweEZFQzAwMDAwLg0KUHJvY2Vzc29y czogMg0KS2VybmVsIGNvbW1hbmQgbGluZTogYXV0byBCT09UX0lNQUdFPTI1 NyBybyByb290PTMwMiBCT09UX0ZJTEU9L2Jvb3Qvdm1saW51ei0yLjUuNw0K SW5pdGlhbGl6aW5nIENQVSMwDQpEZXRlY3RlZCA5OTcuNDY4IE1IeiBwcm9j ZXNzb3IuDQpDb25zb2xlOiBjb2xvdXIgVkdBKyA4MHgyNQ0KQ2FsaWJyYXRp bmcgZGVsYXkgbG9vcC4uLiAxOTkyLjI5IEJvZ29NSVBTDQpNZW1vcnk6IDI1 NTAyMGsvMjYyMDgwayBhdmFpbGFibGUgKDE5MjZrIGtlcm5lbCBjb2RlLCA2 NjcyayByZXNlcnZlZCwgNTcyayBkYXRhLCAyNjBrIGluaXQsIDBrIGhpZ2ht ZW0pDQpEZW50cnktY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVzOiAzMjc2OCAo b3JkZXI6IDYsIDI2MjE0NCBieXRlcykNCklub2RlLWNhY2hlIGhhc2ggdGFi bGUgZW50cmllczogMTYzODQgKG9yZGVyOiA1LCAxMzEwNzIgYnl0ZXMpDQpN b3VudC1jYWNoZSBoYXNoIHRhYmxlIGVudHJpZXM6IDUxMiAob3JkZXI6IDAs IDQwOTYgYnl0ZXMpDQpCdWZmZXItY2FjaGUgaGFzaCB0YWJsZSBlbnRyaWVz OiAxNjM4NCAob3JkZXI6IDQsIDY1NTM2IGJ5dGVzKQ0KUGFnZS1jYWNoZSBo YXNoIHRhYmxlIGVudHJpZXM6IDY1NTM2IChvcmRlcjogNiwgMjYyMTQ0IGJ5 dGVzKQ0KQ1BVOiBCZWZvcmUgdmVuZG9yIGluaXQsIGNhcHM6IDAxODNmYmZm IGMxYzdmYmZmIDAwMDAwMDAwLCB2ZW5kb3IgPSAyDQpDUFU6IEwxIEkgQ2Fj aGU6IDY0SyAoNjQgYnl0ZXMvbGluZSksIEQgY2FjaGUgNjRLICg2NCBieXRl cy9saW5lKQ0KQ1BVOiBMMiBDYWNoZTogMjU2SyAoNjQgYnl0ZXMvbGluZSkN CkNQVTogQWZ0ZXIgdmVuZG9yIGluaXQsIGNhcHM6IDAxODNmYmZmIGMxYzdm YmZmIDAwMDAwMDAwIDAwMDAwMDAwDQpJbnRlbCBtYWNoaW5lIGNoZWNrIGFy Y2hpdGVjdHVyZSBzdXBwb3J0ZWQuDQpJbnRlbCBtYWNoaW5lIGNoZWNrIHJl cG9ydGluZyBlbmFibGVkIG9uIENQVSMwLg0KQ1BVOiAgICAgQWZ0ZXIgZ2Vu ZXJpYywgY2FwczogMDE4M2ZiZmYgYzFjN2ZiZmYgMDAwMDAwMDAgMDAwMDAw MDANCkNQVTogICAgICAgICAgICAgQ29tbW9uIGNhcHM6IDAxODNmYmZmIGMx YzdmYmZmIDAwMDAwMDAwIDAwMDAwMDAwDQpFbmFibGluZyBmYXN0IEZQVSBz YXZlIGFuZCByZXN0b3JlLi4uIGRvbmUuDQpDaGVja2luZyAnaGx0JyBpbnN0 cnVjdGlvbi4uLiBPSy4NClBPU0lYIGNvbmZvcm1hbmNlIHRlc3RpbmcgYnkg VU5JRklYDQptdHJyOiB2MS40MCAoMjAwMTAzMjcpIFJpY2hhcmQgR29vY2gg KHJnb29jaEBhdG5mLmNzaXJvLmF1KQ0KbXRycjogZGV0ZWN0ZWQgbXRyciB0 eXBlOiBJbnRlbA0KQ1BVOiBCZWZvcmUgdmVuZG9yIGluaXQsIGNhcHM6IDAx ODNmYmZmIGMxYzdmYmZmIDAwMDAwMDAwLCB2ZW5kb3IgPSAyDQpDUFU6IEwx IEkgQ2FjaGU6IDY0SyAoNjQgYnl0ZXMvbGluZSksIEQgY2FjaGUgNjRLICg2 NCBieXRlcy9saW5lKQ0KQ1BVOiBMMiBDYWNoZTogMjU2SyAoNjQgYnl0ZXMv bGluZSkNCkNQVTogQWZ0ZXIgdmVuZG9yIGluaXQsIGNhcHM6IDAxODNmYmZm IGMxYzdmYmZmIDAwMDAwMDAwIDAwMDAwMDAwDQpJbnRlbCBtYWNoaW5lIGNo ZWNrIHJlcG9ydGluZyBlbmFibGVkIG9uIENQVSMwLg0KQ1BVOiAgICAgQWZ0 ZXIgZ2VuZXJpYywgY2FwczogMDE4M2ZiZmYgYzFjN2ZiZmYgMDAwMDAwMDAg MDAwMDAwMDANCkNQVTogICAgICAgICAgICAgQ29tbW9uIGNhcHM6IDAxODNm YmZmIGMxYzdmYmZmIDAwMDAwMDAwIDAwMDAwMDAwDQpXQVJOSU5HOiBUaGlz IGNvbWJpbmF0aW9uIG9mIEFNRCBwcm9jZXNzb3JzIGlzIG5vdCBzdWl0YWJs ZSBmb3IgU01QLg0KQ1BVMDogQU1EIEF0aGxvbih0bSkgUHJvY2Vzc29yIHN0 ZXBwaW5nIDAyDQpwZXItQ1BVIHRpbWVzbGljZSBjdXRvZmY6IDczMS43MCB1 c2Vjcy4NCnRhc2sgbWlncmF0aW9uIGNhY2hlIGRlY2F5IHRpbWVvdXQ6IDEw IG1zZWNzLg0KZW5hYmxlZCBFeHRJTlQgb24gQ1BVIzANCkVTUiB2YWx1ZSBi ZWZvcmUgZW5hYmxpbmcgdmVjdG9yOiAwMDAwMDAwMA0KRVNSIHZhbHVlIGFm dGVyIGVuYWJsaW5nIHZlY3RvcjogMDAwMDAwMDANCkJvb3RpbmcgcHJvY2Vz c29yIDEvMCBlaXAgMjAwMA0KSW5pdGlhbGl6aW5nIENQVSMxDQptYXNrZWQg RXh0SU5UIG9uIENQVSMxDQpFU1IgdmFsdWUgYmVmb3JlIGVuYWJsaW5nIHZl Y3RvcjogMDAwMDAwMDANCkVTUiB2YWx1ZSBhZnRlciBlbmFibGluZyB2ZWN0 b3I6IDAwMDAwMDAwDQpDYWxpYnJhdGluZyBkZWxheSBsb29wLi4uIDE5OTIu MjkgQm9nb01JUFMNCkNQVTogQmVmb3JlIHZlbmRvciBpbml0LCBjYXBzOiAw MTgzZmJmZiBjMWM3ZmJmZiAwMDAwMDAwMCwgdmVuZG9yID0gMg0KQ1BVOiBM MSBJIENhY2hlOiA2NEsgKDY0IGJ5dGVzL2xpbmUpLCBEIGNhY2hlIDY0SyAo NjQgYnl0ZXMvbGluZSkNCkNQVTogTDIgQ2FjaGU6IDI1NksgKDY0IGJ5dGVz L2xpbmUpDQpDUFU6IEFmdGVyIHZlbmRvciBpbml0LCBjYXBzOiAwMTgzZmJm ZiBjMWM3ZmJmZiAwMDAwMDAwMCAwMDAwMDAwMA0KSW50ZWwgbWFjaGluZSBj aGVjayByZXBvcnRpbmcgZW5hYmxlZCBvbiBDUFUjMS4NCkNQVTogICAgIEFm dGVyIGdlbmVyaWMsIGNhcHM6IDAxODNmYmZmIGMxYzdmYmZmIDAwMDAwMDAw IDAwMDAwMDAwDQpDUFU6ICAgICAgICAgICAgIENvbW1vbiBjYXBzOiAwMTgz ZmJmZiBjMWM3ZmJmZiAwMDAwMDAwMCAwMDAwMDAwMA0KV0FSTklORzogVGhp cyBjb21iaW5hdGlvbiBvZiBBTUQgcHJvY2Vzc29ycyBpcyBub3Qgc3VpdGFi bGUgZm9yIFNNUC4NCkNQVTE6IEFNRCBBdGhsb24odG0pIFByb2Nlc3NvciBz dGVwcGluZyAwMg0KVG90YWwgb2YgMiBwcm9jZXNzb3JzIGFjdGl2YXRlZCAo Mzk4NC41OCBCb2dvTUlQUykuDQpFTkFCTElORyBJTy1BUElDIElSUXMNClNl dHRpbmcgMiBpbiB0aGUgcGh5c19pZF9wcmVzZW50X21hcA0KLi4uY2hhbmdp bmcgSU8tQVBJQyBwaHlzaWNhbCBBUElDIElEIHRvIDIgLi4uIG9rLg0KaW5p dCBJT19BUElDIElSUXMNCiBJTy1BUElDIChhcGljaWQtcGluKSAyLTAsIDIt MTYsIDItMTcsIDItMTgsIDItMTksIDItMjAsIDItMjEsIDItMjIsIDItMjMg bm90IGNvbm5lY3RlZC4NCi4uVElNRVI6IHZlY3Rvcj0weDMxIHBpbjE9MiBw aW4yPTANCm51bWJlciBvZiBNUCBJUlEgc291cmNlczogMTYuDQpudW1iZXIg b2YgSU8tQVBJQyAjMiByZWdpc3RlcnM6IDI0Lg0KdGVzdGluZyB0aGUgSU8g QVBJQy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uDQoNCklPIEFQSUMgIzIuLi4u Li4NCi4uLi4gcmVnaXN0ZXIgIzAwOiAwMjAwMDAwMA0KLi4uLi4uLiAgICA6 IHBoeXNpY2FsIEFQSUMgaWQ6IDAyDQouLi4uIHJlZ2lzdGVyICMwMTogMDAx NzAwMTENCi4uLi4uLi4gICAgIDogbWF4IHJlZGlyZWN0aW9uIGVudHJpZXM6 IDAwMTcNCi4uLi4uLi4gICAgIDogUFJRIGltcGxlbWVudGVkOiAwDQouLi4u Li4uICAgICA6IElPIEFQSUMgdmVyc2lvbjogMDAxMQ0KLi4uLiByZWdpc3Rl ciAjMDI6IDAwMDAwMDAwDQouLi4uLi4uICAgICA6IGFyYml0cmF0aW9uOiAw MA0KLi4uLiBJUlEgcmVkaXJlY3Rpb24gdGFibGU6DQogTlIgTG9nIFBoeSBN YXNrIFRyaWcgSVJSIFBvbCBTdGF0IERlc3QgRGVsaSBWZWN0OiAgIA0KIDAw IDAwMCAwMCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDAN CiAwMSAwMDMgMDMgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAxICAg IDM5DQogMDIgMDAzIDAzICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEgICAg MSAgICAzMQ0KIDAzIDAwMyAwMyAgMCAgICAwICAgIDAgICAwICAgMCAgICAx ICAgIDEgICAgNDENCiAwNCAwMDMgMDMgIDAgICAgMCAgICAwICAgMCAgIDAg ICAgMSAgICAxICAgIDQ5DQogMDUgMDAzIDAzICAxICAgIDEgICAgMCAgIDEg ICAwICAgIDEgICAgMSAgICA1MQ0KIDA2IDAwMyAwMyAgMCAgICAwICAgIDAg ICAwICAgMCAgICAxICAgIDEgICAgNTkNCiAwNyAwMDMgMDMgIDAgICAgMCAg ICAwICAgMCAgIDAgICAgMSAgICAxICAgIDYxDQogMDggMDAzIDAzICAwICAg IDAgICAgMCAgIDAgICAwICAgIDEgICAgMSAgICA2OQ0KIDA5IDAwMyAwMyAg MCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAgNzENCiAwYSAwMDMg MDMgIDEgICAgMSAgICAwICAgMSAgIDAgICAgMSAgICAxICAgIDc5DQogMGIg MDAzIDAzICAxICAgIDEgICAgMCAgIDEgICAwICAgIDEgICAgMSAgICA4MQ0K IDBjIDAwMyAwMyAgMCAgICAwICAgIDAgICAwICAgMCAgICAxICAgIDEgICAg ODkNCiAwZCAwMDMgMDMgIDAgICAgMCAgICAwICAgMCAgIDAgICAgMSAgICAx ICAgIDkxDQogMGUgMDAzIDAzICAwICAgIDAgICAgMCAgIDAgICAwICAgIDEg ICAgMSAgICA5OQ0KIDBmIDAwMyAwMyAgMCAgICAwICAgIDAgICAwICAgMCAg ICAxICAgIDEgICAgQTENCiAxMCAwMDAgMDAgIDEgICAgMCAgICAwICAgMCAg IDAgICAgMCAgICAwICAgIDAwDQogMTEgMDAwIDAwICAxICAgIDAgICAgMCAg IDAgICAwICAgIDAgICAgMCAgICAwMA0KIDEyIDAwMCAwMCAgMSAgICAwICAg IDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCiAxMyAwMDAgMDAgIDEgICAg MCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQogMTQgMDAwIDAwICAx ICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAwMA0KIDE1IDAwMCAw MCAgMSAgICAwICAgIDAgICAwICAgMCAgICAwICAgIDAgICAgMDANCiAxNiAw MDAgMDAgIDEgICAgMCAgICAwICAgMCAgIDAgICAgMCAgICAwICAgIDAwDQog MTcgMDAwIDAwICAxICAgIDAgICAgMCAgIDAgICAwICAgIDAgICAgMCAgICAw MA0KSVJRIHRvIHBpbiBtYXBwaW5nczoNCklSUTAgLT4gMDoyDQpJUlExIC0+ IDA6MQ0KSVJRMyAtPiAwOjMNCklSUTQgLT4gMDo0DQpJUlE1IC0+IDA6NQ0K SVJRNiAtPiAwOjYNCklSUTcgLT4gMDo3DQpJUlE4IC0+IDA6OA0KSVJROSAt PiAwOjkNCklSUTEwIC0+IDA6MTANCklSUTExIC0+IDA6MTENCklSUTEyIC0+ IDA6MTINCklSUTEzIC0+IDA6MTMNCklSUTE0IC0+IDA6MTQNCklSUTE1IC0+ IDA6MTUNCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLiBk b25lLg0KVXNpbmcgbG9jYWwgQVBJQyB0aW1lciBpbnRlcnJ1cHRzLg0KY2Fs aWJyYXRpbmcgQVBJQyB0aW1lciAuLi4NCi4uLi4uIENQVSBjbG9jayBzcGVl ZCBpcyA5OTcuNDg2NyBNSHouDQouLi4uLiBob3N0IGJ1cyBjbG9jayBzcGVl ZCBpcyAyNjUuOTk2MyBNSHouDQpjcHU6IDAsIGNsb2NrczogMjY1OTk2Mywg c2xpY2U6IDg4NjY1NA0KQ1BVMDxUMDoyNjU5OTUyLFQxOjE3NzMyOTYsRDoy LFM6ODg2NjU0LEM6MjY1OTk2Mz4NCmNwdTogMSwgY2xvY2tzOiAyNjU5OTYz LCBzbGljZTogODg2NjU0DQpDUFUxPFQwOjI2NTk5NTIsVDE6ODg2NjQwLEQ6 NCxTOjg4NjY1NCxDOjI2NTk5NjM+DQpjaGVja2luZyBUU0Mgc3luY2hyb25p emF0aW9uIGFjcm9zcyBDUFVzOiBwYXNzZWQuDQptdHJyOiB5b3VyIENQVXMg aGFkIGluY29uc2lzdGVudCBmaXhlZCBNVFJSIHNldHRpbmdzDQptdHJyOiBw cm9iYWJseSB5b3VyIEJJT1MgZG9lcyBub3Qgc2V0dXAgYWxsIENQVXMNCkxp bnV4IE5FVDQuMCBmb3IgTGludXggMi40DQpCYXNlZCB1cG9uIFN3YW5zZWEg VW5pdmVyc2l0eSBDb21wdXRlciBTb2NpZXR5IE5FVDMuMDM5DQpJbml0aWFs aXppbmcgUlQgbmV0bGluayBzb2NrZXQNClBDSTogUENJIEJJT1MgcmV2aXNp b24gMi4xMCBlbnRyeSBhdCAweGZkN2MwLCBsYXN0IGJ1cz0xDQpQQ0k6IFVz aW5nIGNvbmZpZ3VyYXRpb24gdHlwZSAxDQpQQ0k6IFByb2JpbmcgUENJIGhh cmR3YXJlDQpQQ0k6IFByb2JpbmcgUENJIGhhcmR3YXJlIChidXMgMDApDQpV bmtub3duIGJyaWRnZSByZXNvdXJjZSAwOiBhc3N1bWluZyB0cmFuc3BhcmVu dA0KVW5rbm93biBicmlkZ2UgcmVzb3VyY2UgMTogYXNzdW1pbmcgdHJhbnNw YXJlbnQNClVua25vd24gYnJpZGdlIHJlc291cmNlIDI6IGFzc3VtaW5nIHRy YW5zcGFyZW50DQpCSU9TIGZhaWxlZCB0byBlbmFibGUgUENJIHN0YW5kYXJk cyBjb21wbGlhbmNlLCBmaXhpbmcgdGhpcyBlcnJvci4NCkkvTyBBUElDOiBB TUQgRXJyYXRhICMyMiBtYXkgYmUgcHJlc2VudC4gSW4gdGhlIGV2ZW50IG9m IGluc3RhYmlsaXR5IHRyeQ0KICAgICAgICA6IGJvb3Rpbmcgd2l0aCB0aGUg Im5vYXBpYyIgb3B0aW9uLg0KaXNhcG5wOiBTY2FubmluZyBmb3IgUG5QIGNh cmRzLi4uDQppc2FwbnA6IE5vIFBsdWcgJiBQbGF5IGRldmljZSBmb3VuZA0K SUEtMzIgTWljcm9jb2RlIFVwZGF0ZSBEcml2ZXI6IHYxLjA5IDx0aWdyYW5A dmVyaXRhcy5jb20+DQpTdGFydGluZyBrc3dhcGQNCkJJTzogcG9vbCBvZiAy NTYgc2V0dXAsIDE0S2IgKDU2IGJ5dGVzL2JpbykNCmJpb3ZlYzogaW5pdCBw b29sIDAsIDEgZW50cmllcywgMTIgYnl0ZXMNCmJpb3ZlYzogaW5pdCBwb29s IDEsIDQgZW50cmllcywgNDggYnl0ZXMNCmJpb3ZlYzogaW5pdCBwb29sIDIs IDE2IGVudHJpZXMsIDE5MiBieXRlcw0KYmlvdmVjOiBpbml0IHBvb2wgMywg NjQgZW50cmllcywgNzY4IGJ5dGVzDQpiaW92ZWM6IGluaXQgcG9vbCA0LCAx MjggZW50cmllcywgMTUzNiBieXRlcw0KYmlvdmVjOiBpbml0IHBvb2wgNSwg MjU2IGVudHJpZXMsIDMwNzIgYnl0ZXMNClZGUzogRGlza3F1b3RhcyB2ZXJz aW9uIGRxdW90XzYuNC4wIGluaXRpYWxpemVkDQpKb3VybmFsbGVkIEJsb2Nr IERldmljZSBkcml2ZXIgbG9hZGVkDQpkZXZmczogdjEuMTEgKDIwMDIwMTI5 KSBSaWNoYXJkIEdvb2NoIChyZ29vY2hAYXRuZi5jc2lyby5hdSkNCmRldmZz OiBib290X29wdGlvbnM6IDB4MA0KSW5zdGFsbGluZyBrbmZzZCAoY29weXJp Z2h0IChDKSAxOTk2IG9raXJAbW9uYWQuc3diLmRlKS4NCnVkZjogcmVnaXN0 ZXJpbmcgZmlsZXN5c3RlbQ0KaTJjLWNvcmUubzogaTJjIGNvcmUgbW9kdWxl DQppMmMtZGV2Lm86IGkyYyAvZGV2IGVudHJpZXMgZHJpdmVyIG1vZHVsZQ0K aTJjLWNvcmUubzogZHJpdmVyIGkyYy1kZXYgZHVtbXkgZHJpdmVyIHJlZ2lz dGVyZWQuDQppMmMtYWxnby1iaXQubzogaTJjIGJpdCBhbGdvcml0aG0gbW9k dWxlDQppMmMtYWxnby1wY2YubzogaTJjIHBjZjg1ODQgYWxnb3JpdGhtIG1v ZHVsZQ0KaTJjLXByb2MubyB2ZXJzaW9uIDIuNi4xICgyMDAxMDgyNSkNCnB0 eTogMjU2IFVuaXg5OCBwdHlzIGNvbmZpZ3VyZWQNClNlcmlhbCBkcml2ZXIg dmVyc2lvbiA1LjA1YyAoMjAwMS0wNy0wOCkgd2l0aCBNQU5ZX1BPUlRTIFNI QVJFX0lSUSBTRVJJQUxfUENJIGVuYWJsZWQNCnR0eVMwMCBhdCAweDAzZjgg KGlycSA9IDQpIGlzIGEgMTY1NTBBDQprbW9kOiBmYWlsZWQgdG8gZXhlYyAv c2Jpbi9tb2Rwcm9iZSAtcyAtayBwYXJwb3J0X2xvd2xldmVsLCBlcnJubyA9 IDINCmxwOiBkcml2ZXIgbG9hZGVkIGJ1dCBubyBkZXZpY2VzIGZvdW5kDQpS ZWFsIFRpbWUgQ2xvY2sgRHJpdmVyIHYxLjExDQpOb24tdm9sYXRpbGUgbWVt b3J5IGRyaXZlciB2MS4xDQpTb2Z0d2FyZSBXYXRjaGRvZyBUaW1lcjogMC4w NSwgdGltZXIgbWFyZ2luOiA2MCBzZWMNCmJsb2NrOiAyNTYgc2xvdHMgcGVy IHF1ZXVlLCBiYXRjaD0zMg0KUkFNRElTSyBkcml2ZXIgaW5pdGlhbGl6ZWQ6 IDE2IFJBTSBkaXNrcyBvZiA2NDAwMEsgc2l6ZSAxMDI0IGJsb2Nrc2l6ZQ0K bG9vcDogbG9hZGVkIChtYXggOCBkZXZpY2VzKQ0KVW5pZm9ybSBNdWx0aS1Q bGF0Zm9ybSBFLUlERSBkcml2ZXIgdmVyLjo3LjAuMA0KaWRlOiBzeXN0ZW0g YnVzIHNwZWVkIDMzTUh6DQpBZHZhbmNlZCBNaWNybyBEZXZpY2VzIFtBTURd IEFNRC03NjUgW1ZpcGVyXSBJREU6IElERSBjb250cm9sbGVyIG9uIFBDSSBz bG90IDAwOjA3LjENCkFkdmFuY2VkIE1pY3JvIERldmljZXMgW0FNRF0gQU1E LTc2NSBbVmlwZXJdIElERTogY2hpcHNldCByZXZpc2lvbiAxDQpBZHZhbmNl ZCBNaWNybyBEZXZpY2VzIFtBTURdIEFNRC03NjUgW1ZpcGVyXSBJREU6IG5v dCAxMDAlIG5hdGl2ZSBtb2RlOiB3aWxsIHByb2JlIGlycXMgbGF0ZXINCkFN RF9JREU6IEJpb3MgZGlkbid0IHNldCBjYWJsZSBiaXRzIGNvcmVjdGx5LiBF bmFibGluZyB3b3JrYXJvdW5kLg0KQU1EX0lERTogQWR2YW5jZWQgTWljcm8g RGV2aWNlcyBbQU1EXSBBTUQtNzY1IFtWaXBlcl0gSURFIChyZXYgMDEpIFVE TUExMDAgY29udHJvbGxlciBvbiBwY2kwMDowNy4xDQogICAgaWRlMDogQk0t RE1BIGF0IDB4ZjAwMC0weGYwMDcsIEJJT1Mgc2V0dGluZ3M6IGhkYTpETUEs IGhkYjpwaW8NCiAgICBpZGUxOiBCTS1ETUEgYXQgMHhmMDA4LTB4ZjAwZiwg QklPUyBzZXR0aW5nczogaGRjOnBpbywgaGRkOnBpbw0KQ01EIFRlY2hub2xv Z3kgSW5jIFBDSTA2ODA6IElERSBjb250cm9sbGVyIG9uIFBDSSBzbG90IDAw OjA4LjANCkNNRCBUZWNobm9sb2d5IEluYyBQQ0kwNjgwOiBjaGlwc2V0IHJl dmlzaW9uIDENCkNNRCBUZWNobm9sb2d5IEluYyBQQ0kwNjgwOiBub3QgMTAw JSBuYXRpdmUgbW9kZTogd2lsbCBwcm9iZSBpcnFzIGxhdGVyDQogICAgaWRl MjogQk0tRE1BIGF0IDB4MWM1MC0weDFjNTcsIEJJT1Mgc2V0dGluZ3M6IGhk ZTpETUEsIGhkZjpwaW8NCiAgICBpZGUzOiBCTS1ETUEgYXQgMHgxYzU4LTB4 MWM1ZiwgQklPUyBzZXR0aW5nczogaGRnOkRNQSwgaGRoOnBpbw0KaGRhOiBN YXh0b3IgNTQ2MTBINiwgQVRBIERJU0sgZHJpdmUNCmhkYzogQ0QtUk9NIENE VTYxMSwgQVRBUEkgQ0QvRFZELVJPTSBkcml2ZQ0KaGRlOiBNYXh0b3IgNEcx NjBKOCwgQVRBIERJU0sgZHJpdmUNCmhkZzogUVVBTlRVTSBGSVJFQkFMTCBF WDYuNEEsIEFUQSBESVNLIGRyaXZlDQppZGUwIGF0IDB4MWYwLTB4MWY3LDB4 M2Y2IG9uIGlycSAxNA0KaWRlMSBhdCAweDE3MC0weDE3NywweDM3NiBvbiBp cnEgMTUNCmlkZTIgYXQgMHgxYzc4LTB4MWM3ZiwweDFjNzIgb24gaXJxIDEw DQppZGUzIGF0IDB4MWM2OC0weDFjNmYsMHgxYzY2IG9uIGlycSAxMA0KYmxr OiBxdWV1ZSBjMDQyMjZhYywgSS9PIGxpbWl0IDQwOTVNYiAobWFzayAweGZm ZmZmZmZmKQ0KaGRhOiA5MDA0NTY0OCBzZWN0b3JzICg0NjEwMyBNQikgdy8y MDQ4S2lCIENhY2hlLCBDSFM9ODkzMzEvMTYvNjMsIFVETUEoMzMpDQpibGs6 IHF1ZXVlIGMwNDIzMmY0LCBJL08gbGltaXQgNDA5NU1iIChtYXNrIDB4ZmZm ZmZmZmYpDQpoZGU6IDMyMDE3MzA1NiBzZWN0b3JzICgxNjM5MjkgTUIpIHcv MjA0OEtpQiBDYWNoZSwgQ0hTPTMxNzYzMi8yNTUvNjMsIFVETUEoMTAwKQ0K YmxrOiBxdWV1ZSBjMDQyMzkxOCwgSS9PIGxpbWl0IDQwOTVNYiAobWFzayAw eGZmZmZmZmZmKQ0KaGRnOiAxMjU5NDk2MCBzZWN0b3JzICg2NDQ5IE1CKSB3 LzQxOEtpQiBDYWNoZSwgQ0hTPTEzMzI4LzE1LzYzLCBVRE1BKDMzKQ0KaGRj OiBBVEFQSSAxMFggQ0QtUk9NIGRyaXZlLCAyNTZrQiBDYWNoZSwgRE1BDQpV bmlmb3JtIENELVJPTSBkcml2ZXIgUmV2aXNpb246IDMuMTINClBhcnRpdGlv biBjaGVjazoNCiAvZGV2L2lkZS9ob3N0MC9idXMwL3RhcmdldDAvbHVuMDog W1BUQkxdIFs1NjA1LzI1NS82M10gcDEgcDIgcDMgcDQgPCBwNSBwNiBwNyA+ DQogL2Rldi9pZGUvaG9zdDIvYnVzMC90YXJnZXQwL2x1bjA6IHVua25vd24g cGFydGl0aW9uIHRhYmxlDQogL2Rldi9pZGUvaG9zdDIvYnVzMS90YXJnZXQw L2x1bjA6IHVua25vd24gcGFydGl0aW9uIHRhYmxlDQpTQ1NJIHN1YnN5c3Rl bSBkcml2ZXIgUmV2aXNpb246IDEuMDANCnNjc2kwIDogU0NTSSBob3N0IGFk YXB0ZXIgZW11bGF0aW9uIGZvciBJREUgQVRBUEkgZGV2aWNlcw0Kc3Q6IFZl cnNpb24gMjAwMjAxMjMsIGJ1ZnNpemUgMzI3NjgsIHdydCAzMDcyMCwgbWF4 IGluaXQuIGJ1ZnMgNCwgcy9nIHNlZ3MgMTYNCk5FVDQ6IExpbnV4IFRDUC9J UCAxLjAgZm9yIE5FVDQuMA0KSVAgUHJvdG9jb2xzOiBJQ01QLCBVRFAsIFRD UA0KSVA6IHJvdXRpbmcgY2FjaGUgaGFzaCB0YWJsZSBvZiAxMDI0IGJ1Y2tl dHMsIDE2S2J5dGVzDQpUQ1A6IEhhc2ggdGFibGVzIGNvbmZpZ3VyZWQgKGVz dGFibGlzaGVkIDgxOTIgYmluZCAxMDkyMikNCk5FVDQ6IFVuaXggZG9tYWlu IHNvY2tldHMgMS4wL1NNUCBmb3IgTGludXggTkVUNC4wLg0KUkFNRElTSzog Q29tcHJlc3NlZCBpbWFnZSBmb3VuZCBhdCBibG9jayAwDQpGcmVlaW5nIGlu aXRyZCBtZW1vcnk6IDI2MGsgZnJlZWQNClZGUzogTW91bnRlZCByb290IChl eHQyIGZpbGVzeXN0ZW0pIHJlYWRvbmx5Lg0KRnJlZWluZyB1bnVzZWQga2Vy bmVsIG1lbW9yeTogMjYwayBmcmVlZA0KbWQ6IG1kIGRyaXZlciAwLjkwLjAg TUFYX01EX0RFVlM9MjU2LCBNRF9TQl9ESVNLUz0yNw0K --1430322656-1564616397-1017301923=:6661 Content-Type: text/PLAIN; CHARSET=us-ascii; NAME="LinuxATADeveloment-2.5.7.patch" Content-Transfer-Encoding: base64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="LinuxATADeveloment-2.5.7.patch" ZGlmZiAtdXJOIGxpbnV4LTIuNS43L2RyaXZlcnMvaWRlL2hwdDM0eC5jIGxp bnV4LTIuNS43LmZpeC9kcml2ZXJzL2lkZS9ocHQzNHguYw0KLS0tIGxpbnV4 LTIuNS43L2RyaXZlcnMvaWRlL2hwdDM0eC5jCU1vbiBNYXIgMTggMTI6Mzc6 MDUgMjAwMg0KKysrIGxpbnV4LTIuNS43LmZpeC9kcml2ZXJzL2lkZS9ocHQz NHguYwlGcmkgTWFyIDIyIDIxOjQ3OjA5IDIwMDINCkBAIC0zMzQsNiArMzM0 LDggQEANCiAJCQlkcml2ZS0+d2FpdGluZ19mb3JfZG1hID0gMTsNCiAJCQlp ZiAoZHJpdmUtPnR5cGUgIT0gQVRBX0RJU0spDQogCQkJCXJldHVybiAwOw0K KwkJCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQkvKiBw YXJhbm9pYSBjaGVjayAqLw0KKwkJCQlCVUcoKTsNCiAJCQlpZGVfc2V0X2hh bmRsZXIoZHJpdmUsICZpZGVfZG1hX2ludHIsIFdBSVRfQ01ELCBOVUxMKTsJ LyogaXNzdWUgY21kIHRvIGRyaXZlICovDQogCQkJT1VUX0JZVEUoKHJlYWRp bmcgPT0gOSkgPyBXSU5fUkVBRERNQSA6IFdJTl9XUklURURNQSwgSURFX0NP TU1BTkRfUkVHKTsNCiAJCQlyZXR1cm4gMDsNCmRpZmYgLXVyTiBsaW51eC0y LjUuNy9kcml2ZXJzL2lkZS9pY3NpZGUuYyBsaW51eC0yLjUuNy5maXgvZHJp dmVycy9pZGUvaWNzaWRlLmMNCi0tLSBsaW51eC0yLjUuNy9kcml2ZXJzL2lk ZS9pY3NpZGUuYwlNb24gTWFyIDE4IDEyOjM3OjA1IDIwMDINCisrKyBsaW51 eC0yLjUuNy5maXgvZHJpdmVycy9pZGUvaWNzaWRlLmMJRnJpIE1hciAyMiAy MTo0Nzo0MSAyMDAyDQpAQCAtNDQ0LDYgKzQ0NCw5IEBADQogCQlpZiAoZHJp dmUtPm1lZGlhICE9IGlkZV9kaXNrKQ0KIAkJCXJldHVybiAwOw0KIA0KKwkJ aWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFu b2lhIGNoZWNrICovDQorCQkJQlVHKCk7DQorDQogCQlpZGVfc2V0X2hhbmRs ZXIoZHJpdmUsICZpY3NpZGVfZG1haW50ciwgV0FJVF9DTUQsIE5VTEwpOw0K IAkJT1VUX0JZVEUocmVhZGluZyA/IFdJTl9SRUFERE1BIDogV0lOX1dSSVRF RE1BLA0KIAkJCSBJREVfQ09NTUFORF9SRUcpOw0KZGlmZiAtdXJOIGxpbnV4 LTIuNS43L2RyaXZlcnMvaWRlL2lkZS1jZC5jIGxpbnV4LTIuNS43LmZpeC9k cml2ZXJzL2lkZS9pZGUtY2QuYw0KLS0tIGxpbnV4LTIuNS43L2RyaXZlcnMv aWRlL2lkZS1jZC5jCU1vbiBNYXIgMTggMTI6Mzc6MTMgMjAwMg0KKysrIGxp bnV4LTIuNS43LmZpeC9kcml2ZXJzL2lkZS9pZGUtY2QuYwlGcmkgTWFyIDIy IDIxOjUwOjU4IDIwMDINCkBAIC03NDUsNiArNzQ1LDkgQEANCiAJCSh2b2lk KSAoSFdJRihkcml2ZSktPmRtYXByb2MoaWRlX2RtYV9iZWdpbiwgZHJpdmUp KTsNCiANCiAJaWYgKENEUk9NX0NPTkZJR19GTEFHUyAoZHJpdmUpLT5kcnFf aW50ZXJydXB0KSB7DQorDQorCQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRs ZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEgY2hlY2sgKi8NCisJCQlCVUcoKTsN CiAJCWlkZV9zZXRfaGFuZGxlciAoZHJpdmUsIGhhbmRsZXIsIFdBSVRfQ01E LCBjZHJvbV90aW1lcl9leHBpcnkpOw0KIAkJT1VUX0JZVEUgKFdJTl9QQUNL RVRDTUQsIElERV9DT01NQU5EX1JFRyk7IC8qIHBhY2tldCBjb21tYW5kICov DQogCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQpAQCAtNzg2LDYgKzc4OSw5IEBA DQogCQkJcmV0dXJuIHN0YXJ0c3RvcDsNCiAJfQ0KIA0KKwlpZiAoSFdHUk9V UChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEgY2hlY2sg Ki8NCisJCUJVRygpOw0KKw0KIAkvKiBBcm0gdGhlIGludGVycnVwdCBoYW5k bGVyLiAqLw0KIAlpZGVfc2V0X2hhbmRsZXIgKGRyaXZlLCBoYW5kbGVyLCB0 aW1lb3V0LCBjZHJvbV90aW1lcl9leHBpcnkpOw0KIA0KQEAgLTEwMDUsNiAr MTAxMSw5IEBADQogDQogCS8qIERvbmUgbW92aW5nIGRhdGEhDQogCSAgIFdh aXQgZm9yIGFub3RoZXIgaW50ZXJydXB0LiAqLw0KKw0KKwlpZiAoSFdHUk9V UChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEgY2hlY2sg Ki8NCisJCUJVRygpOw0KIAlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZjZHJv bV9yZWFkX2ludHIsIFdBSVRfQ01ELCBOVUxMKTsNCiAJcmV0dXJuIGlkZV9z dGFydGVkOw0KIH0NCkBAIC0xMzM1LDYgKzEzNDQsOSBAQA0KIAl9DQogDQog CS8qIE5vdyB3ZSB3YWl0IGZvciBhbm90aGVyIGludGVycnVwdC4gKi8NCisN CisJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBh cmFub2lhIGNoZWNrICovDQorCQlCVUcoKTsNCiAJaWRlX3NldF9oYW5kbGVy IChkcml2ZSwgJmNkcm9tX3BjX2ludHIsIFdBSVRfQ01ELCBjZHJvbV90aW1l cl9leHBpcnkpOw0KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0KQEAgLTE1 NTksNiArMTU3MSw5IEBADQogCX0NCiANCiAJLyogcmUtYXJtIGhhbmRsZXIg Ki8NCisNCisJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwp CS8qIHBhcmFub2lhIGNoZWNrICovDQorCQlCVUcoKTsNCiAJaWRlX3NldF9o YW5kbGVyKGRyaXZlLCAmY2Ryb21fd3JpdGVfaW50ciwgNSAqIFdBSVRfQ01E LCBOVUxMKTsNCiAJcmV0dXJuIGlkZV9zdGFydGVkOw0KIH0NCmRpZmYgLXVy TiBsaW51eC0yLjUuNy9kcml2ZXJzL2lkZS9pZGUtZG1hLmMgbGludXgtMi41 LjcuZml4L2RyaXZlcnMvaWRlL2lkZS1kbWEuYw0KLS0tIGxpbnV4LTIuNS43 L2RyaXZlcnMvaWRlL2lkZS1kbWEuYwlNb24gTWFyIDE4IDEyOjM3OjA3IDIw MDINCisrKyBsaW51eC0yLjUuNy5maXgvZHJpdmVycy9pZGUvaWRlLWRtYS5j CUZyaSBNYXIgMjIgMjE6NTE6MjggMjAwMg0KQEAgLTU4OCw2ICs1ODgsOSBA QA0KIAkJCWRyaXZlLT53YWl0aW5nX2Zvcl9kbWEgPSAxOw0KIAkJCWlmIChk cml2ZS0+dHlwZSAhPSBBVEFfRElTSykNCiAJCQkJcmV0dXJuIDA7DQorDQor CQkJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBh cmFub2lhIGNoZWNrICovDQorCQkJCUJVRygpOw0KIAkJCWlkZV9zZXRfaGFu ZGxlcihkcml2ZSwgJmlkZV9kbWFfaW50ciwgV0FJVF9DTUQsIGRtYV90aW1l cl9leHBpcnkpOwkvKiBpc3N1ZSBjbWQgdG8gZHJpdmUgKi8NCiAJCQlpZiAo KEhXR1JPVVAoZHJpdmUpLT5ycS0+ZmxhZ3MgJiBSRVFfRFJJVkVfVEFTS0ZJ TEUpICYmDQogCQkJICAgIChkcml2ZS0+YWRkcmVzc2luZyA9PSAxKSkgew0K ZGlmZiAtdXJOIGxpbnV4LTIuNS43L2RyaXZlcnMvaWRlL2lkZS1mbG9wcHku YyBsaW51eC0yLjUuNy5maXgvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jDQot LS0gbGludXgtMi41LjcvZHJpdmVycy9pZGUvaWRlLWZsb3BweS5jCU1vbiBN YXIgMTggMTI6Mzc6MDggMjAwMg0KKysrIGxpbnV4LTIuNS43LmZpeC9kcml2 ZXJzL2lkZS9pZGUtZmxvcHB5LmMJRnJpIE1hciAyMiAyMTo1NDo1MyAyMDAy DQpAQCAtOTY4LDYgKzk2OCw5IEBADQogCQkJaWYgKHRlbXAgPiBwYy0+YnVm ZmVyX3NpemUpIHsNCiAJCQkJcHJpbnRrIChLRVJOX0VSUiAiaWRlLWZsb3Bw eTogVGhlIGZsb3BweSB3YW50cyB0byBzZW5kIHVzIG1vcmUgZGF0YSB0aGFu IGV4cGVjdGVkIC0gZGlzY2FyZGluZyBkYXRhXG4iKTsNCiAJCQkJaWRlZmxv cHB5X2Rpc2NhcmRfZGF0YSAoZHJpdmUsYmNvdW50LmFsbCk7DQorDQorCQkJ CWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQkvKiBwYXJh bm9pYSBjaGVjayAqLw0KKwkJCQkJQlVHKCk7DQogCQkJCWlkZV9zZXRfaGFu ZGxlciAoZHJpdmUsJmlkZWZsb3BweV9wY19pbnRyLElERUZMT1BQWV9XQUlU X0NNRCwgTlVMTCk7DQogCQkJCXJldHVybiBpZGVfc3RhcnRlZDsNCiAJCQl9 DQpAQCAtOTkwLDYgKzk5Myw4IEBADQogCXBjLT5hY3R1YWxseV90cmFuc2Zl cnJlZCs9YmNvdW50LmFsbDsJCQkJLyogVXBkYXRlIHRoZSBjdXJyZW50IHBv c2l0aW9uICovDQogCXBjLT5jdXJyZW50X3Bvc2l0aW9uKz1iY291bnQuYWxs Ow0KIA0KKwlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJ LyogcGFyYW5vaWEgY2hlY2sgKi8NCisJCUJVRygpOw0KIAlpZGVfc2V0X2hh bmRsZXIgKGRyaXZlLCZpZGVmbG9wcHlfcGNfaW50cixJREVGTE9QUFlfV0FJ VF9DTUQsIE5VTEwpOwkJLyogQW5kIHNldCB0aGUgaW50ZXJydXB0IGhhbmRs ZXIgYWdhaW4gKi8NCiAJcmV0dXJuIGlkZV9zdGFydGVkOw0KIH0NCkBAIC0x MDE0LDYgKzEwMTksOCBAQA0KIAkJcHJpbnRrIChLRVJOX0VSUiAiaWRlLWZs b3BweTogKElPLENvRCkgIT0gKDAsMSkgd2hpbGUgaXNzdWluZyBhIHBhY2tl dCBjb21tYW5kXG4iKTsNCiAJCXJldHVybiBpZGVfc3RvcHBlZDsNCiAJfQ0K KwlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFy YW5vaWEgY2hlY2sgKi8NCisJCUJVRygpOw0KIAlpZGVfc2V0X2hhbmRsZXIg KGRyaXZlLCAmaWRlZmxvcHB5X3BjX2ludHIsIElERUZMT1BQWV9XQUlUX0NN RCwgTlVMTCk7CS8qIFNldCB0aGUgaW50ZXJydXB0IHJvdXRpbmUgKi8NCiAJ YXRhcGlfb3V0cHV0X2J5dGVzIChkcml2ZSwgZmxvcHB5LT5wYy0+YywgMTIp OyAvKiBTZW5kIHRoZSBhY3R1YWwgcGFja2V0ICovDQogCXJldHVybiBpZGVf c3RhcnRlZDsNCkBAIC0xMDYyLDkgKzEwNjksMTMgQEANCiAJICogMjVtc2Vj IGlzIHRvbyBzaG9ydCwgNDAgYW5kIDUwbXNlYyB3b3JrIHdlbGwuIGlkZWZs b3BweV9wY19pbnRyIHdpbGwgDQogCSAqIG5vdCBiZSBhY3R1YWxseSB1c2Vk IHVudGlsIGFmdGVyIHRoZSBwYWNrZXQgaXMgbW92ZWQgaW4gYWJvdXQgNTAg bXNlYy4NCiAJICovDQorDQorCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxl ciAhPSBOVUxMKQkvKiBwYXJhbm9pYSBjaGVjayAqLw0KKwkJQlVHKCk7DQor DQogCWlkZV9zZXRfaGFuZGxlciAoZHJpdmUsIA0KIAkgICZpZGVmbG9wcHlf cGNfaW50ciwgCQkvKiBzZXJ2aWNlIHJvdXRpbmUgZm9yIHBhY2tldCBjb21t YW5kICovDQotCSAgZmxvcHB5LT50aWNrcywJCQkvKiB3YWl0IHRoaXMgbG9u ZyBiZWZvcmUgImZhaWxpbmciICovDQorCSAgZmxvcHB5LT50aWNrcywJCS8q IHdhaXQgdGhpcyBsb25nIGJlZm9yZSAiZmFpbGluZyIgKi8NCiAJICAmaWRl ZmxvcHB5X3RyYW5zZmVyX3BjMik7CS8qIGZhaWwgPT0gdHJhbnNmZXJfcGMy ICovDQogCXJldHVybiBpZGVfc3RhcnRlZDsNCiB9DQpAQCAtMTE0NSw2ICsx MTU2LDkgQEANCiAJfQ0KIAkNCiAJaWYgKHRlc3RfYml0IChJREVGTE9QUFlf RFJRX0lOVEVSUlVQVCwgJmZsb3BweS0+ZmxhZ3MpKSB7DQorDQorCQlpZiAo SFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEg Y2hlY2sgKi8NCisJCQlCVUcoKTsNCiAJCWlkZV9zZXRfaGFuZGxlciAoZHJp dmUsIHBrdF94ZmVyX3JvdXRpbmUsIElERUZMT1BQWV9XQUlUX0NNRCwgTlVM TCk7DQogCQlPVVRfQllURSAoV0lOX1BBQ0tFVENNRCwgSURFX0NPTU1BTkRf UkVHKTsJCS8qIElzc3VlIHRoZSBwYWNrZXQgY29tbWFuZCAqLw0KIAkJcmV0 dXJuIGlkZV9zdGFydGVkOw0KZGlmZiAtdXJOIGxpbnV4LTIuNS43L2RyaXZl cnMvaWRlL2lkZS1wbWFjLmMgbGludXgtMi41LjcuZml4L2RyaXZlcnMvaWRl L2lkZS1wbWFjLmMNCi0tLSBsaW51eC0yLjUuNy9kcml2ZXJzL2lkZS9pZGUt cG1hYy5jCU1vbiBNYXIgMTggMTI6Mzc6MTcgMjAwMg0KKysrIGxpbnV4LTIu NS43LmZpeC9kcml2ZXJzL2lkZS9pZGUtcG1hYy5jCUZyaSBNYXIgMjIgMjE6 NTU6MjAgMjAwMg0KQEAgLTk5Myw2ICs5OTMsOCBAQA0KIAkJZHJpdmUtPndh aXRpbmdfZm9yX2RtYSA9IDE7DQogCQlpZiAoZHJpdmUtPm1lZGlhICE9IGlk ZV9kaXNrKQ0KIAkJCXJldHVybiAwOw0KKwkJaWYgKEhXR1JPVVAoZHJpdmUp LT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNoZWNrICovDQorCQkJ QlVHKCk7DQogCQlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZpZGVfZG1hX2lu dHIsIFdBSVRfQ01ELCBOVUxMKTsNCiAJCU9VVF9CWVRFKGZ1bmM9PWlkZV9k bWFfd3JpdGU/IFdJTl9XUklURURNQTogV0lOX1JFQURETUEsDQogCQkJIElE RV9DT01NQU5EX1JFRyk7DQpkaWZmIC11ck4gbGludXgtMi41LjcvZHJpdmVy cy9pZGUvaWRlLXRhcGUuYyBsaW51eC0yLjUuNy5maXgvZHJpdmVycy9pZGUv aWRlLXRhcGUuYw0KLS0tIGxpbnV4LTIuNS43L2RyaXZlcnMvaWRlL2lkZS10 YXBlLmMJTW9uIE1hciAxOCAxMjozNzowNyAyMDAyDQorKysgbGludXgtMi41 LjcuZml4L2RyaXZlcnMvaWRlL2lkZS10YXBlLmMJRnJpIE1hciAyMiAyMTo1 Nzo1NiAyMDAyDQpAQCAtMjE1NSw2ICsyMTU1LDkgQEANCiAJCQlpZiAodGVt cCA+IHBjLT5idWZmZXJfc2l6ZSkgew0KIAkJCQlwcmludGsgKEtFUk5fRVJS ICJpZGUtdGFwZTogVGhlIHRhcGUgd2FudHMgdG8gc2VuZCB1cyBtb3JlIGRh dGEgdGhhbiBleHBlY3RlZCAtIGRpc2NhcmRpbmcgZGF0YVxuIik7DQogCQkJ CWlkZXRhcGVfZGlzY2FyZF9kYXRhIChkcml2ZSwgYmNvdW50LmFsbCk7DQor CQkJCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQkvKiBw YXJhbm9pYSBjaGVjayAqLw0KKwkJCQkJQlVHKCk7DQorDQogCQkJCWlkZV9z ZXRfaGFuZGxlciAoZHJpdmUsICZpZGV0YXBlX3BjX2ludHIsIElERVRBUEVf V0FJVF9DTUQsIE5VTEwpOw0KIAkJCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQog CQkJfQ0KQEAgLTIxODEsNiArMjE4NCw5IEBADQogCWlmICh0YXBlLT5kZWJ1 Z19sZXZlbCA+PSAyKQ0KIAkJcHJpbnRrKEtFUk5fSU5GTyAiaWRlLXRhcGU6 IFtjbWQgJXhdIHRyYW5zZmVycmVkICVkIGJ5dGVzIG9uIHRoYXQgaW50ZXJy dXB0XG4iLCBwYy0+Y1swXSwgYmNvdW50LmFsbCk7DQogI2VuZGlmDQorDQor CWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAhPSBOVUxMKQkvKiBwYXJh bm9pYSBjaGVjayAqLw0KKwkJQlVHKCk7DQogCWlkZV9zZXRfaGFuZGxlciAo ZHJpdmUsICZpZGV0YXBlX3BjX2ludHIsIElERVRBUEVfV0FJVF9DTUQsIE5V TEwpOwkvKiBBbmQgc2V0IHRoZSBpbnRlcnJ1cHQgaGFuZGxlciBhZ2FpbiAq Lw0KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0KQEAgLTIyNTUsNiArMjI2 MSw4IEBADQogCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQogCX0NCiAJdGFwZS0+ Y21kX3N0YXJ0X3RpbWUgPSBqaWZmaWVzOw0KKwlpZiAoSFdHUk9VUChkcml2 ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEgY2hlY2sgKi8NCisJ CUJVRygpOw0KIAlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZpZGV0YXBlX3Bj X2ludHIsIElERVRBUEVfV0FJVF9DTUQsIE5VTEwpOwkvKiBTZXQgdGhlIGlu dGVycnVwdCByb3V0aW5lICovDQogCWF0YXBpX291dHB1dF9ieXRlcyAoZHJp dmUscGMtPmMsMTIpOwkJCS8qIFNlbmQgdGhlIGFjdHVhbCBwYWNrZXQgKi8N CiAJcmV0dXJuIGlkZV9zdGFydGVkOw0KQEAgLTIzMjgsNiArMjMzNiw5IEBA DQogCX0NCiAjZW5kaWYgLyogQ09ORklHX0JMS19ERVZfSURFRE1BICovDQog CWlmICh0ZXN0X2JpdChJREVUQVBFX0RSUV9JTlRFUlJVUFQsICZ0YXBlLT5m bGFncykpIHsNCisNCisJCWlmIChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciAh PSBOVUxMKQkvKiBwYXJhbm9pYSBjaGVjayAqLw0KKwkJCUJVRygpOw0KIAkJ aWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmaWRldGFwZV90cmFuc2Zlcl9wYywg SURFVEFQRV9XQUlUX0NNRCwgTlVMTCk7DQogCQlPVVRfQllURShXSU5fUEFD S0VUQ01ELCBJREVfQ09NTUFORF9SRUcpOw0KIAkJcmV0dXJuIGlkZV9zdGFy dGVkOw0KZGlmZiAtdXJOIGxpbnV4LTIuNS43L2RyaXZlcnMvaWRlL2lkZS10 YXNrZmlsZS5jIGxpbnV4LTIuNS43LmZpeC9kcml2ZXJzL2lkZS9pZGUtdGFz a2ZpbGUuYw0KLS0tIGxpbnV4LTIuNS43L2RyaXZlcnMvaWRlL2lkZS10YXNr ZmlsZS5jCU1vbiBNYXIgMTggMTI6Mzc6MTUgMjAwMg0KKysrIGxpbnV4LTIu NS43LmZpeC9kcml2ZXJzL2lkZS9pZGUtdGFza2ZpbGUuYwlUaHUgTWFyIDI4 IDAwOjE3OjIyIDIwMDINCkBAIC0xLDggKzEsMjcgQEANCiAvKg0KLSAqICBD b3B5cmlnaHQgKEMpIDIwMDAJCU1pY2hhZWwgQ29ybndlbGwgPGNvcm53ZWxs QGFjbS5vcmc+DQotICogIENvcHlyaWdodCAoQykgMjAwMAkJQW5kcmUgSGVk cmljayA8YW5kcmVAbGludXgtaWRlLm9yZz4NCisgKiBsaW51eC9kcml2ZXJz L2lkZS9pZGUtdGFza2ZpbGUuYyAgICAgVmVyc2lvbiAwLjMwICAgIE1hciAy MywgMjAwMg0KICAqDQotICogIE1heSBiZSBjb3BpZWQgb3IgbW9kaWZpZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQ0KKyAqICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMglNaWNoYWVsIENv cm53ZWxsIDxjb3Jud2VsbEBhY20ub3JnPg0KKyAqICBDb3B5cmlnaHQgKEMp IDIwMDAtMjAwMglBbmRyZSBIZWRyaWNrIDxhbmRyZUBsaW51eC1pZGUub3Jn Pg0KKyAqDQorICogIFRoZSBiaWcgdGhlIGJhZCBhbmQgdGhlIHVnbHkuDQor ICoNCisgKiAgUHJvYmxlbXMgdG8gYmUgZml4ZWQgYmVjYXVzZSBvZiBCSU8g aW50ZXJmYWNlIG9yIHRoZSBsYWNrIHRoZXJlZm9yZS4NCisgKg0KKyAqICBG aWxsIG1lIGluIHN0dXBpZCAhISENCisgKg0KKyAqICBIT1NUOg0KKyAqCUdl bmVyYWwgcmVmZXJzIHRvIHRoZSBDb250cm9sbGVyIGFuZCBEcml2ZXIgInBh aXIiLg0KKyAqICBEQVRBIEhBTkRMRVI6DQorICoJVW5kZXIgdGhlIGNvbnRl eHQgb2YgTGludXggaXQgZ2VuZXJhbGx5IHJlZmVycyB0byBhbiBpbnRlcnJ1 cHQgaGFuZGxlci4NCisgKglIb3dldmVyLCBpdCBjb3JyZWN0bHkgZGVzY3Jp YmVzIHRoZSAnSE9TVCcNCisgKiAgREFUQSBCTE9DSzoNCisgKglUaGUgYW1v dW50IG9mIGRhdGEgbmVlZGVkIHRvIGJlIHRyYW5zZmVyZWQgYXMgcHJlZGVm aW5lZCBpbiB0aGUNCisgKglzZXR1cCBvZiB0aGUgZGV2aWNlLg0KKyAqICBT VE9SQUdFIEFUT01JQzoNCisgKglUaGUgJ0RBVEEgQkxPQ0snIGFzc29jaWF0 ZWQgdG8gdGhlICdEQVRBIEhBTkRMRVInLCBhbmQgY2FuIGJlIGFzDQorICoJ c21hbGwgYXMgYSBzaW5nbGUgc2VjdG9yIG9yIGFzIGxhcmdlIGFzIHRoZSBl bnRpcmUgY29tbWFuZCBibG9jaw0KKyAqCXJlcXVlc3QuDQogICovDQogDQog I2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KQEAgLTMzLDcgKzUyLDcgQEAN CiAjZGVmaW5lIERFQlVHX1RBU0tGSUxFCTAJLyogdW5zZXQgd2hlbiBmaXhl ZCAqLw0KIA0KICNpZiBERUJVR19UQVNLRklMRQ0KLSNkZWZpbmUgRFRGKHgu Li4pIHByaW50aygjI3gpDQorI2RlZmluZSBEVEYoeC4uLikgcHJpbnRrKHgp DQogI2Vsc2UNCiAjZGVmaW5lIERURih4Li4uKQ0KICNlbmRpZg0KQEAgLTU1 LDcgKzc0LDcgQEANCiAJCQkJdW5zaWduZWQgbG9uZyAqZmxhZ3MpDQogew0K IAlpZiAocnEtPmJpbykNCi0JICAgIGJpb19rdW5tYXBfaXJxKHRvLCBmbGFn cyk7DQorCQliaW9fa3VubWFwX2lycSh0bywgZmxhZ3MpOw0KIH0NCiANCiBz dGF0aWMgdm9pZCBic3dhcF9kYXRhICh2b2lkICpidWZmZXIsIGludCB3Y291 bnQpDQpAQCAtMjg4LDY3ICszMDcsOTYgQEANCiAJCQlicmVhazsNCiAJfQ0K IH0NCi1zdGF0aWMgaWRlX3N0YXJ0c3RvcF90IGJpb19tdWxvdXRfaW50cihp ZGVfZHJpdmVfdCAqZHJpdmUpOw0KIA0KIC8qDQorICogRklYTUUgYmVmb3Jl IDIuNiAuLi4gREFUQSBpbnRlZ3JpdHkgaXNzdWUgdXBvbiBlcnJvci4NCisg Ki8NCisvKg0KICAqIEhhbmRsZXIgZm9yIGNvbW1hbmQgd3JpdGUgbXVsdGlw bGUNCiAgKiBDYWxsZWQgZGlyZWN0bHkgZnJvbSBleGVjdXRlX2RyaXZlX2Nt ZCBmb3IgdGhlIGZpcnN0IGJ1bmNoIG9mIHNlY3RvcnMsDQogICogYWZ0ZXJ3 YXJkcyBvbmx5IGJ5IHRoZSBJU1INCiAgKi8NCiBzdGF0aWMgaWRlX3N0YXJ0 c3RvcF90IHRhc2tfbXVsb3V0X2ludHIoaWRlX2RyaXZlX3QgKmRyaXZlKQ0K IHsNCi0JdW5zaWduZWQgaW50CQltc2VjdCwgbnNlY3Q7DQotCWJ5dGUgc3Rh dAkJPSBHRVRfU1RBVCgpOw0KLQlieXRlIGlvXzMyYml0CQk9IGRyaXZlLT5p b18zMmJpdDsNCi0Jc3RydWN0IHJlcXVlc3QgKnJxCT0gSFdHUk9VUChkcml2 ZSktPnJxOw0KLQlpZGVfaHdncm91cF90ICpod2dyb3VwCT0gSFdHUk9VUChk cml2ZSk7DQotCWNoYXIgKnBCdWYJCT0gTlVMTDsNCisJYnl0ZSBzdGF0CQkJ PSBHRVRfU1RBVCgpOw0KKwlieXRlIGlvXzMyYml0CQkJPSBkcml2ZS0+aW9f MzJiaXQ7DQorCXN0cnVjdCByZXF1ZXN0ICpycQkJPSBIV0dST1VQKGRyaXZl KS0+cnE7DQorCWNoYXIgKnBCdWYJCQk9IE5VTEw7DQorCWlkZV9zdGFydHN0 b3BfdCBzdGFydHN0b3AJPSBpZGVfc3RvcHBlZDsNCisJdW5zaWduZWQgaW50 IG1zZWN0CQk9IGRyaXZlLT5tdWx0X2NvdW50Ow0KKwl1bnNpZ25lZCBpbnQg bnNlY3Q7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQogDQorLyoNCisgKglo ZWxkIGhlcmUgYXMgYSByZWZlcnJlbmNlIHRvIHRoZSBwYXN0Lg0KKyAqCV9f aWRlX2VuZF9yZXF1ZXN0KGRyaXZlLCAxLCBycS0+aGFyZF9ucl9zZWN0b3Jz KTsNCisgKi8NCiAJLyoNCiAJICogKGtzL2hzKTogSGFuZGxlIGxhc3QgSVJR IG9uIG11bHRpLXNlY3RvciB0cmFuc2ZlciwNCiAJICogb2NjdXJzIGFmdGVy IGFsbCBkYXRhIHdhcyBzZW50IGluIHRoaXMgY2h1bmsNCiAJICovDQogCWlm IChycS0+Y3VycmVudF9ucl9zZWN0b3JzID09IDApIHsNCi0JCWlmIChzdGF0 ICYgKEVSUl9TVEFUfERSUV9TVEFUKSkNCisJCWlmIChzdGF0ICYgKEVSUl9T VEFUfERSUV9TVEFUKSkgew0KKwkJCXByaW50aygiJXM6IE1VTFRJLVdSSVRF IGFzc3VtZSBhbGwgZGF0YSB0cmFuc2ZlcmVkICIgXA0KKwkJCQkiaXMgYmFk IHN0YXR1cz0weCUwMnhcbiIsDQorCQkJCWRyaXZlLT5uYW1lLCBzdGF0KTsN CiAJCQlyZXR1cm4gaWRlX2Vycm9yKGRyaXZlLCAidGFza19tdWxvdXRfaW50 ciIsIHN0YXQpOw0KLQ0KLQkJLyoNCi0JCSAqIHRoZXJlIG1heSBiZSBtb3Jl LCBpZGVfZG9fcmVxdWVzdCB3aWxsIHJlc3RhcnQgaXQgaWYNCi0JCSAqIG5l Y2Vzc2FyeQ0KLQkJICovDQotCQlpZGVfZW5kX3JlcXVlc3QoZHJpdmUsIDEp Ow0KLQ0KLQkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KKwkJfQ0KKwkJaWYgKCFy cS0+YmlvKQ0KKwkJCWlkZV9lbmRfcmVxdWVzdChkcml2ZSwgMSk7DQorCQly ZXR1cm4gc3RhcnRzdG9wOw0KIAl9DQogDQogCWlmICghT0tfU1RBVChzdGF0 LERBVEFfUkVBRFksQkFEX1JfU1RBVCkpIHsNCiAJCWlmIChzdGF0ICYgKEVS Ul9TVEFUfERSUV9TVEFUKSkgew0KKwkJCXByaW50aygiJXM6IE1VTFRJLVdS SVRFIGFzc3VtZSBhbGwgZGF0YSB0cmFuc2ZlcmVkICIgXA0KKwkJCQkiaXMg YmFkIHN0YXR1cz0weCUwMnhcbiIsDQorCQkJCWRyaXZlLT5uYW1lLCBzdGF0 KTsNCiAJCQlyZXR1cm4gaWRlX2Vycm9yKGRyaXZlLCAidGFza19tdWxvdXRf aW50ciIsIHN0YXQpOw0KIAkJfQ0KIAkJLyogbm8gZGF0YSB5ZXQsIHNvIHdh aXQgZm9yIGFub3RoZXIgaW50ZXJydXB0ICovDQotCQlpZiAoaHdncm91cC0+ aGFuZGxlciA9PSBOVUxMKQ0KKwkJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5k bGVyID09IE5VTEwpDQogCQkJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAmdGFz a19tdWxvdXRfaW50ciwgV0FJVF9DTUQsIE5VTEwpOw0KIAkJcmV0dXJuIGlk ZV9zdGFydGVkOw0KIAl9DQogDQotCS8qIChrcy9ocyk6IFNlZSB0YXNrX211 bGluX2ludHIgKi8NCi0JbXNlY3QgPSBkcml2ZS0+bXVsdF9jb3VudDsNCi0J bnNlY3QgPSBycS0+Y3VycmVudF9ucl9zZWN0b3JzOw0KLQlpZiAobnNlY3Qg PiBtc2VjdCkNCi0JCW5zZWN0ID0gbXNlY3Q7DQorCWlmIChIV0dST1VQKGRy aXZlKS0+aGFuZGxlciAhPSBOVUxMKSB7DQorCQl1bnNpZ25lZCBsb25nIGxm bGFnczsNCisJCXNwaW5fbG9ja19pcnFzYXZlKCZpZGVfbG9jaywgbGZsYWdz KTsNCisJCUhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyID0gTlVMTDsNCisJCWRl bF90aW1lcigmSFdHUk9VUChkcml2ZSktPnRpbWVyKTsNCisJCXNwaW5fdW5s b2NrX2lycXJlc3RvcmUoJmlkZV9sb2NrLCBsZmxhZ3MpOw0KKwl9DQogDQot CXBCdWYgPSBpZGVfbWFwX3JxKHJxLCAmZmxhZ3MpOw0KLQlEVEYoIk11bHRp d3JpdGU6ICVwLCBuc2VjdDogJWQgLCBycS0+Y3VycmVudF9ucl9zZWN0b3Jz OiAlbGRcbiIsDQotCQlwQnVmLCBuc2VjdCwgcnEtPmN1cnJlbnRfbnJfc2Vj dG9ycyk7DQotCWRyaXZlLT5pb18zMmJpdCA9IDA7DQotCXRhc2tmaWxlX291 dHB1dF9kYXRhKGRyaXZlLCBwQnVmLCBuc2VjdCAqIFNFQ1RPUl9XT1JEUyk7 DQotCWlkZV91bm1hcF9ycShycSwgcEJ1ZiwgJmZsYWdzKTsNCi0JZHJpdmUt PmlvXzMyYml0ID0gaW9fMzJiaXQ7DQorCWRvIHsNCisJCW5zZWN0ID0gcnEt PmN1cnJlbnRfbnJfc2VjdG9yczsNCisJCWlmIChuc2VjdCA+IG1zZWN0KQ0K KwkJCW5zZWN0ID0gbXNlY3Q7DQorCQlwQnVmID0gaWRlX21hcF9ycShycSwg JmZsYWdzKTsNCisJCURURigiTXVsdGl3cml0ZTogJXAsIG5zZWN0OiAlZCwg bXNlY3Q6ICVkLCAiIFwNCisJCQkicnEtPmN1cnJlbnRfbnJfc2VjdG9yczog JWxkXG4iLA0KKwkJCXBCdWYsIG5zZWN0LCBtc2VjdCwgcnEtPmN1cnJlbnRf bnJfc2VjdG9ycyk7DQorCQltc2VjdCAtPSBuc2VjdDsNCisJCWRyaXZlLT5p b18zMmJpdCA9IDA7DQorLy8JCXJxLT5jdXJyZW50X25yX3NlY3RvcnMgLT0g bnNlY3Q7DQorCQl0YXNrZmlsZV9vdXRwdXRfZGF0YShkcml2ZSwgcEJ1Ziwg bnNlY3QgKiBTRUNUT1JfV09SRFMpOw0KKwkJaWRlX3VubWFwX3JxKHJxLCBw QnVmLCAmZmxhZ3MpOw0KKwkJcnEtPmN1cnJlbnRfbnJfc2VjdG9ycyAtPSBu c2VjdDsNCisJCWRyaXZlLT5pb18zMmJpdCA9IGlvXzMyYml0Ow0KKwkJLyoN CisJCSAqIEZJWE1FIDo6IFdlIHJlYWxseSBjYW4gbm90IGxlZ2FsbHkgZ2V0 IGEgbmV3IHBhZ2UvYmlvDQorCQkgKiByZWdhcmRsZXNzLCBpZiB0aGlzIGlz IHRoZSBlbmQgb2Ygb3VyIHNlZ21lbnQuDQorCQkgKiBCSU8gd2Fsa2luZyBv ciBzZWdtZW50IGNhbiBvbmx5IGJlIHVwZGF0ZWQgYWZ0ZXIgd2UNCisJCSAq IGhhdmUgYSBnb29kICBHRVRfU1RBVCgpOyByZXR1cm4uDQorCQkgKi8NCisJ CWlmICghcnEtPmN1cnJlbnRfbnJfc2VjdG9ycykgew0KKwkJCWlmICghaWRl X2VuZF9yZXF1ZXN0KGRyaXZlLCAxKSkNCisJCQkJaWYgKCFycS0+YmlvKQ0K KwkJCQkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KKwkJfQ0KKwl9IHdoaWxlICht c2VjdCk7DQogCXJxLT5lcnJvcnMgPSAwOw0KLQkvKiBBcmUgd2Ugc3VyZSB0 aGF0IHRoaXMgYXMgYWxsIGJlZW4gYWxyZWFkeSB0cmFuc2ZlcmVkPyAqLw0K LQlycS0+Y3VycmVudF9ucl9zZWN0b3JzIC09IG5zZWN0Ow0KLQlpZiAoaHdn cm91cC0+aGFuZGxlciA9PSBOVUxMKQ0KKwlpZiAoSFdHUk9VUChkcml2ZSkt PmhhbmRsZXIgPT0gTlVMTCkNCiAJCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwg JnRhc2tfbXVsb3V0X2ludHIsIFdBSVRfQ01ELCBOVUxMKTsNCiAJcmV0dXJu IGlkZV9zdGFydGVkOw0KIH0NCkBAIC0zNjEsMTEgKzQwOSwxMCBAQA0KIAli eXRlIEhJSEkgPSAoZHJpdmUtPmFkZHJlc3NpbmcpID8gMHhFMCA6IDB4RUY7 DQogDQogCS8qIChrcy9ocyk6IE1vdmVkIHRvIHN0YXJ0LCBkbyBub3QgdXNl IGZvciBtdWx0aXBsZSBvdXQgY29tbWFuZHMgKi8NCi0JaWYgKHRhc2stPmhh bmRsZXIgIT0gdGFza19tdWxvdXRfaW50ciAmJiB0YXNrLT5oYW5kbGVyICE9 IGJpb19tdWxvdXRfaW50cikgew0KLQkJaWYgKElERV9DT05UUk9MX1JFRykN Ci0JCQlPVVRfQllURShkcml2ZS0+Y3RsLCBJREVfQ09OVFJPTF9SRUcpOwkv KiBjbGVhciBuSUVOICovDQotCQlTRUxFQ1RfTUFTSyhIV0lGKGRyaXZlKSwg ZHJpdmUsIDApOw0KLQl9DQorCS8qIEFMTCBDb21tYW5kIEJsb2NrIEV4ZWN1 dGlvbnMgU0hBTEwgY2xlYXIgbklFTiwgdW5sZXNzIG90aGVyd2lzZSAqLw0K KwlpZiAoSURFX0NPTlRST0xfUkVHKQ0KKwkJT1VUX0JZVEUoZHJpdmUtPmN0 bCwgSURFX0NPTlRST0xfUkVHKTsJLyogY2xlYXIgbklFTiAqLw0KKwlTRUxF Q1RfTUFTSyhIV0lGKGRyaXZlKSwgZHJpdmUsIDApOw0KIA0KIAlpZiAoKGlk LT5jb21tYW5kX3NldF8yICYgMHgwNDAwKSAmJg0KIAkgICAgKGlkLT5jZnNf ZW5hYmxlXzIgJiAweDA0MDApICYmDQpAQCAtMzg5LDExICs0MzYsNiBAQA0K IAlpZiAodGFzay0+aGFuZGxlciAhPSBOVUxMKSB7DQogCQlpZGVfc2V0X2hh bmRsZXIgKGRyaXZlLCB0YXNrLT5oYW5kbGVyLCBXQUlUX0NNRCwgTlVMTCk7 DQogCQlPVVRfQllURSh0YXNrZmlsZS0+Y29tbWFuZCwgSURFX0NPTU1BTkRf UkVHKTsNCi0JCS8qDQotCQkgKiBXYXJuaW5nIGNoZWNrIGZvciByYWNlIGJl dHdlZW4gaGFuZGxlciBhbmQgcHJlaGFuZGxlciBmb3INCi0JCSAqIHdyaXRp bmcgZmlyc3QgYmxvY2sgb2YgZGF0YS4gIGhvd2V2ZXIgc2luY2Ugd2UgYXJl IHdlbGwNCi0JCSAqIGluc2lkZSB0aGUgYm91bmRhcmllcyBvZiB0aGUgc2Vl aywgd2Ugc2hvdWxkIGJlIG9rYXkuDQotCQkgKi8NCiAJCWlmICh0YXNrLT5w cmVoYW5kbGVyICE9IE5VTEwpIHsNCiAJCQlyZXR1cm4gdGFzay0+cHJlaGFu ZGxlcihkcml2ZSwgdGFzay0+cnEpOw0KIAkJfQ0KQEAgLTQwNSw3ICs0NDcs MTIgQEANCiAJcmV0dXJuIGlkZV9zdGFydGVkOw0KIH0NCiANCi12b2lkIGRv X3Rhc2tmaWxlKGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IGhkX2RyaXZl X3Rhc2tfaGRyICp0YXNrZmlsZSwNCisvKg0KKyAqIEZJWE1FIDo6IE5lZWQg dG8gbWVyZ2UgYWxsIHRhc2tmaWxlIHJlcXVlc3RzIHJlZ2FyZGxlc3Mgb2Yg Y2FsbGVyDQorICoJdG8gdGhlIGFib3ZlIGRvX3J3X3Rhc2tmaWxlLg0KKyAq Lw0KK3ZvaWQgZG9fdGFza2ZpbGUoaWRlX2RyaXZlX3QgKmRyaXZlLA0KKwkJ c3RydWN0IGhkX2RyaXZlX3Rhc2tfaGRyICp0YXNrZmlsZSwNCiAJCXN0cnVj dCBoZF9kcml2ZV9ob2JfaGRyICpob2JmaWxlLA0KIAkJaWRlX2hhbmRsZXJf dCAqaGFuZGxlcikNCiB7DQpAQCAtNDEzLDExICs0NjAsMTAgQEANCiAJYnl0 ZSBISUhJID0gKGRyaXZlLT5hZGRyZXNzaW5nKSA/IDB4RTAgOiAweEVGOw0K IA0KIAkvKiAoa3MvaHMpOiBNb3ZlZCB0byBzdGFydCwgZG8gbm90IHVzZSBm b3IgbXVsdGlwbGUgb3V0IGNvbW1hbmRzICovDQotCWlmICgqaGFuZGxlciAh PSB0YXNrX211bG91dF9pbnRyICYmIGhhbmRsZXIgIT0gYmlvX211bG91dF9p bnRyKSB7DQotCQlpZiAoSURFX0NPTlRST0xfUkVHKQ0KLQkJCU9VVF9CWVRF KGRyaXZlLT5jdGwsIElERV9DT05UUk9MX1JFRyk7ICAvKiBjbGVhciBuSUVO ICovDQotCQlTRUxFQ1RfTUFTSyhIV0lGKGRyaXZlKSwgZHJpdmUsIDApOw0K LQl9DQorCS8qIEFMTCBDb21tYW5kIEJsb2NrIEV4ZWN1dGlvbnMgU0hBTEwg Y2xlYXIgbklFTiwgdW5sZXNzIG90aGVyd2lzZSAqLw0KKwlpZiAoSURFX0NP TlRST0xfUkVHKQ0KKwkJT1VUX0JZVEUoZHJpdmUtPmN0bCwgSURFX0NPTlRS T0xfUkVHKTsgIC8qIGNsZWFyIG5JRU4gKi8NCisJU0VMRUNUX01BU0soSFdJ Rihkcml2ZSksIGRyaXZlLCAwKTsNCiANCiAJaWYgKChpZC0+Y29tbWFuZF9z ZXRfMiAmIDB4MDQwMCkgJiYNCiAJICAgIChpZC0+Y2ZzX2VuYWJsZV8yICYg MHgwNDAwKSAmJg0KQEAgLTQ3Nyw2ICs1MjMsOCBAQA0KIAlpZiAoc3RhdCAm IChFUlJfU1RBVHxEUlFfU1RBVCkpDQogCQlyZXR1cm4gaWRlX2Vycm9yKGRy aXZlLCAic2V0X2dlb21ldHJ5X2ludHIiLCBzdGF0KTsNCiANCisJaWYgKEhX R1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNo ZWNrICovDQorCQlCVUcoKTsNCiAJaWRlX3NldF9oYW5kbGVyKGRyaXZlLCAm c2V0X2dlb21ldHJ5X2ludHIsIFdBSVRfQ01ELCBOVUxMKTsNCiAJcmV0dXJu IGlkZV9zdGFydGVkOw0KIH0NCkBAIC01MTMsNyArNTYxLDEwIEBADQogfQ0K IA0KIC8qDQotICogSGFuZGxlciBmb3IgY29tbWFuZCB3aXRoIFBJTyBkYXRh LWluIHBoYXNlDQorICogSGFuZGxlciBmb3IgY29tbWFuZCB3aXRoIFBJTyBk YXRhLWluIHBoYXNlLCBSRUFEDQorICovDQorLyoNCisgKiBGSVhNRSBiZWZv cmUgMi42IC4uLiBEQVRBIGludGVncml0eSBpc3N1ZSB1cG9uIGVycm9yLiA8 YW5kcmVAbGludXgtaWRlLm9yZz4NCiAgKi8NCiBzdGF0aWMgaWRlX3N0YXJ0 c3RvcF90IHRhc2tfaW5faW50ciAoaWRlX2RyaXZlX3QgKmRyaXZlKQ0KIHsN CkBAIC01MjUsNjUgKzU3Niw4NSBAQA0KIA0KIAlpZiAoIU9LX1NUQVQoc3Rh dCxEQVRBX1JFQURZLEJBRF9SX1NUQVQpKSB7DQogCQlpZiAoc3RhdCAmIChF UlJfU1RBVHxEUlFfU1RBVCkpIHsNCisjaWYgMA0KKwkJCURURigiJXM6IFJF QUQgYXR0ZW1wdGluZyB0byByZWNvdmVyIGxhc3QgIiBcDQorCQkJCSJzZWN0 b3IgY291bnRlciBzdGF0dXM9MHglMDJ4XG4iLA0KKwkJCQlkcml2ZS0+bmFt ZSwgc3RhdCk7DQorCQkvKg0KKwkJICogRXhwZWN0IGEgQlVHIEJPTUIgaWYg d2UgYXR0ZW1wdCB0byByZXdpbmQgdGhlDQorCQkgKiBvZmZzZXQgaW4gdGhl IEJJTyBha2EgUEFHRSBpbiB0aGUgY3VycmVudCBCTE9DSw0KKwkJICogc2Vn bWVudC4gIFRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIEhPU1Qgc2VnbWVu dC4NCisJCSAqLw0KKw0KKwkJCXJxLT5jdXJyZW50X25yX3NlY3RvcnMrKzsN CisjZW5kaWYNCiAJCQlyZXR1cm4gaWRlX2Vycm9yKGRyaXZlLCAidGFza19p bl9pbnRyIiwgc3RhdCk7DQogCQl9DQogCQlpZiAoIShzdGF0ICYgQlVTWV9T VEFUKSkgew0KIAkJCURURigidGFza19pbl9pbnRyIHRvIFNvb24gd2FpdCBm b3IgbmV4dCBpbnRlcnJ1cHRcbiIpOw0KLQkJCWlkZV9zZXRfaGFuZGxlcihk cml2ZSwgJnRhc2tfaW5faW50ciwgV0FJVF9DTUQsIE5VTEwpOw0KKwkJCWlm IChIV0dST1VQKGRyaXZlKS0+aGFuZGxlciA9PSBOVUxMKQ0KKwkJCQlpZGVf c2V0X2hhbmRsZXIoZHJpdmUsICZ0YXNrX2luX2ludHIsIFdBSVRfQ01ELCBO VUxMKTsNCiAJCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogCQl9DQogCX0NCi0J RFRGKCJzdGF0OiAlMDJ4XG4iLCBzdGF0KTsNCiAJcEJ1ZiA9IGlkZV9tYXBf cnEocnEsICZmbGFncyk7DQotCURURigiUmVhZDogJXAsIHJxLT5jdXJyZW50 X25yX3NlY3RvcnM6ICVkXG4iLCBwQnVmLCAoaW50KSBycS0+Y3VycmVudF9u cl9zZWN0b3JzKTsNCi0NCisJRFRGKCJSZWFkOiAlcCwgcnEtPmN1cnJlbnRf bnJfc2VjdG9yczogJWQsIHN0YXQ6ICUwMnhcbiIsDQorCQlwQnVmLCAoaW50 KSBycS0+Y3VycmVudF9ucl9zZWN0b3JzLCBzdGF0KTsNCiAJZHJpdmUtPmlv XzMyYml0ID0gMDsNCiAJdGFza2ZpbGVfaW5wdXRfZGF0YShkcml2ZSwgcEJ1 ZiwgU0VDVE9SX1dPUkRTKTsNCiAJaWRlX3VubWFwX3JxKHJxLCBwQnVmLCAm ZmxhZ3MpOw0KIAlkcml2ZS0+aW9fMzJiaXQgPSBpb18zMmJpdDsNCi0NCi0J aWYgKC0tcnEtPmN1cnJlbnRfbnJfc2VjdG9ycyA8PSAwKSB7DQotCQkvKiAo aHMpOiBzd2FwcGVkIG5leHQgMiBsaW5lcyAqLw0KLQkJRFRGKCJSZXF1ZXN0 IEVuZGVkIHN0YXQ6ICUwMnhcbiIsIEdFVF9TVEFUKCkpOw0KLQkJaWYgKGlk ZV9lbmRfcmVxdWVzdChkcml2ZSwgMSkpIHsNCi0JCQlpZGVfc2V0X2hhbmRs ZXIoZHJpdmUsICZ0YXNrX2luX2ludHIsICBXQUlUX0NNRCwgTlVMTCk7DQot CQkJcmV0dXJuIGlkZV9zdGFydGVkOw0KLQkJfQ0KLQl9IGVsc2Ugew0KKwkv Kg0KKwkgKiBGSVhNRSA6OiBXZSByZWFsbHkgY2FuIG5vdCBsZWdhbGx5IGdl dCBhIG5ldyBwYWdlL2Jpbw0KKwkgKiByZWdhcmRsZXNzLCBpZiB0aGlzIGlz IHRoZSBlbmQgb2Ygb3VyIHNlZ21lbnQuDQorCSAqIEJJTyB3YWxraW5nIG9y IHNlZ21lbnQgY2FuIG9ubHkgYmUgdXBkYXRlZCBhZnRlciB3ZSBoYXZlIGEg Z29vZA0KKwkgKiBHRVRfU1RBVCgpOyByZXR1cm4uDQorCSAqLw0KKwlpZiAo LS1ycS0+Y3VycmVudF9ucl9zZWN0b3JzIDw9IDApDQorCQlpZiAoIWlkZV9l bmRfcmVxdWVzdChkcml2ZSwgMSkpDQorCQkJcmV0dXJuIGlkZV9zdG9wcGVk Ow0KKwkvKg0KKwkgKiBFUk0sIGl0IGlzIHRlY2hpbmNhbGx5IGxlZ2FsIHRv IGxlYXZlL2V4aXQgaGVyZSBidXQgaXQgbWFrZXMNCisJICogYSBtZXNzIG9m IHRoZSBjb2RlIC4uLg0KKwkgKi8NCisJaWYgKEhXR1JPVVAoZHJpdmUpLT5o YW5kbGVyID09IE5VTEwpDQogCQlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZ0 YXNrX2luX2ludHIsICBXQUlUX0NNRCwgTlVMTCk7DQotCQlyZXR1cm4gaWRl X3N0YXJ0ZWQ7DQotCX0NCi0JcmV0dXJuIGlkZV9zdG9wcGVkOw0KKwlyZXR1 cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0KIA0KKy8qDQorICogVkVSSUZZIE1FIGJl Zm9yZSAyLjYgLi4uIHVuZXhwZWN0ZWQgcmFjZSBpcyBwb3NzaWJsZSBiYXNl ZCBvbiBkZXRhaWxzDQorICogUk1LIHdpdGggNzRMUzI0NS8zNzMvMzc0IFRU TCBidWZmZXIgbG9naWMgYmVjYXVzZSBvZiBwYXNzdGhyb3VnaC4NCisgKi8N CiBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IHByZV90YXNrX291dF9pbnRyIChp ZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVjdCByZXF1ZXN0ICpycSkNCiB7DQot CWlkZV90YXNrX3QgKmFyZ3MgPSBycS0+c3BlY2lhbDsNCisJY2hhciAqcEJ1 ZgkJPSBOVUxMOw0KKwl1bnNpZ25lZCBsb25nIGZsYWdzOw0KIAlpZGVfc3Rh cnRzdG9wX3Qgc3RhcnRzdG9wOw0KIA0KLQlpZiAoaWRlX3dhaXRfc3RhdCgm c3RhcnRzdG9wLCBkcml2ZSwgREFUQV9SRUFEWSwgZHJpdmUtPmJhZF93c3Rh dCwgV0FJVF9EUlEpKSB7DQotCQlwcmludGsoS0VSTl9FUlIgIiVzOiBubyBE UlEgYWZ0ZXIgaXNzdWluZyAlc1xuIiwgZHJpdmUtPm5hbWUsIGRyaXZlLT5t dWx0X2NvdW50ID8gIk1VTFRXUklURSIgOiAiV1JJVEUiKTsNCisJaWYgKGlk ZV93YWl0X3N0YXQoJnN0YXJ0c3RvcCwgZHJpdmUsIERBVEFfUkVBRFksDQor CQkJZHJpdmUtPmJhZF93c3RhdCwgV0FJVF9EUlEpKSB7DQorCQlwcmludGso S0VSTl9FUlIgIiVzOiBubyBEUlEgYWZ0ZXIgaXNzdWluZyAlc1xuIiwNCisJ CQlkcml2ZS0+bmFtZSwNCisJCQlkcml2ZS0+YWRkcmVzc2luZyA/ICJXUklU RV9FWFQiIDogIldSSVRFIik7DQogCQlyZXR1cm4gc3RhcnRzdG9wOw0KIAl9 DQotDQotCS8qIChrcy9ocyk6IEZpeGVkIE11bHRpIFdyaXRlICovDQotCWlm ICgoYXJncy0+dGZSZWdpc3RlcltJREVfQ09NTUFORF9PRkZTRVRdICE9IFdJ Tl9NVUxUV1JJVEUpICYmDQotCSAgICAoYXJncy0+dGZSZWdpc3RlcltJREVf Q09NTUFORF9PRkZTRVRdICE9IFdJTl9NVUxUV1JJVEVfRVhUKSkgew0KLQkJ dW5zaWduZWQgbG9uZyBmbGFnczsNCi0JCWNoYXIgKmJ1ZiA9IGlkZV9tYXBf cnEocnEsICZmbGFncyk7DQotCQkvKiBGb3IgV3JpdGVfc2VjdG9ycyB3ZSBu ZWVkIHRvIHN0dWZmIHRoZSBmaXJzdCBzZWN0b3IgKi8NCi0JCXRhc2tmaWxl X291dHB1dF9kYXRhKGRyaXZlLCBidWYsIFNFQ1RPUl9XT1JEUyk7DQotCQly cS0+Y3VycmVudF9ucl9zZWN0b3JzLS07DQotCQlpZGVfdW5tYXBfcnEocnEs IGJ1ZiwgJmZsYWdzKTsNCi0JfSBlbHNlIHsNCi0JCWF0YV9wb2xsX2RyaXZl X3JlYWR5KGRyaXZlKTsNCi0JCXJldHVybiBhcmdzLT5oYW5kbGVyKGRyaXZl KTsNCi0JfQ0KKwkvKiBGb3IgV3JpdGVfc2VjdG9ycyB3ZSBuZWVkIHRvIHN0 dWZmIHRoZSBmaXJzdCBzZWN0b3IgKi8NCisJcEJ1ZiA9IGlkZV9tYXBfcnEo cnEsICZmbGFncyk7DQorLy8JcnEtPmN1cnJlbnRfbnJfc2VjdG9ycy0tOw0K Kwl0YXNrZmlsZV9vdXRwdXRfZGF0YShkcml2ZSwgcEJ1ZiwgU0VDVE9SX1dP UkRTKTsNCisJLyoNCisJICogV0FSTklORyA6OiBJbnRlcnJ1cHQgY291bGQg aGFwcGVuIGluc3RhbnRseSA6LS8NCisJICovDQorCWlkZV91bm1hcF9ycShy cSwgcEJ1ZiwgJmZsYWdzKTsNCisJcnEtPmN1cnJlbnRfbnJfc2VjdG9ycy0t Ow0KIAlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0KIA0KIC8qDQotICogSGFu ZGxlciBmb3IgY29tbWFuZCB3aXRoIFBJTyBkYXRhLW91dCBwaGFzZQ0KKyAq IEhhbmRsZXIgZm9yIGNvbW1hbmQgd2l0aCBQSU8gZGF0YS1vdXQgcGhhc2Ug V1JJVEUNCisgKg0KKyAqIFdPT0hPTyB0aGlzIGlzIGEgQ09SUkVDVCBTVEFU RSBESUFHUkFNIE5PVywgPGFuZHJlQGxpbnV4LWlkZS5vcmc+DQogICovDQog c3RhdGljIGlkZV9zdGFydHN0b3BfdCB0YXNrX291dF9pbnRyKGlkZV9kcml2 ZV90ICpkcml2ZSkNCiB7DQpAQCAtNTkzLDE2MyArNjY0LDEwMCBAQA0KIAlj aGFyICpwQnVmCQk9IE5VTEw7DQogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7DQog DQotCWlmICghT0tfU1RBVChzdGF0LERSSVZFX1JFQURZLGRyaXZlLT5iYWRf d3N0YXQpKQ0KKwlpZiAoIU9LX1NUQVQoc3RhdCxEUklWRV9SRUFEWSxkcml2 ZS0+YmFkX3dzdGF0KSkgew0KKwkJRFRGKCIlczogV1JJVEUgYXR0ZW1wdGlu ZyB0byByZWNvdmVyIGxhc3QgIiBcDQorCQkJInNlY3RvciBjb3VudGVyIHN0 YXR1cz0weCUwMnhcbiIsDQorCQkJZHJpdmUtPm5hbWUsIHN0YXQpOw0KKwkJ cnEtPmN1cnJlbnRfbnJfc2VjdG9ycysrOw0KIAkJcmV0dXJuIGlkZV9lcnJv cihkcml2ZSwgInRhc2tfb3V0X2ludHIiLCBzdGF0KTsNCi0NCisJfQ0KKwkv Kg0KKwkgKiBTYWZlIHRvIHVwZGF0ZSByZXF1ZXN0IGZvciBwYXJ0aWFsIGNv bXBsZXRpb25zLg0KKwkgKiBXZSBoYXZlIGEgZ29vZCBTVEFUVVMgQ0hFQ0sh ISENCisJICovDQogCWlmICghcnEtPmN1cnJlbnRfbnJfc2VjdG9ycykNCiAJ CWlmICghaWRlX2VuZF9yZXF1ZXN0KGRyaXZlLCAxKSkNCiAJCQlyZXR1cm4g aWRlX3N0b3BwZWQ7DQotDQogCWlmICgocnEtPmN1cnJlbnRfbnJfc2VjdG9y cz09MSkgXiAoc3RhdCAmIERSUV9TVEFUKSkgew0KIAkJcnEgPSBIV0dST1VQ KGRyaXZlKS0+cnE7DQogCQlwQnVmID0gaWRlX21hcF9ycShycSwgJmZsYWdz KTsNCi0JCURURigid3JpdGU6ICVwLCBycS0+Y3VycmVudF9ucl9zZWN0b3Jz OiAlZFxuIiwgcEJ1ZiwgKGludCkgcnEtPmN1cnJlbnRfbnJfc2VjdG9ycyk7 DQorCQlEVEYoIndyaXRlOiAlcCwgcnEtPmN1cnJlbnRfbnJfc2VjdG9yczog JWRcbiIsDQorCQkJcEJ1ZiwgKGludCkgcnEtPmN1cnJlbnRfbnJfc2VjdG9y cyk7DQogCQlkcml2ZS0+aW9fMzJiaXQgPSAwOw0KKy8vCQlycS0+Y3VycmVu dF9ucl9zZWN0b3JzLS07DQogCQl0YXNrZmlsZV9vdXRwdXRfZGF0YShkcml2 ZSwgcEJ1ZiwgU0VDVE9SX1dPUkRTKTsNCiAJCWlkZV91bm1hcF9ycShycSwg cEJ1ZiwgJmZsYWdzKTsNCiAJCWRyaXZlLT5pb18zMmJpdCA9IGlvXzMyYml0 Ow0KIAkJcnEtPmVycm9ycyA9IDA7DQogCQlycS0+Y3VycmVudF9ucl9zZWN0 b3JzLS07DQogCX0NCi0NCi0JaWRlX3NldF9oYW5kbGVyKGRyaXZlLCB0YXNr X291dF9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQorCWlmIChIV0dST1VQKGRy aXZlKS0+aGFuZGxlciA9PSBOVUxMKQ0KKwkJaWRlX3NldF9oYW5kbGVyKGRy aXZlLCAmdGFza19vdXRfaW50ciwgV0FJVF9DTUQsIE5VTEwpOw0KIAlyZXR1 cm4gaWRlX3N0YXJ0ZWQ7DQogfQ0KIA0KLXN0YXRpYyBpZGVfc3RhcnRzdG9w X3QgcHJlX2Jpb19vdXRfaW50cihpZGVfZHJpdmVfdCAqZHJpdmUsIHN0cnVj dCByZXF1ZXN0ICpycSkNCitzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IHByZV90 YXNrX211bG91dF9pbnRyKGlkZV9kcml2ZV90ICpkcml2ZSwgc3RydWN0IHJl cXVlc3QgKnJxKQ0KIHsNCiAJaWRlX3Rhc2tfdCAqYXJncyA9IHJxLT5zcGVj aWFsOw0KIAlpZGVfc3RhcnRzdG9wX3Qgc3RhcnRzdG9wOw0KIA0KLQkvKg0K LQkgKiBhc3NpZ24gcHJpdmF0ZSBjb3B5IGZvciBtdWx0aS13cml0ZQ0KLQkg Ki8NCi0JbWVtY3B5KCZIV0dST1VQKGRyaXZlKS0+d3JxLCBycSwgc2l6ZW9m KHN0cnVjdCByZXF1ZXN0KSk7DQotDQotCWlmIChpZGVfd2FpdF9zdGF0KCZz dGFydHN0b3AsIGRyaXZlLCBEQVRBX1JFQURZLCBkcml2ZS0+YmFkX3dzdGF0 LCBXQUlUX0RSUSkpDQorCWlmIChpZGVfd2FpdF9zdGF0KCZzdGFydHN0b3As IGRyaXZlLCBEQVRBX1JFQURZLA0KKwkJCWRyaXZlLT5iYWRfd3N0YXQsIFdB SVRfRFJRKSkgew0KKwkJcHJpbnRrKEtFUk5fRVJSICIlczogbm8gRFJRIGFm dGVyIGlzc3VpbmcgJXNcbiIsDQorCQkJZHJpdmUtPm5hbWUsDQorCQkJZHJp dmUtPmFkZHJlc3NpbmcgPyAiTVVMVFdSSVRFX0VYVCIgOiAiTVVMVFdSSVRF Iik7DQogCQlyZXR1cm4gc3RhcnRzdG9wOw0KLQ0KKwl9DQorI2lmIDANCisJ aWYgKHdhaXRfZm9yX3JlYWR5KGRyaXZlLCAxMDApKQ0KKwkJQlVHKCk7DQor I2Vsc2UNCiAJYXRhX3BvbGxfZHJpdmVfcmVhZHkoZHJpdmUpOw0KLQlyZXR1 cm4gYXJncy0+aGFuZGxlcihkcml2ZSk7DQotfQ0KLQ0KLQ0KLXN0YXRpYyBp ZGVfc3RhcnRzdG9wX3QgYmlvX211bG91dF9pbnRyIChpZGVfZHJpdmVfdCAq ZHJpdmUpDQotew0KLQlieXRlIHN0YXQJCT0gR0VUX1NUQVQoKTsNCi0JYnl0 ZSBpb18zMmJpdAkJPSBkcml2ZS0+aW9fMzJiaXQ7DQotCXN0cnVjdCByZXF1 ZXN0ICpycQk9ICZIV0dST1VQKGRyaXZlKS0+d3JxOw0KLQlpZGVfaHdncm91 cF90ICpod2dyb3VwCT0gSFdHUk9VUChkcml2ZSk7DQotCWludCBtY291bnQJ CT0gZHJpdmUtPm11bHRfY291bnQ7DQotCWlkZV9zdGFydHN0b3BfdCBzdGFy dHN0b3A7DQotDQorI2VuZGlmDQogCS8qDQotCSAqIChrcy9ocyk6IEhhbmRs ZSBsYXN0IElSUSBvbiBtdWx0aS1zZWN0b3IgdHJhbnNmZXIsDQotCSAqIG9j Y3VycyBhZnRlciBhbGwgZGF0YSB3YXMgc2VudCBpbiB0aGlzIGNodW5rDQor CSAqIFdBUk5JTkcgOjogaWYgdGhlIGRyaXZlIGFzIG5vdCBhY2tlZCBnb29k IHN0YXR1cyB3ZSBtYXkgbm90DQorCSAqIG1vdmUgdGhlIERBVEEtVFJBTlNG RVIgVC1CYXIgYXMgQlNZICE9IDAuIDxhbmRyZUBsaW51eC1pZGUub3JnPg0K IAkgKi8NCi0JaWYgKCFycS0+bnJfc2VjdG9ycykgew0KLQkJaWYgKHN0YXQg JiAoRVJSX1NUQVR8RFJRX1NUQVQpKSB7DQotCQkJc3RhcnRzdG9wID0gaWRl X2Vycm9yKGRyaXZlLCAiYmlvX211bG91dF9pbnRyIiwgc3RhdCk7DQotCQkJ bWVtY3B5KHJxLCBIV0dST1VQKGRyaXZlKS0+cnEsIHNpemVvZihzdHJ1Y3Qg cmVxdWVzdCkpOw0KLQkJCXJldHVybiBzdGFydHN0b3A7DQotCQl9DQotDQot CQlfX2lkZV9lbmRfcmVxdWVzdChkcml2ZSwgMSwgcnEtPmhhcmRfbnJfc2Vj dG9ycyk7DQotCQlIV0dST1VQKGRyaXZlKS0+d3JxLmJpbyA9IE5VTEw7DQot CQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQotCX0NCi0NCi0JaWYgKCFPS19TVEFU KHN0YXQsIERBVEFfUkVBRFksIEJBRF9SX1NUQVQpKSB7DQotCQlpZiAoc3Rh dCAmIChFUlJfU1RBVCB8IERSUV9TVEFUKSkgew0KLQkJCXN0YXJ0c3RvcCA9 IGlkZV9lcnJvcihkcml2ZSwgImJpb19tdWxvdXRfaW50ciIsIHN0YXQpOw0K LQkJCW1lbWNweShycSwgSFdHUk9VUChkcml2ZSktPnJxLCBzaXplb2Yoc3Ry dWN0IHJlcXVlc3QpKTsNCi0JCQlyZXR1cm4gc3RhcnRzdG9wOw0KLQkJfQ0K LQ0KLQkJLyogbm8gZGF0YSB5ZXQsIHNvIHdhaXQgZm9yIGFub3RoZXIgaW50 ZXJydXB0ICovDQotCQlpZiAoaHdncm91cC0+aGFuZGxlciA9PSBOVUxMKQ0K LQkJCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgYmlvX211bG91dF9pbnRyLCBX QUlUX0NNRCwgTlVMTCk7DQotDQotCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQot CX0NCi0NCi0JZG8gew0KLQkJY2hhciAqYnVmZmVyOw0KLQkJaW50IG5zZWN0 ID0gcnEtPmN1cnJlbnRfbnJfc2VjdG9yczsNCi0JCXVuc2lnbmVkIGxvbmcg ZmxhZ3M7DQotDQotCQlpZiAobnNlY3QgPiBtY291bnQpDQotCQkJbnNlY3Qg PSBtY291bnQ7DQotCQltY291bnQgLT0gbnNlY3Q7DQotDQotCQlidWZmZXIg PSBiaW9fa21hcF9pcnEocnEtPmJpbywgJmZsYWdzKSArIGlkZV9ycV9vZmZz ZXQocnEpOw0KLQkJcnEtPnNlY3RvciArPSBuc2VjdDsNCi0JCXJxLT5ucl9z ZWN0b3JzIC09IG5zZWN0Ow0KLQkJcnEtPmN1cnJlbnRfbnJfc2VjdG9ycyAt PSBuc2VjdDsNCi0NCi0JCS8qIERvIHdlIG1vdmUgdG8gdGhlIG5leHQgYmlv IGFmdGVyIHRoaXM/ICovDQotCQlpZiAoIXJxLT5jdXJyZW50X25yX3NlY3Rv cnMpIHsNCi0JCQkvKiByZW1lbWJlciB0byBmaXggdGhpcyB1cCAvamVucyAq Lw0KLQkJCXN0cnVjdCBiaW8gKmJpbyA9IHJxLT5iaW8tPmJpX25leHQ7DQot DQotCQkJLyogZW5kIGVhcmx5IGVhcmx5IHdlIHJhbiBvdXQgb2YgcmVxdWVz dHMgKi8NCi0JCQlpZiAoIWJpbykgew0KLQkJCQltY291bnQgPSAwOw0KLQkJ CX0gZWxzZSB7DQotCQkJCXJxLT5iaW8gPSBiaW87DQotCQkJCXJxLT5jdXJy ZW50X25yX3NlY3RvcnMgPSBiaW9faW92ZWMoYmlvKS0+YnZfbGVuID4+IDk7 DQotCQkJfQ0KLQkJfQ0KLQ0KLQkJLyoNCi0JCSAqIE9rLCB3ZSdyZSBhbGwg c2V0dXAgZm9yIHRoZSBpbnRlcnJ1cHQNCi0JCSAqIHJlLWVudGVyaW5nIHVz IG9uIHRoZSBsYXN0IHRyYW5zZmVyLg0KLQkJICovDQotCQl0YXNrZmlsZV9v dXRwdXRfZGF0YShkcml2ZSwgYnVmZmVyLCBuc2VjdCAqIFNFQ1RPUl9XT1JE Uyk7DQotCQliaW9fa3VubWFwX2lycShidWZmZXIsICZmbGFncyk7DQotCX0g d2hpbGUgKG1jb3VudCk7DQotDQotCWRyaXZlLT5pb18zMmJpdCA9IGlvXzMy Yml0Ow0KLQlycS0+ZXJyb3JzID0gMDsNCi0JaWYgKGh3Z3JvdXAtPmhhbmRs ZXIgPT0gTlVMTCkNCi0JCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgYmlvX211 bG91dF9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQotDQotCXJldHVybiBpZGVf c3RhcnRlZDsNCisJcmV0dXJuIGFyZ3MtPmhhbmRsZXIoZHJpdmUpOw0KIH0N CiANCiAvKg0KICAqIEhhbmRsZXIgZm9yIGNvbW1hbmQgd2l0aCBSZWFkIE11 bHRpcGxlDQogICovDQorLyoNCisgKiBGSVhNRSBiZWZvcmUgMi42IC4uLiBE QVRBIGludGVncml0eSBpc3N1ZSB1cG9uIGVycm9yLiA8YW5kcmVAbGludXgt aWRlLm9yZz4NCisgKi8NCiBzdGF0aWMgaWRlX3N0YXJ0c3RvcF90IHRhc2tf bXVsaW5faW50cihpZGVfZHJpdmVfdCAqZHJpdmUpDQogew0KLQl1bnNpZ25l ZCBpbnQJCW1zZWN0LCBuc2VjdDsNCiAJYnl0ZSBzdGF0CQk9IEdFVF9TVEFU KCk7DQogCWJ5dGUgaW9fMzJiaXQJCT0gZHJpdmUtPmlvXzMyYml0Ow0KIAlz dHJ1Y3QgcmVxdWVzdCAqcnEJPSBIV0dST1VQKGRyaXZlKS0+cnE7DQogCWNo YXIgKnBCdWYJCT0gTlVMTDsNCisJdW5zaWduZWQgaW50IG1zZWN0CT0gZHJp dmUtPm11bHRfY291bnQ7DQorCXVuc2lnbmVkIGludCBuc2VjdDsNCiAJdW5z aWduZWQgbG9uZyBmbGFnczsNCiANCiAJaWYgKCFPS19TVEFUKHN0YXQsREFU QV9SRUFEWSxCQURfUl9TVEFUKSkgew0KIAkJaWYgKHN0YXQgJiAoRVJSX1NU QVR8RFJRX1NUQVQpKSB7DQorCQkJcHJpbnRrKCIlczogTVVMVEktUkVBRCBh c3N1bWUgYWxsIGRhdGEgdHJhbnNmZXJlZCAiIFwNCisJCQkJImlzIGJhZCBz dGF0dXM9MHglMDJ4XG4iLA0KKwkJCQlkcml2ZS0+bmFtZSwgc3RhdCk7DQog CQkJcmV0dXJuIGlkZV9lcnJvcihkcml2ZSwgInRhc2tfbXVsaW5faW50ciIs IHN0YXQpOw0KIAkJfQ0KIAkJLyogbm8gZGF0YSB5ZXQsIHNvIHdhaXQgZm9y IGFub3RoZXIgaW50ZXJydXB0ICovDQotCQlpZGVfc2V0X2hhbmRsZXIoZHJp dmUsIHRhc2tfbXVsaW5faW50ciwgV0FJVF9DTUQsIE5VTEwpOw0KKwkJaWYg KEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyID09IE5VTEwpDQorCQkJaWRlX3Nl dF9oYW5kbGVyKGRyaXZlLCAmdGFza19tdWxpbl9pbnRyLCBXQUlUX0NNRCwg TlVMTCk7DQogCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7DQogCX0NCiANCi0JLyog KGtzL2hzKTogRml4ZWQgTXVsdGktU2VjdG9yIHRyYW5zZmVyICovDQotCW1z ZWN0ID0gZHJpdmUtPm11bHRfY291bnQ7DQotDQogCWRvIHsNCiAJCW5zZWN0 ID0gcnEtPmN1cnJlbnRfbnJfc2VjdG9yczsNCiAJCWlmIChuc2VjdCA+IG1z ZWN0KQ0KIAkJCW5zZWN0ID0gbXNlY3Q7DQotDQogCQlwQnVmID0gaWRlX21h cF9ycShycSwgJmZsYWdzKTsNCi0NCi0JCURURigiTXVsdGlyZWFkOiAlcCwg bnNlY3Q6ICVkICwgcnEtPmN1cnJlbnRfbnJfc2VjdG9yczogJWxkXG4iLA0K LQkJCXBCdWYsIG5zZWN0LCBycS0+Y3VycmVudF9ucl9zZWN0b3JzKTsNCisJ CURURigiTXVsdGlyZWFkOiAlcCwgbnNlY3Q6ICVkLCBtc2VjdDogJWQsICIg XA0KKwkJCSIgcnEtPmN1cnJlbnRfbnJfc2VjdG9yczogJWRcbiIsDQorCQkJ cEJ1ZiwgbnNlY3QsIG1zZWN0LCBycS0+Y3VycmVudF9ucl9zZWN0b3JzKTsN CiAJCWRyaXZlLT5pb18zMmJpdCA9IDA7DQogCQl0YXNrZmlsZV9pbnB1dF9k YXRhKGRyaXZlLCBwQnVmLCBuc2VjdCAqIFNFQ1RPUl9XT1JEUyk7DQogCQlp ZGVfdW5tYXBfcnEocnEsIHBCdWYsICZmbGFncyk7DQpAQCAtNzYyLDEyICs3 NzAsOCBAQA0KIAkJCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQogCQl9DQogCX0g d2hpbGUgKG1zZWN0KTsNCi0NCi0NCi0JLyoNCi0JICogbW9yZSBkYXRhIGxl ZnQNCi0JICovDQotCWlkZV9zZXRfaGFuZGxlcihkcml2ZSwgdGFza19tdWxp bl9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQorCWlmIChIV0dST1VQKGRyaXZl KS0+aGFuZGxlciA9PSBOVUxMKQ0KKwkJaWRlX3NldF9oYW5kbGVyKGRyaXZl LCAmdGFza19tdWxpbl9pbnRyLCBXQUlUX0NNRCwgTlVMTCk7DQogCXJldHVy biBpZGVfc3RhcnRlZDsNCiB9DQogDQpAQCAtNzc4LDYgKzc4Miw5IEBADQog DQogCWFyZ3MtPnByZWhhbmRsZXIgPSBOVUxMOw0KIAlhcmdzLT5oYW5kbGVy ID0gTlVMTDsNCisjaWYgMA0KKwlhcmdzLT5wb3N0aGFuZGxlciA9IE5VTEw7 IC8qIHB1dCB0aGlzIGJhY2sgaW4gb3IgQlVHUyB3aWxsIGhhcHBlbiAqLw0K KyNlbmRpZg0KIA0KIAlzd2l0Y2goYXJncy0+dGZSZWdpc3RlcltJREVfQ09N TUFORF9PRkZTRVRdKSB7DQogCQljYXNlIFdJTl9JREVOVElGWToNCkBAIC04 MTQsOCArODIxLDggQEANCiAJCWNhc2UgQ0ZBX1dSSVRFX01VTFRJX1dPX0VS QVNFOg0KIAkJY2FzZSBXSU5fTVVMVFdSSVRFOg0KIAkJY2FzZSBXSU5fTVVM VFdSSVRFX0VYVDoNCi0JCQlhcmdzLT5wcmVoYW5kbGVyID0gcHJlX2Jpb19v dXRfaW50cjsNCi0JCQlhcmdzLT5oYW5kbGVyID0gYmlvX211bG91dF9pbnRy Ow0KKwkJCWFyZ3MtPnByZWhhbmRsZXIgPSBwcmVfdGFza19tdWxvdXRfaW50 cjsNCisJCQlhcmdzLT5oYW5kbGVyID0gdGFza19tdWxvdXRfaW50cjsNCiAJ CQlhcmdzLT5jb21tYW5kX3R5cGUgPSBJREVfRFJJVkVfVEFTS19SQVdfV1JJ VEU7DQogCQkJcmV0dXJuOw0KIA0KQEAgLTEwNjMsNiArMTA3MCw5IEBADQog ICoNCiAgKiBUaGUgY2FsbGVyIGhhcyB0byBtYWtlIHN1cmUgYnVmIGlzIG5l dmVyIE5VTEwhDQogICovDQorLyoNCisgKiBGSVhNRSBiZWZvcmUgMi42LCB0 aGlzIG5lZWRzIHRvIG1hcCBpbnRvIGF0IHRhc2tmaWxlLiA8YW5kcmVAbGlu dXgtaWRlLm9yZz4NCisgKi8NCiBzdGF0aWMgaW50IGlkZV93YWl0X2NtZChp ZGVfZHJpdmVfdCAqZHJpdmUsIGludCBjbWQsIGludCBuc2VjdCwgaW50IGZl YXR1cmUsIGludCBzZWN0b3JzLCBieXRlICphcmdidWYpDQogew0KIAlzdHJ1 Y3QgcmVxdWVzdCBycTsNCkBAIC0xMDgwLDYgKzEwOTAsOSBAQA0KIAlyZXR1 cm4gaWRlX2RvX2RyaXZlX2NtZChkcml2ZSwgJnJxLCBpZGVfd2FpdCk7DQog fQ0KIA0KKy8qDQorICogRklYTUUgYmVmb3JlIDIuNiwgdGhpcyBuZWVkcyB0 byBtYXAgaW50byBhdCB0YXNrZmlsZS4gPGFuZHJlQGxpbnV4LWlkZS5vcmc+ DQorICovDQogaW50IGlkZV9jbWRfaW9jdGwoaWRlX2RyaXZlX3QgKmRyaXZl LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSwgdW5z aWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQogew0KIAlpbnQg ZXJyID0gMDsNCkBAIC0xMTMzLDYgKzExNDYsOSBAQA0KIAlyZXR1cm4gZXJy Ow0KIH0NCiANCisvKg0KKyAqIEZJWE1FIGJlZm9yZSAyLjYsIHRoaXMgbmVl ZHMgdG8gbWFwIGludG8gYXQgdGFza2ZpbGUuIDxhbmRyZUBsaW51eC1pZGUu b3JnPg0KKyAqLw0KIGludCBpZGVfdGFza19pb2N0bCAoaWRlX2RyaXZlX3Qg KmRyaXZlLCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmls ZSwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpDQogew0K IAlpbnQgZXJyID0gMDsNCmRpZmYgLXVyTiBsaW51eC0yLjUuNy9kcml2ZXJz L2lkZS9pZGUuYyBsaW51eC0yLjUuNy5maXgvZHJpdmVycy9pZGUvaWRlLmMN Ci0tLSBsaW51eC0yLjUuNy9kcml2ZXJzL2lkZS9pZGUuYwlNb24gTWFyIDE4 IDEyOjM3OjE0IDIwMDINCisrKyBsaW51eC0yLjUuNy5maXgvZHJpdmVycy9p ZGUvaWRlLmMJU2F0IE1hciAyMyAwMToyMjo0MSAyMDAyDQpAQCAtNTQ5LDYg KzU0OSw4IEBADQogCQlwcmludGsoIiVzOiBBVEFQSSByZXNldCBjb21wbGV0 ZVxuIiwgZHJpdmUtPm5hbWUpOw0KIAl9IGVsc2Ugew0KIAkJaWYgKDAgPCAo c2lnbmVkIGxvbmcpKGh3Z3JvdXAtPnBvbGxfdGltZW91dCAtIGppZmZpZXMp KSB7DQorCQkJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwp CS8qIHBhcmFub2lhIGNoZWNrICovDQorCQkJCUJVRygpOw0KIAkJCWlkZV9z ZXRfaGFuZGxlciAoZHJpdmUsICZhdGFwaV9yZXNldF9wb2xsZnVuYywgSFov MjAsIE5VTEwpOw0KIAkJCXJldHVybiBpZGVfc3RhcnRlZDsJLyogY29udGlu dWUgcG9sbGluZyAqLw0KIAkJfQ0KQEAgLTU3NCw2ICs1NzYsOCBAQA0KIA0K IAlpZiAoIU9LX1NUQVQodG1wPUdFVF9TVEFUKCksIDAsIEJVU1lfU1RBVCkp IHsNCiAJCWlmICgwIDwgKHNpZ25lZCBsb25nKShod2dyb3VwLT5wb2xsX3Rp bWVvdXQgLSBqaWZmaWVzKSkgew0KKwkJCWlmIChIV0dST1VQKGRyaXZlKS0+ aGFuZGxlciAhPSBOVUxMKQkvKiBwYXJhbm9pYSBjaGVjayAqLw0KKwkJCQlC VUcoKTsNCiAJCQlpZGVfc2V0X2hhbmRsZXIgKGRyaXZlLCAmcmVzZXRfcG9s bGZ1bmMsIEhaLzIwLCBOVUxMKTsNCiAJCQlyZXR1cm4gaWRlX3N0YXJ0ZWQ7 CS8qIGNvbnRpbnVlIHBvbGxpbmcgKi8NCiAJCX0NCkBAIC02NDUsNiArNjQ5 LDggQEANCiAJCXVkZWxheSAoMjApOw0KIAkJT1VUX0JZVEUgKFdJTl9TUlNU LCBJREVfQ09NTUFORF9SRUcpOw0KIAkJaHdncm91cC0+cG9sbF90aW1lb3V0 ID0gamlmZmllcyArIFdBSVRfV09SU1RDQVNFOw0KKwkJaWYgKEhXR1JPVVAo ZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNoZWNrICov DQorCQkJQlVHKCk7DQogCQlpZGVfc2V0X2hhbmRsZXIgKGRyaXZlLCAmYXRh cGlfcmVzZXRfcG9sbGZ1bmMsIEhaLzIwLCBOVUxMKTsNCiAJCV9fcmVzdG9y ZV9mbGFncyAoZmxhZ3MpOwkvKiBsb2NhbCBDUFUgb25seSAqLw0KIAkJcmV0 dXJuIGlkZV9zdGFydGVkOw0KQEAgLTY3OSw2ICs2ODUsOCBAQA0KIAl9DQog CXVkZWxheSgxMCk7CQkJLyogbW9yZSB0aGFuIGVub3VnaCB0aW1lICovDQog CWh3Z3JvdXAtPnBvbGxfdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX1dPUlNU Q0FTRTsNCisJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwp CS8qIHBhcmFub2lhIGNoZWNrICovDQorCQlCVUcoKTsNCiAJaWRlX3NldF9o YW5kbGVyIChkcml2ZSwgJnJlc2V0X3BvbGxmdW5jLCBIWi8yMCwgTlVMTCk7 DQogDQogCS8qDQpAQCAtOTMzLDYgKzk0MSw5IEBADQogICovDQogdm9pZCBp ZGVfY21kIChpZGVfZHJpdmVfdCAqZHJpdmUsIGJ5dGUgY21kLCBieXRlIG5z ZWN0LCBpZGVfaGFuZGxlcl90ICpoYW5kbGVyKQ0KIHsNCisJaWYgKEhXR1JP VVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNoZWNr ICovDQorCQlCVUcoKTsNCisNCiAJaWRlX3NldF9oYW5kbGVyIChkcml2ZSwg aGFuZGxlciwgV0FJVF9DTUQsIE5VTEwpOw0KIAlpZiAoSURFX0NPTlRST0xf UkVHKQ0KIAkJT1VUX0JZVEUoZHJpdmUtPmN0bCxJREVfQ09OVFJPTF9SRUcp OwkvKiBjbGVhciBuSUVOICovDQpkaWZmIC11ck4gbGludXgtMi41LjcvZHJp dmVycy9pZGUvcGRjNDAzMC5jIGxpbnV4LTIuNS43LmZpeC9kcml2ZXJzL2lk ZS9wZGM0MDMwLmMNCi0tLSBsaW51eC0yLjUuNy9kcml2ZXJzL2lkZS9wZGM0 MDMwLmMJTW9uIE1hciAxOCAxMjozNzowOCAyMDAyDQorKysgbGludXgtMi41 LjcuZml4L2RyaXZlcnMvaWRlL3BkYzQwMzAuYwlTYXQgTWFyIDIzIDAxOjI4 OjQxIDIwMDINCkBAIC0zOTQsNiArMzk0LDkgQEANCiANCiAJaWYgKEdFVF9T VEFUKCkgJiBCVVNZX1NUQVQpIHsNCiAJCWlmICh0aW1lX2JlZm9yZShqaWZm aWVzLCBod2dyb3VwLT5wb2xsX3RpbWVvdXQpKSB7DQorDQorCQkJaWYgKEhX R1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNo ZWNrICovDQorCQkJCUJVRygpOw0KIAkJCWlkZV9zZXRfaGFuZGxlcihkcml2 ZSwgJnByb21pc2VfY29tcGxldGVfcG9sbGZ1bmMsIEhaLzEwMCwgTlVMTCk7 DQogCQkJcmV0dXJuIGlkZV9zdGFydGVkOyAvKiBjb250aW51ZSBwb2xsaW5n Li4uICovDQogCQl9DQpAQCAtNDc2LDYgKzQ3OSw3IEBADQogDQogCWlmIChJ Tl9CWVRFKElERV9OU0VDVE9SX1JFRykgIT0gMCkgew0KIAkJaWYgKHRpbWVf YmVmb3JlKGppZmZpZXMsIGh3Z3JvdXAtPnBvbGxfdGltZW91dCkpIHsNCisJ CQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRsZXIgIT0gTlVMTCkJLyogcGFy YW5vaWEgY2hlY2sgKi8JCQkJQlVHKCk7DQogCQkJaWRlX3NldF9oYW5kbGVy IChkcml2ZSwgJnByb21pc2Vfd3JpdGVfcG9sbGZ1bmMsIEhaLzEwMCwgTlVM TCk7DQogCQkJcmV0dXJuIGlkZV9zdGFydGVkOyAvKiBjb250aW51ZSBwb2xs aW5nLi4uICovDQogCQl9DQpAQCAtNDg5LDYgKzQ5Myw4IEBADQogCSAqLw0K IAlwcm9taXNlX211bHR3cml0ZShkcml2ZSwgNCk7DQogCWh3Z3JvdXAtPnBv bGxfdGltZW91dCA9IGppZmZpZXMgKyBXQUlUX1dPUlNUQ0FTRTsNCisJaWYg KEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lh IGNoZWNrICovDQorCQlCVUcoKTsNCiAJaWRlX3NldF9oYW5kbGVyKGRyaXZl LCAmcHJvbWlzZV9jb21wbGV0ZV9wb2xsZnVuYywgSFovMTAwLCBOVUxMKTsN CiAjaWZkZWYgREVCVUdfV1JJVEUNCiAJcHJpbnRrKEtFUk5fREVCVUcgIiVz OiBEb25lIGxhc3QgNCBzZWN0b3JzIC0gc3RhdHVzID0gJTAyeFxuIiwNCkBA IC01MjMsNiArNTI5LDggQEANCiAJCWlmIChwcm9taXNlX211bHR3cml0ZShk cml2ZSwgcnEtPm5yX3NlY3RvcnMgLSA0KSkNCiAJCQlyZXR1cm4gaWRlX3N0 b3BwZWQ7DQogCQlod2dyb3VwLT5wb2xsX3RpbWVvdXQgPSBqaWZmaWVzICsg V0FJVF9XT1JTVENBU0U7DQorCQlpZiAoSFdHUk9VUChkcml2ZSktPmhhbmRs ZXIgIT0gTlVMTCkJLyogcGFyYW5vaWEgY2hlY2sgKi8NCisJCQlCVUcoKTsN CiAJCWlkZV9zZXRfaGFuZGxlciAoZHJpdmUsICZwcm9taXNlX3dyaXRlX3Bv bGxmdW5jLCBIWi8xMDAsIE5VTEwpOw0KIAkJcmV0dXJuIGlkZV9zdGFydGVk Ow0KIAl9IGVsc2Ugew0KQEAgLTUzMyw2ICs1NDEsOCBAQA0KIAkJaWYgKHBy b21pc2VfbXVsdHdyaXRlKGRyaXZlLCBycS0+bnJfc2VjdG9ycykpDQogCQkJ cmV0dXJuIGlkZV9zdG9wcGVkOw0KIAkJaHdncm91cC0+cG9sbF90aW1lb3V0 ID0gamlmZmllcyArIFdBSVRfV09SU1RDQVNFOw0KKwkJaWYgKEhXR1JPVVAo ZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNoZWNrICov DQorCQkJQlVHKCk7DQogCQlpZGVfc2V0X2hhbmRsZXIoZHJpdmUsICZwcm9t aXNlX2NvbXBsZXRlX3BvbGxmdW5jLCBIWi8xMDAsIE5VTEwpOw0KICNpZmRl ZiBERUJVR19XUklURQ0KIAkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiBwcm9t aXNlX3dyaXRlOiA8PSA0IHNlY3RvcnMsICINCkBAIC01NTQsNiArNTY0LDEz IEBADQogCXVuc2lnbmVkIGxvbmcgdGltZW91dDsNCiAJYnl0ZSBzdGF0Ow0K IA0KKwkvKiBDaGVjayB0aGF0IGl0J3MgYSByZWd1bGFyIGNvbW1hbmQuIElm IG5vdCwgYm9tYiBvdXQgZWFybHkuICovDQorCWlmICghKHJxLT5mbGFncyAm IFJFUV9DTUQpKSB7DQorCQlibGtfZHVtcF9ycV9mbGFncyhycSwgInBkYzQw MzAgYmFkIGZsYWdzIik7DQorCQlpZGVfZW5kX3JlcXVlc3QoZHJpdmUsIDAp Ow0KKwkJcmV0dXJuIGlkZV9zdG9wcGVkOw0KKwl9DQorDQogCWlmIChJREVf Q09OVFJPTF9SRUcpDQogCQlPVVRfQllURShkcml2ZS0+Y3RsLCBJREVfQ09O VFJPTF9SRUcpOyAgLyogY2xlYXIgbklFTiAqLw0KIAlTRUxFQ1RfTUFTSyhI V0lGKGRyaXZlKSwgZHJpdmUsIDApOw0KQEAgLTU2OCwxNiArNTg1LDggQEAN CiAJT1VUX0JZVEUodGFza2ZpbGUtPmRldmljZV9oZWFkLCBJREVfU0VMRUNU X1JFRyk7DQogCU9VVF9CWVRFKHRhc2tmaWxlLT5jb21tYW5kLCBJREVfQ09N TUFORF9SRUcpOw0KIA0KLS8qIENoZWNrIHRoYXQgaXQncyBhIHJlZ3VsYXIg Y29tbWFuZC4gSWYgbm90LCBib21iIG91dCBlYXJseS4gKi8NCi0JaWYgKCEo cnEtPmZsYWdzICYgUkVRX0NNRCkpIHsNCi0JCWJsa19kdW1wX3JxX2ZsYWdz KHJxLCAicGRjNDAzMCBiYWQgZmxhZ3MiKTsNCi0JCWlkZV9lbmRfcmVxdWVz dChkcml2ZSwgMCk7DQotCQlyZXR1cm4gaWRlX3N0b3BwZWQ7DQotCX0NCi0N CiAJc3dpdGNoIChycV9kYXRhX2RpcihycSkpIHsNCiAJY2FzZSBSRUFEOg0K LQkJT1VUX0JZVEUoUFJPTUlTRV9SRUFELCBJREVfQ09NTUFORF9SRUcpOw0K IC8qDQogICogVGhlIGNhcmQncyBiZWhhdmlvdXIgaXMgb2RkIGF0IHRoaXMg cG9pbnQuIElmIHRoZSBkYXRhIGlzDQogICogYXZhaWxhYmxlLCBEUlEgd2ls bCBiZSB0cnVlLCBhbmQgbm8gaW50ZXJydXB0IHdpbGwgYmUNCkBAIC02MDAs NiArNjA5LDggQEANCiAJCQkJcHJpbnRrKEtFUk5fREVCVUcgIiVzOiByZWFk OiB3YWl0aW5nIGZvciAiDQogCQkJCSAgICAgICAgICAgICAgICAgICJpbnRl cnJ1cHRcbiIsIGRyaXZlLT5uYW1lKTsNCiAjZW5kaWYNCisJCQkJaWYgKEhX R1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwpCS8qIHBhcmFub2lhIGNo ZWNrICovDQorCQkJCQlCVUcoKTsNCiAJCQkJaWRlX3NldF9oYW5kbGVyKGRy aXZlLCAmcHJvbWlzZV9yZWFkX2ludHIsIFdBSVRfQ01ELCBOVUxMKTsNCiAJ CQkJcmV0dXJuIGlkZV9zdGFydGVkOw0KIAkJCX0NCkBAIC02MTIsNyArNjIz LDYgQEANCiANCiAJY2FzZSBXUklURTogew0KIAkJaWRlX3N0YXJ0c3RvcF90 IHN0YXJ0c3RvcDsNCi0JCU9VVF9CWVRFKFBST01JU0VfV1JJVEUsIElERV9D T01NQU5EX1JFRyk7DQogLyoNCiAgKiBTdHJhdGVneSBvbiB3cml0ZSBpczoN CiAgKglsb29rIGZvciB0aGUgRFJRIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBp bW1lZGlhdGVseSBhc3NlcnRlZA0KZGlmZiAtdXJOIGxpbnV4LTIuNS43L2Ry aXZlcnMvaWRlL3RybTI5MC5jIGxpbnV4LTIuNS43LmZpeC9kcml2ZXJzL2lk ZS90cm0yOTAuYw0KLS0tIGxpbnV4LTIuNS43L2RyaXZlcnMvaWRlL3RybTI5 MC5jCU1vbiBNYXIgMTggMTI6Mzc6MDcgMjAwMg0KKysrIGxpbnV4LTIuNS43 LmZpeC9kcml2ZXJzL2lkZS90cm0yOTAuYwlTYXQgTWFyIDIzIDAxOjI5OjI5 IDIwMDINCkBAIC0xOTQsNiArMTk0LDggQEANCiAJCQlvdXR3KChjb3VudCAq IDIpIC0gMSwgaHdpZi0+ZG1hX2Jhc2UrMik7IC8qIHN0YXJ0IERNQSAqLw0K IAkJCWlmIChkcml2ZS0+dHlwZSAhPSBBVEFfRElTSykNCiAJCQkJcmV0dXJu IDA7DQorCQkJaWYgKEhXR1JPVVAoZHJpdmUpLT5oYW5kbGVyICE9IE5VTEwp CS8qIHBhcmFub2lhIGNoZWNrICovDQorCQkJCUJVRygpOw0KIAkJCWlkZV9z ZXRfaGFuZGxlcihkcml2ZSwgJmlkZV9kbWFfaW50ciwgV0FJVF9DTUQsIE5V TEwpOw0KIAkJCU9VVF9CWVRFKHJlYWRpbmcgPyBXSU5fUkVBRERNQSA6IFdJ Tl9XUklURURNQSwgSURFX0NPTU1BTkRfUkVHKTsNCiAJCQlyZXR1cm4gMDsN Cg== --1430322656-1564616397-1017301923=:6661-- - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/