From owner-freebsd-scsi@FreeBSD.ORG Thu Sep 5 15:14:42 2013 Return-Path: Delivered-To: freebsd-scsi@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 7006C349 for ; Thu, 5 Sep 2013 15:14:42 +0000 (UTC) (envelope-from bryanv@daemoninthecloset.org) Received: from torment.daemoninthecloset.org (torment.daemoninthecloset.org [94.242.209.234]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id C1CD32656 for ; Thu, 5 Sep 2013 15:14:41 +0000 (UTC) Received: from sage.daemoninthecloset.org (unknown [70.114.209.60]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client CN "sage.daemoninthecloset.org", Issuer "daemoninthecloset.org" (verified OK)) by torment.daemoninthecloset.org (Postfix) with ESMTPS id 4C68342C2631 for ; Thu, 5 Sep 2013 17:20:13 +0200 (CEST) X-Virus-Scanned: amavisd-new at daemoninthecloset.org X-Virus-Scanned: amavisd-new at daemoninthecloset.org Date: Thu, 5 Sep 2013 10:14:17 -0500 (CDT) From: Bryan Venteicher To: freebsd-scsi@freebsd.org Message-ID: <1292769639.3059.1378394057334.JavaMail.root@daemoninthecloset.org> In-Reply-To: <1895443574.3014.1378393339664.JavaMail.root@daemoninthecloset.org> Subject: camcontrol SCSI sanitize MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_3057_1096540079.1378394057331" X-Originating-IP: [10.51.1.6] X-Mailer: Zimbra 8.0.2_GA_5569 (ZimbraWebClient - GC29 (Mac)/8.0.2_GA_5569) Thread-Topic: camcontrol SCSI sanitize Thread-Index: WZuN9+NkfKCoDoyUJzD+clp//f3JTw== X-BeenThere: freebsd-scsi@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SCSI subsystem List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Sep 2013 15:14:42 -0000 ------=_Part_3057_1096540079.1378394057331 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Hi, Anybody with more SCSI experience than myself interested in reviewing the attached patch that adds SCSI sanitize support to camcontrol? It has been compiled tested on -current, but a very similar patch works on 8.x. The time is short, but I wouldn't mind sneaking this into 10 before the code freeze so I have one less local patch to deal with later. http://people.freebsd.org/~bryanv/patches/camcontrol_sanitize.diff Thanks. ------=_Part_3057_1096540079.1378394057331 Content-Type: text/x-patch; name=camcontrol_sanitize.patch Content-Disposition: attachment; filename=camcontrol_sanitize.patch Content-Transfer-Encoding: base64 Y29tbWl0IDk0ZjdjOGQxMWEzMjBlMzZmNTllZGI3N2ZjZTU5M2I2Yzg5MmFhM2MKQXV0aG9yOiBC cnlhbiBWZW50ZWljaGVyIDxicnlhbnZAZGFlbW9uaW50aGVjbG9zZXQub3JnPgpEYXRlOiAgIFRo dSBTZXAgNSAwMDoxNDowOCAyMDEzIC0wNTAwCgogICAgQWRkIGNhbWNvbnRyb2wgc2FuaXRpemUg c3VwcG9ydAoKZGlmZiAtLWdpdCBhL3NiaW4vY2FtY29udHJvbC9jYW1jb250cm9sLjggYi9zYmlu L2NhbWNvbnRyb2wvY2FtY29udHJvbC44CmluZGV4IGRmMGIzZTcuLjBhMmJlNjQgMTAwNjQ0Ci0t LSBhL3NiaW4vY2FtY29udHJvbC9jYW1jb250cm9sLjgKKysrIGIvc2Jpbi9jYW1jb250cm9sL2Nh bWNvbnRyb2wuOApAQCAtMjA3LDYgKzIwNywxOSBAQAogLk9wIEZsIHcKIC5PcCBGbCB5CiAuTm0K Ky5JYyBzYW5pdGl6ZQorLk9wIGRldmljZSBpZAorLk9wIGdlbmVyaWMgYXJncworLkFxIEZsIGEg QXIgb3ZlcndyaXRlfGJsb2NrfGNyeXB0b3xleGl0ZmFpbHVyZQorLk9wIEZsIGMgY291bnQKKy5P cCBGbCBQIGZpbGUKKy5PcCBGbCBJCisuT3AgRmwgVQorLk9wIEZsIHEKKy5PcCBGbCByCisuT3Ag RmwgdworLk9wIEZsIHkKKy5ObQogLkljIGlkbGUKIC5PcCBkZXZpY2UgaWQKIC5PcCBnZW5lcmlj IGFyZ3MKQEAgLTEwODgsNiArMTEwMSwxMTcgQEAgVGhlIHVzZXIKIHdpbGwgbm90IGJlIGFza2Vk IGFib3V0IHRoZSB0aW1lb3V0IGlmIGEgdGltZW91dCBpcyBzcGVjaWZpZWQgb24gdGhlCiBjb21t YW5kIGxpbmUuCiAuRWwKKy5JdCBJYyBzYW5pdGl6ZQorSXNzdWUgdGhlCisuVG4gU0NTSQorU0FO SVRJWkUgY29tbWFuZCB0byB0aGUgbmFtZWQgZGV2aWNlLgorLlBwCisuRW0gV0FSTklORyEgV0FS TklORyEgV0FSTklORyEKKy5QcAorQUxMIGV4aXN0aW5nIGRhdGEgaW4gdGhlIGNhY2hlIGFuZCBv biB0aGUgZGlzayB3aWxsIGJlCitkZXN0cm95ZWQgb3IgbWFkZSBpbmFjY2Vzc2libGUuCitSZWNv dmVyeSBvZiB0aGUgZGF0YSBpcyBub3QgcG9zc2libGUuCitVc2UgZXh0cmVtZSBjYXV0aW9uIHdo ZW4gaXNzdWluZyB0aGlzIGNvbW1hbmQuCisuUHAKK1RoZQorLlNxIHNhbml0aXplCitzdWJjb21t YW5kIHRha2VzIHNldmVyYWwgYXJndW1lbnRzIHRoYXQgbW9kaWZ5IGl0cyBkZWZhdWx0IGJlaGF2 aW9yLgorVGhlCisuRmwgcQorYW5kCisuRmwgeQorYXJndW1lbnRzIGNhbiBiZSB1c2VmdWwgZm9y IHNjcmlwdHMuCisuQmwgLXRhZyAtd2lkdGggNm4KKy5JdCBGbCBxCitCZSBxdWlldCwgZG8gbm90 IHByaW50IGFueSBzdGF0dXMgbWVzc2FnZXMuCitUaGlzIG9wdGlvbiB3aWxsIG5vdCBkaXNhYmxl Cit0aGUgcXVlc3Rpb25zLCBob3dldmVyLgorVG8gZGlzYWJsZSBxdWVzdGlvbnMsIHVzZSB0aGUK Ky5GbCB5Cithcmd1bWVudCwgYmVsb3cuCisuSXQgRmwgYSBBciBhY3Rpb24KK1NwZWNpZnkgdGhl IHNhbml0aXplIG9wZXJhdGlvbiB0byBwZXJmb3JtLiBPbmx5IG9uZQorLkZsIGEKK2FjdGlvbiBt YXkgYmUgc3BlY2lmaWVkLgorLkJsIC10YWcgLXdpZHRoIDE2bgorLkl0IG92ZXJ3cml0ZQorUGVy Zm9ybSBhbiBvdmVyd3JpdGUgb3BlcmF0aW9uIGJ5IHdyaXRpbmcgYSB1c2VyIHN1cHBsaWVkCitk YXRhIHBhdHRlcm4gdG8gdGhlIGRldmljZSBvbmUgb3IgbW9yZSB0aW1lcy4KK1RoZSBwYXR0ZXJu IGlzIGdpdmVuIGJ5IHRoZQorLkZsIFAKK2FyZ3VtZW50LgorVGhlIGNvdW50IGlzIGdpdmVuIGJ5 IHRoZQorLkZsIGMKK2FyZ3VtZW50LgorLkl0IGJsb2NrCitQZXJmb3JtIGEgYmxvY2sgZXJhc2Ug b3BlcmF0aW9uLgorVGhlIHBoeXNpY2FsIGJsb2NrcyBhcmUgc2V0IHRvIGEgdmVuZG9yIGRlZmlu ZWQgdmFsdWUsIHR5cGljYWxseSBhbGwgemVyb3MuCisuSXQgY3J5cHRvCitQZXJmb3JtIGEgY3J5 cHRvZ3JhcGhpYyBlcmFzZSBvcGVyYXRpb24uCitUaGUgZW5jcnlwdGlvbiBrZXlzIGFyZSBjaGFu Z2VkLgorLkl0IGV4aXRmYWlsdXJlCitDbGVhcnMgYSBmYWlsZWQgc2FuaXRpemUgb3BlcmF0aW9u LgorQSBmYWlsZWQgc2FuaXRpemUgY2FuIG9ubHkgYmUgY2xlYXJlZCBpZiBpdCB3YXMgcnVuIGlu Cit0aGUgdW5yZXN0cmljdGVkIGNvbXBsZXRpb24gbW9kZSB3aXRoIHRoZQorLkZsIFUKK2FyZ3Vt ZW50LgorLkVsCisuSXQgRmwgYyBBciBjb3VudAorVGhlIG51bWJlciBvZiBwYXNzZXMgdG8gcGVy Zm9ybSB3aGVuIHBlcmZvcm1pbmcgYW4KKy5TcSBvdmVyd3JpdGUKK29wZXJhdGlvbi4KK1ZhbGlk IHZhbHVlcyBhcmUgYmV0d2VlbiAxIGFuZCAzMS4gIFRoZSBkZWZhdWx0IGlzIDEuCisuSXQgRmwg UCBBciBmaWxlCitQYXRoIHRvIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIHBhdHRlcm4gdG8gdXNl IHdoZW4KK3BlcmZvcm1pbmcgYW4KKy5TcSBvdmVyd3JpdGUKK29wZXJhdGlvbi4KK1RoZSBwYXR0 ZXJuIGlzIHJlcGVhdGVkIGFzIG5lZWRlZCB0byBmaWxsIGVhY2ggbG9naWNhbCBibG9jay4KKy5J dCBGbCBJCitXaGVuIHBlcmZvcm1pbmcgYW4KKy5TcSBvdmVyd3JpdGUKK29wZXJhdGlvbiwgdGhp cyBjYXVzZXMgdGhlIHBhdHRlcm4gdG8gYmUgaW52ZXJ0ZWQgYmV0d2VlbiBjb25zZWN1dGl2ZSBw YXNzZXMuCisuSXQgRmwgVQorUGVyZm9ybSB0aGUgc2FuaXRpemUgaW4gdGhlIHVucmVzdHJpY3Rl ZCBjb21wbGV0aW9uIG1vZGUuCitBIGZhaWxlZCBzYW5pdGl6ZSBvcGVyYXRpb24gY2FuIGxhdGVy IGJlIGNsZWFyZWQgd2l0aCB0aGUKKy5TcSBleGl0ZmFpbHVyZQorYWN0aW9uLgorLkl0IEZsIHIK K1J1biBpbgorLkRxIHJlcG9ydCBvbmx5Cittb2RlLgorVGhpcyB3aWxsIHJlcG9ydCBzdGF0dXMg b24gYSBzYW5pdGl6ZSB0aGF0IGlzIGFscmVhZHkgcnVubmluZyBvbiB0aGUgZHJpdmUuCisuSXQg RmwgdworSXNzdWUgYSBub24taW1tZWRpYXRlIHNhbml0aXplIGNvbW1hbmQuCitCeSBkZWZhdWx0 LAorLk5tCitpc3N1ZXMgdGhlIFNBTklUSVpFIGNvbW1hbmQgd2l0aCB0aGUgaW1tZWRpYXRlIGJp dCBzZXQuCitUaGlzIHRlbGxzIHRoZQorZGV2aWNlIHRvIGltbWVkaWF0ZWx5IHJldHVybiB0aGUg c2FuaXRpemUgY29tbWFuZCwgYmVmb3JlCit0aGUgc2FuaXRpemUgaGFzIGFjdHVhbGx5IGNvbXBs ZXRlZC4KK1RoZW4sCisuTm0KK2dhdGhlcnMKKy5UbiBTQ1NJCitzZW5zZSBpbmZvcm1hdGlvbiBm cm9tIHRoZSBkZXZpY2UgZXZlcnkgc2Vjb25kIHRvIGRldGVybWluZSBob3cgZmFyIGFsb25nCitp biB0aGUgc2FuaXRpemUgcHJvY2VzcyBpdCBpcy4KK0lmIHRoZQorLkZsIHcKK2FyZ3VtZW50IGlz IHNwZWNpZmllZCwKKy5ObQord2lsbCBpc3N1ZSBhIG5vbi1pbW1lZGlhdGUgc2FuaXRpemUgY29t bWFuZCwgYW5kIHdpbGwgYmUgdW5hYmxlIHRvIHByaW50IGFueQoraW5mb3JtYXRpb24gdG8gbGV0 IHRoZSB1c2VyIGtub3cgd2hhdCBwZXJjZW50YWdlIG9mIHRoZSBkaXNrIGhhcyBiZWVuCitzYW5p dGl6ZWQuCisuSXQgRmwgeQorRG8gbm90IGFzayBhbnkgcXVlc3Rpb25zLgorQnkgZGVmYXVsdCwK Ky5ObQord2lsbCBhc2sgdGhlIHVzZXIgaWYgaGUvc2hlIHJlYWxseSB3YW50cyB0byBzYW5pdGl6 ZSB0aGUgZGlzayBpbiBxdWVzdGlvbiwKK2FuZCBhbHNvIGlmIHRoZSBkZWZhdWx0IHNhbml0aXpl IGNvbW1hbmQgdGltZW91dCBpcyBhY2NlcHRhYmxlLgorVGhlIHVzZXIKK3dpbGwgbm90IGJlIGFz a2VkIGFib3V0IHRoZSB0aW1lb3V0IGlmIGEgdGltZW91dCBpcyBzcGVjaWZpZWQgb24gdGhlCitj b21tYW5kIGxpbmUuCisuRWwKIC5JdCBJYyBpZGxlCiBQdXQgQVRBIGRldmljZSBpbnRvIElETEUg c3RhdGUuIE9wdGlvbmFsIHBhcmFtZXRlcgogLlBxIEZsIHQKZGlmZiAtLWdpdCBhL3NiaW4vY2Ft Y29udHJvbC9jYW1jb250cm9sLmMgYi9zYmluL2NhbWNvbnRyb2wvY2FtY29udHJvbC5jCmluZGV4 IDc2YjM5MzkuLjY1MzFkNTQgMTAwNjQ0Ci0tLSBhL3NiaW4vY2FtY29udHJvbC9jYW1jb250cm9s LmMKKysrIGIvc2Jpbi9jYW1jb250cm9sL2NhbWNvbnRyb2wuYwpAQCAtMzIsNiArMzIsNyBAQCBf X0ZCU0RJRCgiJEZyZWVCU0QkIik7CiAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAjaW5jbHVkZSA8 c3lzL3N0ZGludC5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0 Lmg+CiAjaW5jbHVkZSA8c3lzL2VuZGlhbi5oPgogI2luY2x1ZGUgPHN5cy9zYnVmLmg+CiAKQEAg LTkzLDcgKzk0LDggQEAgdHlwZWRlZiBlbnVtIHsKIAlDQU1fQ01EX1NNUF9NQU5JTkZPCT0gMHgw MDAwMDAxYiwKIAlDQU1fQ01EX0RPV05MT0FEX0ZXCT0gMHgwMDAwMDAxYywKIAlDQU1fQ01EX1NF Q1VSSVRZCT0gMHgwMDAwMDAxZCwKLQlDQU1fQ01EX0hQQQkJPSAweDAwMDAwMDFlCisJQ0FNX0NN RF9IUEEJCT0gMHgwMDAwMDAxZSwKKwlDQU1fQ01EX1NBTklUSVpFCT0gMHgwMDAwMDAxZiwKIH0g Y2FtX2NtZG1hc2s7CiAKIHR5cGVkZWYgZW51bSB7CkBAIC0yMTUsNiArMjE3LDcgQEAgc3RhdGlj IHN0cnVjdCBjYW1jb250cm9sX29wdHMgb3B0aW9uX3RhYmxlW10gPSB7CiAJeyJmd2Rvd25sb2Fk IiwgQ0FNX0NNRF9ET1dOTE9BRF9GVywgQ0FNX0FSR19OT05FLCAiZjp5cyJ9LAogCXsic2VjdXJp dHkiLCBDQU1fQ01EX1NFQ1VSSVRZLCBDQU1fQVJHX05PTkUsICJkOmU6Zmg6azpsOnFzOlQ6VTp5 In0sCiAJeyJocGEiLCBDQU1fQ01EX0hQQSwgQ0FNX0FSR19OT05FLCAiUGZscDpxczpVOnkifSwK Kwl7InNhbml0aXplIiwgQ0FNX0NNRF9TQU5JVElaRSwgQ0FNX0FSR19OT05FLCAiYTpjOklQOnFy VXd5In0sCiAjZW5kaWYgLyogTUlOSU1BTElTVElDICovCiAJeyJoZWxwIiwgQ0FNX0NNRF9VU0FH RSwgQ0FNX0FSR19OT05FLCBOVUxMfSwKIAl7Ii0/IiwgQ0FNX0NNRF9VU0FHRSwgQ0FNX0FSR19O T05FLCBOVUxMfSwKQEAgLTMwMSw2ICszMDQsOCBAQCBzdGF0aWMgaW50IHJhdGVjb250cm9sKHN0 cnVjdCBjYW1fZGV2aWNlICpkZXZpY2UsIGludCByZXRyeV9jb3VudCwKIAkJICAgICAgIGludCB0 aW1lb3V0LCBpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNoYXIgKmNvbWJpbmVkb3B0KTsKIHN0YXRp YyBpbnQgc2NzaWZvcm1hdChzdHJ1Y3QgY2FtX2RldmljZSAqZGV2aWNlLCBpbnQgYXJnYywgY2hh ciAqKmFyZ3YsCiAJCSAgICAgIGNoYXIgKmNvbWJpbmVkb3B0LCBpbnQgcmV0cnlfY291bnQsIGlu dCB0aW1lb3V0KTsKK3N0YXRpYyBpbnQgc2NzaXNhbml0aXplKHN0cnVjdCBjYW1fZGV2aWNlICpk ZXZpY2UsIGludCBhcmdjLCBjaGFyICoqYXJndiwKKwkJCWNoYXIgKmNvbWJpbmVkb3B0LCBpbnQg cmV0cnlfY291bnQsIGludCB0aW1lb3V0KTsKIHN0YXRpYyBpbnQgc2NzaXJlcG9ydGx1bnMoc3Ry dWN0IGNhbV9kZXZpY2UgKmRldmljZSwgaW50IGFyZ2MsIGNoYXIgKiphcmd2LAogCQkJICBjaGFy ICpjb21iaW5lZG9wdCwgaW50IHJldHJ5X2NvdW50LCBpbnQgdGltZW91dCk7CiBzdGF0aWMgaW50 IHNjc2lyZWFkY2FwYWNpdHkoc3RydWN0IGNhbV9kZXZpY2UgKmRldmljZSwgaW50IGFyZ2MsIGNo YXIgKiphcmd2LApAQCAtNTUzNyw2ICs1NTQyLDQwMSBAQCBzY3NpZm9ybWF0X2JhaWxvdXQ6CiB9 CiAKIHN0YXRpYyBpbnQKK3Njc2lzYW5pdGl6ZShzdHJ1Y3QgY2FtX2RldmljZSAqZGV2aWNlLCBp bnQgYXJnYywgY2hhciAqKmFyZ3YsCisJICAgICBjaGFyICpjb21iaW5lZG9wdCwgaW50IHJldHJ5 X2NvdW50LCBpbnQgdGltZW91dCkKK3sKKwl1bmlvbiBjY2IgKmNjYjsKKwl1X2ludDhfdCBhY3Rp b24gPSAwOworCWludCBjOworCWludCB5Y291bnQgPSAwLCBxdWlldCA9IDA7CisJaW50IGVycm9y ID0gMCwgcmV0dmFsID0gMDsKKwlpbnQgdXNlX3RpbWVvdXQgPSAxMDgwMCAqIDEwMDA7CisJaW50 IGltbWVkaWF0ZSA9IDE7CisJaW50IGludmVydCA9IDA7CisJaW50IHBhc3NlcyA9IDA7CisJaW50 IGF1c2UgPSAwOworCWludCBmZCA9IC0xOworCWNvbnN0IGNoYXIgKnBhdHRlcm4gPSBOVUxMOwor CXVfaW50OF90ICpkYXRhX3B0ciA9IE5VTEw7CisJdV9pbnQzMl90IGR4ZmVyX2xlbiA9IDA7CisJ dV9pbnQ4X3QgYnl0ZTIgPSAwOworCWludCBudW1fd2FybmluZ3MgPSAwOworCWludCByZXBvcnRv bmx5ID0gMDsKKworCWNjYiA9IGNhbV9nZXRjY2IoZGV2aWNlKTsKKworCWlmIChjY2IgPT0gTlVM TCkgeworCQl3YXJueCgic2NzaXNhbml0aXplOiBlcnJvciBhbGxvY2F0aW5nIGNjYiIpOworCQly ZXR1cm4oMSk7CisJfQorCisJYnplcm8oJigmY2NiLT5jY2JfaClbMV0sCisJICAgICAgc2l6ZW9m KHN0cnVjdCBjY2Jfc2NzaWlvKSAtIHNpemVvZihzdHJ1Y3QgY2NiX2hkcikpOworCisJd2hpbGUg KChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsIGNvbWJpbmVkb3B0KSkgIT0gLTEpIHsKKwkJc3dpdGNo KGMpIHsKKwkJY2FzZSAnYSc6CisJCQlpZiAoc3RyY2FzZWNtcChvcHRhcmcsICJvdmVyd3JpdGUi KSA9PSAwKQorCQkJCWFjdGlvbiA9IFNTWl9TRVJWSUNFX0FDVElPTl9PVkVSV1JJVEU7CisJCQll bHNlIGlmIChzdHJjYXNlY21wKG9wdGFyZywgImJsb2NrIikgPT0gMCkKKwkJCQlhY3Rpb24gPSBT U1pfU0VSVklDRV9BQ1RJT05fQkxPQ0tfRVJBU0U7CisJCQllbHNlIGlmIChzdHJjYXNlY21wKG9w dGFyZywgImNyeXB0byIpID09IDApCisJCQkJYWN0aW9uID0gU1NaX1NFUlZJQ0VfQUNUSU9OX0NS WVBUT19FUkFTRTsKKwkJCWVsc2UgaWYgKHN0cmNhc2VjbXAob3B0YXJnLCAiZXhpdGZhaWx1cmUi KSA9PSAwKQorCQkJCWFjdGlvbiA9IFNTWl9TRVJWSUNFX0FDVElPTl9FWElUX01PREVfRkFJTFVS RTsKKwkJCWVsc2UgeworCQkJCXdhcm54KCJpbnZhbGlkIHNlcnZpY2UgYWN0aW9uIG1vZGUgXCIl c1wiIiwKKwkJCQkgICAgICBvcHRhcmcpOworCQkJCWVycm9yID0gMTsKKwkJCQlnb3RvIHNjc2lz YW5pdGl6ZV9iYWlsb3V0OworCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgJ2MnOgorCQkJcGFzc2Vz ID0gc3RydG9sKG9wdGFyZywgTlVMTCwgMCk7CisJCQlpZiAocGFzc2VzIDwgMSB8fCBwYXNzZXMg PiAzMSkgeworCQkJCXdhcm54KCJpbnZhbGlkIHBhc3NlcyB2YWx1ZSAlZCIsIHBhc3Nlcyk7CisJ CQkJZXJyb3IgPSAxOworCQkJCWdvdG8gc2NzaXNhbml0aXplX2JhaWxvdXQ7CisJCQl9CisJCQli cmVhazsKKwkJY2FzZSAnSSc6CisJCQlpbnZlcnQgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ1An OgorCQkJcGF0dGVybiA9IG9wdGFyZzsKKwkJCWJyZWFrOworCQljYXNlICdxJzoKKwkJCXF1aWV0 Kys7CisJCQlicmVhazsKKwkJY2FzZSAncic6CisJCQlyZXBvcnRvbmx5ID0gMTsKKwkJCWJyZWFr OworCQljYXNlICdVJzoKKwkJCWF1c2UgPSAxOworCQkJYnJlYWs7CisJCWNhc2UgJ3cnOgorCQkJ aW1tZWRpYXRlID0gMDsKKwkJCWJyZWFrOworCQljYXNlICd5JzoKKwkJCXljb3VudCsrOworCQkJ YnJlYWs7CisJCX0KKwl9CisKKwlpZiAocmVwb3J0b25seSkKKwkJZ290byBkb3JlcG9ydDsKKwor CWlmIChhY3Rpb24gPT0gMCkgeworCQl3YXJueCgiYW4gYWN0aW9uIGlzIHJlcXVpcmVkIik7CisJ CWVycm9yID0gMTsKKwkJZ290byBzY3Npc2FuaXRpemVfYmFpbG91dDsKKwl9IGVsc2UgaWYgKGFj dGlvbiA9PSBTU1pfU0VSVklDRV9BQ1RJT05fT1ZFUldSSVRFKSB7CisJCXN0cnVjdCBzY3NpX3Nh bml0aXplX3BhcmFtZXRlcl9saXN0ICpwbDsKKwkJc3RydWN0IHN0YXQgc2I7CisJCXNzaXplX3Qg c3osIGFtdDsKKworCQlpZiAocGF0dGVybiA9PSBOVUxMKSB7CisJCQl3YXJueCgib3ZlcndyaXRl IGFjdGlvbiByZXF1aXJlcyAtUCBhcmd1bWVudCIpOworCQkJZXJyb3IgPSAxOworCQkJZ290byBz Y3Npc2FuaXRpemVfYmFpbG91dDsKKwkJfQorCQlmZCA9IG9wZW4ocGF0dGVybiwgT19SRE9OTFkp OworCQlpZiAoZmQgPCAwKSB7CisJCQl3YXJuKCJjYW5ub3Qgb3BlbiBwYXR0ZXJuIGZpbGUgJXMi LCBwYXR0ZXJuKTsKKwkJCWVycm9yID0gMTsKKwkJCWdvdG8gc2NzaXNhbml0aXplX2JhaWxvdXQ7 CisJCX0KKwkJaWYgKGZzdGF0KGZkLCAmc2IpIDwgMCkgeworCQkJd2FybigiY2Fubm90IHN0YXQg cGF0dGVybiBmaWxlICVzIiwgcGF0dGVybik7CisJCQllcnJvciA9IDE7CisJCQlnb3RvIHNjc2lz YW5pdGl6ZV9iYWlsb3V0OworCQl9CisJCXN6ID0gc2Iuc3Rfc2l6ZTsKKwkJaWYgKHN6ID4gU1Na UExfTUFYX1BBVFRFUk5fTEVOR1RIKSB7CisJCQl3YXJueCgicGF0dGVybiBmaWxlIHNpemUgZXhj ZWVkcyBtYXhpbXVtIHZhbHVlICVkIiwKKwkJCSAgICAgIFNTWlBMX01BWF9QQVRURVJOX0xFTkdU SCk7CisJCQllcnJvciA9IDE7CisJCQlnb3RvIHNjc2lzYW5pdGl6ZV9iYWlsb3V0OworCQl9CisJ CWR4ZmVyX2xlbiA9IHNpemVvZigqcGwpICsgc3o7CisJCWRhdGFfcHRyID0gY2FsbG9jKDEsIGR4 ZmVyX2xlbik7CisJCWlmIChkYXRhX3B0ciA9PSBOVUxMKSB7CisJCQl3YXJueCgiY2Fubm90IGFs bG9jYXRlIHBhcmFtZXRlciBsaXN0IGJ1ZmZlciIpOworCQkJZXJyb3IgPSAxOworCQkJZ290byBz Y3Npc2FuaXRpemVfYmFpbG91dDsKKwkJfQorCisJCWFtdCA9IHJlYWQoZmQsIGRhdGFfcHRyICsg c2l6ZW9mKCpwbCksIHN6KTsKKwkJaWYgKGFtdCA8IDApIHsKKwkJCXdhcm4oImNhbm5vdCByZWFk IHBhdHRlcm4gZmlsZSIpOworCQkJZXJyb3IgPSAxOworCQkJZ290byBzY3Npc2FuaXRpemVfYmFp bG91dDsKKwkJfSBlbHNlIGlmIChhbXQgIT0gc3opIHsKKwkJCXdhcm54KCJzaG9ydCBwYXR0ZXJu IGZpbGUgcmVhZCIpOworCQkJZXJyb3IgPSAxOworCQkJZ290byBzY3Npc2FuaXRpemVfYmFpbG91 dDsKKwkJfQorCisJCXBsID0gKHN0cnVjdCBzY3NpX3Nhbml0aXplX3BhcmFtZXRlcl9saXN0ICop ZGF0YV9wdHI7CisJCWlmIChwYXNzZXMgPT0gMCkKKwkJCXBsLT5ieXRlMSA9IDE7CisJCWVsc2UK KwkJCXBsLT5ieXRlMSA9IHBhc3NlczsKKwkJaWYgKGludmVydCAhPSAwKQorCQkJcGwtPmJ5dGUx IHw9IFNTWlBMX0lOVkVSVDsKKwkJc2NzaV91bHRvMmIoc3osIHBsLT5sZW5ndGgpOworCX0gZWxz ZSB7CisJCWNvbnN0IGNoYXIgKmFyZzsKKworCQlpZiAocGFzc2VzICE9IDApCisJCQlhcmcgPSAi LWMiOworCQllbHNlIGlmIChwYXR0ZXJuICE9IE5VTEwpCisJCQlhcmcgPSAiLVAiOworCQllbHNl IGlmIChpbnZlcnQgIT0gMCkKKwkJCWFyZyA9ICItSSI7CisJCWVsc2UKKwkJCWFyZyA9IE5VTEw7 CisJCWlmIChhcmcgIT0gTlVMTCkgeworCQkJd2FybngoIiVzIGFyZ3VtZW50IG9ubHkgdmFsaWQg d2l0aCBvdmVyd3JpdGUgYWN0aW9uIiwgYXJnKTsKKwkJCWVycm9yID0gMTsKKwkJCWdvdG8gc2Nz aXNhbml0aXplX2JhaWxvdXQ7CisJCX0KKwl9CisKKwlpZiAocXVpZXQgPT0gMCkgeworCQlmcHJp bnRmKHN0ZG91dCwgIllvdSBhcmUgYWJvdXQgdG8gUkVNT1ZFIEFMTCBEQVRBIGZyb20gdGhlICIK KwkJCSJmb2xsb3dpbmcgZGV2aWNlOlxuIik7CisKKwkJZXJyb3IgPSBzY3NpZG9pbnF1aXJ5KGRl dmljZSwgYXJnYywgYXJndiwgY29tYmluZWRvcHQsCisJCQkJICAgICAgcmV0cnlfY291bnQsIHRp bWVvdXQpOworCisJCWlmIChlcnJvciAhPSAwKSB7CisJCQl3YXJueCgic2NzaXNhbml0aXplOiBl cnJvciBzZW5kaW5nIGlucXVpcnkiKTsKKwkJCWdvdG8gc2NzaXNhbml0aXplX2JhaWxvdXQ7CisJ CX0KKwl9CisKKwlpZiAoeWNvdW50ID09IDApIHsKKwkJaWYgKCFnZXRfY29uZmlybWF0aW9uKCkp IHsKKwkJCWVycm9yID0gMTsKKwkJCWdvdG8gc2NzaXNhbml0aXplX2JhaWxvdXQ7CisJCX0KKwl9 CisKKwlpZiAodGltZW91dCAhPSAwKQorCQl1c2VfdGltZW91dCA9IHRpbWVvdXQ7CisKKwlpZiAo cXVpZXQgPT0gMCkgeworCQlmcHJpbnRmKHN0ZG91dCwgIkN1cnJlbnQgc2FuaXRpemUgdGltZW91 dCBpcyAlZCBzZWNvbmRzXG4iLAorCQkJdXNlX3RpbWVvdXQgLyAxMDAwKTsKKwl9CisKKwkvKgor CSAqIElmIHRoZSB1c2VyIGhhc24ndCBkaXNhYmxlZCBxdWVzdGlvbnMgYW5kIGRpZG4ndCBzcGVj aWZ5IGEKKwkgKiB0aW1lb3V0IG9uIHRoZSBjb21tYW5kIGxpbmUsIGFzayB0aGVtIGlmIHRoZXkg d2FudCB0aGUgY3VycmVudAorCSAqIHRpbWVvdXQuCisJICovCisJaWYgKCh5Y291bnQgPT0gMCkK KwkgJiYgKHRpbWVvdXQgPT0gMCkpIHsKKwkJY2hhciBzdHJbMTAyNF07CisJCWludCBuZXdfdGlt ZW91dCA9IDA7CisKKwkJZnByaW50ZihzdGRvdXQsICJFbnRlciBuZXcgdGltZW91dCBpbiBzZWNv bmRzIG9yIHByZXNzXG4iCisJCQkicmV0dXJuIHRvIGtlZXAgdGhlIGN1cnJlbnQgdGltZW91dCBb JWRdICIsCisJCQl1c2VfdGltZW91dCAvIDEwMDApOworCisJCWlmIChmZ2V0cyhzdHIsIHNpemVv ZihzdHIpLCBzdGRpbikgIT0gTlVMTCkgeworCQkJaWYgKHN0clswXSAhPSAnXDAnKQorCQkJCW5l d190aW1lb3V0ID0gYXRvaShzdHIpOworCQl9CisKKwkJaWYgKG5ld190aW1lb3V0ICE9IDApIHsK KwkJCXVzZV90aW1lb3V0ID0gbmV3X3RpbWVvdXQgKiAxMDAwOworCQkJZnByaW50ZihzdGRvdXQs ICJVc2luZyBuZXcgdGltZW91dCB2YWx1ZSAlZFxuIiwKKwkJCQl1c2VfdGltZW91dCAvIDEwMDAp OworCQl9CisJfQorCisJYnl0ZTIgPSBhY3Rpb247CisJaWYgKGF1c2UgIT0gMCkKKwkJYnl0ZTIg fD0gU1NaX1VOUkVTVFJJQ1RFRF9FWElUOworCWlmIChpbW1lZGlhdGUgIT0gMCkKKwkJYnl0ZTIg fD0gU1NaX0lNTUVEOworCisJc2NzaV9zYW5pdGl6ZSgmY2NiLT5jc2lvLAorCQkgICAgICAvKiBy ZXRyaWVzICovIHJldHJ5X2NvdW50LAorCQkgICAgICAvKiBjYmZjbnAgKi8gTlVMTCwKKwkJICAg ICAgLyogdGFnX2FjdGlvbiAqLyBNU0dfU0lNUExFX1FfVEFHLAorCQkgICAgICAvKiBieXRlMiAq LyBieXRlMiwKKwkJICAgICAgLyogY29udHJvbCAqLyAwLAorCQkgICAgICAvKiBkYXRhX3B0ciAq LyBkYXRhX3B0ciwKKwkJICAgICAgLyogZHhmZXJfbGVuICovIGR4ZmVyX2xlbiwKKwkJICAgICAg Lyogc2Vuc2VfbGVuICovIFNTRF9GVUxMX1NJWkUsCisJCSAgICAgIC8qIHRpbWVvdXQgKi8gdXNl X3RpbWVvdXQpOworCisJLyogRGlzYWJsZSBmcmVlemluZyB0aGUgZGV2aWNlIHF1ZXVlICovCisJ Y2NiLT5jY2JfaC5mbGFncyB8PSBDQU1fREVWX1FGUlpESVM7CisKKwlpZiAoYXJnbGlzdCAmIENB TV9BUkdfRVJSX1JFQ09WRVIpCisJCWNjYi0+Y2NiX2guZmxhZ3MgfD0gQ0FNX1BBU1NfRVJSX1JF Q09WRVI7CisKKwlpZiAoKChyZXR2YWwgPSBjYW1fc2VuZF9jY2IoZGV2aWNlLCBjY2IpKSA8IDAp CisJIHx8ICgoaW1tZWRpYXRlID09IDApCisJICAgJiYgKChjY2ItPmNjYl9oLnN0YXR1cyAmIENB TV9TVEFUVVNfTUFTSykgIT0gQ0FNX1JFUV9DTVApKSkgeworCQljb25zdCBjaGFyIGVycnN0cltd ID0gImVycm9yIHNlbmRpbmcgc2FuaXRpemUgY29tbWFuZCI7CisKKwkJaWYgKHJldHZhbCA8IDAp CisJCQl3YXJuKGVycnN0cik7CisJCWVsc2UKKwkJCXdhcm54KGVycnN0cik7CisKKwkJaWYgKGFy Z2xpc3QgJiBDQU1fQVJHX1ZFUkJPU0UpIHsKKwkJCWNhbV9lcnJvcl9wcmludChkZXZpY2UsIGNj YiwgQ0FNX0VTRl9BTEwsCisJCQkJCUNBTV9FUEZfQUxMLCBzdGRlcnIpOworCQl9CisJCWVycm9y ID0gMTsKKwkJZ290byBzY3Npc2FuaXRpemVfYmFpbG91dDsKKwl9CisKKwkvKgorCSAqIElmIHdl IHJhbiBpbiBub24taW1tZWRpYXRlIG1vZGUsIHdlIGFscmVhZHkgY2hlY2tlZCBmb3IgZXJyb3Jz CisJICogYWJvdmUgYW5kIHByaW50ZWQgb3V0IGFueSBuZWNlc3NhcnkgaW5mb3JtYXRpb24uICBJ ZiB3ZSdyZSBpbgorCSAqIGltbWVkaWF0ZSBtb2RlLCB3ZSBuZWVkIHRvIGxvb3AgdGhyb3VnaCBh bmQgZ2V0IHN0YXR1cworCSAqIGluZm9ybWF0aW9uIHBlcmlvZGljYWxseS4KKwkgKi8KKwlpZiAo aW1tZWRpYXRlID09IDApIHsKKwkJaWYgKHF1aWV0ID09IDApIHsKKwkJCWZwcmludGYoc3Rkb3V0 LCAiU2FuaXRpemUgQ29tcGxldGVcbiIpOworCQl9CisJCWdvdG8gc2NzaXNhbml0aXplX2JhaWxv dXQ7CisJfQorCitkb3JlcG9ydDoKKwlkbyB7CisJCWNhbV9zdGF0dXMgc3RhdHVzOworCisJCWJ6 ZXJvKCYoJmNjYi0+Y2NiX2gpWzFdLAorCQkgICAgICBzaXplb2Yoc3RydWN0IGNjYl9zY3NpaW8p IC0gc2l6ZW9mKHN0cnVjdCBjY2JfaGRyKSk7CisKKwkJLyoKKwkJICogVGhlcmUncyByZWFsbHkg bm8gbmVlZCB0byBkbyBlcnJvciByZWNvdmVyeSBvcgorCQkgKiByZXRyaWVzIGhlcmUsIHNpbmNl IHdlJ3JlIGp1c3QgZ29pbmcgdG8gc2l0IGluIGEKKwkJICogbG9vcCBhbmQgd2FpdCBmb3IgdGhl IGRldmljZSB0byBmaW5pc2ggc2FuaXRpemluZy4KKwkJICovCisJCXNjc2lfdGVzdF91bml0X3Jl YWR5KCZjY2ItPmNzaW8sCisJCQkJICAgICAvKiByZXRyaWVzICovIDAsCisJCQkJICAgICAvKiBj YmZjbnAgKi8gTlVMTCwKKwkJCQkgICAgIC8qIHRhZ19hY3Rpb24gKi8gTVNHX1NJTVBMRV9RX1RB RywKKwkJCQkgICAgIC8qIHNlbnNlX2xlbiAqLyBTU0RfRlVMTF9TSVpFLAorCQkJCSAgICAgLyog dGltZW91dCAqLyA1MDAwKTsKKworCQkvKiBEaXNhYmxlIGZyZWV6aW5nIHRoZSBkZXZpY2UgcXVl dWUgKi8KKwkJY2NiLT5jY2JfaC5mbGFncyB8PSBDQU1fREVWX1FGUlpESVM7CisKKwkJcmV0dmFs ID0gY2FtX3NlbmRfY2NiKGRldmljZSwgY2NiKTsKKworCQkvKgorCQkgKiBJZiB3ZSBnZXQgYW4g ZXJyb3IgZnJvbSB0aGUgaW9jdGwsIGJhaWwgb3V0LiAgU0NTSQorCQkgKiBlcnJvcnMgYXJlIGV4 cGVjdGVkLgorCQkgKi8KKwkJaWYgKHJldHZhbCA8IDApIHsKKwkJCXdhcm4oImVycm9yIHNlbmRp bmcgQ0FNSU9DT01NQU5EIGlvY3RsIik7CisJCQlpZiAoYXJnbGlzdCAmIENBTV9BUkdfVkVSQk9T RSkgeworCQkJCWNhbV9lcnJvcl9wcmludChkZXZpY2UsIGNjYiwgQ0FNX0VTRl9BTEwsCisJCQkJ CQlDQU1fRVBGX0FMTCwgc3RkZXJyKTsKKwkJCX0KKwkJCWVycm9yID0gMTsKKwkJCWdvdG8gc2Nz aXNhbml0aXplX2JhaWxvdXQ7CisJCX0KKworCQlzdGF0dXMgPSBjY2ItPmNjYl9oLnN0YXR1cyAm IENBTV9TVEFUVVNfTUFTSzsKKworCQlpZiAoKHN0YXR1cyAhPSBDQU1fUkVRX0NNUCkKKwkJICYm IChzdGF0dXMgPT0gQ0FNX1NDU0lfU1RBVFVTX0VSUk9SKQorCQkgJiYgKChjY2ItPmNjYl9oLnN0 YXR1cyAmIENBTV9BVVRPU05TX1ZBTElEKSAhPSAwKSkgeworCQkJc3RydWN0IHNjc2lfc2Vuc2Vf ZGF0YSAqc2Vuc2U7CisJCQlpbnQgZXJyb3JfY29kZSwgc2Vuc2Vfa2V5LCBhc2MsIGFzY3E7CisK KwkJCXNlbnNlID0gJmNjYi0+Y3Npby5zZW5zZV9kYXRhOworCQkJc2NzaV9leHRyYWN0X3NlbnNl X2xlbihzZW5zZSwgY2NiLT5jc2lvLnNlbnNlX2xlbiAtCisJCQkgICAgY2NiLT5jc2lvLnNlbnNl X3Jlc2lkLCAmZXJyb3JfY29kZSwgJnNlbnNlX2tleSwKKwkJCSAgICAmYXNjLCAmYXNjcSwgLypz aG93X2Vycm9ycyovIDEpOworCisJCQkvKgorCQkJICogQWNjb3JkaW5nIHRvIHRoZSBTQ1NJLTMg c3BlYywgYSBkcml2ZSB0aGF0IGlzIGluIHRoZQorCQkJICogbWlkZGxlIG9mIGEgc2FuaXRpemUg c2hvdWxkIHJldHVybiBOT1QgUkVBRFkgd2l0aCBhbgorCQkJICogQVNDIG9mICJsb2dpY2FsIHVu aXQgbm90IHJlYWR5LCBzYW5pdGl6ZSBpbgorCQkJICogcHJvZ3Jlc3MiLiBUaGUgc2Vuc2Uga2V5 IHNwZWNpZmljIGJ5dGVzIHdpbGwgdGhlbgorCQkJICogYmUgYSBwcm9ncmVzcyBpbmRpY2F0b3Iu CisJCQkgKi8KKwkJCWlmICgoc2Vuc2Vfa2V5ID09IFNTRF9LRVlfTk9UX1JFQURZKQorCQkJICYm IChhc2MgPT0gMHgwNCkgJiYgKGFzY3EgPT0gMHgxYikpIHsKKwkJCQl1aW50OF90IHNrc1szXTsK KworCQkJCWlmICgoc2NzaV9nZXRfc2tzKHNlbnNlLCBjY2ItPmNzaW8uc2Vuc2VfbGVuIC0KKwkJ CQkgICAgIGNjYi0+Y3Npby5zZW5zZV9yZXNpZCwgc2tzKSA9PSAwKQorCQkJCSAmJiAocXVpZXQg PT0gMCkpIHsKKwkJCQkJaW50IHZhbDsKKwkJCQkJdV9pbnQ2NF90IHBlcmNlbnRhZ2U7CisKKwkJ CQkJdmFsID0gc2NzaV8yYnRvdWwoJnNrc1sxXSk7CisJCQkJCXBlcmNlbnRhZ2UgPSAxMDAwMCAq IHZhbDsKKworCQkJCQlmcHJpbnRmKHN0ZG91dCwKKwkJCQkJCSJcclNhbml0aXppbmc6ICAlanUu JTAydSAlJSAiCisJCQkJCQkiKCVkLyVkKSBkb25lIiwKKwkJCQkJCSh1aW50bWF4X3QpKHBlcmNl bnRhZ2UgLworCQkJCQkJKDB4MTAwMDAgKiAxMDApKSwKKwkJCQkJCSh1bnNpZ25lZCkoKHBlcmNl bnRhZ2UgLworCQkJCQkJMHgxMDAwMCkgJSAxMDApLAorCQkJCQkJdmFsLCAweDEwMDAwKTsKKwkJ CQkJZmZsdXNoKHN0ZG91dCk7CisJCQkJfSBlbHNlIGlmICgocXVpZXQgPT0gMCkKKwkJCQkJJiYg KCsrbnVtX3dhcm5pbmdzIDw9IDEpKSB7CisJCQkJCXdhcm54KCJVbmV4cGVjdGVkIFNDU0kgU2Vu c2UgS2V5ICIKKwkJCQkJICAgICAgIlNwZWNpZmljIHZhbHVlIHJldHVybmVkICIKKwkJCQkJICAg ICAgImR1cmluZyBzYW5pdGl6ZToiKTsKKwkJCQkJc2NzaV9zZW5zZV9wcmludChkZXZpY2UsICZj Y2ItPmNzaW8sCisJCQkJCQkJIHN0ZGVycik7CisJCQkJCXdhcm54KCJVbmFibGUgdG8gcHJpbnQg c3RhdHVzICIKKwkJCQkJICAgICAgImluZm9ybWF0aW9uLCBidXQgc2FuaXR6ZSB3aWxsICIKKwkJ CQkJICAgICAgInByb2NlZWQuIik7CisJCQkJCXdhcm54KCJ3aWxsIGV4aXQgd2hlbiBzYW5pdGl6 ZSBpcyAiCisJCQkJCSAgICAgICJjb21wbGV0ZSIpOworCQkJCX0KKwkJCQlzbGVlcCgxKTsKKwkJ CX0gZWxzZSB7CisJCQkJd2FybngoIlVuZXhwZWN0ZWQgU0NTSSBlcnJvciBkdXJpbmcgc2FuaXRp emUiKTsKKwkJCQljYW1fZXJyb3JfcHJpbnQoZGV2aWNlLCBjY2IsIENBTV9FU0ZfQUxMLAorCQkJ CQkJQ0FNX0VQRl9BTEwsIHN0ZGVycik7CisJCQkJZXJyb3IgPSAxOworCQkJCWdvdG8gc2NzaXNh bml0aXplX2JhaWxvdXQ7CisJCQl9CisKKwkJfSBlbHNlIGlmIChzdGF0dXMgIT0gQ0FNX1JFUV9D TVApIHsKKwkJCXdhcm54KCJVbmV4cGVjdGVkIENBTSBzdGF0dXMgJSN4Iiwgc3RhdHVzKTsKKwkJ CWlmIChhcmdsaXN0ICYgQ0FNX0FSR19WRVJCT1NFKQorCQkJCWNhbV9lcnJvcl9wcmludChkZXZp Y2UsIGNjYiwgQ0FNX0VTRl9BTEwsCisJCQkJCQlDQU1fRVBGX0FMTCwgc3RkZXJyKTsKKwkJCWVy cm9yID0gMTsKKwkJCWdvdG8gc2NzaXNhbml0aXplX2JhaWxvdXQ7CisJCX0KKwl9IHdoaWxlKChj Y2ItPmNjYl9oLnN0YXR1cyAmIENBTV9TVEFUVVNfTUFTSykgIT0gQ0FNX1JFUV9DTVApOworCisJ aWYgKHF1aWV0ID09IDApCisJCWZwcmludGYoc3Rkb3V0LCAiXG5TYW5pdGl6ZSBDb21wbGV0ZVxu Iik7CisKK3Njc2lzYW5pdGl6ZV9iYWlsb3V0OgorCWlmIChmZCA+PSAwKQorCQljbG9zZShmZCk7 CisJaWYgKGRhdGFfcHRyICE9IE5VTEwpCisJCWZyZWUoZGF0YV9wdHIpOworCWNhbV9mcmVlY2Ni KGNjYik7CisKKwlyZXR1cm4oZXJyb3IpOworfQorCitzdGF0aWMgaW50CiBzY3NpcmVwb3J0bHVu cyhzdHJ1Y3QgY2FtX2RldmljZSAqZGV2aWNlLCBpbnQgYXJnYywgY2hhciAqKmFyZ3YsCiAJICAg ICAgIGNoYXIgKmNvbWJpbmVkb3B0LCBpbnQgcmV0cnlfY291bnQsIGludCB0aW1lb3V0KQogewpA QCAtNzM3MSw2ICs3NzcxLDkgQEAgdXNhZ2UoaW50IHByaW50bG9uZykKICIgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBbLVUgPHVzZXJ8bWFzdGVyPl0gWy15XVxuIgogIiAgICAgICAgY2Ft Y29udHJvbCBocGEgICAgICAgIFtkZXZfaWRdW2dlbmVyaWMgYXJnc10gWy1mXSBbLWxdIFstUF0g Wy1wIHB3ZF1cbiIKICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLXFdIFstcyBtYXhf c2VjdG9yc10gWy1VIHB3ZF0gWy15XVxuIgorIiAgICAgICAgY2FtY29udHJvbCBzYW5pdGl6ZSAg IFtkZXZfaWRdW2dlbmVyaWMgYXJnc11cbiIKKyIgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBbLWEgb3ZlcndyaXRlfGJsb2NrfGNyeXB0b3xleGl0ZmFpbHVyZV1cbiIKKyIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBbLWMgY291bnRdWy1QIGZpbGVdWy1JXVstVV1bLXFdWy1yXVst d11bLXldXG4iCiAjZW5kaWYgLyogTUlOSU1BTElTVElDICovCiAiICAgICAgICBjYW1jb250cm9s IGhlbHBcbiIpOwogCWlmICghcHJpbnRsb25nKQpAQCAtNzUzMiw2ICs3OTM1LDE2IEBAIHVzYWdl KGludCBwcmludGxvbmcpCiAiICAgICAgICAgICAgICAgICAgZGV2aWNlXG4iCiAiLVUgcHdkICAg ICAgICAgICAgdW5sb2NrIHRoZSBIUEEgY29uZmlndXJhdGlvbiBvZiB0aGUgZGV2aWNlXG4iCiAi LXkgICAgICAgICAgICAgICAgZG9uJ3QgYXNrIGFueSBxdWVzdGlvbnNcbiIKKyJzYW5pdGl6ZSBh cmd1bWVudHM6XG4iCisiLWEgYWN0aW9uICAgICAgICAgc2VydmljZSBhY3Rpb24gbW9kZSAob3Zl cndyaXRlLCBibG9jaywgY3J5cHRvIG9yIGV4aXRmYWlsdXJlKVxuIgorIi1jIGNvdW50ICAgICAg ICAgIG92ZXJ3cml0ZSBwYXNzZXMgcGVyZm9ybWVkICgxIHRvIDMxKVxuIgorIi1QIGZpbGUgICAg ICAgICAgIG92ZXJ3cml0ZSBpbml0aWFsaXphdGlvbiBwYXR0ZXJuXG4iCisiLUkgICAgICAgICAg ICAgICAgaW52ZXJ0IG92ZXJ3cml0ZSBwYXR0ZXJuIGFmdGVyIGVhY2ggcGFzc1xuIgorIi1VICAg ICAgICAgICAgICAgIHNldCB1bnJlc3RyaWN0ZWQgc2FuaXRpemUgZXhpdCAoQVVTRSkgYml0XG4i CisiLXEgICAgICAgICAgICAgICAgYmUgcXVpZXQsIGRvbid0IHByaW50IHN0YXR1cyBtZXNzYWdl c1xuIgorIi1yICAgICAgICAgICAgICAgIHJ1biBpbiByZXBvcnQgb25seSBtb2RlXG4iCisiLXcg ICAgICAgICAgICAgICAgZG9uJ3Qgc2VuZCBpbW1lZGlhdGUgZm9ybWF0IGNvbW1hbmRcbiIKKyIt eSAgICAgICAgICAgICAgICBkb24ndCBhc2sgYW55IHF1ZXN0aW9uc1xuIgogKTsKICNlbmRpZiAv KiBNSU5JTUFMSVNUSUMgKi8KIH0KQEAgLTc4NjAsNiArODI3MywxMCBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkJCSAgICBhcmdsaXN0ICYgQ0FNX0FSR19WRVJCT1NFLCByZXRyeV9j b3VudCwgdGltZW91dCwKIAkJCSAgICBnZXRfZGlza190eXBlKGNhbV9kZXYpKTsKIAkJCWJyZWFr OworCQljYXNlIENBTV9DTURfU0FOSVRJWkU6CisJCQllcnJvciA9IHNjc2lzYW5pdGl6ZShjYW1f ZGV2LCBhcmdjLCBhcmd2LAorCQkJCQkgICAgIGNvbWJpbmVkb3B0LCByZXRyeV9jb3VudCwgdGlt ZW91dCk7CisJCQlicmVhazsKICNlbmRpZiAvKiBNSU5JTUFMSVNUSUMgKi8KIAkJY2FzZSBDQU1f Q01EX1VTQUdFOgogCQkJdXNhZ2UoMSk7CmRpZmYgLS1naXQgYS9zeXMvY2FtL3Njc2kvc2NzaV9k YS5jIGIvc3lzL2NhbS9zY3NpL3Njc2lfZGEuYwppbmRleCA4ZWU0N2Y5Li45MTM5NTFlIDEwMDY0 NAotLS0gYS9zeXMvY2FtL3Njc2kvc2NzaV9kYS5jCisrKyBiL3N5cy9jYW0vc2NzaS9zY3NpX2Rh LmMKQEAgLTM4NTEsNCArMzg1MSwzMSBAQCBzY3NpX2Zvcm1hdF91bml0KHN0cnVjdCBjY2Jfc2Nz aWlvICpjc2lvLCB1X2ludDMyX3QgcmV0cmllcywKIAkJICAgICAgdGltZW91dCk7CiB9CiAKK3Zv aWQKK3Njc2lfc2FuaXRpemUoc3RydWN0IGNjYl9zY3NpaW8gKmNzaW8sIHVfaW50MzJfdCByZXRy aWVzLAorCSAgICAgIHZvaWQgKCpjYmZjbnApKHN0cnVjdCBjYW1fcGVyaXBoICosIHVuaW9uIGNj YiAqKSwKKwkgICAgICB1X2ludDhfdCB0YWdfYWN0aW9uLCB1X2ludDhfdCBieXRlMiwgdV9pbnQx Nl90IGNvbnRyb2wsCisJICAgICAgdV9pbnQ4X3QgKmRhdGFfcHRyLCB1X2ludDMyX3QgZHhmZXJf bGVuLCB1X2ludDhfdCBzZW5zZV9sZW4sCisJICAgICAgdV9pbnQzMl90IHRpbWVvdXQpCit7CisJ c3RydWN0IHNjc2lfc2FuaXRpemUgKnNjc2lfY21kOworCisJc2NzaV9jbWQgPSAoc3RydWN0IHNj c2lfc2FuaXRpemUgKikmY3Npby0+Y2RiX2lvLmNkYl9ieXRlczsKKwlzY3NpX2NtZC0+b3Bjb2Rl ID0gU0FOSVRJWkU7CisJc2NzaV9jbWQtPmJ5dGUyID0gYnl0ZTI7CisJc2NzaV9jbWQtPmNvbnRy b2wgPSBjb250cm9sOworCXNjc2lfdWx0bzJiKGR4ZmVyX2xlbiwgc2NzaV9jbWQtPmxlbmd0aCk7 CisKKwljYW1fZmlsbF9jc2lvKGNzaW8sCisJCSAgICAgIHJldHJpZXMsCisJCSAgICAgIGNiZmNu cCwKKwkJICAgICAgLypmbGFncyovIChkeGZlcl9sZW4gPiAwKSA/IENBTV9ESVJfT1VUIDogQ0FN X0RJUl9OT05FLAorCQkgICAgICB0YWdfYWN0aW9uLAorCQkgICAgICBkYXRhX3B0ciwKKwkJICAg ICAgZHhmZXJfbGVuLAorCQkgICAgICBzZW5zZV9sZW4sCisJCSAgICAgIHNpemVvZigqc2NzaV9j bWQpLAorCQkgICAgICB0aW1lb3V0KTsKK30KKwogI2VuZGlmIC8qIF9LRVJORUwgKi8KZGlmZiAt LWdpdCBhL3N5cy9jYW0vc2NzaS9zY3NpX2RhLmggYi9zeXMvY2FtL3Njc2kvc2NzaV9kYS5oCmlu ZGV4IDU3OTkyMzguLjRmYmQ3MjUgMTAwNjQ0Ci0tLSBhL3N5cy9jYW0vc2NzaS9zY3NpX2RhLmgK KysrIGIvc3lzL2NhbS9zY3NpL3Njc2lfZGEuaApAQCAtMTE2LDYgKzExNiwzMSBAQCBzdHJ1Y3Qg c2NzaV9yZWFkX2RlZmVjdF9kYXRhXzEwCiAJdV9pbnQ4X3QgY29udHJvbDsKIH07CiAKK3N0cnVj dCBzY3NpX3Nhbml0aXplCit7CisJdV9pbnQ4X3Qgb3Bjb2RlOworCXVfaW50OF90IGJ5dGUyOwor I2RlZmluZSBTU1pfU0VSVklDRV9BQ1RJT05fT1ZFUldSSVRFICAgICAgICAgMHgwMQorI2RlZmlu ZSBTU1pfU0VSVklDRV9BQ1RJT05fQkxPQ0tfRVJBU0UgICAgICAgMHgwMgorI2RlZmluZSBTU1pf U0VSVklDRV9BQ1RJT05fQ1JZUFRPX0VSQVNFICAgICAgMHgwMworI2RlZmluZSBTU1pfU0VSVklD RV9BQ1RJT05fRVhJVF9NT0RFX0ZBSUxVUkUgMHgxRgorI2RlZmluZSBTU1pfVU5SRVNUUklDVEVE X0VYSVQgICAgICAgICAgICAgICAgMHgyMAorI2RlZmluZSBTU1pfSU1NRUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMHg4MAorCXVfaW50OF90IHJlc2VydmVkWzVdOworCXVfaW50OF90IGxl bmd0aFsyXTsKKwl1X2ludDhfdCBjb250cm9sOworfTsKKworc3RydWN0IHNjc2lfc2FuaXRpemVf cGFyYW1ldGVyX2xpc3QKK3sKKwl1X2ludDhfdCBieXRlMTsKKyNkZWZpbmUgU1NaUExfSU5WRVJU IDB4ODAKKwl1X2ludDhfdCByZXNlcnZlZDsKKwl1X2ludDhfdCBsZW5ndGhbMl07CisJLyogVmFy aWFibGUgbGVuZ3RoIGluaXRpYWxpemF0aW9uIHBhdHRlcm4uICovCisjZGVmaW5lIFNTWlBMX01B WF9QQVRURVJOX0xFTkdUSCA2NTUzNQorfTsKKwogc3RydWN0IHNjc2lfcmVhZF9kZWZlY3RfZGF0 YV8xMgogewogCXVfaW50OF90IG9wY29kZTsKQEAgLTE1Niw2ICsxODEsNyBAQCBzdHJ1Y3Qgc2Nz aV9yZWFkX2RlZmVjdF9kYXRhXzEyCiAjZGVmaW5lCVdSSVRFX0FORF9WRVJJRlkJMHgyZQogI2Rl ZmluZQlWRVJJRlkJCQkweDJmCiAjZGVmaW5lIFJFQURfREVGRUNUX0RBVEFfMTAJMHgzNworI2Rl ZmluZSBTQU5JVElaRQkJMHg0OAogI2RlZmluZSBSRUFEX0RFRkVDVF9EQVRBXzEyCTB4YjcKIAog c3RydWN0IGZvcm1hdF9kZWZlY3RfbGlzdF9oZWFkZXIKQEAgLTUwOCw2ICs1MzQsMTIgQEAgdm9p ZCBzY3NpX2Zvcm1hdF91bml0KHN0cnVjdCBjY2Jfc2NzaWlvICpjc2lvLCB1X2ludDMyX3QgcmV0 cmllcywKIAkJICAgICAgdV9pbnQ4X3QgKmRhdGFfcHRyLCB1X2ludDMyX3QgZHhmZXJfbGVuLAog CQkgICAgICB1X2ludDhfdCBzZW5zZV9sZW4sIHVfaW50MzJfdCB0aW1lb3V0KTsKIAordm9pZCBz Y3NpX3Nhbml0aXplKHN0cnVjdCBjY2Jfc2NzaWlvICpjc2lvLCB1X2ludDMyX3QgcmV0cmllcywK KwkJICAgdm9pZCAoKmNiZmNucCkoc3RydWN0IGNhbV9wZXJpcGggKiwgdW5pb24gY2NiICopLAor CQkgICB1X2ludDhfdCB0YWdfYWN0aW9uLCB1X2ludDhfdCBieXRlMiwgdV9pbnQxNl90IGNvbnRy b2wsCisJCSAgIHVfaW50OF90ICpkYXRhX3B0ciwgdV9pbnQzMl90IGR4ZmVyX2xlbiwgdV9pbnQ4 X3Qgc2Vuc2VfbGVuLAorCQkgICB1X2ludDMyX3QgdGltZW91dCk7CisKICNlbmRpZiAvKiAhX0tF Uk5FTCAqLwogX19FTkRfREVDTFMKIAo= ------=_Part_3057_1096540079.1378394057331--