[PATCH] netfilter-0.1.10: struct_reserve oops
Marc Boucher
marc@mbsi.ca
Thu, 21 Oct 1999 01:02:34 -0400
--==_Exmh_15538546300
Content-Type: text/plain; charset=us-ascii
Hi Rusty,
There is a problem with the struct_reserve mechanism used in netfilter's
ip_conntrack. If a new module (such as ip_nat) that reserves additional
space in struct ip_conntrack is loaded after some connections have
already been registered, illegal memory references (i.e. panics) will
occur if the new module attempts to access its private space in the
previously allocated (smaller) ip_conntrack objects.
A patch to address this issue is enclosed.
Marc
--==_Exmh_15538546300
Content-Type: application/x-patch ; name="netfilter-0.1.10-cleanup-structres.patch"
Content-Description: netfilter-0.1.10-cleanup-structres.patch
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="netfilter-0.1.10-cleanup-structres.patch"
ZGlmZiAtciAtdSBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtZGlzdC9pbmNsdWRlL2Nvbm50
cmFjay9pcF9jb25udHJhY2suaCBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtbWIvaW5jbHVk
ZS9jb25udHJhY2svaXBfY29ubnRyYWNrLmgKLS0tIG5ldGZpbHRlci0wLjEuMTAtY2xlYW51
cC1kaXN0L2luY2x1ZGUvY29ubnRyYWNrL2lwX2Nvbm50cmFjay5oCVRodSBPY3QgMjEgMDA6
MDI6MTggMTk5OQorKysgbmV0ZmlsdGVyLTAuMS4xMC1jbGVhbnVwLW1iL2luY2x1ZGUvY29u
bnRyYWNrL2lwX2Nvbm50cmFjay5oCVRodSBPY3QgMjEgMDA6MTQ6MjMgMTk5OQpAQCAtMTg2
LDYgKzE4Niw4IEBACiAKIAkvKiBIZWxwZXIsIGlmIGFueS4gKi8KIAlzdHJ1Y3QgaXBfY29u
bnRyYWNrX2hlbHBlciAqaGVscGVyOworCisJU1RSVUNUX1JFU0VSVkVEX1NJWkU7CiB9Owog
CiBzdHJ1Y3QgaXBfY29ubnRyYWNrX3Byb3RvY29sCmRpZmYgLXIgLXUgbmV0ZmlsdGVyLTAu
MS4xMC1jbGVhbnVwLWRpc3QvaW5jbHVkZS9jb25udHJhY2svc3RydWN0X3Jlc2VydmUuaCBu
ZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtbWIvaW5jbHVkZS9jb25udHJhY2svc3RydWN0X3Jl
c2VydmUuaAotLS0gbmV0ZmlsdGVyLTAuMS4xMC1jbGVhbnVwLWRpc3QvaW5jbHVkZS9jb25u
dHJhY2svc3RydWN0X3Jlc2VydmUuaAlUaHUgT2N0IDIxIDAwOjAyOjE4IDE5OTkKKysrIG5l
dGZpbHRlci0wLjEuMTAtY2xlYW51cC1tYi9pbmNsdWRlL2Nvbm50cmFjay9zdHJ1Y3RfcmVz
ZXJ2ZS5oCVRodSBPY3QgMjEgMDA6MTE6MzcgMTk5OQpAQCAtMjYsMTAgKzI2LDI1IEBACiAJ
RVhQT1JUX1NZTUJPTChfU1RSVUNUX0NBVChfX3Jlc2VydmVfLHR5cGUpKQogCiAjZGVmaW5l
IFNUUlVDVF9SRVNFUlZFX0FMTE9DQVRFKHR5cGUsIHByaSkJCQkJXAotCSh7IHN0cnVjdCB0
eXBlICp4ID0ga21hbGxvYyhzaXplb2Yoc3RydWN0IHR5cGUpCQkJXAotCQkJICAgICsgX1NU
UlVDVF9DQVQoX19yZXNlcnZlXyx0eXBlKSwgcHJpKTsJXAotCSAgIGlmICh4KSBtZW1zZXQo
eCsxLCAwLCBfU1RSVUNUX0NBVChfX3Jlc2VydmVfLHR5cGUpKTsJCVwKKwkoeyBzaXplX3Qg
cyA9IHNpemVvZihzdHJ1Y3QgdHlwZSkrX1NUUlVDVF9DQVQoX19yZXNlcnZlXyx0eXBlKTsJ
XAorCSAgIHN0cnVjdCB0eXBlICp4ID0ga21hbGxvYyhzLCBwcmkpOwkJCQlcCisJICAgaWYg
KHgpIHsJCQkJCQkJXAorCSAgCSBtZW1zZXQoeCwgMCwgcyk7CQkJCQlcCisJICAJIHgtPl9z
dHJ1Y3RfcnNydmRfc2l6ZSA9IHM7CQkJCVwKKwkgICB9CQkJCQkJCQlcCiAJICAgeDsgfSkK
KworI2RlZmluZSBTVFJVQ1RfUkVTRVJWRURfU0laRQkJXAorCXNpemVfdCBfc3RydWN0X3Jz
cnZkX3NpemUKKworI2lmZGVmIERFQlVHX0NPTk5UUkFDSworI2RlZmluZSBTVFJVQ1RfUkVT
RVJWRURfUFRSKHN0cnVjdHAsIG9mZnNldCkJCQkJXAorCShvZmZzZXQgPCBzdHJ1Y3RwLT5f
c3RydWN0X3JzcnZkX3NpemUpID8gKCh2b2lkICopc3RydWN0cCArIG9mZnNldCkgXAorCTog
KHByaW50aygiJXM6JWkoJXMpOiBvZmZzZXQgJWQgdG9vIGhpZ2ggZm9yIHN0cnVjdHA9JXAg
c2l6ZT0lZFxuIiwgX19GSUxFX18sIF9fTElORV9fLCBfX0ZVTkNUSU9OX18sIG9mZnNldCwg
c3RydWN0cCwgc3RydWN0cC0+X3N0cnVjdF9yc3J2ZF9zaXplKSwgTlVMTCkKKyNlbHNlCisj
ZGVmaW5lIFNUUlVDVF9SRVNFUlZFRF9QVFIoc3RydWN0cCwgb2Zmc2V0KQkJCQlcCisJKG9m
ZnNldCA8IHN0cnVjdHAtPl9zdHJ1Y3RfcnNydmRfc2l6ZSkgPyAoKHZvaWQgKilzdHJ1Y3Rw
ICsgb2Zmc2V0KSA6IE5VTEwKKyNlbmRpZgogCiBleHRlcm4gaW5saW5lIHNpemVfdAogX19z
dHJ1Y3RfcmVzZXJ2ZShzaXplX3QgKmV4dHJhLCBzaXplX3Qgc2l6ZSkKZGlmZiAtciAtdSBu
ZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtZGlzdC9OQVQvZXh0ZW5zaW9ucy9pcF9uYXRfZnRw
LmMgbmV0ZmlsdGVyLTAuMS4xMC1jbGVhbnVwLW1iL05BVC9leHRlbnNpb25zL2lwX25hdF9m
dHAuYwotLS0gbmV0ZmlsdGVyLTAuMS4xMC1jbGVhbnVwLWRpc3QvTkFUL2V4dGVuc2lvbnMv
aXBfbmF0X2Z0cC5jCVRodSBPY3QgMjEgMDA6MDI6MTggMTk5OQorKysgbmV0ZmlsdGVyLTAu
MS4xMC1jbGVhbnVwLW1iL05BVC9leHRlbnNpb25zL2lwX25hdF9mdHAuYwlUaHUgT2N0IDIx
IDAwOjExOjM3IDE5OTkKQEAgLTI1MiwxMSArMjUyLDE1IEBACiB7CiAJc3RydWN0IGlwaGRy
ICppcGggPSAoKnBza2IpLT5uaC5pcGg7CiAJc3RydWN0IHRjcGhkciAqdGNwaCA9ICh2b2lk
ICopaXBoICsgaXBoLT5paGwqNDsKLQlzdHJ1Y3QgZnRwX2luZm8gKmZ0cCA9ICh2b2lkICop
aC0+Y3RyYWNrICsgZnRwX29mZnNldDsKKwlzdHJ1Y3QgZnRwX2luZm8gKmZ0cCA9IFNUUlVD
VF9SRVNFUlZFRF9QVFIoaC0+Y3RyYWNrLCBmdHBfb2Zmc2V0KTsKIAl1X2ludDMyX3QgbmV3
YWNrOwogCXVfaW50MzJfdCAqYWRqdXN0bWU7CiAJaW50MzJfdCBvZmZzZXQ7CiAJdW5zaWdu
ZWQgaW50IHJldDsKKworCWlmKCFmdHApIHsKKwkJcmV0dXJuIE5GX0FDQ0VQVDsKKwl9CiAK
IAlMT0NLX0JIKCZmdHBfbG9jayk7CiAKZGlmZiAtciAtdSBuZXRmaWx0ZXItMC4xLjEwLWNs
ZWFudXAtZGlzdC9OQVQvaXBfbmF0X2NvcmUuYyBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAt
bWIvTkFUL2lwX25hdF9jb3JlLmMKLS0tIG5ldGZpbHRlci0wLjEuMTAtY2xlYW51cC1kaXN0
L05BVC9pcF9uYXRfY29yZS5jCVRodSBPY3QgMjEgMDA6MDI6MTggMTk5OQorKysgbmV0Zmls
dGVyLTAuMS4xMC1jbGVhbnVwLW1iL05BVC9pcF9uYXRfY29yZS5jCVRodSBPY3QgMjEgMDA6
MTE6MzcgMTk5OQpAQCAtNTQsOCArNTQsMTEgQEAKIC8qIE5vb25lIHVzaW5nIGNvbm50cmFj
ayBieSB0aGUgdGltZSB0aGlzIGNhbGxlZC4gKi8KIHN0YXRpYyB2b2lkIGlwX25hdF9jbGVh
bnVwX2Nvbm50cmFjayhzdHJ1Y3QgaXBfY29ubnRyYWNrICpjb25uKQogewotCXN0cnVjdCBp
cF9uYXRfaW5mbyAqaW5mbyA9ICh2b2lkICopY29ubiArIGlwX25hdF9vZmZzZXQ7CisJc3Ry
dWN0IGlwX25hdF9pbmZvICppbmZvID0gU1RSVUNUX1JFU0VSVkVEX1BUUihjb25uLCBpcF9u
YXRfb2Zmc2V0KTsKIAorCWlmKCFpbmZvIHx8ICFpbmZvLT5pbml0aWFsaXplZCkgeworCQly
ZXR1cm47CisJfQogCUlQX0NPTk5UUkFDS19BU1NFUlQoaW5mby0+Ynlzb3VyY2UuY29ubnRy
YWNrKTsKIAlJUF9DT05OVFJBQ0tfQVNTRVJUKGluZm8tPmJ5aXBzcHJvdG8uY29ubnRyYWNr
KTsKIApAQCAtNDU4LDEwICs0NjEsMTMgQEAKIHsKIAlzdHJ1Y3QgaXBfY29ubnRyYWNrX3R1
cGxlIG5ld190dXBsZSwgaW52X3R1cGxlLCByZXBseTsKIAlzdHJ1Y3QgaXBfbmF0X21hbmlw
dWxhdGlvbiAqbSwgKm1fcmV2OwotCXN0cnVjdCBpcF9uYXRfaW5mbyAqaW5mbyA9ICh2b2lk
ICopY29ubnRyYWNrICsgaXBfbmF0X29mZnNldDsKKwlzdHJ1Y3QgaXBfbmF0X2luZm8gKmlu
Zm8gPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGNvbm50cmFjaywgaXBfbmF0X29mZnNldCk7CiAJ
Y29uc3Qgc3RydWN0IGlwX2Nvbm50cmFja190dXBsZSAqb3JpZ190dXBsZQogCQk9ICZjb25u
dHJhY2stPnR1cGxlaGFzaFswXS50dXBsZTsKIAorCWlmKCFpbmZvKSB7CisJCXJldHVybiBO
Rl9BQ0NFUFQ7CisJfQogCU1VU1RfQkVfV1JJVEVfTE9DS0VEKCZpcF9uYXRfbG9jayk7CiAJ
aW5mby0+ZGlyaW5mb1swXS5ob29rID0gb3JpZ19ob29rc1shZGV2aWNlXVttYW5pcHR5cGVd
OwogCWluZm8tPmRpcmluZm9bMV0uaG9vayA9IHJlcGx5X2hvb2tzWyFkZXZpY2VdW21hbmlw
dHlwZV07CkBAIC01MzIsNyArNTM4LDcgQEAKIAogdm9pZCBwbGFjZV9pbl9oYXNoZXMoc3Ry
dWN0IGlwX2Nvbm50cmFjayAqY29ubnRyYWNrKQogewotCXN0cnVjdCBpcF9uYXRfaW5mbyAq
aW5mbyA9ICh2b2lkICopY29ubnRyYWNrICsgaXBfbmF0X29mZnNldDsKKwlzdHJ1Y3QgaXBf
bmF0X2luZm8gKmluZm8gPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGNvbm50cmFjaywgaXBfbmF0
X29mZnNldCk7CiAJdW5zaWduZWQgaW50IHNyY2hhc2gKIAkJPSBoYXNoX2J5X3NyYygmY29u
bnRyYWNrLT50dXBsZWhhc2hbMF0udHVwbGUuc3JjLAogCQkJICAgICAgY29ubnRyYWNrLT50
dXBsZWhhc2hbMF0udHVwbGUuZHN0LnByb3RvbnVtKTsKQEAgLTU0Myw2ICs1NDksOSBAQAog
CQkJCSAgIGNvbm50cmFjay0+dHVwbGVoYXNoWzFdLnR1cGxlLnNyYy5pcCwKIAkJCQkgICBj
b25udHJhY2stPnR1cGxlaGFzaFsxXS50dXBsZS5kc3QucHJvdG9udW0pOwogCisJaWYoIWlu
Zm8pIHsKKwkJcmV0dXJuOworCX0KIAlJUF9DT05OVFJBQ0tfQVNTRVJUKCFpbmZvLT5ieXNv
dXJjZS5jb25udHJhY2spOwogCiAJTVVTVF9CRV9XUklURV9MT0NLRUQoJmlwX25hdF9sb2Nr
KTsKQEAgLTU4OSwxMCArNTk4LDEzIEBACiAJICAgc3RydWN0IHNrX2J1ZmYgKipwc2tiKQog
ewogCXVuc2lnbmVkIGludCBpOwotCXN0cnVjdCBpcF9uYXRfaW5mbyAqaW5mbyA9ICh2b2lk
ICopaC0+Y3RyYWNrICsgaXBfbmF0X29mZnNldDsKKwlzdHJ1Y3QgaXBfbmF0X2luZm8gKmlu
Zm8gPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGgtPmN0cmFjaywgaXBfbmF0X29mZnNldCk7CiAJ
c3RydWN0IGlwX25hdF9oZWxwZXIgKmhlbHBlcjsKIAlpbnQgZGlyID0gRElSRUNUSU9OKGgp
OwogCisJaWYoIWluZm8pIHsKKwkJcmV0dXJuIE5GX0FDQ0VQVDsKKwl9CiAJUkVBRF9MT0NL
KCZpcF9uYXRfbG9jayk7CiAJSVBfQ09OTlRSQUNLX0FTU0VSVChpbmZvLT5kaXJpbmZvW2Rp
cl0ubnVtX21hbmlwcyA8IDMpOwogCWZvciAoaSA9IDA7IGkgPCBpbmZvLT5kaXJpbmZvW2Rp
cl0ubnVtX21hbmlwczsgaSsrKSB7CkBAIC02MTcsMTAgKzYyOSwxMyBAQAogCXN0cnVjdCBp
cGhkciAqaXBoID0gc2tiLT5uaC5pcGg7CiAJc3RydWN0IGljbXBoZHIgKmhkciA9IChzdHJ1
Y3QgaWNtcGhkciAqKSgodV9pbnQzMl90ICopaXBoICsgaXBoLT5paGwpOwogCXN0cnVjdCBp
cGhkciAqaW5uZXIgPSAoc3RydWN0IGlwaGRyICopKGhkciArIDEpOwotCXN0cnVjdCBpcF9u
YXRfaW5mbyAqaW5mbyA9ICh2b2lkICopY29ubnRyYWNrICsgaXBfbmF0X29mZnNldDsKKwlz
dHJ1Y3QgaXBfbmF0X2luZm8gKmluZm8gPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGNvbm50cmFj
aywgaXBfbmF0X29mZnNldCk7CiAJc2l6ZV90IGRhdGFsZW4gPSBza2ItPmxlbiAtICgodm9p
ZCAqKWlubmVyIC0gKHZvaWQgKilpcGgpOwogCXVuc2lnbmVkIGludCBpOwogCisJaWYoIWlu
Zm8pIHsKKwkJcmV0dXJuOworCX0KIAlSRUFEX0xPQ0soJmlwX25hdF9sb2NrKTsKIAkvKiBN
YXAgaW5uZXIgcGFja2V0IGZpcnN0OyBkbyB0aGlzIFJFVkVSU0Ugb2Ygbm9ybWFsLiAqLwog
CUlQX0NPTk5UUkFDS19BU1NFUlQoaW5mby0+ZGlyaW5mb1tjb25uX2Rpcl0ubnVtX21hbmlw
cyA8IDMpOwpAQCAtNjgxLDEwICs2OTYsMTAgQEAKIGhlbHBlcl9wdHJfY21wKGNvbnN0IHN0
cnVjdCBpcF9jb25udHJhY2tfdHVwbGVfaGFzaCAqaCwKIAkgICAgICAgY29uc3Qgc3RydWN0
IGlwX25hdF9oZWxwZXIgKmhlbHBlcikKIHsKLQlzdHJ1Y3QgaXBfbmF0X2luZm8gKmluZm8g
PSAodm9pZCAqKWgtPmN0cmFjayArIGlwX25hdF9vZmZzZXQ7Ci0JTVVTVF9CRV9SRUFEX0xP
Q0tFRCgmaXBfbmF0X2xvY2spOworCXN0cnVjdCBpcF9uYXRfaW5mbyAqaW5mbyA9IFNUUlVD
VF9SRVNFUlZFRF9QVFIoaC0+Y3RyYWNrLCBpcF9uYXRfb2Zmc2V0KTsKIAotCXJldHVybiAh
aC0+Y3RyYWNrLT5kZWFkICYmIChpbmZvLT5oZWxwZXIgPT0gaGVscGVyKTsKKwlNVVNUX0JF
X1JFQURfTE9DS0VEKCZpcF9uYXRfbG9jayk7CisJcmV0dXJuICFoLT5jdHJhY2stPmRlYWQg
JiYgaW5mbyAmJiAoaW5mby0+aGVscGVyID09IGhlbHBlcik7CiB9CiAKIHN0YXRpYyBzdHJ1
Y3QgaXBfY29ubnRyYWNrX3R1cGxlX2hhc2ggKgpkaWZmIC1yIC11IG5ldGZpbHRlci0wLjEu
MTAtY2xlYW51cC1kaXN0L05BVC9pcF9uYXRfc3RhbmRhbG9uZS5jIG5ldGZpbHRlci0wLjEu
MTAtY2xlYW51cC1tYi9OQVQvaXBfbmF0X3N0YW5kYWxvbmUuYwotLS0gbmV0ZmlsdGVyLTAu
MS4xMC1jbGVhbnVwLWRpc3QvTkFUL2lwX25hdF9zdGFuZGFsb25lLmMJVGh1IE9jdCAyMSAw
MDowMjoxOCAxOTk5CisrKyBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtbWIvTkFUL2lwX25h
dF9zdGFuZGFsb25lLmMJVGh1IE9jdCAyMSAwMDoxMTozNyAxOTk5CkBAIC01MSw3ICs1MSw3
IEBACiAJICAgICAgIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlICpkZXZpY2UpCiB7CiAJc3Ry
dWN0IGlwX25hdF9ydWxlICpydWxlOwotCXN0cnVjdCBpcF9uYXRfaW5mbyAqaW5mbyA9ICh2
b2lkICopY29ubnRyYWNrICsgaXBfbmF0X29mZnNldDsKKwlzdHJ1Y3QgaXBfbmF0X2luZm8g
KmluZm8gPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGNvbm50cmFjaywgaXBfbmF0X29mZnNldCk7
CiAJdW5zaWduZWQgaW50IHJldDsKIAogCS8qIFByb3RlY3RzIHRoZSBOQVQgcHJpdmF0ZSBy
ZWdpb24gb2YgdGhlIGNvbm50cmFjay4gKi8KQEAgLTExNSwxMiArMTE1LDEyIEBACiAJCX0K
IAkJLyogRmFsbCB0aHJ1Li4uICovCiAJY2FzZSBJUF9DVF9ORVc6Ci0JCWluZm8gPSAodm9p
ZCAqKWgtPmN0cmFjayArIGlwX25hdF9vZmZzZXQ7CisJCWluZm8gPSBTVFJVQ1RfUkVTRVJW
RURfUFRSKGgtPmN0cmFjaywgaXBfbmF0X29mZnNldCk7CiAKIAkJV1JJVEVfTE9DSygmaXBf
bmF0X2xvY2spOwogCQkvKiBTZWVuIGl0IGJlZm9yZT8gIFRoaXMgY2FuIGhhcHBlbiBmb3Ig
bG9vcGJhY2ssIHJldHJhbnMsCiAJCSAgIG9yIGxvY2FsIHBhY2tldHMuLiAqLwotCQlpZiAo
IWluZm8tPmluaXRpYWxpemVkKSB7CisJCWlmIChpbmZvICYmICFpbmZvLT5pbml0aWFsaXpl
ZCkgewogCQkJLyogRGV2aWNlID09IE5VTEwgbWVhbnMgYSBsb2NhbCBwYWNrZXQsIHNpbmNl
CiAJCQkgICBpdCB0aGUgaG9vayBpcyBlaXRoZXIgTkZfSVBfUFJFX1JPVVRJTkcgb3IKIAkJ
CSAgIE5GX0lQX0xPQ0FMX09VVC4gKi8KQEAgLTEzNSwxMCArMTM1LDEwIEBACiAKIAlkZWZh
dWx0OgogCQkvKiBFU1RBQkxJU0hFRCAvIEVTVEFCTElTSEVEX1NQRUNJRklFU19SRUxBVEVE
ICovCi0JCWluZm8gPSAodm9pZCAqKWgtPmN0cmFjayArIGlwX25hdF9vZmZzZXQ7CisJCWlu
Zm8gPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGgtPmN0cmFjaywgaXBfbmF0X29mZnNldCk7CiAJ
fQogCi0JaWYgKGluZm8tPmRpcmluZm9bRElSRUNUSU9OKGgpXS5ob29rID09IGhvb2tudW0p
CisJaWYgKGluZm8gJiYgaW5mby0+ZGlyaW5mb1tESVJFQ1RJT04oaCldLmhvb2sgPT0gaG9v
a251bSkKIAkJcmV0ID0gZG9fYmluZGluZyhoLCBjdGluZm8sIHBza2IpOwogCiAgcmVsZWFz
ZToKQEAgLTE3MCwxMSArMTcwLDExIEBACiAKIAkvKiBTcGVjaWFsIGNhc2U6IGNhdGNoIHNv
dXJjZS1tYW5pcCdlZCBwYWNrZXQgY29taW5nIGluICovCiAJaWYgKGN0aW5mbyA9PSBJUF9D
VF9ORVcpIHsKLQkJc3RydWN0IGlwX25hdF9pbmZvICppbmZvID0gKHZvaWQgKiloLT5jdHJh
Y2sgKyBpcF9uYXRfb2Zmc2V0OworCQlzdHJ1Y3QgaXBfbmF0X2luZm8gKmluZm8gPSBTVFJV
Q1RfUkVTRVJWRURfUFRSKGgtPmN0cmFjaywgaXBfbmF0X29mZnNldCk7CiAKIAkJLyogV2Fu
dGVkIHRvIGRvIHNvdXJjZSBtYW5pcCwgYnV0IHdlIGRvbid0LCBiZWNhdXNlIGl0J3MKIAkJ
ICAgY29taW5nIGludG8gdGhlIGJveCBpdHNlbGYuICovCi0JCWlmIChpbmZvLT5kaXJpbmZv
WzBdLmhvb2sgPT0gTkZfSVBfUE9TVF9ST1VUSU5HKQorCQlpZiAoaW5mbyAmJiBpbmZvLT5k
aXJpbmZvWzBdLmhvb2sgPT0gTkZfSVBfUE9TVF9ST1VUSU5HKQogCQkJaXBfbmF0X3VuZG8o
aC0+Y3RyYWNrKTsKIAl9CiAJaWYgKGN0aW5mbyAhPSBJUF9DVF9JTlZBTElEKQpkaWZmIC1y
IC11IG5ldGZpbHRlci0wLjEuMTAtY2xlYW51cC1kaXN0L05BVC9tYXBwaW5nLXR5cGVzL2lw
X25hdF9tYXBfbWFzcXVlcmFkZS5jIG5ldGZpbHRlci0wLjEuMTAtY2xlYW51cC1tYi9OQVQv
bWFwcGluZy10eXBlcy9pcF9uYXRfbWFwX21hc3F1ZXJhZGUuYwotLS0gbmV0ZmlsdGVyLTAu
MS4xMC1jbGVhbnVwLWRpc3QvTkFUL21hcHBpbmctdHlwZXMvaXBfbmF0X21hcF9tYXNxdWVy
YWRlLmMJVGh1IE9jdCAyMSAwMDowMjoxOCAxOTk5CisrKyBuZXRmaWx0ZXItMC4xLjEwLWNs
ZWFudXAtbWIvTkFUL21hcHBpbmctdHlwZXMvaXBfbmF0X21hcF9tYXNxdWVyYWRlLmMJVGh1
IE9jdCAyMSAwMDoxMTozNyAxOTk5CkBAIC00Niw3ICs0NiwxMSBAQAogCXVfaW50MzJfdCBu
ZXdzcmM7CiAJc3RydWN0IHJ0YWJsZSAqcnQ7CiAJc3RydWN0IGlwX25hdF9tdWx0aV9yYW5n
ZSAqbmV3cmFuZ2U7Ci0JaW50ICptYXNxX2luZGV4ID0gKHZvaWQgKiljb25udHJhY2sgKyBt
YXNxX29mZnNldDsKKwlpbnQgKm1hc3FfaW5kZXggPSBTVFJVQ1RfUkVTRVJWRURfUFRSKGNv
bm50cmFjaywgbWFzcV9vZmZzZXQpOworCisJaWYgKCFtYXNxX2luZGV4KSB7CisJCXJldHVy
biBORl9BQ0NFUFQ7CisJfQogCiAJLyogUGFzcyAwIGluc3RlYWQgb2Ygc2FkZHIsIHNpbmNl
IGl0J3MgZ29pbmcgdG8gYmUgY2hhbmdlZAogCSAgIGFueXdheS4gKi8KQEAgLTk0LDEwICs5
OCwxMCBAQAogZGV2aWNlX2NtcChjb25zdCBzdHJ1Y3QgaXBfY29ubnRyYWNrX3R1cGxlX2hh
c2ggKmgsCiAJICAgaW50IGlmaW5kZXgpCiB7Ci0JaW50ICptYXNxX2luZGV4ID0gKHZvaWQg
KiloLT5jdHJhY2sgKyBtYXNxX29mZnNldDsKKwlpbnQgKm1hc3FfaW5kZXggPSBTVFJVQ1Rf
UkVTRVJWRURfUFRSKGgtPmN0cmFjaywgbWFzcV9vZmZzZXQpOwogCiAJTVVTVF9CRV9SRUFE
X0xPQ0tFRCgmbWFzcV9sb2NrKTsKLQlyZXR1cm4gIWgtPmN0cmFjay0+ZGVhZCAmJiAoKm1h
c3FfaW5kZXggPT0gaWZpbmRleCk7CisJcmV0dXJuICFoLT5jdHJhY2stPmRlYWQgJiYgbWFz
cV9pbmRleCAmJiAoKm1hc3FfaW5kZXggPT0gaWZpbmRleCk7CiB9CiAKIHN0YXRpYyBzdHJ1
Y3QgaXBfY29ubnRyYWNrX3R1cGxlX2hhc2ggKgpkaWZmIC1yIC11IG5ldGZpbHRlci0wLjEu
MTAtY2xlYW51cC1kaXN0L2NvbXBhdC9pcF9md19jb21wYXRfbWFzcS5jIG5ldGZpbHRlci0w
LjEuMTAtY2xlYW51cC1tYi9jb21wYXQvaXBfZndfY29tcGF0X21hc3EuYwotLS0gbmV0Zmls
dGVyLTAuMS4xMC1jbGVhbnVwLWRpc3QvY29tcGF0L2lwX2Z3X2NvbXBhdF9tYXNxLmMJVGh1
IE9jdCAyMSAwMDowMjoxOCAxOTk5CisrKyBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtbWIv
Y29tcGF0L2lwX2Z3X2NvbXBhdF9tYXNxLmMJVGh1IE9jdCAyMSAwMDoxMTozNyAxOTk5CkBA
IC01OSw3ICs1OSwxMiBAQAogCiAJV1JJVEVfTE9DSygmaXBfbmF0X2xvY2spOwogCS8qIFNl
dHVwIHRoZSBtYXNxdWVyYWRlLCBpZiBub3QgYWxyZWFkeSAqLwotCWluZm8gPSAodm9pZCAq
KWgtPmN0cmFjayArIGlwX25hdF9vZmZzZXQ7CisJaW5mbyA9IFNUUlVDVF9SRVNFUlZFRF9Q
VFIoaC0+Y3RyYWNrLCBpcF9uYXRfb2Zmc2V0KTsKKwlpZiAoIWluZm8pIHsKKwkJREVCVUdQ
KCJpcF9jb25udHJhY2tfaW4gc2V0IHRvIGludmFsaWQgY29ubnRyYWNrLlxuIik7CisJCXJl
dCA9IE5GX0FDQ0VQVDsKKwkJZ290byBvdXQ7CisJfQogCWlmICghaW5mby0+aW5pdGlhbGl6
ZWQpIHsKIAkJdV9pbnQzMl90IG5ld3NyYzsKIAkJc3RydWN0IHJ0YWJsZSAqcnQ7CmRpZmYg
LXIgLXUgbmV0ZmlsdGVyLTAuMS4xMC1jbGVhbnVwLWRpc3QvY29ubnRyYWNrL2lwX2Nvbm50
cmFja19jb3JlLmMgbmV0ZmlsdGVyLTAuMS4xMC1jbGVhbnVwLW1iL2Nvbm50cmFjay9pcF9j
b25udHJhY2tfY29yZS5jCi0tLSBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtZGlzdC9jb25u
dHJhY2svaXBfY29ubnRyYWNrX2NvcmUuYwlUaHUgT2N0IDIxIDAwOjAyOjE4IDE5OTkKKysr
IG5ldGZpbHRlci0wLjEuMTAtY2xlYW51cC1tYi9jb25udHJhY2svaXBfY29ubnRyYWNrX2Nv
cmUuYwlUaHUgT2N0IDIxIDAwOjExOjM3IDE5OTkKQEAgLTM1MCwxOCArMzUwLDE2IEBACiAJ
CQkgICB0dXBsZS0+ZHN0LnByb3RvbnVtLCB0dXBsZS0+ZHN0LnUuYWxsKTsKIAlSRUFEX1VO
TE9DSygmaXBfY29ubnRyYWNrX2xvY2spOwogCi0JKmNvbm50cmFjayA9ICgoc3RydWN0IGlw
X2Nvbm50cmFjaykKLQkJICAgICAge3sge3sgTlVMTCwgTlVMTCB9LCAqdHVwbGUsIGNvbm50
cmFjayB9LAotCQkJIHt7IE5VTEwsIE5VTEwgfSwgcmVwbF90dXBsZSwgY29ubnRyYWNrIH0s
Ci0JCSAgICAgIH0sCi0JCSAgICAgICAxIDw8IElQU19OT1JNQUwsIDAsCi0JCSAgICAgICBB
VE9NSUNfSU5JVCgxKSwgLyogaG9tZSByZWZlcmVuY2UuICovCisJY29ubnRyYWNrLT50dXBs
ZWhhc2hbMF0gPSAoc3RydWN0IGlwX2Nvbm50cmFja190dXBsZV9oYXNoKQorCQkgICAgICB7
eyBOVUxMLCBOVUxMIH0sICp0dXBsZSwgY29ubnRyYWNrIH07CisJY29ubnRyYWNrLT50dXBs
ZWhhc2hbMV0gPSAoc3RydWN0IGlwX2Nvbm50cmFja190dXBsZV9oYXNoKQorCQkgICAgICB7
eyBOVUxMLCBOVUxMIH0sIHJlcGxfdHVwbGUsIGNvbm50cmFjayB9OworCWNvbm50cmFjay0+
c3RhdHVzID0gMSA8PCBJUFNfTk9STUFMOworCWNvbm50cmFjay0+dXNlID0gKGF0b21pY190
KUFUT01JQ19JTklUKDEpOyAvKiBob21lIHJlZmVyZW5jZS4gKi8KKwljb25udHJhY2stPnRp
bWVvdXQgPSAoc3RydWN0IHRpbWVyX2xpc3QpCiAJCSAgICAgICB7IE5VTEwsIE5VTEwsIGpp
ZmZpZXMgKyBwcm90b2NvbC0+ZXhwaXJ5LAotCQkJICh1bnNpZ25lZCBsb25nKWNvbm50cmFj
aywgTlVMTCB9LAotCQkgICAgICAgLyogRXhwZWN0ZWQgKi8KLQkJICAgICAgIHt7IE5VTEws
IE5VTEwgfSwgeyB7IDAsIHsgMCB9LCAwIH0sIHsgMCwgeyAwIH0sIDAgfSB9IH0sCi0JCSAg
ICAgICAvKiBoZWxwZXIgKi8KLQkJICAgICAgIGhlbHBlciB9KTsKKwkJCSAodW5zaWduZWQg
bG9uZyljb25udHJhY2ssIE5VTEwgfTsKKwljb25udHJhY2stPmhlbHBlciA9IGhlbHBlcjsK
IAogCWluaXRfdGltZXIoJmNvbm50cmFjay0+dGltZW91dCk7CiAJY29ubnRyYWNrLT50aW1l
b3V0LmZ1bmN0aW9uID0gaXBfY29ubnRyYWNrX2RlbGV0ZV90aW1lb3V0OwpkaWZmIC1yIC11
IG5ldGZpbHRlci0wLjEuMTAtY2xlYW51cC1kaXN0L2Nvbm50cmFjay9wcm90b2NvbHMvaXBf
Y29ubnRyYWNrX3RjcC5jIG5ldGZpbHRlci0wLjEuMTAtY2xlYW51cC1tYi9jb25udHJhY2sv
cHJvdG9jb2xzL2lwX2Nvbm50cmFja190Y3AuYwotLS0gbmV0ZmlsdGVyLTAuMS4xMC1jbGVh
bnVwLWRpc3QvY29ubnRyYWNrL3Byb3RvY29scy9pcF9jb25udHJhY2tfdGNwLmMJVGh1IE9j
dCAyMSAwMDowMjoxOCAxOTk5CisrKyBuZXRmaWx0ZXItMC4xLjEwLWNsZWFudXAtbWIvY29u
bnRyYWNrL3Byb3RvY29scy9pcF9jb25udHJhY2tfdGNwLmMJVGh1IE9jdCAyMSAwMDoxMToz
NyAxOTk5CkBAIC0xNDIsOCArMTQyLDEyIEBACiBzdGF0aWMgdW5zaWduZWQgaW50IHRjcF9w
cmludF9jb25udHJhY2soY2hhciAqYnVmZmVyLAogCQkJCQljb25zdCBzdHJ1Y3QgaXBfY29u
bnRyYWNrICpjb25udHJhY2spCiB7Ci0Jc3RydWN0IHByb3RvY29sX2luZm8gKmluZm8gPSAo
dm9pZCAqKWNvbm50cmFjayArIHByb3RvY29sX29mZnNldDsKKwlzdHJ1Y3QgcHJvdG9jb2xf
aW5mbyAqaW5mbyA9IFNUUlVDVF9SRVNFUlZFRF9QVFIoY29ubnRyYWNrLCBwcm90b2NvbF9v
ZmZzZXQpOwogCisKKwlpZighaW5mbykgeworCQlyZXR1cm4gMDsKKwl9CiAJTVVTVF9CRV9S
RUFEX0xPQ0tFRCgmaXBfY29ubnRyYWNrX2xvY2spOwogCXJldHVybiBzcHJpbnRmKGJ1ZmZl
ciwgIiVzICIsCiAJCSAgICAgICB0Y3BfY29ubnRyYWNrX25hbWVzW2luZm8tPnRjcF9jb25u
dHJhY2tdKTsKQEAgLTE2NCwxMCArMTY4LDEzIEBACiAJCQkJICAgIGludCBkaXIsCiAJCQkJ
ICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gKmNvbm50cmFja2luZm8pCiB7Ci0Jc3RydWN0
IHByb3RvY29sX2luZm8gKmluZm8gPSAodm9pZCAqKWNvbm50cmFjayArIHByb3RvY29sX29m
ZnNldDsKKwlzdHJ1Y3QgcHJvdG9jb2xfaW5mbyAqaW5mbyA9IFNUUlVDVF9SRVNFUlZFRF9Q
VFIoY29ubnRyYWNrLCBwcm90b2NvbF9vZmZzZXQpOwogCWVudW0gdGNwX2Nvbm50cmFjayBu
ZXdjb25udHJhY2s7CiAJc3RydWN0IHRjcGhkciAqdGNwaCA9IChzdHJ1Y3QgdGNwaGRyICop
KCh1X2ludDMyX3QgKilpcGggKyBpcGgtPmlobCk7CiAKKwlpZighaW5mbykgeworCQlyZXR1
cm4gTkZfQUNDRVBUOworCX0KIAkvKiBXZSdyZSBndWFyYW50ZWVkIHRvIGhhdmUgdGhlIGJh
c2UgaGVhZGVyLCBidXQgbWF5YmUgbm90IHRoZQogICAgICAgICAgICBvcHRpb25zLiAqLwog
CWlmIChsZW4gPCAoaXBoLT5paGwgKyB0Y3BoLT5kb2ZmKSAqNCApIHsKQEAgLTIwNSwxMCAr
MjEyLDEzIEBACiBzdGF0aWMgaW50IHRjcF9uZXcoc3RydWN0IGlwX2Nvbm50cmFjayAqY29u
bnRyYWNrLAogCQkgICBzdHJ1Y3QgaXBoZHIgKmlwaCwgc2l6ZV90IGxlbikKIHsKLQlzdHJ1
Y3QgcHJvdG9jb2xfaW5mbyAqaW5mbyA9ICh2b2lkICopY29ubnRyYWNrICsgcHJvdG9jb2xf
b2Zmc2V0OworCXN0cnVjdCBwcm90b2NvbF9pbmZvICppbmZvID0gU1RSVUNUX1JFU0VSVkVE
X1BUUihjb25udHJhY2ssIHByb3RvY29sX29mZnNldCk7CiAJZW51bSB0Y3BfY29ubnRyYWNr
IG5ld2Nvbm50cmFjazsKIAlzdHJ1Y3QgdGNwaGRyICp0Y3BoID0gKHN0cnVjdCB0Y3BoZHIg
KikoKHVfaW50MzJfdCAqKWlwaCArIGlwaC0+aWhsKTsKIAorCWlmKCFpbmZvKSB7CisJCXJl
dHVybiAwOworCX0KIAluZXdjb25udHJhY2sKIAkJPSB0Y3BfY29ubnRyYWNrc1swXVtnZXRf
Y29ubnRyYWNrX2luZGV4KHRjcGgpXQogCQlbVENQX0NPTk5UUkFDS19OT05FXTsK
--==_Exmh_15538546300--