Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 10 Jan 2010 16:12:23 -0800 (PST)
From:      "Pedro F. Giffuni" <giffunip@tutopia.com>
To:        FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org
Subject:   Re: bin/142384: sync fsck_msdosfs with OpenBSD
Message-ID:  <694619.30404.qm@web113518.mail.gq1.yahoo.com>

next in thread | raw e-mail | index | archive | help
--0-1379220581-1263168743=:30404
Content-Type: text/plain; charset=us-ascii

While here,.. 
- clarify a bit the FAT header
- ansify a couple of functions


      
--0-1379220581-1263168743=:30404
Content-Type: application/octet-stream; name=patch-fsck_msdosfs
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=patch-fsck_msdosfs

ZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvYm9vdC5jIGZzY2tfbXNkb3Nm
cy9ib290LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Jvb3QuYwkyMDEwLTAx
LTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2Zz
L2Jvb3QuYwkyMDEwLTAxLTEwIDE4OjA3OjQ3LjAwMDAwMDAwMCArMDAwMApA
QCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy
aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3
YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds
ZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg
ZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5n
IFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5p
dmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq
ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElT
JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRs
aWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5o
PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAK
QEAgLTQ4LDE2ICs0MCwxNSBAQAogI2luY2x1ZGUgImZzdXRpbC5oIgogCiBp
bnQKLXJlYWRib290KGRvc2ZzLCBib290KQotCWludCBkb3NmczsKLQlzdHJ1
Y3QgYm9vdGJsb2NrICpib290OworcmVhZGJvb3QoaW50IGRvc2ZzLCBzdHJ1
Y3QgYm9vdGJsb2NrICpib290KQogewogCXVfY2hhciBibG9ja1tET1NCT09U
QkxPQ0tTSVpFXTsKIAl1X2NoYXIgZnNpbmZvWzIgKiBET1NCT09UQkxPQ0tT
SVpFXTsKIAl1X2NoYXIgYmFja3VwW0RPU0JPT1RCTE9DS1NJWkVdOwogCWlu
dCByZXQgPSBGU09LOworCWludCBpOwogCQotCWlmIChyZWFkKGRvc2ZzLCBi
bG9jaywgc2l6ZW9mIGJsb2NrKSA8IHNpemVvZiBibG9jaykgeworCWlmICgo
c2l6ZV90KXJlYWQoZG9zZnMsIGJsb2NrLCBzaXplb2YgYmxvY2spICE9IHNp
emVvZiBibG9jaykgewogCQlwZXJyb3IoImNvdWxkIG5vdCByZWFkIGJvb3Qg
YmxvY2siKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQpAQCAtMTYxLDEyICsx
NTIsMjIgQEAKIAkJfQogCQliYWNrdXBbNjVdID0gYmxvY2tbNjVdOwkJCQkv
KiBYWFggKi8KIAkJaWYgKG1lbWNtcChibG9jayArIDExLCBiYWNrdXAgKyAx
MSwgNzkpKSB7Ci0JCQkvKiBDb3JyZWN0PwkJCQkJWFhYICovCi0JCQlwZmF0
YWwoImJhY2t1cCBkb2Vzbid0IGNvbXBhcmUgdG8gcHJpbWFyeSBib290Ymxv
Y2siKTsKLQkJCWlmIChhbHdheXNubykKLQkJCQlwZmF0YWwoIlxuIik7Ci0J
CQllbHNlCi0JCQkJcmV0dXJuIEZTRkFUQUw7CisJCQkvKgorCQkJICogWFhY
IFdlIHJlcXVpcmUgYSByZWZlcmVuY2UgdGhhdCBleHBsYWlucworCQkJICog
dGhhdCB0aGVzZSBieXRlcyBuZWVkIHRvIG1hdGNoLCBvciBzaG91bGQKKwkJ
CSAqIGRyb3AgdGhlIGNoZWNrLiAgZ2R0QE5ldEJTRCBoYXMgb2JzZXJ2ZWQK
KwkJCSAqIGZpbGVzeXN0ZW1zIHRoYXQgd29yayBmaW5lIHVuZGVyIFdpbmRv
d3MgWFAKKwkJCSAqIGFuZCBOZXRCU0QgdGhhdCBkbyBub3QgbWF0Y2gsIHNv
IHRoZQorCQkJICogcmVxdWlyZW1lbnQgaXMgc3VzcGVjdC4gIEZvciBub3cs
IGp1c3QKKwkJCSAqIHByaW50IG91dCB1c2VmdWwgaW5mb3JtYXRpb24gYW5k
IGNvbnRpbnVlLgorCQkJICovCisJCQlwZmF0YWwoImJhY2t1cCAoYmxvY2sg
JWQpIG1pc21hdGNoIHdpdGggcHJpbWFyeSBib290YmxvY2s6XG4iLAorCQkJ
ICAgICAgICBib290LT5CYWNrdXApOworCQkJZm9yIChpID0gMTE7IGkgPCAx
MSArIDkwOyBpKyspIHsKKwkJCQlpZiAoYmxvY2tbaV0gIT0gYmFja3VwW2ld
KQorCQkJCQlwZmF0YWwoIlx0aT0lZFx0cHJpbWFyeSAweCUwMnhcdGJhY2t1
cCAweCUwMnhcbiIsCisJCQkJCSAgICAgICBpLCBibG9ja1tpXSwgYmFja3Vw
W2ldKTsKKwkJCX0KIAkJfQogCQkvKiBDaGVjayBiYWNrdXAgRlNJbmZvPwkJ
CQkJWFhYICovCiAJfQpAQCAtMjMwLDkgKzIzMSw3IEBACiB9CiAKIGludAot
d3JpdGVmc2luZm8oZG9zZnMsIGJvb3QpCi0JaW50IGRvc2ZzOwotCXN0cnVj
dCBib290YmxvY2sgKmJvb3Q7Cit3cml0ZWZzaW5mbyhpbnQgZG9zZnMsIHN0
cnVjdCBib290YmxvY2sgKmJvb3QpCiB7CiAJdV9jaGFyIGZzaW5mb1syICog
RE9TQk9PVEJMT0NLU0laRV07CiAKZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9y
aWcvY2hlY2suYyBmc2NrX21zZG9zZnMvY2hlY2suYwotLS0gZnNja19tc2Rv
c2ZzLm9yaWcvY2hlY2suYwkyMDEwLTAxLTA2IDExOjA3OjI0LjAwMDAwMDAw
MCArMDAwMAorKysgZnNja19tc2Rvc2ZzL2NoZWNrLmMJMjAxMC0wMS0wNyAy
MjowOToxMy4wMDAwMDAwMDAgKzAwMDAKQEAgLTEwLDEzICsxMCw2IEBACiAg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0
dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNw
bGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgotICoJVGhpcyBw
cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4g
SHVzZW1hbm4KLSAqCWFuZCBXb2xmZ2FuZyBTb2xmcmFuay4KLSAqIDQuIE5l
aXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1l
cyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIEFVVEhPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBP
UgogICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpAQCAtNDAsNyAr
MzMsNiBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzdGRpby5o
PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CkBA
IC01NCw3ICs0Niw4IEBACiAJaW50IGRvc2ZzOwogCXN0cnVjdCBib290Ymxv
Y2sgYm9vdDsKIAlzdHJ1Y3QgZmF0RW50cnkgKmZhdCA9IE5VTEw7Ci0JaW50
IGksIGZpbmlzaF9kb3NkaXJzZWN0aW9uPTA7CisJaW50IGZpbmlzaF9kb3Nk
aXJzZWN0aW9uPTA7CisJdV9pbnQgaTsKIAlpbnQgbW9kID0gMDsKIAlpbnQg
cmV0ID0gODsKIApkaWZmIC1ydSBmc2NrX21zZG9zZnMub3JpZy9kaXIuYyBm
c2NrX21zZG9zZnMvZGlyLmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Rpci5j
CTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisrKyBmc2Nr
X21zZG9zZnMvZGlyLmMJMjAxMC0wMS0wOCAxNTozMDowMy4wMDAwMDAwMDAg
KzAwMDAKQEAgLTEyLDEzICsxMiw2IEBACiAgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFsbCBhZHZlcnRpc2lu
ZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp
cyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg
YWNrbm93bGVkZ2VtZW50OgotICoJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv
ZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4gSHVzZW1hbm4KLSAqCWFuZCBX
b2xmZ2FuZyBTb2xmcmFuay4KLSAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2Yg
dGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0
b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAqICAgIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoK
ICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUlMg
YGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgogICogSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUwpAQCAtNDQsNyArMzcsNiBAQAogI2luY2x1ZGUg
PHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN0
eXBlLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQu
aD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKQEAgLTIzMCwxMiArMjIyLDI0IEBA
CiAJYjEgPSBib290LT5Sb290RGlyRW50cyAqIDMyOwogCWIyID0gYm9vdC0+
U2VjUGVyQ2x1c3QgKiBib290LT5CeXRlc1BlclNlYzsKIAotCWlmICghKGJ1
ZmZlciA9IG1hbGxvYyhiMSA+IGIyID8gYjEgOiBiMikpCi0JICAgIHx8ICEo
ZGVsYnVmID0gbWFsbG9jKGIyKSkKLQkgICAgfHwgIShyb290RGlyID0gbmV3
RG9zRGlyRW50cnkoKSkpIHsKLQkJcGVycm9yKCJObyBzcGFjZSBmb3IgZGly
ZWN0b3J5Iik7CisJaWYgKChidWZmZXIgPSBtYWxsb2MoIGIxID4gYjIgPyBi
MSA6IGIyKSkgPT0gTlVMTCkgeworCQlwZXJyb3IoIk5vIHNwYWNlIGZvciBk
aXJlY3RvcnkgYnVmZmVyIik7CiAJCXJldHVybiBGU0ZBVEFMOwogCX0KKwor
CWlmICgoZGVsYnVmID0gbWFsbG9jKGIyKSkgPT0gTlVMTCkgeworCQlmcmVl
KGJ1ZmZlcik7CisJCXBlcnJvcigiTm8gc3BhY2UgZm9yIGRpcmVjdG9yeSBk
ZWxidWYiKTsKKwkJcmV0dXJuIEZTRkFUQUw7CisJfQorCisJaWYgKChyb290
RGlyID0gbmV3RG9zRGlyRW50cnkoKSkgPT0gTlVMTCkgeworCQlmcmVlKGJ1
ZmZlcik7CisJCWZyZWUoZGVsYnVmKTsKKwkJcGVycm9yKCJObyBzcGFjZSBm
b3IgZGlyZWN0b3J5IGVudHJ5Iik7CisJCXJldHVybiBGU0ZBVEFMOworCX0K
KwogCW1lbXNldChyb290RGlyLCAwLCBzaXplb2YgKnJvb3REaXIpOwogCWlm
IChib290LT5mbGFncyAmIEZBVDMyKSB7CiAJCWlmIChib290LT5Sb290Q2wg
PCBDTFVTVF9GSVJTVCB8fCBib290LT5Sb290Q2wgPj0gYm9vdC0+TnVtQ2x1
c3RlcnMpIHsKQEAgLTM2Nyw3ICszNzEsOCBAQAogCQkJCXJldHVybiBGU0ZB
VEFMOwogCQkJc3RhcnQgPSBidWZmZXI7CiAJCX0KLQkJaWYgKGVuZGNsID09
IGN1cmNsKQorCQkvKiBzdGFydGNsIGlzIDwgQ0xVU1RfRklSU1QgZm9yICFm
YXQzMiByb290ICovCisJCWlmICgoZW5kY2wgPT0gY3VyY2wpIHx8IChzdGFy
dGNsIDwgQ0xVU1RfRklSU1QpKQogCQkJZm9yICg7IHN0YXJ0IDwgZW5kOyBz
dGFydCArPSAzMikKIAkJCQkqc3RhcnQgPSBTTE9UX0RFTEVURUQ7CiAJCXJl
dHVybiBGU0RJUk1PRDsKQEAgLTM4NSw3ICszOTAsNyBAQAogCS8qCiAJICog
Q2hlY2sgc2l6ZSBvbiBvcmRpbmFyeSBmaWxlcwogCSAqLwotCWludDMyX3Qg
cGh5c2ljYWxTaXplOworCXVfaW50MzJfdCBwaHlzaWNhbFNpemU7CiAKIAlp
ZiAoZGlyLT5oZWFkID09IENMVVNUX0ZSRUUpCiAJCXBoeXNpY2FsU2l6ZSA9
IDA7CkBAIC02NDQsNyArNjQ5LDggQEAKIAkJCQlkaXJlbnQuaGVhZCB8PSAo
cFsyMF0gPDwgMTYpIHwgKHBbMjFdIDw8IDI0KTsKIAkJCWRpcmVudC5zaXpl
ID0gcFsyOF0gfCAocFsyOV0gPDwgOCkgfCAocFszMF0gPDwgMTYpIHwgKHBb
MzFdIDw8IDI0KTsKIAkJCWlmICh2YWxsZm4pIHsKLQkJCQlzdHJjcHkoZGly
ZW50LmxuYW1lLCBsb25nTmFtZSk7CisJCQkJc3RybGNweShkaXJlbnQubG5h
bWUsIGxvbmdOYW1lLAorCQkJCSAgICBzaXplb2YoZGlyZW50LmxuYW1lKSk7
CiAJCQkJbG9uZ05hbWVbMF0gPSAnXDAnOwogCQkJCXNob3J0U3VtID0gLTE7
CiAJCQl9CkBAIC04MzIsNiArODM4LDEwIEBACiAJCQl9CiAJCQlib290LT5O
dW1GaWxlcysrOwogCQl9CisKKwkJaWYgKCEoYm9vdC0+ZmxhZ3MgJiBGQVQz
MikgJiYgIWRpci0+cGFyZW50KQorCQkJYnJlYWs7CisKIAkJaWYgKG1vZCAm
IFRISVNNT0QpIHsKIAkJCWxhc3QgKj0gMzI7CiAJCQlpZiAobHNlZWsoZiwg
b2ZmLCBTRUVLX1NFVCkgIT0gb2ZmCkBAIC04NDcsNiArODU3LDE5IEBACiAJ
CQkJaW52bGZuID8gaW52bGZuIDogdmFsbGZuLCBwLAogCQkJCWludmxmbiA/
IGludmNsIDogdmFsY2wsIC0xLCAwLAogCQkJCWZ1bGxwYXRoKGRpciksIDEp
OworCisJLyogVGhlIHJvb3QgZGlyZWN0b3J5IG9mIG5vbiBmYXQzMiBmaWxl
c3lzdGVtcyBpcyBpbiBhIHNwZWNpYWwKKwkgKiBhcmVhIGFuZCBtYXkgaGF2
ZSBiZWVuIG1vZGlmaWVkIGFib3ZlIHdpdGhvdXQgYmVpbmcgd3JpdHRlbiBv
dXQuCisJICovCisJaWYgKChtb2QgJiBGU0RJUk1PRCkgJiYgIShib290LT5m
bGFncyAmIEZBVDMyKSAmJiAhZGlyLT5wYXJlbnQpIHsKKwkJbGFzdCAqPSAz
MjsKKwkJaWYgKGxzZWVrKGYsIG9mZiwgU0VFS19TRVQpICE9IG9mZgorCQkg
ICAgfHwgd3JpdGUoZiwgYnVmZmVyLCBsYXN0KSAhPSBsYXN0KSB7CisJCQlw
ZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBkaXJlY3RvcnkiKTsKKwkJCXJldHVy
biBGU0ZBVEFMOworCQl9CisJCW1vZCAmPSB+VEhJU01PRDsKKwl9CiAJcmV0
dXJuIG1vZCAmIH5USElTTU9EOwogfQogCkBAIC05MzYsNyArOTU5LDcgQEAK
IAkJbGZvZmYgPSBsZmNsICogYm9vdC0+Q2x1c3RlclNpemUKIAkJICAgICsg
Ym9vdC0+Q2x1c3Rlck9mZnNldCAqIGJvb3QtPkJ5dGVzUGVyU2VjOwogCQlp
ZiAobHNlZWsoZG9zZnMsIGxmb2ZmLCBTRUVLX1NFVCkgIT0gbGZvZmYKLQkJ
ICAgIHx8IHJlYWQoZG9zZnMsIGxmYnVmLCBib290LT5DbHVzdGVyU2l6ZSkg
IT0gYm9vdC0+Q2x1c3RlclNpemUpIHsKKwkJICAgIHx8IChzaXplX3QpcmVh
ZChkb3NmcywgbGZidWYsIGJvb3QtPkNsdXN0ZXJTaXplKSAhPSBib290LT5D
bHVzdGVyU2l6ZSkgewogCQkJcGVycm9yKCJjb3VsZCBub3QgcmVhZCBMT1NU
LkRJUiIpOwogCQkJcmV0dXJuIEZTRkFUQUw7CiAJCX0KQEAgLTk2Niw3ICs5
ODksNyBAQAogCXBbMzFdID0gKHVfY2hhcikoZC5zaXplID4+IDI0KTsKIAlm
YXRbaGVhZF0uZmxhZ3MgfD0gRkFUX1VTRUQ7CiAJaWYgKGxzZWVrKGRvc2Zz
LCBsZm9mZiwgU0VFS19TRVQpICE9IGxmb2ZmCi0JICAgIHx8IHdyaXRlKGRv
c2ZzLCBsZmJ1ZiwgYm9vdC0+Q2x1c3RlclNpemUpICE9IGJvb3QtPkNsdXN0
ZXJTaXplKSB7CisJICAgIHx8IChzaXplX3Qpd3JpdGUoZG9zZnMsIGxmYnVm
LCBib290LT5DbHVzdGVyU2l6ZSkgIT0gYm9vdC0+Q2x1c3RlclNpemUpIHsK
IAkJcGVycm9yKCJjb3VsZCBub3Qgd3JpdGUgTE9TVC5ESVIiKTsKIAkJcmV0
dXJuIEZTRkFUQUw7CiAJfQpkaWZmIC1ydSBmc2NrX21zZG9zZnMub3JpZy9k
b3Nmcy5oIGZzY2tfbXNkb3Nmcy9kb3Nmcy5oCi0tLSBmc2NrX21zZG9zZnMu
b3JpZy9kb3Nmcy5oCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICsw
MDAwCisrKyBmc2NrX21zZG9zZnMvZG9zZnMuaAkyMDEwLTAxLTA4IDE5OjQy
OjA1LjAwMDAwMDAwMCArMDAwMApAQCAtMTIsMTMgKzEyLDYgQEAKICAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
QWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz
IG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkg
dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1
Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNl
bWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhl
ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9m
IGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0
d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAg
KiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCkBAIC01NSw4ICs0OCwx
MyBAQAogCXVfaW50CUZBVHNtYWxsOwkJLyogbnVtYmVyIG9mIHNlY3RvcnMg
cGVyIEZBVCAqLwogCXVfaW50CVNlY1BlclRyYWNrOwkJLyogc2VjdG9ycyBw
ZXIgdHJhY2sgKi8KIAl1X2ludAlIZWFkczsJCQkvKiBudW1iZXIgb2YgaGVh
ZHMgKi8KLQl1X2ludDMyX3QgU2VjdG9yczsJCS8qIHRvdGFsIG51bWJlciBv
ZiBzZWN0b3JzICovCiAJdV9pbnQzMl90IEhpZGRlblNlY3M7CQkvKiAjIG9m
IGhpZGRlbiBzZWN0b3JzICovCisJdV9pbnQzMl90IFNlY3RvcnM7CQkvKiB0
b3RhbCBudW1iZXIgb2Ygc2VjdG9ycyAqLworI2RlZmluZQlGQVQzMgkJMQkJ
LyogdGhpcyBpcyBhIEZBVDMyIGZpbGUgc3lzdGVtICovCisJCQkJCS8qCisJ
CQkJCSAqIE1heWJlLCB3ZSBzaG91bGQgc2VwYXJhdGUgb3V0CisJCQkJCSAq
IHZhcmlvdXMgcGFydHMgb2YgRkFUMzI/CVhYWAorCQkJCQkgKi8KIAl1X2lu
dDMyX3QgSHVnZVNlY3RvcnM7CQkvKiAjIG9mIHNlY3RvcnMgaWYgYnBiU2Vj
dG9ycyA9PSAwICovCiAJdV9pbnQJRlNJbmZvOwkJCS8qIEZTSW5mbyBzZWN0
b3IgKi8KIAl1X2ludAlCYWNrdXA7CQkJLyogQmFja3VwIG9mIEJvb3RibG9j
a3MgKi8KQEAgLTY2LDExICs2NCw2IEBACiAKIAkvKiBhbmQgc29tZSBtb3Jl
IGNhbGN1bGF0ZWQgdmFsdWVzICovCiAJdV9pbnQJZmxhZ3M7CQkJLyogc29t
ZSBmbGFnczogKi8KLSNkZWZpbmUJRkFUMzIJCTEJCS8qIHRoaXMgaXMgYSBG
QVQzMiBmaWxlIHN5c3RlbSAqLwotCQkJCQkvKgotCQkJCQkgKiBNYXliZSwg
d2Ugc2hvdWxkIHNlcGFyYXRlIG91dAotCQkJCQkgKiB2YXJpb3VzIHBhcnRz
IG9mIEZBVDMyPwlYWFgKLQkJCQkJICovCiAJaW50CVZhbGlkRmF0OwkJLyog
dmFsaWQgZmF0IGlmIEZBVDMyIG5vbi1taXJyb3JlZCAqLwogCWNsX3QJQ2x1
c3RNYXNrOwkJLyogbWFzayBmb3IgZW50cmllcyBpbiBGQVQgKi8KIAljbF90
CU51bUNsdXN0ZXJzOwkJLyogIyBvZiBlbnRyaWVzIGluIGEgRkFUICovCmRp
ZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2V4dC5oIGZzY2tfbXNkb3Nmcy9l
eHQuaAotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZXh0LmgJMjAxMC0wMS0wNiAx
MTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tfbXNkb3Nmcy9leHQu
aAkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAwMApAQCAtMTAs
MTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt
ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0g
KiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1l
bnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv
cGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZy
YW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0
eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5E
IEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTCkBAIC03NywxMiArNzAsMTIgQEAKICNkZWZpbmUJRlNESVJNT0QJMgkJ
LyogU29tZSBkaXJlY3Rvcnkgd2FzIG1vZGlmaWVkICovCiAjZGVmaW5lCUZT
RkFUTU9ECTQJCS8qIFRoZSBGQVQgd2FzIG1vZGlmaWVkICovCiAjZGVmaW5l
CUZTRVJST1IJCTgJCS8qIFNvbWUgdW5yZWNvdmVyZWQgZXJyb3IgcmVtYWlu
cyAqLwotI2RlZmluZQlGU0ZBVEFMCQkxNgkJLyogU29tZSB1bnJlY292ZXJh
YmxlIGVycm9yIG9jY3VyZWQgKi8KKyNkZWZpbmUJRlNGQVRBTAkJMTYJCS8q
IFNvbWUgdW5yZWNvdmVyYWJsZSBlcnJvciBvY2N1cnJlZCAqLwogI2RlZmlu
ZSBGU0RJUlRZCQkzMgkJLyogRmlsZSBzeXN0ZW0gaXMgZGlydHkgKi8KICNk
ZWZpbmUgRlNGSVhGQVQJNjQJCS8qIEZpeCBmaWxlIHN5c3RlbSBGQVQgKi8K
IAogLyoKLSAqIHJlYWQgYSBib290IGJsb2NrIGluIGEgbWFjaGluZSBpbmRl
cGVuZGVuZCBmYXNoaW9uIGFuZCB0cmFuc2xhdGUKKyAqIHJlYWQgYSBib290
IGJsb2NrIGluIGEgbWFjaGluZSBpbmRlcGVuZGVudCBmYXNoaW9uIGFuZCB0
cmFuc2xhdGUKICAqIGl0IGludG8gb3VyIHN0cnVjdCBib290YmxvY2suCiAg
Ki8KIGludCByZWFkYm9vdChpbnQsIHN0cnVjdCBib290YmxvY2sgKik7CkBA
IC05NiwxMyArODksMTMgQEAKICAqIFJlYWQgb25lIG9mIHRoZSBGQVQgY29w
aWVzIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBuZXcKICAqIGFsbG9j
YXRlZCBhcnJheSBob2xkaW5nIG91ciBkZXNjcmlwdGlvbiBvZiBpdC4KICAq
LwotaW50IHJlYWRmYXQoaW50LCBzdHJ1Y3QgYm9vdGJsb2NrICosIGludCwg
c3RydWN0IGZhdEVudHJ5ICoqKTsKK2ludCByZWFkZmF0KGludCwgc3RydWN0
IGJvb3RibG9jayAqLCB1X2ludCwgc3RydWN0IGZhdEVudHJ5ICoqKTsKIAog
LyoKICAqIENoZWNrIHR3byBGQVQgY29waWVzIGZvciBjb25zaXN0ZW5jeSBh
bmQgbWVyZ2UgY2hhbmdlcyBpbnRvIHRoZQotICogZmlyc3QgaWYgbmVjY2Vz
c2FyeS4KKyAqIGZpcnN0IGlmIG5lY2Vzc2FyeS4KICAqLwotaW50IGNvbXBh
cmVmYXQoc3RydWN0IGJvb3RibG9jayAqLCBzdHJ1Y3QgZmF0RW50cnkgKiwg
c3RydWN0IGZhdEVudHJ5ICosIGludCk7CitpbnQgY29tcGFyZWZhdChzdHJ1
Y3QgYm9vdGJsb2NrICosIHN0cnVjdCBmYXRFbnRyeSAqLCBzdHJ1Y3QgZmF0
RW50cnkgKiwgdV9pbnQpOwogCiAvKgogICogQ2hlY2sgYSBGQVQKZGlmZiAt
cnUgZnNja19tc2Rvc2ZzLm9yaWcvZmF0LmMgZnNja19tc2Rvc2ZzL2ZhdC5j
Ci0tLSBmc2NrX21zZG9zZnMub3JpZy9mYXQuYwkyMDEwLTAxLTA2IDExOjA3
OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2ZzL2ZhdC5jCTIw
MTAtMDEtMDcgMjI6MTM6MzEuMDAwMDAwMDAwICswMDAwCkBAIC0xMCwxMyAr
MTAsNiBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp
b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAg
IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoK
LSAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg
YnkgTWFydGluIEh1c2VtYW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsu
Ci0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5v
ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5Z
IEVYUFJFU1MgT1IKICAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMK
QEAgLTQ3LDEwICs0MCwxMCBAQAogI2luY2x1ZGUgImV4dC5oIgogI2luY2x1
ZGUgImZzdXRpbC5oIgogCi1zdGF0aWMgaW50IGNoZWNrY2xudW0oc3RydWN0
IGJvb3RibG9jayAqLCBpbnQsIGNsX3QsIGNsX3QgKik7Ci1zdGF0aWMgaW50
IGNsdXN0ZGlmZmVyKGNsX3QsIGNsX3QgKiwgY2xfdCAqLCBpbnQpOworc3Rh
dGljIGludCBjaGVja2NsbnVtKHN0cnVjdCBib290YmxvY2sgKiwgdV9pbnQs
IGNsX3QsIGNsX3QgKik7CitzdGF0aWMgaW50IGNsdXN0ZGlmZmVyKGNsX3Qs
IGNsX3QgKiwgY2xfdCAqLCB1X2ludCk7CiBzdGF0aWMgaW50IHRyeWNsZWFy
KHN0cnVjdCBib290YmxvY2sgKiwgc3RydWN0IGZhdEVudHJ5ICosIGNsX3Qs
IGNsX3QgKik7Ci1zdGF0aWMgaW50IF9yZWFkZmF0KGludCwgc3RydWN0IGJv
b3RibG9jayAqLCBpbnQsIHVfY2hhciAqKik7CitzdGF0aWMgaW50IF9yZWFk
ZmF0KGludCwgc3RydWN0IGJvb3RibG9jayAqLCB1X2ludCwgdV9jaGFyICoq
KTsKIAogLyotCiAgKiBUaGUgZmlyc3QgMiBGQVQgZW50cmllcyBjb250YWlu
IHBzZXVkby1jbHVzdGVyIG51bWJlcnMgd2l0aCB0aGUgZm9sbG93aW5nCkBA
IC0xMzUsNyArMTI4LDcgQEAKICAqIENoZWNrIGEgY2x1c3RlciBudW1iZXIg
Zm9yIHZhbGlkIHZhbHVlCiAgKi8KIHN0YXRpYyBpbnQKLWNoZWNrY2xudW0o
c3RydWN0IGJvb3RibG9jayAqYm9vdCwgaW50IGZhdCwgY2xfdCBjbCwgY2xf
dCAqbmV4dCkKK2NoZWNrY2xudW0oc3RydWN0IGJvb3RibG9jayAqYm9vdCwg
dV9pbnQgZmF0LCBjbF90IGNsLCBjbF90ICpuZXh0KQogewogCWlmICgqbmV4
dCA+PSAoQ0xVU1RfUlNSVkQmYm9vdC0+Q2x1c3RNYXNrKSkKIAkJKm5leHQg
fD0gfmJvb3QtPkNsdXN0TWFzazsKQEAgLTE2Niw3ICsxNTksNyBAQAogICog
UmVhZCBhIEZBVCBmcm9tIGRpc2suIFJldHVybnMgMSBpZiBzdWNjZXNzZnVs
LCAwIG90aGVyd2lzZS4KICAqLwogc3RhdGljIGludAotX3JlYWRmYXQoaW50
IGZzLCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBpbnQgbm8sIHVfY2hhciAq
KmJ1ZmZlcikKK19yZWFkZmF0KGludCBmcywgc3RydWN0IGJvb3RibG9jayAq
Ym9vdCwgdV9pbnQgbm8sIHVfY2hhciAqKmJ1ZmZlcikKIHsKIAlvZmZfdCBv
ZmY7CiAKQEAgLTE4NCw3ICsxNzcsNyBAQAogCQlnb3RvIGVycjsKIAl9CiAK
LQlpZiAocmVhZChmcywgKmJ1ZmZlciwgYm9vdC0+RkFUc2VjcyAqIGJvb3Qt
PkJ5dGVzUGVyU2VjKQorCWlmICgoc2l6ZV90KXJlYWQoZnMsICpidWZmZXIs
IGJvb3QtPkZBVHNlY3MgKiBib290LT5CeXRlc1BlclNlYykKIAkgICAgIT0g
Ym9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKSB7CiAJCXBlcnJv
cigiVW5hYmxlIHRvIHJlYWQgRkFUIik7CiAJCWdvdG8gZXJyOwpAQCAtMjAx
LDI0ICsxOTQsMjYgQEAKICAqIFJlYWQgYSBGQVQgYW5kIGRlY29kZSBpdCBp
bnRvIGludGVybmFsIGZvcm1hdAogICovCiBpbnQKLXJlYWRmYXQoaW50IGZz
LCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBpbnQgbm8sIHN0cnVjdCBmYXRF
bnRyeSAqKmZwKQorcmVhZGZhdChpbnQgZnMsIHN0cnVjdCBib290YmxvY2sg
KmJvb3QsIHVfaW50IG5vLCBzdHJ1Y3QgZmF0RW50cnkgKipmcCkKIHsKIAlz
dHJ1Y3QgZmF0RW50cnkgKmZhdDsKIAl1X2NoYXIgKmJ1ZmZlciwgKnA7CiAJ
Y2xfdCBjbDsKIAlpbnQgcmV0ID0gRlNPSzsKKwlzaXplX3QgbGVuOwogCiAJ
Ym9vdC0+TnVtRnJlZSA9IGJvb3QtPk51bUJhZCA9IDA7CiAKIAlpZiAoIV9y
ZWFkZmF0KGZzLCBib290LCBubywgJmJ1ZmZlcikpCiAJCXJldHVybiBGU0ZB
VEFMOwogCQkKLQlmYXQgPSBjYWxsb2MoYm9vdC0+TnVtQ2x1c3RlcnMsIHNp
emVvZihzdHJ1Y3QgZmF0RW50cnkpKTsKKwlmYXQgPSBtYWxsb2MobGVuID0g
Ym9vdC0+TnVtQ2x1c3RlcnMgKiBzaXplb2Yoc3RydWN0IGZhdEVudHJ5KSk7
CiAJaWYgKGZhdCA9PSBOVUxMKSB7CiAJCXBlcnJvcigiTm8gc3BhY2UgZm9y
IEZBVCIpOwogCQlmcmVlKGJ1ZmZlcik7CiAJCXJldHVybiBGU0ZBVEFMOwog
CX0KKwkodm9pZCltZW1zZXQoZmF0LCAwLCBsZW4pOwogCiAJaWYgKGJ1ZmZl
clswXSAhPSBib290LT5NZWRpYQogCSAgICB8fCBidWZmZXJbMV0gIT0gMHhm
ZiB8fCBidWZmZXJbMl0gIT0gMHhmZgpAQCAtMzExLDcgKzMwNiwxMSBAQAog
CX0KIAogCWZyZWUoYnVmZmVyKTsKLQkqZnAgPSBmYXQ7CisJaWYgKHJldCAm
IEZTRkFUQUwpIHsKKwkJZnJlZShmYXQpOworCQkqZnAgPSBOVUxMOworCX0g
ZWxzZQorCQkqZnAgPSBmYXQ7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzMx
LDcgKzMzMCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNsdXN0ZGlmZmVyKGNs
X3QgY2wsIGNsX3QgKmNwMSwgY2xfdCAqY3AyLCBpbnQgZmF0bnVtKQorY2x1
c3RkaWZmZXIoY2xfdCBjbCwgY2xfdCAqY3AxLCBjbF90ICpjcDIsIHVfaW50
IGZhdG51bSkKIHsKIAlpZiAoKmNwMSA9PSBDTFVTVF9GUkVFIHx8ICpjcDEg
Pj0gQ0xVU1RfUlNSVkQpIHsKIAkJaWYgKCpjcDIgPT0gQ0xVU1RfRlJFRSB8
fCAqY3AyID49IENMVVNUX1JTUlZEKSB7CkBAIC0zNDYsMTMgKzM0NSwxMyBA
QAogCQkJCX0KIAkJCQlyZXR1cm4gRlNGQVRBTDsKIAkJCX0KLQkJCXB3YXJu
KCJDbHVzdGVyICV1IGlzIG1hcmtlZCAlcyBpbiBGQVQgMCwgJXMgaW4gRkFU
ICVkXG4iLAorCQkJcHdhcm4oIkNsdXN0ZXIgJXUgaXMgbWFya2VkICVzIGlu
IEZBVCAwLCAlcyBpbiBGQVQgJXVcbiIsCiAJCQkgICAgICBjbCwgcnNydmRj
bHR5cGUoKmNwMSksIHJzcnZkY2x0eXBlKCpjcDIpLCBmYXRudW0pOwogCQkJ
aWYgKGFzaygwLCAiVXNlIEZBVCAwJ3MgZW50cnkiKSkgewogCQkJCSpjcDIg
PSAqY3AxOwogCQkJCXJldHVybiBGU0ZBVE1PRDsKIAkJCX0KLQkJCWlmIChh
c2soMCwgIlVzZSBGQVQgJWQncyBlbnRyeSIsIGZhdG51bSkpIHsKKwkJCWlm
IChhc2soMCwgIlVzZSBGQVQgJXUncyBlbnRyeSIsIGZhdG51bSkpIHsKIAkJ
CQkqY3AxID0gKmNwMjsKIAkJCQlyZXR1cm4gRlNGQVRNT0Q7CiAJCQl9CkBA
IC0zNjAsNyArMzU5LDcgQEAKIAkJfQogCQlwd2FybigiQ2x1c3RlciAldSBp
cyBtYXJrZWQgJXMgaW4gRkFUIDAsIGJ1dCBjb250aW51ZXMgd2l0aCBjbHVz
dGVyICV1IGluIEZBVCAlZFxuIiwKIAkJICAgICAgY2wsIHJzcnZkY2x0eXBl
KCpjcDEpLCAqY3AyLCBmYXRudW0pOwotCQlpZiAoYXNrKDAsICJVc2UgY29u
dGludWF0aW9uIGZyb20gRkFUICVkIiwgZmF0bnVtKSkgeworCQlpZiAoYXNr
KDAsICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUICV1IiwgZmF0bnVtKSkg
ewogCQkJKmNwMSA9ICpjcDI7CiAJCQlyZXR1cm4gRlNGQVRNT0Q7CiAJCX0K
QEAgLTM3MSw3ICszNzAsNyBAQAogCQlyZXR1cm4gRlNGQVRBTDsKIAl9CiAJ
aWYgKCpjcDIgPT0gQ0xVU1RfRlJFRSB8fCAqY3AyID49IENMVVNUX1JTUlZE
KSB7Ci0JCXB3YXJuKCJDbHVzdGVyICV1IGNvbnRpbnVlcyB3aXRoIGNsdXN0
ZXIgJXUgaW4gRkFUIDAsIGJ1dCBpcyBtYXJrZWQgJXMgaW4gRkFUICVkXG4i
LAorCQlwd2FybigiQ2x1c3RlciAldSBjb250aW51ZXMgd2l0aCBjbHVzdGVy
ICV1IGluIEZBVCAwLCBidXQgaXMgbWFya2VkICVzIGluIEZBVCAldVxuIiwK
IAkJICAgICAgY2wsICpjcDEsIHJzcnZkY2x0eXBlKCpjcDIpLCBmYXRudW0p
OwogCQlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUIDAi
KSkgewogCQkJKmNwMiA9ICpjcDE7CkBAIC0zODMsMTMgKzM4MiwxMyBAQAog
CQl9CiAJCXJldHVybiBGU0VSUk9SOwogCX0KLQlwd2FybigiQ2x1c3RlciAl
dSBjb250aW51ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAwLCBidXQgd2l0
aCBjbHVzdGVyICV1IGluIEZBVCAlZFxuIiwKKwlwd2FybigiQ2x1c3RlciAl
dSBjb250aW51ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAwLCBidXQgd2l0
aCBjbHVzdGVyICV1IGluIEZBVCAldVxuIiwKIAkgICAgICBjbCwgKmNwMSwg
KmNwMiwgZmF0bnVtKTsKIAlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9u
IGZyb20gRkFUIDAiKSkgewogCQkqY3AyID0gKmNwMTsKIAkJcmV0dXJuIEZT
RkFUTU9EOwogCX0KLQlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9uIGZy
b20gRkFUICVkIiwgZmF0bnVtKSkgeworCWlmIChhc2soMCwgIlVzZSBjb250
aW51YXRpb24gZnJvbSBGQVQgJXUiLCBmYXRudW0pKSB7CiAJCSpjcDEgPSAq
Y3AyOwogCQlyZXR1cm4gRlNGQVRNT0Q7CiAJfQpAQCAtNDAxLDggKzQwMCw4
IEBACiAgKiBpbnRvIHRoZSBmaXJzdCBvbmUuCiAgKi8KIGludAotY29tcGFy
ZWZhdChzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBzdHJ1Y3QgZmF0RW50cnkg
KmZpcnN0LCAKLSAgICBzdHJ1Y3QgZmF0RW50cnkgKnNlY29uZCwgaW50IGZh
dG51bSkKK2NvbXBhcmVmYXQoc3RydWN0IGJvb3RibG9jayAqYm9vdCwgc3Ry
dWN0IGZhdEVudHJ5ICpmaXJzdCwKKyAgICBzdHJ1Y3QgZmF0RW50cnkgKnNl
Y29uZCwgdV9pbnQgZmF0bnVtKQogewogCWNsX3QgY2w7CiAJaW50IHJldCA9
IEZTT0s7CkBAIC01NDIsOCArNTQxLDggQEAKIHsKIAl1X2NoYXIgKmJ1ZmZl
ciwgKnA7CiAJY2xfdCBjbDsKLQlpbnQgaTsKLQl1X2ludDMyX3QgZmF0c3o7
CisJdV9pbnQgaTsKKwlzaXplX3QgZmF0c3o7CiAJb2ZmX3Qgb2ZmOwogCWlu
dCByZXQgPSBGU09LOwogCkBAIC02MzMsNyArNjMyLDcgQEAKIAkJb2ZmID0g
Ym9vdC0+UmVzU2VjdG9ycyArIGkgKiBib290LT5GQVRzZWNzOwogCQlvZmYg
Kj0gYm9vdC0+Qnl0ZXNQZXJTZWM7CiAJCWlmIChsc2Vlayhmcywgb2ZmLCBT
RUVLX1NFVCkgIT0gb2ZmCi0JCSAgICB8fCB3cml0ZShmcywgYnVmZmVyLCBm
YXRzeikgIT0gZmF0c3opIHsKKwkJICAgIHx8IChzaXplX3Qpd3JpdGUoZnMs
IGJ1ZmZlciwgZmF0c3opICE9IGZhdHN6KSB7CiAJCQlwZXJyb3IoIlVuYWJs
ZSB0byB3cml0ZSBGQVQiKTsKIAkJCXJldCA9IEZTRkFUQUw7IC8qIFJldHVy
biBpbW1lZGlhdGVseT8JCVhYWCAqLwogCQl9CkBAIC02ODMsMTcgKzY4Miw2
IEBACiAJCQkJcmV0ID0gMTsKIAkJCX0KIAkJfQotCQlpZiAoYm9vdC0+TnVt
RnJlZSAmJiBmYXRbYm9vdC0+RlNOZXh0XS5uZXh0ICE9IENMVVNUX0ZSRUUp
IHsKLQkJCXB3YXJuKCJOZXh0IGZyZWUgY2x1c3RlciBpbiBGU0luZm8gYmxv
Y2sgKCV1KSBub3QgZnJlZVxuIiwKLQkJCSAgICAgIGJvb3QtPkZTTmV4dCk7
Ci0JCQlpZiAoYXNrKDEsICJGaXgiKSkKLQkJCQlmb3IgKGhlYWQgPSBDTFVT
VF9GSVJTVDsgaGVhZCA8IGJvb3QtPk51bUNsdXN0ZXJzOyBoZWFkKyspCi0J
CQkJCWlmIChmYXRbaGVhZF0ubmV4dCA9PSBDTFVTVF9GUkVFKSB7Ci0JCQkJ
CQlib290LT5GU05leHQgPSBoZWFkOwotCQkJCQkJcmV0ID0gMTsKLQkJCQkJ
CWJyZWFrOwotCQkJCQl9Ci0JCX0KIAkJaWYgKHJldCkKIAkJCW1vZCB8PSB3
cml0ZWZzaW5mbyhkb3NmcywgYm9vdCk7CiAJfQpkaWZmIC1ydSBmc2NrX21z
ZG9zZnMub3JpZy9mc2NrX21zZG9zZnMuOCBmc2NrX21zZG9zZnMvZnNja19t
c2Rvc2ZzLjgKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2ZzY2tfbXNkb3Nmcy44
CTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisrKyBmc2Nr
X21zZG9zZnMvZnNja19tc2Rvc2ZzLjgJMjAxMC0wMS0wNyAyMjowOToxMy4w
MDAwMDAwMDAgKzAwMDAKQEAgLTExLDEzICsxMSw2IEBACiAuXCIgMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKIC5cIiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCiAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS5cIiAzLiBB
bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg
b3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLS5cIiAgICBtdXN0IGRpc3BsYXkg
dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0uXCIJVGhpcyBwcm9k
dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4gSHVz
ZW1hbm4KLS5cIglhbmQgV29sZmdhbmcgU29sZnJhbmsuCi0uXCIgNC4gTmVp
dGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVz
IG9mIGl0cyBjb250cmlidXRvcnMKLS5cIiAgICBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg
c29mdHdhcmUKLS5cIiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KIC5cIgogLlwiIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT
UyBPUgogLlwiIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKZGlmZiAt
cnUgZnNja19tc2Rvc2ZzLm9yaWcvbWFpbi5jIGZzY2tfbXNkb3Nmcy9tYWlu
LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL21haW4uYwkyMDEwLTAxLTA2IDEx
OjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2ZzL21haW4u
YwkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAwMApAQCAtMTAs
MTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt
ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0g
KiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1l
bnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv
cGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZy
YW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0
eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5E
IEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4K
ICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgogI2lu
Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVk
ZSA8ZXJybm8uaD4K

--0-1379220581-1263168743=:30404--



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