[PATCH]: 2.5.1pre9 change several if (x) BUG to BUG_ON(x)

Jordi (mumismo@wanadoo.es)
Sun, 6 Jan 2002 13:34:53 +0100


--------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: 8bit

Yes, only that, even a trained monkey is able to make this patch, but i think
is a good way to make people confortable with BUG_ON
I have changed all the BUG to BUG_ON possible except the directories arch
include, net, fs and drivers.
If you apply this patch i'll change that directories at once.
I have no really change anything so it's totally sane apply the patch.

--------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9
Content-Type: text/x-diff;
charset="iso-8859-1";
name="BUG_ON.patch"
Content-Transfer-Encoding: base64
Content-Description: make BUG_ON common in the standard kernel
Content-Disposition: attachment; filename="BUG_ON.patch"

ZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9pcGMvbXNnLmMgdjIuNS4xL2xpbnV4L2lwYy9tc2cu
YwotLS0gbGludXgvaXBjL21zZy5jCUZyaSBTZXAgMTQgMjM6MTc6MDAgMjAwMQorKysgdjIuNS4x
L2xpbnV4L2lwYy9tc2cuYwlTYXQgSmFuICA1IDE3OjIzOjU5IDIwMDIKQEAgLTMxNyw4ICszMTcs
NyBAQAogCQlyZXQgPSAtRUVYSVNUOwogCX0gZWxzZSB7CiAJCW1zcSA9IG1zZ19sb2NrKGlkKTsK
LQkJaWYobXNxPT1OVUxMKQotCQkJQlVHKCk7CisJCUJVR19PTihtc3E9PU5VTEwpOwogCQlpZiAo
aXBjcGVybXMoJm1zcS0+cV9wZXJtLCBtc2dmbGcpKQogCQkJcmV0ID0gLUVBQ0NFUzsKIAkJZWxz
ZQpAQCAtODMzLDggKzgzMiw3IEBACiAJCX0KIAkJZXJyID0gUFRSX0VSUihtc2cpOwogCQlpZihl
cnIgPT0gLUVBR0FJTikgewotCQkJaWYobXNxaWQ9PS0xKQotCQkJCUJVRygpOworCQkJQlVHX09O
KG1zcWlkPT0tMSk7CiAJCQlsaXN0X2RlbCgmbXNyX2Qucl9saXN0KTsKIAkJCWlmIChzaWduYWxf
cGVuZGluZyhjdXJyZW50KSkKIAkJCQllcnI9LUVJTlRSOwpkaWZmIC11IC0tcmVjdXJzaXZlIGxp
bnV4L2lwYy9zZW0uYyB2Mi41LjEvbGludXgvaXBjL3NlbS5jCi0tLSBsaW51eC9pcGMvc2VtLmMJ
U3VuIFNlcCAzMCAyMToyNjo0MiAyMDAxCisrKyB2Mi41LjEvbGludXgvaXBjL3NlbS5jCVNhdCBK
YW4gIDUgMTc6MjQ6NTIgMjAwMgpAQCAtMTY5LDggKzE2OSw3IEBACiAJCWVyciA9IC1FRVhJU1Q7
CiAJfSBlbHNlIHsKIAkJc21hID0gc2VtX2xvY2soaWQpOwotCQlpZihzbWE9PU5VTEwpCi0JCQlC
VUcoKTsKKwkJQlVHX09OKHNtYT09TlVMTCk7CiAJCWlmIChuc2VtcyA+IHNtYS0+c2VtX25zZW1z
KQogCQkJZXJyID0gLUVJTlZBTDsKIAkJZWxzZSBpZiAoaXBjcGVybXMoJnNtYS0+c2VtX3Blcm0s
IHNlbWZsZykpCkBAIC05MzUsOCArOTM0LDcgQEAKIAogCQl0bXAgPSBzZW1fbG9jayhzZW1pZCk7
CiAJCWlmKHRtcD09TlVMTCkgewotCQkJaWYocXVldWUucHJldiAhPSBOVUxMKQotCQkJCUJVRygp
OworCQkJQlVHX09OKHF1ZXVlLnByZXYgIT0gTlVMTCk7CiAJCQljdXJyZW50LT5zZW1zbGVlcGlu
ZyA9IE5VTEw7CiAJCQllcnJvciA9IC1FSURSTTsKIAkJCWdvdG8gb3V0X2ZyZWU7CkBAIC0xMDA0
LDggKzEwMDIsNyBAQAogCQljdXJyZW50LT5zZW1zbGVlcGluZyA9IE5VTEw7CiAKIAkJaWYgKHEt
PnByZXYpIHsKLQkJCWlmKHNtYT09TlVMTCkKLQkJCQlCVUcoKTsKKwkJCUJVR19PTihzbWE9PU5V
TEwpOwogCQkJcmVtb3ZlX2Zyb21fcXVldWUocS0+c21hLHEpOwogCQl9CiAJCWlmKHNtYSE9TlVM
TCkKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9pcGMvc2htLmMgdjIuNS4xL2xpbnV4L2lwYy9z
aG0uYwotLS0gbGludXgvaXBjL3NobS5jCVNhdCBKYW4gIDUgMTc6MDU6MTEgMjAwMgorKysgdjIu
NS4xL2xpbnV4L2lwYy9zaG0uYwlTYXQgSmFuICA1IDE3OjI2OjEwIDIwMDIKQEAgLTk5LDggKzk5
LDcgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzaG1faW5jIChpbnQgaWQpIHsKIAlzdHJ1Y3Qgc2ht
aWRfa2VybmVsICpzaHA7CiAKLQlpZighKHNocCA9IHNobV9sb2NrKGlkKSkpCi0JCUJVRygpOwor
CUJVR19PTighKHNocCA9IHNobV9sb2NrKGlkKSkpOwogCXNocC0+c2htX2F0aW0gPSBDVVJSRU5U
X1RJTUU7CiAJc2hwLT5zaG1fbHByaWQgPSBjdXJyZW50LT5waWQ7CiAJc2hwLT5zaG1fbmF0dGNo
Kys7CkBAIC0xNDMsOCArMTQyLDcgQEAKIAogCWRvd24gKCZzaG1faWRzLnNlbSk7CiAJLyogcmVt
b3ZlIGZyb20gdGhlIGxpc3Qgb2YgYXR0YWNoZXMgb2YgdGhlIHNobSBzZWdtZW50ICovCi0JaWYo
IShzaHAgPSBzaG1fbG9jayhpZCkpKQotCQlCVUcoKTsKKwlCVUdfT04oIShzaHAgPSBzaG1fbG9j
ayhpZCkpKTsKIAlzaHAtPnNobV9scHJpZCA9IGN1cnJlbnQtPnBpZDsKIAlzaHAtPnNobV9kdGlt
ID0gQ1VSUkVOVF9USU1FOwogCXNocC0+c2htX25hdHRjaC0tOwpAQCAtMjQyLDggKzI0MCw3IEBA
CiAJCWVyciA9IC1FRVhJU1Q7CiAJfSBlbHNlIHsKIAkJc2hwID0gc2htX2xvY2soaWQpOwotCQlp
ZihzaHA9PU5VTEwpCi0JCQlCVUcoKTsKKwkJQlVHX09OKHNocD09TlVMTCk7CiAJCWlmIChzaHAt
PnNobV9zZWdzeiA8IHNpemUpCiAJCQllcnIgPSAtRUlOVkFMOwogCQllbHNlIGlmIChpcGNwZXJt
cygmc2hwLT5zaG1fcGVybSwgc2htZmxnKSkKQEAgLTY0OCw4ICs2NDUsNyBAQAogCXVwX3dyaXRl
KCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOwogCiAJZG93biAoJnNobV9pZHMuc2VtKTsKLQlpZigh
KHNocCA9IHNobV9sb2NrKHNobWlkKSkpCi0JCUJVRygpOworCUJVR19PTighKHNocCA9IHNobV9s
b2NrKHNobWlkKSkpOwogCXNocC0+c2htX25hdHRjaC0tOwogCWlmKHNocC0+c2htX25hdHRjaCA9
PSAwICYmCiAJICAgc2hwLT5zaG1fZmxhZ3MgJiBTSE1fREVTVCkKZGlmZiAtdSAtLXJlY3Vyc2l2
ZSBsaW51eC9pcGMvdXRpbC5jIHYyLjUuMS9saW51eC9pcGMvdXRpbC5jCi0tLSBsaW51eC9pcGMv
dXRpbC5jCU1vbiBBdWcgMTMgMDI6Mzc6NTMgMjAwMQorKysgdjIuNS4xL2xpbnV4L2lwYy91dGls
LmMJU2F0IEphbiAgNSAxNzoyNjo0OCAyMDAyCkBAIC0xODUsMTIgKzE4NSwxMCBAQAogewogCXN0
cnVjdCBrZXJuX2lwY19wZXJtKiBwOwogCWludCBsaWQgPSBpZCAlIFNFUV9NVUxUSVBMSUVSOwot
CWlmKGxpZCA+PSBpZHMtPnNpemUpCi0JCUJVRygpOworCUJVR19PTihsaWQgPj0gaWRzLT5zaXpl
KTsKIAlwID0gaWRzLT5lbnRyaWVzW2xpZF0ucDsKIAlpZHMtPmVudHJpZXNbbGlkXS5wID0gTlVM
TDsKLQlpZihwPT1OVUxMKQotCQlCVUcoKTsKKwlCVUdfT04ocD09TlVMTCk7CiAJaWRzLT5pbl91
c2UtLTsKIAogCWlmIChsaWQgPT0gaWRzLT5tYXhfaWQpIHsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBs
aW51eC9rZXJuZWwvZGV2aWNlLmMgdjIuNS4xL2xpbnV4L2tlcm5lbC9kZXZpY2UuYwotLS0gbGlu
dXgva2VybmVsL2RldmljZS5jCVNhdCBKYW4gIDUgMTc6MDU6MTEgMjAwMgorKysgdjIuNS4xL2xp
bnV4L2tlcm5lbC9kZXZpY2UuYwlTYXQgSmFuICA1IDE3OjE1OjQ4IDIwMDIKQEAgLTQ1OCw5ICs0
NTgsOSBAQAogCWlvYnVzLT5wYXJlbnQgPSBOVUxMOwogCXVubG9ja19pb2J1cyhpb2J1cyk7CiAK
LQlpZiAoIWxpc3RfZW1wdHkoJmlvYnVzLT5kZXZpY2VzKSB8fAotCSAgICAhbGlzdF9lbXB0eSgm
aW9idXMtPmNoaWxkcmVuKSkKLQkJQlVHKCk7CisJQlVHX09OKCFsaXN0X2VtcHR5KCZpb2J1cy0+
ZGV2aWNlcykgfHwKKwkgICAgIWxpc3RfZW1wdHkoJmlvYnVzLT5jaGlsZHJlbikpOworCQogCiAJ
LyogZGlzYXZvdyBwYXJlbnQncyBrbm93bGVkZ2UgKi8KIAlpZiAocGFyZW50KSB7CmRpZmYgLXUg
LS1yZWN1cnNpdmUgbGludXgva2VybmVsL2V4aXQuYyB2Mi41LjEvbGludXgva2VybmVsL2V4aXQu
YwotLS0gbGludXgva2VybmVsL2V4aXQuYwlTYXQgSmFuICA1IDE3OjA1OjExIDIwMDIKKysrIHYy
LjUuMS9saW51eC9rZXJuZWwvZXhpdC5jCVNhdCBKYW4gIDUgMTc6MTc6NTcgMjAwMgpAQCAtMzE4
LDcgKzMxOCw3IEBACiAJbW1fcmVsZWFzZSgpOwogCWlmIChtbSkgewogCQlhdG9taWNfaW5jKCZt
bS0+bW1fY291bnQpOwotCQlpZiAobW0gIT0gdHNrLT5hY3RpdmVfbW0pIEJVRygpOworCQlCVUdf
T04obW0gIT0gdHNrLT5hY3RpdmVfbW0pOwogCQkvKiBtb3JlIGEgbWVtb3J5IGJhcnJpZXIgdGhh
biBhIHJlYWwgbG9jayAqLwogCQl0YXNrX2xvY2sodHNrKTsKIAkJdHNrLT5tbSA9IE5VTEw7CmRp
ZmYgLXUgLS1yZWN1cnNpdmUgbGludXgva2VybmVsL2ZvcmsuYyB2Mi41LjEvbGludXgva2VybmVs
L2ZvcmsuYwotLS0gbGludXgva2VybmVsL2ZvcmsuYwlTYXQgSmFuICA1IDE3OjA1OjExIDIwMDIK
KysrIHYyLjUuMS9saW51eC9rZXJuZWwvZm9yay5jCVNhdCBKYW4gIDUgMTc6MTg6MjIgMjAwMgpA
QCAtMjQ5LDcgKzI0OSw3IEBACiAgKi8KIGlubGluZSB2b2lkIF9fbW1kcm9wKHN0cnVjdCBtbV9z
dHJ1Y3QgKm1tKQogewotCWlmIChtbSA9PSAmaW5pdF9tbSkgQlVHKCk7CisJQlVHX09OKG1tID09
ICZpbml0X21tKTsKIAlwZ2RfZnJlZShtbS0+cGdkKTsKIAlkZXN0cm95X2NvbnRleHQobW0pOwog
CWZyZWVfbW0obW0pOwpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4L2tlcm5lbC9wbS5jIHYyLjUu
MS9saW51eC9rZXJuZWwvcG0uYwotLS0gbGludXgva2VybmVsL3BtLmMJU2F0IEphbiAgNSAxNzow
NToxMSAyMDAyCisrKyB2Mi41LjEvbGludXgva2VybmVsL3BtLmMJU2F0IEphbiAgNSAxNzoxOToy
MiAyMDAyCkBAIC0xNTYsOCArMTU2LDcgQEAKIAlpbnQgc3RhdHVzID0gMDsKIAlpbnQgcHJldl9z
dGF0ZSwgbmV4dF9zdGF0ZTsKIAotCWlmIChpbl9pbnRlcnJ1cHQoKSkKLQkJQlVHKCk7CisJQlVH
X09OIChpbl9pbnRlcnJ1cHQoKSk7CiAKIAlzd2l0Y2ggKHJxc3QpIHsKIAljYXNlIFBNX1NVU1BF
TkQ6CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGludXgva2VybmVsL3ByaW50ay5jIHYyLjUuMS9saW51
eC9rZXJuZWwvcHJpbnRrLmMKLS0tIGxpbnV4L2tlcm5lbC9wcmludGsuYwlTdW4gTm92IDExIDE5
OjIwOjIxIDIwMDEKKysrIHYyLjUuMS9saW51eC9rZXJuZWwvcHJpbnRrLmMJU2F0IEphbiAgNSAx
NzoyMDowOSAyMDAyCkBAIC0zMzAsOCArMzMwLDcgQEAKIAl1bnNpZ25lZCBsb25nIGN1cl9pbmRl
eCwgc3RhcnRfcHJpbnQ7CiAJc3RhdGljIGludCBtc2dfbGV2ZWwgPSAtMTsKIAotCWlmICgoKGxv
bmcpKHN0YXJ0IC0gZW5kKSkgPiAwKQotCQlCVUcoKTsKKwlCVUdfT04oKChsb25nKShzdGFydCAt
IGVuZCkpID4gMCk7CiAKIAljdXJfaW5kZXggPSBzdGFydDsKIAlzdGFydF9wcmludCA9IHN0YXJ0
OwpAQCAtNDY4LDggKzQ2Nyw3IEBACiAgKi8KIHZvaWQgYWNxdWlyZV9jb25zb2xlX3NlbSh2b2lk
KQogewotCWlmIChpbl9pbnRlcnJ1cHQoKSkKLQkJQlVHKCk7CisJQlVHX09OKGluX2ludGVycnVw
dCgpKTsKIAlkb3duKCZjb25zb2xlX3NlbSk7CiAJY29uc29sZV9tYXlfc2NoZWR1bGUgPSAxOwog
fQpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4L2tlcm5lbC9zY2hlZC5jIHYyLjUuMS9saW51eC9r
ZXJuZWwvc2NoZWQuYwotLS0gbGludXgva2VybmVsL3NjaGVkLmMJU2F0IEphbiAgNSAxNzowNTox
MSAyMDAyCisrKyB2Mi41LjEvbGludXgva2VybmVsL3NjaGVkLmMJU2F0IEphbiAgNSAxNzoyMToz
MyAyMDAyCkBAIC01NjUsNyArNTY1LDcgQEAKIAogCXNwaW5fbG9ja19wcmVmZXRjaCgmcnVucXVl
dWVfbG9jayk7CiAKLQlpZiAoIWN1cnJlbnQtPmFjdGl2ZV9tbSkgQlVHKCk7CisJQlVHX09OICgh
Y3VycmVudC0+YWN0aXZlX21tKTsKIG5lZWRfcmVzY2hlZF9iYWNrOgogCXByZXYgPSBjdXJyZW50
OwogCXRoaXNfY3B1ID0gcHJldi0+cHJvY2Vzc29yOwpAQCAtNjgyLDEyICs2ODIsMTIgQEAKIAkJ
c3RydWN0IG1tX3N0cnVjdCAqbW0gPSBuZXh0LT5tbTsKIAkJc3RydWN0IG1tX3N0cnVjdCAqb2xk
bW0gPSBwcmV2LT5hY3RpdmVfbW07CiAJCWlmICghbW0pIHsKLQkJCWlmIChuZXh0LT5hY3RpdmVf
bW0pIEJVRygpOworCQkJQlVHX09OKG5leHQtPmFjdGl2ZV9tbSk7CiAJCQluZXh0LT5hY3RpdmVf
bW0gPSBvbGRtbTsKIAkJCWF0b21pY19pbmMoJm9sZG1tLT5tbV9jb3VudCk7CiAJCQllbnRlcl9s
YXp5X3RsYihvbGRtbSwgbmV4dCwgdGhpc19jcHUpOwogCQl9IGVsc2UgewotCQkJaWYgKG5leHQt
PmFjdGl2ZV9tbSAhPSBtbSkgQlVHKCk7CisJCQlCVUdfT04gKG5leHQtPmFjdGl2ZV9tbSAhPSBt
bSk7CiAJCQlzd2l0Y2hfbW0ob2xkbW0sIG1tLCBuZXh0LCB0aGlzX2NwdSk7CiAJCX0KIApkaWZm
IC11IC0tcmVjdXJzaXZlIGxpbnV4L2tlcm5lbC9zb2Z0aXJxLmMgdjIuNS4xL2xpbnV4L2tlcm5l
bC9zb2Z0aXJxLmMKLS0tIGxpbnV4L2tlcm5lbC9zb2Z0aXJxLmMJU2F0IERlYyAgMSAwMDo1Mzoy
OCAyMDAxCisrKyB2Mi41LjEvbGludXgva2VybmVsL3NvZnRpcnEuYwlTYXQgSmFuICA1IDE3OjIy
OjUwIDIwMDIKQEAgLTE5MCw4ICsxOTAsNyBAQAogCiAJCWlmICh0YXNrbGV0X3RyeWxvY2sodCkp
IHsKIAkJCWlmICghYXRvbWljX3JlYWQoJnQtPmNvdW50KSkgewotCQkJCWlmICghdGVzdF9hbmRf
Y2xlYXJfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5zdGF0ZSkpCi0JCQkJCUJVRygpOwor
CQkJCUJVR19PTighdGVzdF9hbmRfY2xlYXJfYml0KFRBU0tMRVRfU1RBVEVfU0NIRUQsICZ0LT5z
dGF0ZSkpOwogCQkJCXQtPmZ1bmModC0+ZGF0YSk7CiAJCQkJdGFza2xldF91bmxvY2sodCk7CiAJ
CQkJY29udGludWU7CkBAIC0yMjQsOCArMjIzLDcgQEAKIAogCQlpZiAodGFza2xldF90cnlsb2Nr
KHQpKSB7CiAJCQlpZiAoIWF0b21pY19yZWFkKCZ0LT5jb3VudCkpIHsKLQkJCQlpZiAoIXRlc3Rf
YW5kX2NsZWFyX2JpdChUQVNLTEVUX1NUQVRFX1NDSEVELCAmdC0+c3RhdGUpKQotCQkJCQlCVUco
KTsKKwkJCQlCVUdfT04gKCF0ZXN0X2FuZF9jbGVhcl9iaXQoVEFTS0xFVF9TVEFURV9TQ0hFRCwg
JnQtPnN0YXRlKSk7CiAJCQkJdC0+ZnVuYyh0LT5kYXRhKTsKIAkJCQl0YXNrbGV0X3VubG9jayh0
KTsKIAkJCQljb250aW51ZTsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9ib290bWVtLmMg
djIuNS4xL2xpbnV4L21tL2Jvb3RtZW0uYwotLS0gbGludXgvbW0vYm9vdG1lbS5jCVR1ZSBOb3Yg
MjcgMTg6MjM6MjcgMjAwMQorKysgdjIuNS4xL2xpbnV4L21tL2Jvb3RtZW0uYwlTdW4gSmFuICA2
IDAzOjQyOjU3IDIwMDIKQEAgLTgyLDE4ICs4MiwxMyBAQAogCQkJCQkJCVBBR0VfU0laRS0xKS9Q
QUdFX1NJWkU7CiAJdW5zaWduZWQgbG9uZyBlbmQgPSAoYWRkciArIHNpemUgKyBQQUdFX1NJWkUt
MSkvUEFHRV9TSVpFOwogCi0JaWYgKCFzaXplKSBCVUcoKTsKKwlCVUdfT04gKCFzaXplKTsKIAot
CWlmIChzaWR4IDwgMCkKLQkJQlVHKCk7Ci0JaWYgKGVpZHggPCAwKQotCQlCVUcoKTsKLQlpZiAo
c2lkeCA+PSBlaWR4KQotCQlCVUcoKTsKLQlpZiAoKGFkZHIgPj4gUEFHRV9TSElGVCkgPj0gYmRh
dGEtPm5vZGVfbG93X3BmbikKLQkJQlVHKCk7Ci0JaWYgKGVuZCA+IGJkYXRhLT5ub2RlX2xvd19w
Zm4pCi0JCUJVRygpOworCUJVR19PTihzaWR4IDwgMCk7CisJQlVHX09OIChlaWR4IDwgMCk7CisJ
QlVHX09OIChzaWR4ID49IGVpZHgpOworCUJVR19PTiAoKGFkZHIgPj4gUEFHRV9TSElGVCkgPj0g
YmRhdGEtPm5vZGVfbG93X3Bmbik7CisJQlVHX09OIChlbmQgPiBiZGF0YS0+bm9kZV9sb3dfcGZu
KTsKIAlmb3IgKGkgPSBzaWR4OyBpIDwgZWlkeDsgaSsrKQogCQlpZiAodGVzdF9hbmRfc2V0X2Jp
dChpLCBiZGF0YS0+bm9kZV9ib290bWVtX21hcCkpCiAJCQlwcmludGsoImhtLCBwYWdlICUwOGx4
IHJlc2VydmVkIHR3aWNlLlxuIiwgaSpQQUdFX1NJWkUpOwpAQCAtMTExLDkgKzEwNiw4IEBACiAJ
dW5zaWduZWQgbG9uZyBlaWR4ID0gKGFkZHIgKyBzaXplIC0gYmRhdGEtPm5vZGVfYm9vdF9zdGFy
dCkvUEFHRV9TSVpFOwogCXVuc2lnbmVkIGxvbmcgZW5kID0gKGFkZHIgKyBzaXplKS9QQUdFX1NJ
WkU7CiAKLQlpZiAoIXNpemUpIEJVRygpOwotCWlmIChlbmQgPiBiZGF0YS0+bm9kZV9sb3dfcGZu
KQotCQlCVUcoKTsKKwlCVUdfT04gKCFzaXplKTsKKwlCVUdfT04gKGVuZCA+IGJkYXRhLT5ub2Rl
X2xvd19wZm4pOwogCiAJLyoKIAkgKiBSb3VuZCB1cCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBhZGRy
ZXNzLgpAQCAtMTIyLDggKzExNiw3IEBACiAJc2lkeCA9IHN0YXJ0IC0gKGJkYXRhLT5ub2RlX2Jv
b3Rfc3RhcnQvUEFHRV9TSVpFKTsKIAogCWZvciAoaSA9IHNpZHg7IGkgPCBlaWR4OyBpKyspIHsK
LQkJaWYgKCF0ZXN0X2FuZF9jbGVhcl9iaXQoaSwgYmRhdGEtPm5vZGVfYm9vdG1lbV9tYXApKQot
CQkJQlVHKCk7CisJCUJVR19PTiAoIXRlc3RfYW5kX2NsZWFyX2JpdChpLCBiZGF0YS0+bm9kZV9i
b290bWVtX21hcCkpOwogCX0KIH0KIApAQCAtMTUwLDEwICsxNDMsOSBAQAogCXVuc2lnbmVkIGxv
bmcgZWlkeCA9IGJkYXRhLT5ub2RlX2xvd19wZm4gLSAoYmRhdGEtPm5vZGVfYm9vdF9zdGFydCA+
PgogCQkJCQkJCVBBR0VfU0hJRlQpOwogCi0JaWYgKCFzaXplKSBCVUcoKTsKKwlCVUdfT04oIXNp
emUpOwogCi0JaWYgKGFsaWduICYgKGFsaWduLTEpKQotCQlCVUcoKTsKKwlCVUdfT04gKGFsaWdu
ICYgKGFsaWduLTEpKTsKIAogCS8qCiAJICogV2UgdHJ5IHRvIGFsbG9jYXRlIGJvb3RtZW0gcGFn
ZXMgYWJvdmUgJ2dvYWwnCkBAIC0xOTAsOCArMTgyLDcgQEAKIAl9CiAJcmV0dXJuIE5VTEw7CiBm
b3VuZDoKLQlpZiAoc3RhcnQgPj0gZWlkeCkKLQkJQlVHKCk7CisJQlVHX09OKHN0YXJ0ID49IGVp
ZHgpOwogCiAJLyoKIAkgKiBJcyB0aGUgbmV4dCBwYWdlIG9mIHRoZSBwcmV2aW91cyBhbGxvY2F0
aW9uLWVuZCB0aGUgc3RhcnQKQEAgLTIwMSw4ICsxOTIsOCBAQAogCWlmIChhbGlnbiA8PSBQQUdF
X1NJWkUKIAkgICAgJiYgYmRhdGEtPmxhc3Rfb2Zmc2V0ICYmIGJkYXRhLT5sYXN0X3BvcysxID09
IHN0YXJ0KSB7CiAJCW9mZnNldCA9IChiZGF0YS0+bGFzdF9vZmZzZXQrYWxpZ24tMSkgJiB+KGFs
aWduLTEpOwotCQlpZiAob2Zmc2V0ID4gUEFHRV9TSVpFKQotCQkJQlVHKCk7CisJCUJVR19PTihv
ZmZzZXQgPiBQQUdFX1NJWkUpOworCQkKIAkJcmVtYWluaW5nX3NpemUgPSBQQUdFX1NJWkUtb2Zm
c2V0OwogCQlpZiAoc2l6ZSA8IHJlbWFpbmluZ19zaXplKSB7CiAJCQlhcmVhc2l6ZSA9IDA7CkBA
IC0yMjgsOCArMjE5LDggQEAKIAkgKiBSZXNlcnZlIHRoZSBhcmVhIG5vdzoKIAkgKi8KIAlmb3Ig
KGkgPSBzdGFydDsgaSA8IHN0YXJ0K2FyZWFzaXplOyBpKyspCi0JCWlmICh0ZXN0X2FuZF9zZXRf
Yml0KGksIGJkYXRhLT5ub2RlX2Jvb3RtZW1fbWFwKSkKLQkJCUJVRygpOworCQlCVUdfT04odGVz
dF9hbmRfc2V0X2JpdChpLCBiZGF0YS0+bm9kZV9ib290bWVtX21hcCkpOworCQogCW1lbXNldChy
ZXQsIDAsIHNpemUpOwogCXJldHVybiByZXQ7CiB9CkBAIC0yNDEsNyArMjMyLDcgQEAKIAl1bnNp
Z25lZCBsb25nIGksIGNvdW50LCB0b3RhbCA9IDA7CiAJdW5zaWduZWQgbG9uZyBpZHg7CiAKLQlp
ZiAoIWJkYXRhLT5ub2RlX2Jvb3RtZW1fbWFwKSBCVUcoKTsKKwlCVUdfT04oIWJkYXRhLT5ub2Rl
X2Jvb3RtZW1fbWFwKTsgCiAKIAljb3VudCA9IDA7CiAJaWR4ID0gYmRhdGEtPm5vZGVfbG93X3Bm
biAtIChiZGF0YS0+bm9kZV9ib290X3N0YXJ0ID4+IFBBR0VfU0hJRlQpOwpkaWZmIC11IC0tcmVj
dXJzaXZlIGxpbnV4L21tL2ZpbGVtYXAuYyB2Mi41LjEvbGludXgvbW0vZmlsZW1hcC5jCi0tLSBs
aW51eC9tbS9maWxlbWFwLmMJU2F0IEphbiAgNSAxNzowNToxMiAyMDAyCisrKyB2Mi41LjEvbGlu
dXgvbW0vZmlsZW1hcC5jCVN1biBKYW4gIDYgMDM6NTQ6MjQgMjAwMgpAQCAtMTE0LDcgKzExNCw3
IEBACiAgKi8KIHZvaWQgX19yZW1vdmVfaW5vZGVfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSkKIHsK
LQlpZiAoUGFnZURpcnR5KHBhZ2UpKSBCVUcoKTsKKwlCVUdfT04oUGFnZURpcnR5KHBhZ2UpKTsK
IAlyZW1vdmVfcGFnZV9mcm9tX2lub2RlX3F1ZXVlKHBhZ2UpOwogCXJlbW92ZV9wYWdlX2Zyb21f
aGFzaF9xdWV1ZShwYWdlKTsKIH0KQEAgLTY0Nyw4ICs2NDcsNyBAQAogICovCiB2b2lkIGFkZF90
b19wYWdlX2NhY2hlX2xvY2tlZChzdHJ1Y3QgcGFnZSAqIHBhZ2UsIHN0cnVjdCBhZGRyZXNzX3Nw
YWNlICptYXBwaW5nLCB1bnNpZ25lZCBsb25nIGluZGV4KQogewotCWlmICghUGFnZUxvY2tlZChw
YWdlKSkKLQkJQlVHKCk7CisJQlVHX09OKCFQYWdlTG9ja2VkKHBhZ2UpKTsKIAogCXBhZ2UtPmlu
ZGV4ID0gaW5kZXg7CiAJcGFnZV9jYWNoZV9nZXQocGFnZSk7CkBAIC03OTIsOCArNzkxLDggQEAK
IHsKIAljbGVhcl9iaXQoUEdfbGF1bmRlciwgJihwYWdlKS0+ZmxhZ3MpOwogCXNtcF9tYl9fYmVm
b3JlX2NsZWFyX2JpdCgpOwotCWlmICghdGVzdF9hbmRfY2xlYXJfYml0KFBHX2xvY2tlZCwgJihw
YWdlKS0+ZmxhZ3MpKQotCQlCVUcoKTsKKwlCVUdfT04gKCF0ZXN0X2FuZF9jbGVhcl9iaXQoUEdf
bG9ja2VkLCAmKHBhZ2UpLT5mbGFncykpOworCiAJc21wX21iX19hZnRlcl9jbGVhcl9iaXQoKTsg
CiAJaWYgKHdhaXRxdWV1ZV9hY3RpdmUoJihwYWdlKS0+d2FpdCkpCiAJd2FrZV91cCgmKHBhZ2Up
LT53YWl0KTsKQEAgLTIwOTUsOCArMjA5NCw4IEBACiAKIAlkaXIgPSBwZ2Rfb2Zmc2V0KHZtYS0+
dm1fbW0sIGFkZHJlc3MpOwogCWZsdXNoX2NhY2hlX3JhbmdlKHZtYS0+dm1fbW0sIGVuZCAtIHNp
emUsIGVuZCk7Ci0JaWYgKGFkZHJlc3MgPj0gZW5kKQotCQlCVUcoKTsKKwlCVUdfT04oYWRkcmVz
cyA+PSBlbmQpOworCQogCWRvIHsKIAkJZXJyb3IgfD0gZmlsZW1hcF9zeW5jX3BtZF9yYW5nZShk
aXIsIGFkZHJlc3MsIGVuZCAtIGFkZHJlc3MsIHZtYSwgZmxhZ3MpOwogCQlhZGRyZXNzID0gKGFk
ZHJlc3MgKyBQR0RJUl9TSVpFKSAmIFBHRElSX01BU0s7CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGlu
dXgvbW0vaGlnaG1lbS5jIHYyLjUuMS9saW51eC9tbS9oaWdobWVtLmMKLS0tIGxpbnV4L21tL2hp
Z2htZW0uYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIwMDIKKysrIHYyLjUuMS9saW51eC9tbS9oaWdo
bWVtLmMJU3VuIEphbiAgNiAwMzo1NjoxOSAyMDAyCkBAIC03Miw4ICs3Miw3IEBACiAJCXBrbWFw
X2NvdW50W2ldID0gMDsKIAogCQkvKiBzYW5pdHkgY2hlY2sgKi8KLQkJaWYgKHB0ZV9ub25lKHBr
bWFwX3BhZ2VfdGFibGVbaV0pKQotCQkJQlVHKCk7CisJCUJVR19PTihwdGVfbm9uZShwa21hcF9w
YWdlX3RhYmxlW2ldKSk7CiAKIAkJLyoKIAkJICogRG9uJ3QgbmVlZCBhbiBhdG9taWMgZmV0Y2gt
YW5kLWNsZWFyIG9wIGhlcmU7CkBAIC0xNTQsOCArMTUzLDggQEAKIAlpZiAoIXZhZGRyKQogCQl2
YWRkciA9IG1hcF9uZXdfdmlydHVhbChwYWdlKTsKIAlwa21hcF9jb3VudFtQS01BUF9OUih2YWRk
cildKys7Ci0JaWYgKHBrbWFwX2NvdW50W1BLTUFQX05SKHZhZGRyKV0gPCAyKQotCQlCVUcoKTsK
KwlCVUdfT04ocGttYXBfY291bnRbUEtNQVBfTlIodmFkZHIpXSA8IDIpOworCiAJc3Bpbl91bmxv
Y2soJmttYXBfbG9jayk7CiAJcmV0dXJuICh2b2lkKikgdmFkZHI7CiB9CkBAIC0xNjgsOCArMTY3
LDggQEAKIAogCXNwaW5fbG9jaygma21hcF9sb2NrKTsKIAl2YWRkciA9ICh1bnNpZ25lZCBsb25n
KSBwYWdlLT52aXJ0dWFsOwotCWlmICghdmFkZHIpCi0JCUJVRygpOworCUJVR19PTighdmFkZHIp
OworCQogCW5yID0gUEtNQVBfTlIodmFkZHIpOwogCiAJLyoKQEAgLTIxMiw4ICsyMTEsOCBAQAog
CQlyZXR1cm4gMDsKIAogCXBhZ2VfcG9vbCA9IG1lbXBvb2xfY3JlYXRlKFBPT0xfU0laRSwgcGFn
ZV9wb29sX2FsbG9jLCBwYWdlX3Bvb2xfZnJlZSwgTlVMTCk7Ci0JaWYgKCFwYWdlX3Bvb2wpCi0J
CUJVRygpOworCUJVR19PTighcGFnZV9wb29sKTsKKwkKIAlwcmludGsoImhpZ2htZW0gYm91bmNl
IHBvb2wgc2l6ZTogJWQgcGFnZXNcbiIsIFBPT0xfU0laRSk7CiAKIAlyZXR1cm4gMDsKQEAgLTI1
NSw4ICsyNTQsOCBAQAogCQlyZXR1cm4gMDsKIAogCWlzYV9wYWdlX3Bvb2wgPSBtZW1wb29sX2Ny
ZWF0ZShJU0FfUE9PTF9TSVpFLCBwYWdlX3Bvb2xfYWxsb2MsIHBhZ2VfcG9vbF9mcmVlLCAodm9p
ZCAqKSBfX0dGUF9ETUEpOwotCWlmICghaXNhX3BhZ2VfcG9vbCkKLQkJQlVHKCk7CisJQlVHX09O
KCFpc2FfcGFnZV9wb29sKTsKKwkJCiAKIAlwcmludGsoImlzYSBib3VuY2UgcG9vbCBzaXplOiAl
ZCBwYWdlc1xuIiwgSVNBX1BPT0xfU0laRSk7CiAJcmV0dXJuIDA7CmRpZmYgLXUgLS1yZWN1cnNp
dmUgbGludXgvbW0vbWVtb3J5LmMgdjIuNS4xL2xpbnV4L21tL21lbW9yeS5jCi0tLSBsaW51eC9t
bS9tZW1vcnkuYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIwMDIKKysrIHYyLjUuMS9saW51eC9tbS9t
ZW1vcnkuYwlTdW4gSmFuICA2IDAzOjU4OjUzIDIwMDIKQEAgLTM3MSw4ICszNzEsOCBAQAogCSAq
IGV2ZW4gaWYga3N3YXBkIGhhcHBlbmVkIHRvIGJlIGxvb2tpbmcgYXQgdGhpcwogCSAqIHByb2Nl
c3Mgd2UgX3dhbnRfIGl0IHRvIGdldCBzdHVjay4KIAkgKi8KLQlpZiAoYWRkcmVzcyA+PSBlbmQp
Ci0JCUJVRygpOworCUJVR19PTiAoYWRkcmVzcyA+PSBlbmQpOworCQogCXNwaW5fbG9jaygmbW0t
PnBhZ2VfdGFibGVfbG9jayk7CiAJZmx1c2hfY2FjaGVfcmFuZ2UobW0sIGFkZHJlc3MsIGVuZCk7
CiAJdGxiID0gdGxiX2dhdGhlcl9tbXUobW0pOwpAQCAtNTIwLDcgKzUyMCw4IEBACiAJCiAJcGdj
b3VudCA9ICh2YSArIGxlbiArIFBBR0VfU0laRSAtIDEpL1BBR0VfU0laRSAtIHZhL1BBR0VfU0la
RTsKIAkvKiBtYXBwaW5nIDAgYnl0ZXMgaXMgbm90IHBlcm1pdHRlZCAqLwotCWlmICghcGdjb3Vu
dCkgQlVHKCk7CisJQlVHX09OICghcGdjb3VudCk7CisJCiAJZXJyID0gZXhwYW5kX2tpb2J1Zihp
b2J1ZiwgcGdjb3VudCk7CiAJaWYgKGVycikKIAkJcmV0dXJuIGVycjsKQEAgLTc2Nyw4ICs3Njgs
NyBAQAogCiAJZGlyID0gcGdkX29mZnNldChtbSwgYWRkcmVzcyk7CiAJZmx1c2hfY2FjaGVfcmFu
Z2UobW0sIGJlZywgZW5kKTsKLQlpZiAoYWRkcmVzcyA+PSBlbmQpCi0JCUJVRygpOworCUJVR19P
TiAoYWRkcmVzcyA+PSBlbmQpOwogCiAJc3Bpbl9sb2NrKCZtbS0+cGFnZV90YWJsZV9sb2NrKTsK
IAlkbyB7CkBAIC04NDksOCArODQ5LDcgQEAKIAlwaHlzX2FkZHIgLT0gZnJvbTsKIAlkaXIgPSBw
Z2Rfb2Zmc2V0KG1tLCBmcm9tKTsKIAlmbHVzaF9jYWNoZV9yYW5nZShtbSwgYmVnLCBlbmQpOwot
CWlmIChmcm9tID49IGVuZCkKLQkJQlVHKCk7CisJQlVHX09OIChmcm9tID49IGVuZCk7CiAKIAlz
cGluX2xvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwogCWRvIHsKQEAgLTE0MzQsMTAgKzE0MzMs
MTAgQEAKIAogCXZtYSA9IGZpbmRfdm1hKGN1cnJlbnQtPm1tLCBhZGRyKTsKIAl3cml0ZSA9ICh2
bWEtPnZtX2ZsYWdzICYgVk1fV1JJVEUpICE9IDA7Ci0JaWYgKGFkZHIgPj0gZW5kKQotCQlCVUco
KTsKLQlpZiAoZW5kID4gdm1hLT52bV9lbmQpCi0JCUJVRygpOworCUJVR19PTiAoYWRkciA+PSBl
bmQpOworCQorCUJVR19PTiAoZW5kID4gdm1hLT52bV9lbmQpOworCiAJbGVuID0gKGVuZCtQQUdF
X1NJWkUtMSkvUEFHRV9TSVpFLWFkZHIvUEFHRV9TSVpFOwogCXJldCA9IGdldF91c2VyX3BhZ2Vz
KGN1cnJlbnQsIGN1cnJlbnQtPm1tLCBhZGRyLAogCQkJbGVuLCB3cml0ZSwgMCwgTlVMTCwgTlVM
TCk7CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGludXgvbW0vbWVtcG9vbC5jIHYyLjUuMS9saW51eC9t
bS9tZW1wb29sLmMKLS0tIGxpbnV4L21tL21lbXBvb2wuYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIw
MDIKKysrIHYyLjUuMS9saW51eC9tbS9tZW1wb29sLmMJU3VuIEphbiAgNiAwMzo1OTo1MyAyMDAy
CkBAIC05OCw4ICs5OCw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAlzdHJ1Y3QgbGlzdF9o
ZWFkICp0bXA7CiAKLQlpZiAobmV3X21pbl9uciA8PSAwKQotCQlCVUcoKTsKKwlCVUdfT04gKG5l
d19taW5fbnIgPD0gMCk7CiAKIAlzcGluX2xvY2tfaXJxc2F2ZSgmcG9vbC0+bG9jaywgZmxhZ3Mp
OwogCWlmIChuZXdfbWluX25yIDwgcG9vbC0+bWluX25yKSB7CkBAIC0xMDksOCArMTA4LDggQEAK
IAkJICovCiAJCXdoaWxlIChwb29sLT5jdXJyX25yID4gcG9vbC0+bWluX25yKSB7CiAJCQl0bXAg
PSBwb29sLT5lbGVtZW50cy5uZXh0OwotCQkJaWYgKHRtcCA9PSAmcG9vbC0+ZWxlbWVudHMpCi0J
CQkJQlVHKCk7CisJCQlCVUdfT04gKHRtcCA9PSAmcG9vbC0+ZWxlbWVudHMpOworCQkJCiAJCQls
aXN0X2RlbCh0bXApOwogCQkJZWxlbWVudCA9IHRtcDsKIAkJCXBvb2wtPmN1cnJfbnItLTsKQEAg
LTE2NCw4ICsxNjMsOCBAQAogCQlwb29sLT5mcmVlKGVsZW1lbnQsIHBvb2wtPnBvb2xfZGF0YSk7
CiAJCXBvb2wtPmN1cnJfbnItLTsKIAl9Ci0JaWYgKHBvb2wtPmN1cnJfbnIpCi0JCUJVRygpOwor
CSBCVUdfT04gKHBvb2wtPmN1cnJfbnIpOworCSAKIAlrZnJlZShwb29sKTsKIH0KIApkaWZmIC11
IC0tcmVjdXJzaXZlIGxpbnV4L21tL21tYXAuYyB2Mi41LjEvbGludXgvbW0vbW1hcC5jCi0tLSBs
aW51eC9tbS9tbWFwLmMJU3VuIE5vdiAgNCAxOToxNzoyMCAyMDAxCisrKyB2Mi41LjEvbGludXgv
bW0vbW1hcC5jCVN1biBKYW4gIDYgMDQ6MDE6NDkgMjAwMgpAQCAtMjM1LDggKzIzNSw4IEBACiAJ
aSA9IGJyb3dzZV9yYihtbS0+bW1fcmIucmJfbm9kZSk7CiAJaWYgKGkgIT0gbW0tPm1hcF9jb3Vu
dCkKIAkJcHJpbnRrKCJtYXBfY291bnQgJWQgcmIgJWRcbiIsIG1tLT5tYXBfY291bnQsIGkpLCBi
dWcgPSAxOwotCWlmIChidWcpCi0JCUJVRygpOworCUJVR19PTiAoYnVnKTsKKwkJCiB9CiAjZWxz
ZQogI2RlZmluZSB2YWxpZGF0ZV9tbShtbSkgZG8geyB9IHdoaWxlICgwKQpAQCAtNzA1LDggKzcw
NSw4IEBACiAJCQkqcHByZXYgPSBOVUxMOwogCQkJaWYgKHJiX3ByZXYpCiAJCQkJKnBwcmV2ID0g
cmJfZW50cnkocmJfcHJldiwgc3RydWN0IHZtX2FyZWFfc3RydWN0LCB2bV9yYik7Ci0JCQlpZiAo
KHJiX3ByZXYgPyAoKnBwcmV2KS0+dm1fbmV4dCA6IG1tLT5tbWFwKSAhPSB2bWEpCi0JCQkJQlVH
KCk7CisJCQlCVUdfT04oKHJiX3ByZXYgPyAoKnBwcmV2KS0+dm1fbmV4dCA6IG1tLT5tbWFwKSAh
PSB2bWEpOworCQkJCQogCQkJcmV0dXJuIHZtYTsKIAkJfQogCX0KQEAgLTExMzYsOCArMTEzNiw3
IEBACiAJZmx1c2hfdGxiX21tKG1tKTsKIAogCS8qIFRoaXMgaXMganVzdCBkZWJ1Z2dpbmcgKi8K
LQlpZiAobW0tPm1hcF9jb3VudCkKLQkJQlVHKCk7CisJQlVHX09OIChtbS0+bWFwX2NvdW50KTsK
IAogCWNsZWFyX3BhZ2VfdGFibGVzKG1tLCBGSVJTVF9VU0VSX1BHRF9OUiwgVVNFUl9QVFJTX1BF
Ul9QR0QpOwogfQpAQCAtMTE1Miw4ICsxMTUxLDggQEAKIAlyYl9ub2RlX3QgKiogcmJfbGluaywg
KiByYl9wYXJlbnQ7CiAKIAlfX3ZtYSA9IGZpbmRfdm1hX3ByZXBhcmUobW0sIHZtYS0+dm1fc3Rh
cnQsICZwcmV2LCAmcmJfbGluaywgJnJiX3BhcmVudCk7Ci0JaWYgKF9fdm1hICYmIF9fdm1hLT52
bV9zdGFydCA8IHZtYS0+dm1fZW5kKQotCQlCVUcoKTsKKwlCVUdfT04oX192bWEgJiYgX192bWEt
PnZtX3N0YXJ0IDwgdm1hLT52bV9lbmQpOworCQogCV9fdm1hX2xpbmsobW0sIHZtYSwgcHJldiwg
cmJfbGluaywgcmJfcGFyZW50KTsKIAltbS0+bWFwX2NvdW50Kys7CiAJdmFsaWRhdGVfbW0obW0p
OwpAQCAtMTE2NSw4ICsxMTY0LDggQEAKIAlyYl9ub2RlX3QgKiogcmJfbGluaywgKiByYl9wYXJl
bnQ7CiAKIAlfX3ZtYSA9IGZpbmRfdm1hX3ByZXBhcmUobW0sIHZtYS0+dm1fc3RhcnQsICZwcmV2
LCAmcmJfbGluaywgJnJiX3BhcmVudCk7Ci0JaWYgKF9fdm1hICYmIF9fdm1hLT52bV9zdGFydCA8
IHZtYS0+dm1fZW5kKQotCQlCVUcoKTsKKwlCVUdfT04gKF9fdm1hICYmIF9fdm1hLT52bV9zdGFy
dCA8IHZtYS0+dm1fZW5kKTsKKwogCXZtYV9saW5rKG1tLCB2bWEsIHByZXYsIHJiX2xpbmssIHJi
X3BhcmVudCk7CiAJdmFsaWRhdGVfbW0obW0pOwogfQpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4
L21tL21wcm90ZWN0LmMgdjIuNS4xL2xpbnV4L21tL21wcm90ZWN0LmMKLS0tIGxpbnV4L21tL21w
cm90ZWN0LmMJU2F0IEphbiAgNSAxNzowNToxMiAyMDAyCisrKyB2Mi41LjEvbGludXgvbW0vbXBy
b3RlY3QuYwlTdW4gSmFuICA2IDA0OjAyOjExIDIwMDIKQEAgLTc5LDggKzc5LDggQEAKIAogCWRp
ciA9IHBnZF9vZmZzZXQoY3VycmVudC0+bW0sIHN0YXJ0KTsKIAlmbHVzaF9jYWNoZV9yYW5nZShj
dXJyZW50LT5tbSwgYmVnLCBlbmQpOwotCWlmIChzdGFydCA+PSBlbmQpCi0JCUJVRygpOworCUJV
R19PTiAoc3RhcnQgPj0gZW5kKTsKKwogCXNwaW5fbG9jaygmY3VycmVudC0+bW0tPnBhZ2VfdGFi
bGVfbG9jayk7CiAJZG8gewogCQljaGFuZ2VfcG1kX3JhbmdlKGRpciwgc3RhcnQsIGVuZCAtIHN0
YXJ0LCBuZXdwcm90KTsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9tcmVtYXAuYyB2Mi41
LjEvbGludXgvbW0vbXJlbWFwLmMKLS0tIGxpbnV4L21tL21yZW1hcC5jCVNhdCBKYW4gIDUgMTc6
MDU6MTIgMjAwMgorKysgdjIuNS4xL2xpbnV4L21tL21yZW1hcC5jCVN1biBKYW4gIDYgMDQ6MDI6
MzEgMjAwMgpAQCAtMTQwLDggKzE0MCw4IEBACiAJCQlwcmV2LT52bV9lbmQgPSBuZXdfYWRkciAr
IG5ld19sZW47CiAJCQlzcGluX3VubG9jaygmbW0tPnBhZ2VfdGFibGVfbG9jayk7CiAJCQluZXdf
dm1hID0gcHJldjsKLQkJCWlmIChuZXh0ICE9IHByZXYtPnZtX25leHQpCi0JCQkJQlVHKCk7CisJ
CQlCVUdfT04gKG5leHQgIT0gcHJldi0+dm1fbmV4dCk7CisKIAkJCWlmIChwcmV2LT52bV9lbmQg
PT0gbmV4dC0+dm1fc3RhcnQgJiYgY2FuX3ZtYV9tZXJnZShuZXh0LCBwcmV2LT52bV9mbGFncykp
IHsKIAkJCQlzcGluX2xvY2soJm1tLT5wYWdlX3RhYmxlX2xvY2spOwogCQkJCXByZXYtPnZtX2Vu
ZCA9IG5leHQtPnZtX2VuZDsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9wYWdlX2FsbG9j
LmMgdjIuNS4xL2xpbnV4L21tL3BhZ2VfYWxsb2MuYwotLS0gbGludXgvbW0vcGFnZV9hbGxvYy5j
CVR1ZSBOb3YgMjAgMDE6MzU6NDAgMjAwMQorKysgdjIuNS4xL2xpbnV4L21tL3BhZ2VfYWxsb2Mu
YwlTdW4gSmFuICA2IDA0OjA4OjE0IDIwMDIKQEAgLTcwLDIwICs3MCwxMyBAQAogCXN0cnVjdCBw
YWdlICpiYXNlOwogCXpvbmVfdCAqem9uZTsKIAotCWlmIChwYWdlLT5idWZmZXJzKQotCQlCVUco
KTsKLQlpZiAocGFnZS0+bWFwcGluZykKLQkJQlVHKCk7Ci0JaWYgKCFWQUxJRF9QQUdFKHBhZ2Up
KQotCQlCVUcoKTsKLQlpZiAoUGFnZVN3YXBDYWNoZShwYWdlKSkKLQkJQlVHKCk7Ci0JaWYgKFBh
Z2VMb2NrZWQocGFnZSkpCi0JCUJVRygpOwotCWlmIChQYWdlTFJVKHBhZ2UpKQotCQlCVUcoKTsK
LQlpZiAoUGFnZUFjdGl2ZShwYWdlKSkKLQkJQlVHKCk7CisJQlVHX09OKHBhZ2UtPmJ1ZmZlcnMp
OworCUJVR19PTihwYWdlLT5tYXBwaW5nKTsKKwlCVUdfT04oIVZBTElEX1BBR0UocGFnZSkpOwor
CUJVR19PTiAoUGFnZVN3YXBDYWNoZShwYWdlKSk7CisJQlVHX09OIChQYWdlTG9ja2VkKHBhZ2Up
KTsKKwlCVUdfT04gKFBhZ2VMUlUocGFnZSkpOworCUJVR19PTihQYWdlQWN0aXZlKHBhZ2UpKTsK
IAlwYWdlLT5mbGFncyAmPSB+KCgxPDxQR19yZWZlcmVuY2VkKSB8ICgxPDxQR19kaXJ0eSkpOwog
CiAJaWYgKGN1cnJlbnQtPmZsYWdzICYgUEZfRlJFRV9QQUdFUykKQEAgLTk1LDggKzg4LDggQEAK
IAltYXNrID0gKH4wVUwpIDw8IG9yZGVyOwogCWJhc2UgPSB6b25lLT56b25lX21lbV9tYXA7CiAJ
cGFnZV9pZHggPSBwYWdlIC0gYmFzZTsKLQlpZiAocGFnZV9pZHggJiB+bWFzaykKLQkJQlVHKCk7
CisJQlVHX09OKHBhZ2VfaWR4ICYgfm1hc2spOworCQogCWluZGV4ID0gcGFnZV9pZHggPj4gKDEg
KyBvcmRlcik7CiAKIAlhcmVhID0gem9uZS0+ZnJlZV9hcmVhICsgb3JkZXI7CkBAIC0xMDgsOCAr
MTAxLDggQEAKIAl3aGlsZSAobWFzayArICgxIDw8IChNQVhfT1JERVItMSkpKSB7CiAJCXN0cnVj
dCBwYWdlICpidWRkeTEsICpidWRkeTI7CiAKLQkJaWYgKGFyZWEgPj0gem9uZS0+ZnJlZV9hcmVh
ICsgTUFYX09SREVSKQotCQkJQlVHKCk7CisJCUJVR19PTihhcmVhID49IHpvbmUtPmZyZWVfYXJl
YSArIE1BWF9PUkRFUik7CisJCQogCQlpZiAoIV9fdGVzdF9hbmRfY2hhbmdlX2JpdChpbmRleCwg
YXJlYS0+bWFwKSkKIAkJCS8qCiAJCQkgKiB0aGUgYnVkZHkgcGFnZSBpcyBzdGlsbCBhbGxvY2F0
ZWQuCkBAIC0xMjAsMTAgKzExMyw5IEBACiAJCSAqLwogCQlidWRkeTEgPSBiYXNlICsgKHBhZ2Vf
aWR4IF4gLW1hc2spOwogCQlidWRkeTIgPSBiYXNlICsgcGFnZV9pZHg7Ci0JCWlmIChCQURfUkFO
R0Uoem9uZSxidWRkeTEpKQotCQkJQlVHKCk7Ci0JCWlmIChCQURfUkFOR0Uoem9uZSxidWRkeTIp
KQotCQkJQlVHKCk7CisJCUJVR19PTiAoQkFEX1JBTkdFKHpvbmUsYnVkZHkxKSk7CisJCQorCQlC
VUdfT04gKEJBRF9SQU5HRSh6b25lLGJ1ZGR5MikpOwogCiAJCW1lbWxpc3RfZGVsKCZidWRkeTEt
Pmxpc3QpOwogCQltYXNrIDw8PSAxOwpAQCAtMTU2LDggKzE0OCw3IEBACiAJdW5zaWduZWQgbG9u
ZyBzaXplID0gMSA8PCBoaWdoOwogCiAJd2hpbGUgKGhpZ2ggPiBsb3cpIHsKLQkJaWYgKEJBRF9S
QU5HRSh6b25lLHBhZ2UpKQotCQkJQlVHKCk7CisJCUJVR19PTiAoQkFEX1JBTkdFKHpvbmUscGFn
ZSkpOwogCQlhcmVhLS07CiAJCWhpZ2gtLTsKIAkJc2l6ZSA+Pj0gMTsKQEAgLTE2Niw4ICsxNTcs
NyBAQAogCQlpbmRleCArPSBzaXplOwogCQlwYWdlICs9IHNpemU7CiAJfQotCWlmIChCQURfUkFO
R0Uoem9uZSxwYWdlKSkKLQkJQlVHKCk7CisJQlVHX09OIChCQURfUkFOR0Uoem9uZSxwYWdlKSk7
CiAJcmV0dXJuIHBhZ2U7CiB9CiAKQEAgLTE4OSw4ICsxNzksOCBAQAogCQkJdW5zaWduZWQgaW50
IGluZGV4OwogCiAJCQlwYWdlID0gbWVtbGlzdF9lbnRyeShjdXJyLCBzdHJ1Y3QgcGFnZSwgbGlz
dCk7Ci0JCQlpZiAoQkFEX1JBTkdFKHpvbmUscGFnZSkpCi0JCQkJQlVHKCk7CisJCQlCVUdfT04g
KEJBRF9SQU5HRSh6b25lLHBhZ2UpKTsKKwkJCQogCQkJbWVtbGlzdF9kZWwoY3Vycik7CiAJCQlp
bmRleCA9IHBhZ2UgLSB6b25lLT56b25lX21lbV9tYXA7CiAJCQlpZiAoY3Vycl9vcmRlciAhPSBN
QVhfT1JERVItMSkKQEAgLTIwMSwxMiArMTkxLDkgQEAKIAkJCXNwaW5fdW5sb2NrX2lycXJlc3Rv
cmUoJnpvbmUtPmxvY2ssIGZsYWdzKTsKIAogCQkJc2V0X3BhZ2VfY291bnQocGFnZSwgMSk7Ci0J
CQlpZiAoQkFEX1JBTkdFKHpvbmUscGFnZSkpCi0JCQkJQlVHKCk7Ci0JCQlpZiAoUGFnZUxSVShw
YWdlKSkKLQkJCQlCVUcoKTsKLQkJCWlmIChQYWdlQWN0aXZlKHBhZ2UpKQotCQkJCUJVRygpOwor
CQkJQlVHX09OIChCQURfUkFOR0Uoem9uZSxwYWdlKSk7CisJCQlCVUdfT04gKFBhZ2VMUlUocGFn
ZSkpOworCQkJQlVHX09OIChQYWdlQWN0aXZlKHBhZ2UpKTsKIAkJCXJldHVybiBwYWdlOwkKIAkJ
fQogCQljdXJyX29yZGVyKys7CkBAIC0yMzMsOCArMjIwLDcgQEAKIAogCWlmICghKGdmcF9tYXNr
ICYgX19HRlBfV0FJVCkpCiAJCWdvdG8gb3V0OwotCWlmIChpbl9pbnRlcnJ1cHQoKSkKLQkJQlVH
KCk7CisJQlVHX09OIChpbl9pbnRlcnJ1cHQoKSk7CiAKIAljdXJyZW50LT5hbGxvY2F0aW9uX29y
ZGVyID0gb3JkZXI7CiAJY3VycmVudC0+ZmxhZ3MgfD0gUEZfTUVNQUxMT0MgfCBQRl9GUkVFX1BB
R0VTOwpAQCAtMjYxLDIyICsyNDcsMTQgQEAKIAkJCQkJc2V0X3BhZ2VfY291bnQodG1wLCAxKTsK
IAkJCQkJcGFnZSA9IHRtcDsKIAotCQkJCQlpZiAocGFnZS0+YnVmZmVycykKLQkJCQkJCUJVRygp
OwotCQkJCQlpZiAocGFnZS0+bWFwcGluZykKLQkJCQkJCUJVRygpOwotCQkJCQlpZiAoIVZBTElE
X1BBR0UocGFnZSkpCi0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VTd2FwQ2FjaGUocGFnZSkp
Ci0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VMb2NrZWQocGFnZSkpCi0JCQkJCQlCVUcoKTsK
LQkJCQkJaWYgKFBhZ2VMUlUocGFnZSkpCi0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VBY3Rp
dmUocGFnZSkpCi0JCQkJCQlCVUcoKTsKLQkJCQkJaWYgKFBhZ2VEaXJ0eShwYWdlKSkKLQkJCQkJ
CUJVRygpOworCQkJCQlCVUdfT04gKHBhZ2UtPmJ1ZmZlcnMpOworCQkJCQlCVUdfT04gKHBhZ2Ut
Pm1hcHBpbmcpOworCQkJCQlCVUdfT04gKCFWQUxJRF9QQUdFKHBhZ2UpKTsKKwkJCQkJQlVHX09O
IChQYWdlU3dhcENhY2hlKHBhZ2UpKTsKKwkJCQkJQlVHX09OIChQYWdlTG9ja2VkKHBhZ2UpKTsK
KwkJCQkJQlVHX09OIChQYWdlTFJVKHBhZ2UpKTsKKwkJCQkJQlVHX09OIChQYWdlQWN0aXZlKHBh
Z2UpKTsKKwkJCQkJQlVHX09OIChQYWdlRGlydHkocGFnZSkpOwogCiAJCQkJCWJyZWFrOwogCQkJ
CX0KQEAgLTI4OSw4ICsyNjcsNyBAQAogCQkJbGlzdF9kZWwoZW50cnkpOwogCQkJdG1wID0gbGlz
dF9lbnRyeShlbnRyeSwgc3RydWN0IHBhZ2UsIGxpc3QpOwogCQkJX19mcmVlX3BhZ2VzX29rKHRt
cCwgdG1wLT5pbmRleCk7Ci0JCQlpZiAoIW5yX3BhZ2VzLS0pCi0JCQkJQlVHKCk7CisJCQlCVUdf
T04gKCFucl9wYWdlcy0tKTsKIAkJfQogCQljdXJyZW50LT5ucl9sb2NhbF9wYWdlcyA9IDA7CiAJ
fQpAQCAtNjQ0LDggKzYyMSw4IEBACiAJdW5zaWduZWQgbG9uZyB0b3RhbHBhZ2VzLCBvZmZzZXQs
IHJlYWx0b3RhbHBhZ2VzOwogCWNvbnN0IHVuc2lnbmVkIGxvbmcgem9uZV9yZXF1aXJlZF9hbGln
bm1lbnQgPSAxVUwgPDwgKE1BWF9PUkRFUi0xKTsKIAotCWlmICh6b25lX3N0YXJ0X3BhZGRyICYg
flBBR0VfTUFTSykKLQkJQlVHKCk7CisJQlVHX09OKHpvbmVfc3RhcnRfcGFkZHIgJiB+UEFHRV9N
QVNLKTsKKwkJCiAKIAl0b3RhbHBhZ2VzID0gMDsKIAlmb3IgKGkgPSAwOyBpIDwgTUFYX05SX1pP
TkVTOyBpKyspIHsKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9zaG1lbS5jIHYyLjUuMS9s
aW51eC9tbS9zaG1lbS5jCi0tLSBsaW51eC9tbS9zaG1lbS5jCVdlZCBOb3YgMjEgMTg6NTc6NTcg
MjAwMQorKysgdjIuNS4xL2xpbnV4L21tL3NobWVtLmMJU3VuIEphbiAgNiAwNDoxMDoxMyAyMDAy
CkBAIC0yOTEsOCArMjkxLDcgQEAKIAkJbGVuID0gbWF4KzE7CiAJfSBlbHNlIHsKIAkJbWF4IC09
IEVOVFJJRVNfUEVSX1BBR0UqRU5UUklFU19QRVJfUEFHRS8yK1NITUVNX05SX0RJUkVDVDsKLQkJ
aWYgKG1heCA+PSBFTlRSSUVTX1BFUl9QQUdFKkVOVFJJRVNfUEVSX1BBR0UqRU5UUklFU19QRVJf
UEFHRS8yKQotCQkJQlVHKCk7CisJCUJVR19PTiAobWF4ID49IEVOVFJJRVNfUEVSX1BBR0UqRU5U
UklFU19QRVJfUEFHRSpFTlRSSUVTX1BFUl9QQUdFLzIpOwogCiAJCWJhc2VpZHggPSBtYXggJiB+
KEVOVFJJRVNfUEVSX1BBR0UqRU5UUklFU19QRVJfUEFHRS0xKTsKIAkJYmFzZSA9IChzd3BfZW50
cnlfdCAqKiopIGluZm8tPmlfaW5kaXJlY3QgKyBFTlRSSUVTX1BFUl9QQUdFLzIgKyBiYXNlaWR4
L0VOVFJJRVNfUEVSX1BBR0UvRU5UUklFU19QRVJfUEFHRSA7CkBAIC00MjYsOCArNDI1LDcgQEAK
IAl1bnNpZ25lZCBsb25nIGluZGV4OwogCXN0cnVjdCBpbm9kZSAqaW5vZGU7CiAKLQlpZiAoIVBh
Z2VMb2NrZWQocGFnZSkpCi0JCUJVRygpOworCUJVR19PTiAoIVBhZ2VMb2NrZWQocGFnZSkpOwog
CWlmICghUGFnZUxhdW5kZXIocGFnZSkpCiAJCXJldHVybiBmYWlsX3dyaXRlcGFnZShwYWdlKTsK
IApAQCAtNDQ0LDExICs0NDIsMTAgQEAKIAogCXNwaW5fbG9jaygmaW5mby0+bG9jayk7CiAJZW50
cnkgPSBzaG1lbV9zd3BfZW50cnkoaW5mbywgaW5kZXgsIDApOwotCWlmIChJU19FUlIoZW50cnkp
KQkvKiB0aGlzIGhhZCBiZWVuIGFsbG9jYXRlZCBvbiBwYWdlIGFsbG9jYXRpb24gKi8KLQkJQlVH
KCk7CisJQlVHX09OIChJU19FUlIoZW50cnkpKTsJLyogdGhpcyBoYWQgYmVlbiBhbGxvY2F0ZWQg
b24gcGFnZSBhbGxvY2F0aW9uICovCisJCQogCXNobWVtX3JlY2FsY19pbm9kZShpbm9kZSk7Ci0J
aWYgKGVudHJ5LT52YWwpCi0JCUJVRygpOworCUJVR19PTiAoZW50cnktPnZhbCk7CiAKIAkvKiBS
ZW1vdmUgaXQgZnJvbSB0aGUgcGFnZSBjYWNoZSAqLwogCXJlbW92ZV9pbm9kZV9wYWdlKHBhZ2Up
OwpkaWZmIC11IC0tcmVjdXJzaXZlIGxpbnV4L21tL3NsYWIuYyB2Mi41LjEvbGludXgvbW0vc2xh
Yi5jCi0tLSBsaW51eC9tbS9zbGFiLmMJU2F0IEphbiAgNSAxNzowNToxMiAyMDAyCisrKyB2Mi41
LjEvbGludXgvbW0vc2xhYi5jCVN1biBKYW4gIDYgMDQ6MjA6MDQgMjAwMgpAQCAtNDIzLDggKzQy
Myw3IEBACiAKIAlrbWVtX2NhY2hlX2VzdGltYXRlKDAsIGNhY2hlX2NhY2hlLm9ianNpemUsIDAs
CiAJCQkmbGVmdF9vdmVyLCAmY2FjaGVfY2FjaGUubnVtKTsKLQlpZiAoIWNhY2hlX2NhY2hlLm51
bSkKLQkJQlVHKCk7CisJQlVHX09OICghY2FjaGVfY2FjaGUubnVtKTsKIAogCWNhY2hlX2NhY2hl
LmNvbG91ciA9IGxlZnRfb3Zlci9jYWNoZV9jYWNoZS5jb2xvdXJfb2ZmOwogCWNhY2hlX2NhY2hl
LmNvbG91cl9uZXh0ID0gMDsKQEAgLTQ2NSw4ICs0NjQsOCBAQAogCQlzcHJpbnRmKG5hbWUsICJz
aXplLSVaZChETUEpIixzaXplcy0+Y3Nfc2l6ZSk7CiAJCXNpemVzLT5jc19kbWFjYWNoZXAgPSBr
bWVtX2NhY2hlX2NyZWF0ZShuYW1lLCBzaXplcy0+Y3Nfc2l6ZSwgMCwKIAkJCSAgICAgIFNMQUJf
Q0FDSEVfRE1BfFNMQUJfSFdDQUNIRV9BTElHTiwgTlVMTCwgTlVMTCk7Ci0JCWlmICghc2l6ZXMt
PmNzX2RtYWNhY2hlcCkKLQkJCUJVRygpOworCQlCVUdfT04gKCFzaXplcy0+Y3NfZG1hY2FjaGVw
KTsKKwkJCQogCQlzaXplcysrOwogCX0gd2hpbGUgKHNpemVzLT5jc19zaXplKTsKIH0KQEAgLTU2
NSwxMSArNTY0LDExIEBACiAJCQl2b2lkKiBvYmpwID0gc2xhYnAtPnNfbWVtK2NhY2hlcC0+b2Jq
c2l6ZSppOwogI2lmIERFQlVHCiAJCQlpZiAoY2FjaGVwLT5mbGFncyAmIFNMQUJfUkVEX1pPTkUp
IHsKLQkJCQlpZiAoKigodW5zaWduZWQgbG9uZyopKG9ianApKSAhPSBSRURfTUFHSUMxKQotCQkJ
CQlCVUcoKTsKLQkJCQlpZiAoKigodW5zaWduZWQgbG9uZyopKG9ianAgKyBjYWNoZXAtPm9ianNp
emUKLQkJCQkJCS1CWVRFU19QRVJfV09SRCkpICE9IFJFRF9NQUdJQzEpCi0JCQkJCUJVRygpOwor
CQkJCUJVR19PTigqKCh1bnNpZ25lZCBsb25nKikob2JqcCkpICE9IFJFRF9NQUdJQzEpOworCQkJ
CQkgCisJCQkJQlVHX09OKCooKHVuc2lnbmVkIGxvbmcqKShvYmpwICsgY2FjaGVwLT5vYmpzaXpl
CisJCQkJCS1CWVRFU19QRVJfV09SRCkpICE9IFJFRF9NQUdJQzEpOworCQkJCQogCQkJCW9ianAg
Kz0gQllURVNfUEVSX1dPUkQ7CiAJCQl9CiAjZW5kaWYKQEAgLTU3OSw5ICs1NzgsOSBAQAogCQkJ
aWYgKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1JFRF9aT05FKSB7CiAJCQkJb2JqcCAtPSBCWVRFU19Q
RVJfV09SRDsKIAkJCX0JCi0JCQlpZiAoKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1BPSVNPTikgICYm
Ci0JCQkJa21lbV9jaGVja19wb2lzb25fb2JqKGNhY2hlcCwgb2JqcCkpCi0JCQkJQlVHKCk7CisJ
CQlCVUdfT04gKChjYWNoZXAtPmZsYWdzICYgU0xBQl9QT0lTT04pICAmJgorCQkJCWttZW1fY2hl
Y2tfcG9pc29uX29iaihjYWNoZXAsIG9ianApKTsKKwkJCQkKICNlbmRpZgogCQl9CiAJfQpAQCAt
NjMxLDE0ICs2MzAsMTQgQEAKIAkvKgogCSAqIFNhbml0eSBjaGVja3MuLi4gdGhlc2UgYXJlIGFs
bCBzZXJpb3VzIHVzYWdlIGJ1Z3MuCiAJICovCi0JaWYgKCghbmFtZSkgfHwKKwlCVUdfT04gKCgh
bmFtZSkgfHwKIAkJKChzdHJsZW4obmFtZSkgPj0gQ0FDSEVfTkFNRUxFTiAtIDEpKSB8fAogCQlp
bl9pbnRlcnJ1cHQoKSB8fAogCQkoc2l6ZSA8IEJZVEVTX1BFUl9XT1JEKSB8fAogCQkoc2l6ZSA+
ICgxPDxNQVhfT0JKX09SREVSKSpQQUdFX1NJWkUpIHx8CiAJCShkdG9yICYmICFjdG9yKSB8fAot
CQkob2Zmc2V0IDwgMCB8fCBvZmZzZXQgPiBzaXplKSkKLQkJCUJVRygpOworCQkob2Zmc2V0IDwg
MCB8fCBvZmZzZXQgPiBzaXplKSk7CisJCiAKICNpZiBERUJVRwogCWlmICgoZmxhZ3MgJiBTTEFC
X0RFQlVHX0lOSVRJQUwpICYmICFjdG9yKSB7CkBAIC02NjgsOCArNjY3LDggQEAKIAkgKiBBbHdh
eXMgY2hlY2tzIGZsYWdzLCBhIGNhbGxlciBtaWdodCBiZSBleHBlY3RpbmcgZGVidWcKIAkgKiBz
dXBwb3J0IHdoaWNoIGlzbid0IGF2YWlsYWJsZS4KIAkgKi8KLQlpZiAoZmxhZ3MgJiB+Q1JFQVRF
X01BU0spCi0JCUJVRygpOworCUJVR19PTiAoZmxhZ3MgJiB+Q1JFQVRFX01BU0spOworCQkKIAog
CS8qIEdldCBjYWNoZSdzIGRlc2NyaXB0aW9uIG9iai4gKi8KIAljYWNoZXAgPSAoa21lbV9jYWNo
ZV90ICopIGttZW1fY2FjaGVfYWxsb2MoJmNhY2hlX2NhY2hlLCBTTEFCX0tFUk5FTCk7CkBAIC04
MTMsOCArODEyLDggQEAKIAkJCWttZW1fY2FjaGVfdCAqcGMgPSBsaXN0X2VudHJ5KHAsIGttZW1f
Y2FjaGVfdCwgbmV4dCk7CiAKIAkJCS8qIFRoZSBuYW1lIGZpZWxkIGlzIGNvbnN0YW50IC0gbm8g
bG9jayBuZWVkZWQuICovCi0JCQlpZiAoIXN0cmNtcChwYy0+bmFtZSwgbmFtZSkpCi0JCQkJQlVH
KCk7CisJCQlCVUdfT04gKCFzdHJjbXAocGMtPm5hbWUsIG5hbWUpKTsKKwkJCQkKIAkJfQogCX0K
IApAQCAtODY0LDggKzg2Myw4IEBACiAJZnVuYyhhcmcpOwogCWxvY2FsX2lycV9lbmFibGUoKTsK
IAotCWlmIChzbXBfY2FsbF9mdW5jdGlvbihmdW5jLCBhcmcsIDEsIDEpKQotCQlCVUcoKTsKKwlC
VUdfT04gKHNtcF9jYWxsX2Z1bmN0aW9uKGZ1bmMsIGFyZywgMSwgMSkpOworCQkKIH0KIHR5cGVk
ZWYgc3RydWN0IGNjdXBkYXRlX3N0cnVjdF9zCiB7CkBAIC05MzIsOCArOTMxLDcgQEAKIAogCQlz
bGFicCA9IGxpc3RfZW50cnkoY2FjaGVwLT5zbGFic19mcmVlLnByZXYsIHNsYWJfdCwgbGlzdCk7
CiAjaWYgREVCVUcKLQkJaWYgKHNsYWJwLT5pbnVzZSkKLQkJCUJVRygpOworCQlCVUdfT04gKHNs
YWJwLT5pbnVzZSk7CiAjZW5kaWYKIAkJbGlzdF9kZWwoJnNsYWJwLT5saXN0KTsKIApAQCAtOTU1
LDggKzk1Myw4IEBACiAgKi8KIGludCBrbWVtX2NhY2hlX3NocmluayhrbWVtX2NhY2hlX3QgKmNh
Y2hlcCkKIHsKLQlpZiAoIWNhY2hlcCB8fCBpbl9pbnRlcnJ1cHQoKSB8fCAhaXNfY2hhaW5lZF9r
bWVtX2NhY2hlKGNhY2hlcCkpCi0JCUJVRygpOworCUJVR19PTiAoIWNhY2hlcCB8fCBpbl9pbnRl
cnJ1cHQoKSB8fCAhaXNfY2hhaW5lZF9rbWVtX2NhY2hlKGNhY2hlcCkpOworCQkKIAogCXJldHVy
biBfX2ttZW1fY2FjaGVfc2hyaW5rKGNhY2hlcCk7CiB9CkBAIC05NzgsOCArOTc2LDcgQEAKICAq
LwogaW50IGttZW1fY2FjaGVfZGVzdHJveSAoa21lbV9jYWNoZV90ICogY2FjaGVwKQogewotCWlm
ICghY2FjaGVwIHx8IGluX2ludGVycnVwdCgpIHx8IGNhY2hlcC0+Z3Jvd2luZykKLQkJQlVHKCk7
CisJQlVHX09OICghY2FjaGVwIHx8IGluX2ludGVycnVwdCgpIHx8IGNhY2hlcC0+Z3Jvd2luZyk7
CiAKIAkvKiBGaW5kIHRoZSBjYWNoZSBpbiB0aGUgY2hhaW4gb2YgY2FjaGVzLiAqLwogCWRvd24o
JmNhY2hlX2NoYWluX3NlbSk7CkBAIC0xMDY3LDExICsxMDY0LDEwIEBACiAJCQkvKiBuZWVkIHRv
IHBvaXNvbiB0aGUgb2JqcyAqLwogCQkJa21lbV9wb2lzb25fb2JqKGNhY2hlcCwgb2JqcCk7CiAJ
CWlmIChjYWNoZXAtPmZsYWdzICYgU0xBQl9SRURfWk9ORSkgewotCQkJaWYgKCooKHVuc2lnbmVk
IGxvbmcqKShvYmpwKSkgIT0gUkVEX01BR0lDMSkKLQkJCQlCVUcoKTsKLQkJCWlmICgqKCh1bnNp
Z25lZCBsb25nKikob2JqcCArIGNhY2hlcC0+b2Jqc2l6ZSAtCi0JCQkJCUJZVEVTX1BFUl9XT1JE
KSkgIT0gUkVEX01BR0lDMSkKLQkJCQlCVUcoKTsKKwkJCUJVR19PTiAoKigodW5zaWduZWQgbG9u
ZyopKG9ianApKSAhPSBSRURfTUFHSUMxKTsKKwkJCQkKKwkJCUJVR19PTiAoKigodW5zaWduZWQg
bG9uZyopKG9ianAgKyBjYWNoZXAtPm9ianNpemUgLQorCQkJCQlCWVRFU19QRVJfV09SRCkpICE9
IFJFRF9NQUdJQzEpOwogCQl9CiAjZW5kaWYKIAkJc2xhYl9idWZjdGwoc2xhYnApW2ldID0gaSsx
OwpAQCAtMTA5Nyw4ICsxMDkzLDcgQEAKIAkvKiBCZSBsYXp5IGFuZCBvbmx5IGNoZWNrIGZvciB2
YWxpZCBmbGFncyBoZXJlLAogIAkgKiBrZWVwaW5nIGl0IG91dCBvZiB0aGUgY3JpdGljYWwgcGF0
aCBpbiBrbWVtX2NhY2hlX2FsbG9jKCkuCiAJICovCi0JaWYgKGZsYWdzICYgfihTTEFCX0RNQXxT
TEFCX0xFVkVMX01BU0t8U0xBQl9OT19HUk9XKSkKLQkJQlVHKCk7CisJQlVHX09OIChmbGFncyAm
IH4oU0xBQl9ETUF8U0xBQl9MRVZFTF9NQVNLfFNMQUJfTk9fR1JPVykpOwogCWlmIChmbGFncyAm
IFNMQUJfTk9fR1JPVykKIAkJcmV0dXJuIDA7CiAKQEAgLTExMDgsOCArMTEwMyw3IEBACiAJICog
aW4ga21lbV9jYWNoZV9hbGxvYygpLiBJZiBhIGNhbGxlciBpcyBzZXJpb3VzbHkgbWlzLWJlaGF2
aW5nIHRoZXkKIAkgKiB3aWxsIGV2ZW50dWFsbHkgYmUgY2F1Z2h0IGhlcmUgKHdoZXJlIGl0IG1h
dHRlcnMpLgogCSAqLwotCWlmIChpbl9pbnRlcnJ1cHQoKSAmJiAoZmxhZ3MgJiBTTEFCX0xFVkVM
X01BU0spICE9IFNMQUJfQVRPTUlDKQotCQlCVUcoKTsKKwlCVUdfT04oaW5faW50ZXJydXB0KCkg
JiYgKGZsYWdzICYgU0xBQl9MRVZFTF9NQVNLKSAhPSBTTEFCX0FUT01JQyk7CiAKIAljdG9yX2Zs
YWdzID0gU0xBQl9DVE9SX0NPTlNUUlVDVE9SOwogCWxvY2FsX2ZsYWdzID0gKGZsYWdzICYgU0xB
Ql9MRVZFTF9NQVNLKTsKQEAgLTExOTYsMTUgKzExOTAsMTMgQEAKIAlpbnQgaTsKIAl1bnNpZ25l
ZCBpbnQgb2JqbnIgPSAob2JqcC1zbGFicC0+c19tZW0pL2NhY2hlcC0+b2Jqc2l6ZTsKIAotCWlm
IChvYmpuciA+PSBjYWNoZXAtPm51bSkKLQkJQlVHKCk7Ci0JaWYgKG9ianAgIT0gc2xhYnAtPnNf
bWVtICsgb2JqbnIqY2FjaGVwLT5vYmpzaXplKQotCQlCVUcoKTsKKwlCVUdfT04gKG9iam5yID49
IGNhY2hlcC0+bnVtKTsKKwkJCisJQlVHX09OIChvYmpwICE9IHNsYWJwLT5zX21lbSArIG9iam5y
KmNhY2hlcC0+b2Jqc2l6ZSk7CiAKIAkvKiBDaGVjayBzbGFiJ3MgZnJlZWxpc3QgdG8gc2VlIGlm
IHRoaXMgb2JqIGlzIHRoZXJlLiAqLwogCWZvciAoaSA9IHNsYWJwLT5mcmVlOyBpICE9IEJVRkNU
TF9FTkQ7IGkgPSBzbGFiX2J1ZmN0bChzbGFicClbaV0pIHsKLQkJaWYgKGkgPT0gb2JqbnIpCi0J
CQlCVUcoKTsKKwkJQlVHX09OIChpID09IG9iam5yKTsKIAl9CiAJcmV0dXJuIDA7CiB9CkBAIC0x
MjEzLDExICsxMjA1LDkgQEAKIHN0YXRpYyBpbmxpbmUgdm9pZCBrbWVtX2NhY2hlX2FsbG9jX2hl
YWQoa21lbV9jYWNoZV90ICpjYWNoZXAsIGludCBmbGFncykKIHsKIAlpZiAoZmxhZ3MgJiBTTEFC
X0RNQSkgewotCQlpZiAoIShjYWNoZXAtPmdmcGZsYWdzICYgR0ZQX0RNQSkpCi0JCQlCVUcoKTsK
KwkJQlVHX09OICghKGNhY2hlcC0+Z2ZwZmxhZ3MgJiBHRlBfRE1BKSk7CiAJfSBlbHNlIHsKLQkJ
aWYgKGNhY2hlcC0+Z2ZwZmxhZ3MgJiBHRlBfRE1BKQotCQkJQlVHKCk7CisJCUJVR19PTiAoY2Fj
aGVwLT5nZnBmbGFncyAmIEdGUF9ETUEpOwogCX0KIH0KIApAQCAtMTI0MSwxNiArMTIzMSwxMyBA
QAogCX0KICNpZiBERUJVRwogCWlmIChjYWNoZXAtPmZsYWdzICYgU0xBQl9QT0lTT04pCi0JCWlm
IChrbWVtX2NoZWNrX3BvaXNvbl9vYmooY2FjaGVwLCBvYmpwKSkKLQkJCUJVRygpOworCQlCVUdf
T04gKGttZW1fY2hlY2tfcG9pc29uX29iaihjYWNoZXAsIG9ianApKTsKIAlpZiAoY2FjaGVwLT5m
bGFncyAmIFNMQUJfUkVEX1pPTkUpIHsKIAkJLyogU2V0IGFsbG9jIHJlZC16b25lLCBhbmQgY2hl
Y2sgb2xkIG9uZS4gKi8KLQkJaWYgKHhjaGcoKHVuc2lnbmVkIGxvbmcgKilvYmpwLCBSRURfTUFH
SUMyKSAhPQotCQkJCQkJCSBSRURfTUFHSUMxKQotCQkJQlVHKCk7Ci0JCWlmICh4Y2hnKCh1bnNp
Z25lZCBsb25nICopKG9ianArY2FjaGVwLT5vYmpzaXplIC0KLQkJCSAgQllURVNfUEVSX1dPUkQp
LCBSRURfTUFHSUMyKSAhPSBSRURfTUFHSUMxKQotCQkJQlVHKCk7CisJCUJVR19PTiAoeGNoZygo
dW5zaWduZWQgbG9uZyAqKW9ianAsIFJFRF9NQUdJQzIpICE9CisJCQkJCQkJIFJFRF9NQUdJQzEp
OworCQlCVUdfT04gKHhjaGcoKHVuc2lnbmVkIGxvbmcgKikob2JqcCtjYWNoZXAtPm9ianNpemUg
LQorCQkJICBCWVRFU19QRVJfV09SRCksIFJFRF9NQUdJQzIpICE9IFJFRF9NQUdJQzEpOwogCQlv
YmpwICs9IEJZVEVTX1BFUl9XT1JEOwogCX0KICNlbmRpZgpAQCAtMTQxNywxMyArMTQwNCwxMyBA
QAogCiAJaWYgKGNhY2hlcC0+ZmxhZ3MgJiBTTEFCX1JFRF9aT05FKSB7CiAJCW9ianAgLT0gQllU
RVNfUEVSX1dPUkQ7Ci0JCWlmICh4Y2hnKCh1bnNpZ25lZCBsb25nICopb2JqcCwgUkVEX01BR0lD
MSkgIT0gUkVEX01BR0lDMikKKwkJIEJVR19PTih4Y2hnKCh1bnNpZ25lZCBsb25nICopb2JqcCwg
UkVEX01BR0lDMSkgIT0gUkVEX01BR0lDMik7CiAJCQkvKiBFaXRoZXIgd3JpdGUgYmVmb3JlIHN0
YXJ0LCBvciBhIGRvdWJsZSBmcmVlLiAqLwotCQkJQlVHKCk7Ci0JCWlmICh4Y2hnKCh1bnNpZ25l
ZCBsb25nICopKG9ianArY2FjaGVwLT5vYmpzaXplIC0KLQkJCQlCWVRFU19QRVJfV09SRCksIFJF
RF9NQUdJQzEpICE9IFJFRF9NQUdJQzIpCi0JCQkvKiBFaXRoZXIgd3JpdGUgcGFzdCBlbmQsIG9y
IGEgZG91YmxlIGZyZWUuICovCi0JCQlCVUcoKTsKKwkJCQorCQlCVUdfT04gKHhjaGcoKHVuc2ln
bmVkIGxvbmcgKikob2JqcCtjYWNoZXAtPm9ianNpemUgLQorCQkJCUJZVEVTX1BFUl9XT1JEKSwg
UkVEX01BR0lDMSkgIT0gUkVEX01BR0lDMik7CisJCS8qIEVpdGhlciB3cml0ZSBwYXN0IGVuZCwg
b3IgYSBkb3VibGUgZnJlZS4gKi8KKwkJCQogCX0KIAlpZiAoY2FjaGVwLT5mbGFncyAmIFNMQUJf
UE9JU09OKQogCQlrbWVtX3BvaXNvbl9vYmooY2FjaGVwLCBvYmpwKTsKQEAgLTE1NjEsOCArMTU0
OCw4IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKICNpZiBERUJVRwogCUNIRUNLX1BBR0Uodmly
dF90b19wYWdlKG9ianApKTsKLQlpZiAoY2FjaGVwICE9IEdFVF9QQUdFX0NBQ0hFKHZpcnRfdG9f
cGFnZShvYmpwKSkpCi0JCUJVRygpOworCQorCUJVR19PTiAoY2FjaGVwICE9IEdFVF9QQUdFX0NB
Q0hFKHZpcnRfdG9fcGFnZShvYmpwKSkpOwogI2VuZGlmCiAKIAlsb2NhbF9pcnFfc2F2ZShmbGFn
cyk7CkBAIC0xNzYwLDggKzE3NDcsOCBAQAogCQl3aGlsZSAocCAhPSAmc2VhcmNocC0+c2xhYnNf
ZnJlZSkgewogCQkJc2xhYnAgPSBsaXN0X2VudHJ5KHAsIHNsYWJfdCwgbGlzdCk7CiAjaWYgREVC
VUcKLQkJCWlmIChzbGFicC0+aW51c2UpCi0JCQkJQlVHKCk7CisJCQlCVUdfT04oc2xhYnAtPmlu
dXNlKTsKKwkJCQkKICNlbmRpZgogCQkJZnVsbF9mcmVlKys7CiAJCQlwID0gcC0+bmV4dDsKQEAg
LTE4MTMsOCArMTgwMCw4IEBACiAJCQlicmVhazsKIAkJc2xhYnAgPSBsaXN0X2VudHJ5KHAsc2xh
Yl90LGxpc3QpOwogI2lmIERFQlVHCi0JCWlmIChzbGFicC0+aW51c2UpCi0JCQlCVUcoKTsKKwkJ
QlVHX09OIChzbGFicC0+aW51c2UpOworCiAjZW5kaWYKIAkJbGlzdF9kZWwoJnNsYWJwLT5saXN0
KTsKIAkJU1RBVFNfSU5DX1JFQVBFRChiZXN0X2NhY2hlcCk7CkBAIC0xODg1LDIyICsxODcyLDIy
IEBACiAJCW51bV9zbGFicyA9IDA7CiAJCWxpc3RfZm9yX2VhY2gocSwmY2FjaGVwLT5zbGFic19m
dWxsKSB7CiAJCQlzbGFicCA9IGxpc3RfZW50cnkocSwgc2xhYl90LCBsaXN0KTsKLQkJCWlmIChz
bGFicC0+aW51c2UgIT0gY2FjaGVwLT5udW0pCi0JCQkJQlVHKCk7CisJCQkgQlVHX09OKHNsYWJw
LT5pbnVzZSAhPSBjYWNoZXAtPm51bSk7CisJCQkgCiAJCQlhY3RpdmVfb2JqcyArPSBjYWNoZXAt
Pm51bTsKIAkJCWFjdGl2ZV9zbGFicysrOwogCQl9CiAJCWxpc3RfZm9yX2VhY2gocSwmY2FjaGVw
LT5zbGFic19wYXJ0aWFsKSB7CiAJCQlzbGFicCA9IGxpc3RfZW50cnkocSwgc2xhYl90LCBsaXN0
KTsKLQkJCWlmIChzbGFicC0+aW51c2UgPT0gY2FjaGVwLT5udW0gfHwgIXNsYWJwLT5pbnVzZSkK
LQkJCQlCVUcoKTsKKwkJCUJVR19PTiAoc2xhYnAtPmludXNlID09IGNhY2hlcC0+bnVtIHx8ICFz
bGFicC0+aW51c2UpOworCQkJCiAJCQlhY3RpdmVfb2JqcyArPSBzbGFicC0+aW51c2U7CiAJCQlh
Y3RpdmVfc2xhYnMrKzsKIAkJfQogCQlsaXN0X2Zvcl9lYWNoKHEsJmNhY2hlcC0+c2xhYnNfZnJl
ZSkgewogCQkJc2xhYnAgPSBsaXN0X2VudHJ5KHEsIHNsYWJfdCwgbGlzdCk7Ci0JCQlpZiAoc2xh
YnAtPmludXNlKQotCQkJCUJVRygpOworCQkJQlVHX09OKHNsYWJwLT5pbnVzZSk7CisJCQkKIAkJ
CW51bV9zbGFicysrOwogCQl9CiAJCW51bV9zbGFicys9YWN0aXZlX3NsYWJzOwpkaWZmIC11IC0t
cmVjdXJzaXZlIGxpbnV4L21tL3N3YXBfc3RhdGUuYyB2Mi41LjEvbGludXgvbW0vc3dhcF9zdGF0
ZS5jCi0tLSBsaW51eC9tbS9zd2FwX3N0YXRlLmMJVGh1IE5vdiAgMSAwMDozMTowMyAyMDAxCisr
KyB2Mi41LjEvbGludXgvbW0vc3dhcF9zdGF0ZS5jCVN1biBKYW4gIDYgMDQ6MjU6MTMgMjAwMgpA
QCAtNjksOCArNjksOCBAQAogCiBpbnQgYWRkX3RvX3N3YXBfY2FjaGUoc3RydWN0IHBhZ2UgKnBh
Z2UsIHN3cF9lbnRyeV90IGVudHJ5KQogewotCWlmIChwYWdlLT5tYXBwaW5nKQotCQlCVUcoKTsK
KwlCVUdfT04gKHBhZ2UtPm1hcHBpbmcpOworCQogCWlmICghc3dhcF9kdXBsaWNhdGUoZW50cnkp
KSB7CiAJCUlOQ19DQUNIRV9JTkZPKG5vZW50X3JhY2UpOwogCQlyZXR1cm4gLUVOT0VOVDsKQEAg
LTgxLDEwICs4MSw5IEBACiAJCUlOQ19DQUNIRV9JTkZPKGV4aXN0X3JhY2UpOwogCQlyZXR1cm4g
LUVFWElTVDsKIAl9Ci0JaWYgKCFQYWdlTG9ja2VkKHBhZ2UpKQotCQlCVUcoKTsKLQlpZiAoIVBh
Z2VTd2FwQ2FjaGUocGFnZSkpCi0JCUJVRygpOworCUJVR19PTighUGFnZUxvY2tlZChwYWdlKSk7
CisJQlVHX09OICghUGFnZVN3YXBDYWNoZShwYWdlKSk7CisJCiAJSU5DX0NBQ0hFX0lORk8oYWRk
X3RvdGFsKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTk1LDEwICs5NCw5IEBACiAgKi8KIHZvaWQgX19k
ZWxldGVfZnJvbV9zd2FwX2NhY2hlKHN0cnVjdCBwYWdlICpwYWdlKQogewotCWlmICghUGFnZUxv
Y2tlZChwYWdlKSkKLQkJQlVHKCk7Ci0JaWYgKCFQYWdlU3dhcENhY2hlKHBhZ2UpKQotCQlCVUco
KTsKKwlCVUdfT04gKCFQYWdlTG9ja2VkKHBhZ2UpKTsKKwlCVUdfT04gKCFQYWdlU3dhcENhY2hl
KHBhZ2UpKTsKKwkKIAlDbGVhclBhZ2VEaXJ0eShwYWdlKTsKIAlfX3JlbW92ZV9pbm9kZV9wYWdl
KHBhZ2UpOwogCUlOQ19DQUNIRV9JTkZPKGRlbF90b3RhbCk7CkBAIC0xMTQsOCArMTEyLDcgQEAK
IHsKIAlzd3BfZW50cnlfdCBlbnRyeTsKIAotCWlmICghUGFnZUxvY2tlZChwYWdlKSkKLQkJQlVH
KCk7CisJQlVHX09OICghUGFnZUxvY2tlZChwYWdlKSk7CiAKIAlibG9ja19mbHVzaHBhZ2UocGFn
ZSwgMCk7CiAKZGlmZiAtdSAtLXJlY3Vyc2l2ZSBsaW51eC9tbS9zd2FwZmlsZS5jIHYyLjUuMS9s
aW51eC9tbS9zd2FwZmlsZS5jCi0tLSBsaW51eC9tbS9zd2FwZmlsZS5jCVNhdCBKYW4gIDUgMTc6
MDU6MTIgMjAwMgorKysgdjIuNS4xL2xpbnV4L21tL3N3YXBmaWxlLmMJU3VuIEphbiAgNiAwNDoy
Mzo0MyAyMDAyCkBAIC0yNjIsOCArMjYyLDggQEAKIHsKIAlpbnQgcmV0dmFsID0gMDsKIAotCWlm
ICghUGFnZUxvY2tlZChwYWdlKSkKLQkJQlVHKCk7CisJQlVHX09OICghUGFnZUxvY2tlZChwYWdl
KSk7CisJCiAJc3dpdGNoIChwYWdlX2NvdW50KHBhZ2UpKSB7CiAJY2FzZSAzOgogCQlpZiAoIXBh
Z2UtPmJ1ZmZlcnMpCkBAIC0yOTIsOCArMjkyLDggQEAKIAlzdHJ1Y3Qgc3dhcF9pbmZvX3N0cnVj
dCAqIHA7CiAJc3dwX2VudHJ5X3QgZW50cnk7CiAKLQlpZiAoIVBhZ2VMb2NrZWQocGFnZSkpCi0J
CUJVRygpOworCUJVR19PTiAoIVBhZ2VMb2NrZWQocGFnZSkpOworCQogCWlmICghUGFnZVN3YXBD
YWNoZShwYWdlKSkKIAkJcmV0dXJuIDA7CiAJaWYgKHBhZ2VfY291bnQocGFnZSkgLSAhIXBhZ2Ut
PmJ1ZmZlcnMgIT0gMikJLyogMjogdXMgKyBjYWNoZSAqLwpAQCAtNDI4LDggKzQyOCw3IEBACiAJ
ZW5kID0gYWRkcmVzcyArIHNpemU7CiAJaWYgKGVuZCA+IFBHRElSX1NJWkUpCiAJCWVuZCA9IFBH
RElSX1NJWkU7Ci0JaWYgKGFkZHJlc3MgPj0gZW5kKQotCQlCVUcoKTsKKwlCVUdfT04gKGFkZHJl
c3MgPj0gZW5kKTsKIAlkbyB7CiAJCXVudXNlX3BtZCh2bWEsIHBtZCwgYWRkcmVzcywgZW5kIC0g
YWRkcmVzcywgb2Zmc2V0LCBlbnRyeSwKIAkJCSAgcGFnZSk7CkBAIC00NDQsOCArNDQzLDcgQEAK
IHsKIAl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gdm1hLT52bV9zdGFydCwgZW5kID0gdm1hLT52bV9l
bmQ7CiAKLQlpZiAoc3RhcnQgPj0gZW5kKQotCQlCVUcoKTsKKwkgQlVHX09OKHN0YXJ0ID49IGVu
ZCk7CiAJZG8gewogCQl1bnVzZV9wZ2Qodm1hLCBwZ2Rpciwgc3RhcnQsIGVuZCAtIHN0YXJ0LCBl
bnRyeSwgcGFnZSk7CiAJCXN0YXJ0ID0gKHN0YXJ0ICsgUEdESVJfU0laRSkgJiBQR0RJUl9NQVNL
OwpAQCAtNjc0LDggKzY3Miw4IEBACiAJCSAqIE5vdGUgc2htZW1fdW51c2UgYWxyZWFkeSBkZWxl
dGVkIGl0cyBmcm9tIHN3YXAgY2FjaGUuCiAJCSAqLwogCQlzd2NvdW50ID0gKnN3YXBfbWFwOwot
CQlpZiAoKHN3Y291bnQgPiAwKSAhPSBQYWdlU3dhcENhY2hlKHBhZ2UpKQotCQkJQlVHKCk7CisJ
CSBCVUdfT04oKHN3Y291bnQgPiAwKSAhPSBQYWdlU3dhcENhY2hlKHBhZ2UpKTsKKwkJIAogCQlp
ZiAoKHN3Y291bnQgPiAxKSAmJiBQYWdlRGlydHkocGFnZSkpIHsKIAkJCXJ3X3N3YXBfcGFnZShX
UklURSwgcGFnZSk7CiAJCQlsb2NrX3BhZ2UocGFnZSk7CmRpZmYgLXUgLS1yZWN1cnNpdmUgbGlu
dXgvbW0vdm1zY2FuLmMgdjIuNS4xL2xpbnV4L21tL3Ztc2Nhbi5jCi0tLSBsaW51eC9tbS92bXNj
YW4uYwlTYXQgSmFuICA1IDE3OjA1OjEyIDIwMDIKKysrIHYyLjUuMS9saW51eC9tbS92bXNjYW4u
YwlTdW4gSmFuICA2IDA0OjI2OjE3IDIwMDIKQEAgLTIzNSw4ICsyMzUsNyBAQAogCXBnZGlyID0g
cGdkX29mZnNldChtbSwgYWRkcmVzcyk7CiAKIAllbmQgPSB2bWEtPnZtX2VuZDsKLQlpZiAoYWRk
cmVzcyA+PSBlbmQpCi0JCUJVRygpOworCUJVR19PTiAoYWRkcmVzcyA+PSBlbmQpOwogCWRvIHsK
IAkJY291bnQgPSBzd2FwX291dF9wZ2QobW0sIHZtYSwgcGdkaXIsIGFkZHJlc3MsIGVuZCwgY291
bnQsIGNsYXNzem9uZSk7CiAJCWlmICghY291bnQpCg==

--------------Boundary-00=_5AOI8ROK0CDEJJJ0S9A9--
-
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/