Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Sep 2013 10:14:17 -0500 (CDT)
From:      Bryan Venteicher <bryanv@daemoninthecloset.org>
To:        freebsd-scsi@freebsd.org
Subject:   camcontrol SCSI sanitize
Message-ID:  <1292769639.3059.1378394057334.JavaMail.root@daemoninthecloset.org>
In-Reply-To: <1895443574.3014.1378393339664.JavaMail.root@daemoninthecloset.org>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1292769639.3059.1378394057334.JavaMail.root>