[patch] Cramfs

Bradley (bradb@cs.stanford.edu)
Tue, 8 Jan 2002 16:54:27 -0800 (PST)


This message is in MIME format. The first part should be readable text,
while the remaining parts are likely unreadable without MIME-aware tools.
Send mail to mime@docserver.cac.washington.edu for more info.

--17438721-1948232257-1010532021=:16310
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII
Content-ID: <Pine.LNX.4.33.0201081653582.16310@earth.ayrnetworks.com>

This is a patch that applies cleanly to 2.4.17 and 2.5.1. It only
touches cramfs stuff. It fixes cramfs kernel support and the mkcramfs and
cramfsck programs to work with big-endian machines, by swabbing where
necessary. Thus, big endian and little endian machines create and read
little endian cramfs data (what the documentation suggests should happen).

We've been using these changes on our big endian machines for a while, and
have used Daniel Quinlan's stress_cramfs script to test the changes on
i386 as well. It would be nice for us bigendianites to have this in...

Thanks,
Bradley Bozarth

--17438721-1948232257-1010532021=:16310
Content-Type: TEXT/PLAIN; CHARSET=US-ASCII; NAME="cramfs_be.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.LNX.4.33.0201081520210.16310@earth.ayrnetworks.com>
Content-Description:
Content-Disposition: ATTACHMENT; FILENAME="cramfs_be.diff"

ZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNC4xNy9mcy9jcmFtZnMv
aW5vZGUuYyBsaW51eC1jdXJyL2ZzL2NyYW1mcy9pbm9kZS5jDQotLS0gbGlu
dXgtMi40LjE3L2ZzL2NyYW1mcy9pbm9kZS5jCUZyaSBEZWMgMjEgMDk6NDE6
NTUgMjAwMQ0KKysrIGxpbnV4LWN1cnIvZnMvY3JhbWZzL2lub2RlLmMJV2Vk
IEphbiAgMiAxNzowNzoyOSAyMDAyDQpAQCAtMjIsNiArMjIsNyBAQA0KICNp
bmNsdWRlIDxhc20vc2VtYXBob3JlLmg+DQogDQogI2luY2x1ZGUgPGFzbS91
YWNjZXNzLmg+DQorI2luY2x1ZGUgPGFzbS9ieXRlb3JkZXIuaD4NCiANCiAj
ZGVmaW5lIENSQU1GU19TQl9NQUdJQyB1LmNyYW1mc19zYi5tYWdpYw0KICNk
ZWZpbmUgQ1JBTUZTX1NCX1NJWkUgdS5jcmFtZnNfc2Iuc2l6ZQ0KQEAgLTM5
LDcgKzQwLDcgQEANCiANCiAvKiBUaGVzZSB0d28gbWFjcm9zIG1heSBjaGFu
Z2UgaW4gZnV0dXJlLCB0byBwcm92aWRlIGJldHRlciBzdF9pbm8NCiAgICBz
ZW1hbnRpY3MuICovDQotI2RlZmluZSBDUkFNSU5PKHgpCSgoeCktPm9mZnNl
dD8oeCktPm9mZnNldDw8MjoxKQ0KKyNkZWZpbmUgQ1JBTUlOTyh4KQkoR0VU
X0NSQU1fT0ZGU0VUKHgpID8gR0VUX0NSQU1fT0ZGU0VUKHgpPDwyIDogMSkN
CiAjZGVmaW5lIE9GRlNFVCh4KQkoKHgpLT5pX2lubykNCiANCiBzdGF0aWMg
c3RydWN0IGlub2RlICpnZXRfY3JhbWZzX2lub2RlKHN0cnVjdCBzdXBlcl9i
bG9jayAqc2IsIHN0cnVjdCBjcmFtZnNfaW5vZGUgKiBjcmFtZnNfaW5vZGUp
DQpAQCAtNDcsMTAgKzQ4LDEwIEBADQogCXN0cnVjdCBpbm9kZSAqIGlub2Rl
ID0gbmV3X2lub2RlKHNiKTsNCiANCiAJaWYgKGlub2RlKSB7DQotCQlpbm9k
ZS0+aV9tb2RlID0gY3JhbWZzX2lub2RlLT5tb2RlOw0KLQkJaW5vZGUtPmlf
dWlkID0gY3JhbWZzX2lub2RlLT51aWQ7DQotCQlpbm9kZS0+aV9zaXplID0g
Y3JhbWZzX2lub2RlLT5zaXplOw0KLQkJaW5vZGUtPmlfYmxvY2tzID0gKGNy
YW1mc19pbm9kZS0+c2l6ZSAtIDEpIC8gNTEyICsgMTsNCisJCWlub2RlLT5p
X21vZGUgPSBsZTE2X3RvX2NwdShjcmFtZnNfaW5vZGUtPm1vZGUpOw0KKwkJ
aW5vZGUtPmlfdWlkID0gbGUxNl90b19jcHUoY3JhbWZzX2lub2RlLT51aWQp
Ow0KKwkJaW5vZGUtPmlfc2l6ZSA9IENSQU1fU1dBQl8yNChjcmFtZnNfaW5v
ZGUtPnNpemUpOw0KKwkJaW5vZGUtPmlfYmxvY2tzID0gKENSQU1fU1dBQl8y
NChjcmFtZnNfaW5vZGUtPnNpemUpLTEpLzUxMiArIDE7DQogCQlpbm9kZS0+
aV9ibGtzaXplID0gUEFHRV9DQUNIRV9TSVpFOw0KIAkJaW5vZGUtPmlfZ2lk
ID0gY3JhbWZzX2lub2RlLT5naWQ7DQogCQlpbm9kZS0+aV9pbm8gPSBDUkFN
SU5PKGNyYW1mc19pbm9kZSk7DQpAQCAtNzAsNyArNzEsOCBAQA0KIAkJCWlu
b2RlLT5pX2RhdGEuYV9vcHMgPSAmY3JhbWZzX2FvcHM7DQogCQl9IGVsc2Ug
ew0KIAkJCWlub2RlLT5pX3NpemUgPSAwOw0KLQkJCWluaXRfc3BlY2lhbF9p
bm9kZShpbm9kZSwgaW5vZGUtPmlfbW9kZSwgY3JhbWZzX2lub2RlLT5zaXpl
KTsNCisJCQlpbml0X3NwZWNpYWxfaW5vZGUoaW5vZGUsIGlub2RlLT5pX21v
ZGUsIA0KKwkJCQkJICAgQ1JBTV9TV0FCXzI0KGNyYW1mc19pbm9kZS0+c2l6
ZSkpOw0KIAkJfQ0KIAl9DQogCXJldHVybiBpbm9kZTsNCkBAIC0yMDksNDMg
KzIxMSw0MyBAQA0KIAl1cCgmcmVhZF9tdXRleCk7DQogDQogCS8qIERvIHNh
bml0eSBjaGVja3Mgb24gdGhlIHN1cGVyYmxvY2sgKi8NCi0JaWYgKHN1cGVy
Lm1hZ2ljICE9IENSQU1GU19NQUdJQykgew0KKwlpZiAobGUzMl90b19jcHUo
c3VwZXIubWFnaWMpICE9IENSQU1GU19NQUdJQykgew0KIAkJLyogY2hlY2sg
YXQgNTEyIGJ5dGUgb2Zmc2V0ICovDQogCQltZW1jcHkoJnN1cGVyLCBjcmFt
ZnNfcmVhZChzYiwgNTEyLCBzaXplb2Yoc3VwZXIpKSwgc2l6ZW9mKHN1cGVy
KSk7DQotCQlpZiAoc3VwZXIubWFnaWMgIT0gQ1JBTUZTX01BR0lDKSB7DQor
CQlpZiAobGUzMl90b19jcHUoc3VwZXIubWFnaWMpICE9IENSQU1GU19NQUdJ
Qykgew0KIAkJCXByaW50ayhLRVJOX0VSUiAiY3JhbWZzOiB3cm9uZyBtYWdp
Y1xuIik7DQogCQkJZ290byBvdXQ7DQogCQl9DQogCX0NCiANCiAJLyogZ2V0
IGZlYXR1cmUgZmxhZ3MgZmlyc3QgKi8NCi0JaWYgKHN1cGVyLmZsYWdzICYg
fkNSQU1GU19TVVBQT1JURURfRkxBR1MpIHsNCisJaWYgKGxlMzJfdG9fY3B1
KHN1cGVyLmZsYWdzKSAmIH5DUkFNRlNfU1VQUE9SVEVEX0ZMQUdTKSB7DQog
CQlwcmludGsoS0VSTl9FUlIgImNyYW1mczogdW5zdXBwb3J0ZWQgZmlsZXN5
c3RlbSBmZWF0dXJlc1xuIik7DQogCQlnb3RvIG91dDsNCiAJfQ0KIA0KIAkv
KiBDaGVjayB0aGF0IHRoZSByb290IGlub2RlIGlzIGluIGEgc2FuZSBzdGF0
ZSAqLw0KLQlpZiAoIVNfSVNESVIoc3VwZXIucm9vdC5tb2RlKSkgew0KKwlp
ZiAoIVNfSVNESVIobGUxNl90b19jcHUoc3VwZXIucm9vdC5tb2RlKSkpIHsN
CiAJCXByaW50ayhLRVJOX0VSUiAiY3JhbWZzOiByb290IGlzIG5vdCBhIGRp
cmVjdG9yeVxuIik7DQogCQlnb3RvIG91dDsNCiAJfQ0KLQlyb290X29mZnNl
dCA9IHN1cGVyLnJvb3Qub2Zmc2V0IDw8IDI7DQotCWlmIChzdXBlci5mbGFn
cyAmIENSQU1GU19GTEFHX0ZTSURfVkVSU0lPTl8yKSB7DQotCQlzYi0+Q1JB
TUZTX1NCX1NJWkU9c3VwZXIuc2l6ZTsNCi0JCXNiLT5DUkFNRlNfU0JfQkxP
Q0tTPXN1cGVyLmZzaWQuYmxvY2tzOw0KLQkJc2ItPkNSQU1GU19TQl9GSUxF
Uz1zdXBlci5mc2lkLmZpbGVzOw0KKwlyb290X29mZnNldCA9IEdFVF9DUkFN
X09GRlNFVCgmKHN1cGVyLnJvb3QpKSA8PCAyOw0KKwlpZiAobGUzMl90b19j
cHUoc3VwZXIuZmxhZ3MpICYgQ1JBTUZTX0ZMQUdfRlNJRF9WRVJTSU9OXzIp
IHsNCisJCXNiLT5DUkFNRlNfU0JfU0laRT1sZTMyX3RvX2NwdShzdXBlci5z
aXplKTsNCisJCXNiLT5DUkFNRlNfU0JfQkxPQ0tTPWxlMzJfdG9fY3B1KHN1
cGVyLmZzaWQuYmxvY2tzKTsNCisJCXNiLT5DUkFNRlNfU0JfRklMRVM9bGUz
Ml90b19jcHUoc3VwZXIuZnNpZC5maWxlcyk7DQogCX0gZWxzZSB7DQogCQlz
Yi0+Q1JBTUZTX1NCX1NJWkU9MTw8Mjg7DQogCQlzYi0+Q1JBTUZTX1NCX0JM
T0NLUz0wOw0KIAkJc2ItPkNSQU1GU19TQl9GSUxFUz0wOw0KIAl9DQotCXNi
LT5DUkFNRlNfU0JfTUFHSUM9c3VwZXIubWFnaWM7DQotCXNiLT5DUkFNRlNf
U0JfRkxBR1M9c3VwZXIuZmxhZ3M7DQorCXNiLT5DUkFNRlNfU0JfTUFHSUMg
PSBsZTMyX3RvX2NwdShzdXBlci5tYWdpYyk7DQorCXNiLT5DUkFNRlNfU0Jf
RkxBR1MgPSBsZTMyX3RvX2NwdShzdXBlci5mbGFncyk7DQogCWlmIChyb290
X29mZnNldCA9PSAwKQ0KIAkJcHJpbnRrKEtFUk5fSU5GTyAiY3JhbWZzOiBl
bXB0eSBmaWxlc3lzdGVtIik7DQotCWVsc2UgaWYgKCEoc3VwZXIuZmxhZ3Mg
JiBDUkFNRlNfRkxBR19TSElGVEVEX1JPT1RfT0ZGU0VUKSAmJg0KLQkJICgo
cm9vdF9vZmZzZXQgIT0gc2l6ZW9mKHN0cnVjdCBjcmFtZnNfc3VwZXIpKSAm
Jg0KLQkJICAocm9vdF9vZmZzZXQgIT0gNTEyICsgc2l6ZW9mKHN0cnVjdCBj
cmFtZnNfc3VwZXIpKSkpDQorCWVsc2UgaWYgKCEobGUzMl90b19jcHUoc3Vw
ZXIuZmxhZ3MpICYgQ1JBTUZTX0ZMQUdfU0hJRlRFRF9ST09UX09GRlNFVCkN
CisJCSAmJiAoKHJvb3Rfb2Zmc2V0ICE9IHNpemVvZihzdHJ1Y3QgY3JhbWZz
X3N1cGVyKSkgJiYNCisJCSAgICAgKHJvb3Rfb2Zmc2V0ICE9IDUxMiArIHNp
emVvZihzdHJ1Y3QgY3JhbWZzX3N1cGVyKSkpKQ0KIAl7DQogCQlwcmludGso
S0VSTl9FUlIgImNyYW1mczogYmFkIHJvb3Qgb2Zmc2V0ICVsdVxuIiwgcm9v
dF9vZmZzZXQpOw0KIAkJZ290byBvdXQ7DQpAQCAtMzA3LDcgKzMwOSw3IEBA
DQogCQkgKiBhbmQgdGhlIG5hbWUgcGFkZGVkIG91dCB0byA0LWJ5dGUgYm91
bmRhcmllcw0KIAkJICogd2l0aCB6ZXJvZXMuDQogCQkgKi8NCi0JCW5hbWVs
ZW4gPSBkZS0+bmFtZWxlbiA8PCAyOw0KKwkJbmFtZWxlbiA9IEdFVF9DUkFN
X05BTUVMRU4oZGUpIDw8IDI7DQogCQluZXh0b2Zmc2V0ID0gb2Zmc2V0ICsg
c2l6ZW9mKCpkZSkgKyBuYW1lbGVuOw0KIAkJZm9yICg7Oykgew0KIAkJCWlm
ICghbmFtZWxlbikNCkBAIC0zMTYsNyArMzE4LDggQEANCiAJCQkJYnJlYWs7
DQogCQkJbmFtZWxlbi0tOw0KIAkJfQ0KLQkJZXJyb3IgPSBmaWxsZGlyKGRp
cmVudCwgbmFtZSwgbmFtZWxlbiwgb2Zmc2V0LCBDUkFNSU5PKGRlKSwgZGUt
Pm1vZGUgPj4gMTIpOw0KKwkJZXJyb3IgPSBmaWxsZGlyKGRpcmVudCwgbmFt
ZSwgbmFtZWxlbiwgb2Zmc2V0LCBDUkFNSU5PKGRlKSwgDQorCQkJCWxlMTZf
dG9fY3B1KGRlLT5tb2RlKSA+PiAxMik7DQogCQlpZiAoZXJyb3IpDQogCQkJ
YnJlYWs7DQogDQpAQCAtMzQ5LDcgKzM1Miw3IEBADQogCQlpZiAoc29ydGVk
ICYmIChkZW50cnktPmRfbmFtZS5uYW1lWzBdIDwgbmFtZVswXSkpDQogCQkJ
YnJlYWs7DQogDQotCQluYW1lbGVuID0gZGUtPm5hbWVsZW4gPDwgMjsNCisJ
CW5hbWVsZW4gPSBHRVRfQ1JBTV9OQU1FTEVOKGRlKSA8PCAyOw0KIAkJb2Zm
c2V0ICs9IHNpemVvZigqZGUpICsgbmFtZWxlbjsNCiANCiAJCS8qIFF1aWNr
IGNoZWNrIHRoYXQgdGhlIG5hbWUgaXMgcm91Z2hseSB0aGUgcmlnaHQgbGVu
Z3RoICovDQpAQCAtMzk2LDggKzM5OSwxMCBAQA0KIAkJc3RhcnRfb2Zmc2V0
ID0gT0ZGU0VUKGlub2RlKSArIG1heGJsb2NrKjQ7DQogCQlkb3duKCZyZWFk
X211dGV4KTsNCiAJCWlmIChwYWdlLT5pbmRleCkNCi0JCQlzdGFydF9vZmZz
ZXQgPSAqKHUzMiAqKSBjcmFtZnNfcmVhZChzYiwgYmxrcHRyX29mZnNldC00
LCA0KTsNCi0JCWNvbXByX2xlbiA9ICgqKHUzMiAqKSBjcmFtZnNfcmVhZChz
YiwgYmxrcHRyX29mZnNldCwgNCkgLSBzdGFydF9vZmZzZXQpOw0KKwkJCXN0
YXJ0X29mZnNldCA9IGxlMzJfdG9fY3B1KCoodTMyICopIA0KKwkJCQkgICAg
ICAgIGNyYW1mc19yZWFkKHNiLCBibGtwdHJfb2Zmc2V0IC0gNCwgNCkpOw0K
KwkJY29tcHJfbGVuID0gbGUzMl90b19jcHUoKih1MzIgKikNCisJCQkgICAg
IGNyYW1mc19yZWFkKHNiLCBibGtwdHJfb2Zmc2V0LCA0KSkgLSBzdGFydF9v
ZmZzZXQ7DQogCQl1cCgmcmVhZF9tdXRleCk7DQogCQlwZ2RhdGEgPSBrbWFw
KHBhZ2UpOw0KIAkJaWYgKGNvbXByX2xlbiA9PSAwKQ0KZGlmZiAtdXJOIC1Y
IGRvbnRkaWZmIGxpbnV4LTIuNC4xNy9pbmNsdWRlL2xpbnV4L2NyYW1mc19m
cy5oIGxpbnV4LWN1cnIvaW5jbHVkZS9saW51eC9jcmFtZnNfZnMuaA0KLS0t
IGxpbnV4LTIuNC4xNy9pbmNsdWRlL2xpbnV4L2NyYW1mc19mcy5oCVRodSBK
dWwgMTkgMTY6MTQ6NTMgMjAwMQ0KKysrIGxpbnV4LWN1cnIvaW5jbHVkZS9s
aW51eC9jcmFtZnNfZnMuaAlXZWQgSmFuICAyIDE3OjEyOjMxIDIwMDINCkBA
IC04MSw2ICs4MSwzMSBAQA0KICAqLw0KICNkZWZpbmUgQ1JBTUZTX1NVUFBP
UlRFRF9GTEFHUyAoMHg3ZmYpDQogDQorLyogDQorICogU2luY2UgY3JhbWZz
IChhY2NvcmRpbmcgdG8gZG9jcykgc2hvdWxkIGFsd2F5cyBiZSBzdG9yZWQg
bGl0dGxlIGVuZGlhbiwgDQorICogcHJvdmlkZSBtYWNyb3MgdG8gc3dhYiB0
aGUgYml0ZmllbGRzIChta2NyYW1mcyB1c2VzIHRoaXMgZmlsZSB0b28pLiAN
CisgKi8NCisjaWYgKGRlZmluZWQoQllURV9PUkRFUikgJiYgQllURV9PUkRF
UiA9PSBCSUdfRU5ESUFOKSB8fCBkZWZpbmVkKF9fTUlQU0VCX18pDQorI2Rl
ZmluZSBDUkFNX1NXQUJfMjQoeCkJKCAoICgweDAwRkYwMDAwICYgKHgpKSA+
PiAxNiApIHwgXA0KKwkJCSAgKCAoMHgwMDAwRkYwMCAmICh4KSkgICAgICAg
KSB8IFwNCisJCQkgICggKDB4MDAwMDAwRkYgJiAoeCkpIDw8IDE2ICkgKQ0K
KyNkZWZpbmUgR0VUX0NSQU1fTkFNRUxFTih4KSAoKCh1OCopKHgpKVs4XSAm
IDYzKQ0KKyNkZWZpbmUgR0VUX0NSQU1fT0ZGU0VUKHgpICAoKENSQU1fU1dB
Ql8yNCgoKHUzMiopKHgpKVsyXSAmIDB4MDBGRkZGRkYpPDwyKSB8IFwNCisJ
CQkgICAgICAgICAgICAgICAgICgoKCh1MzIqKSh4KSlbMl0gJiAweEMwMDAw
MDAwKT4+MzApICkNCisjZGVmaW5lIFNFVF9DUkFNX09GRlNFVCh4LHkpICAg
KCAoKHUzMiopKHgpKVsyXSA9ICgoKHkpJjMpPDwzMCkgfCBcDQorCQkJCSBD
UkFNX1NXQUJfMjQoICggKCh5KSAmIDB4MDNGRkZGRkYpID4+IDIpICkgfCBc
DQorCQkJCSAoKCh1MzIpKCgodTgqKSh4KSlbOF0gJiAweDNGKSkgPDwgMjQp
ICkNCisjZGVmaW5lIFNFVF9DUkFNX05BTUVMRU4oeCx5KQkoICgodTgqKSh4
KSlbOF0gPSAoICgoMHgzRiAmICh5KSkpIHwgXA0KKwkJCQkJCSAgICAoMHhD
MCAmICgodTgqKSh4KSlbOF0pICkgKQ0KKw0KKyNlbHNlDQorI2RlZmluZSBD
UkFNX1NXQUJfMjQoeCkJCSh4KQ0KKyNkZWZpbmUgR0VUX0NSQU1fTkFNRUxF
Tih4KQkoKHgpLT5uYW1lbGVuKQ0KKyNkZWZpbmUgR0VUX0NSQU1fT0ZGU0VU
KHgpCSgoeCktPm9mZnNldCkNCisjZGVmaW5lIFNFVF9DUkFNX09GRlNFVCh4
LHkpCSgoeCktPm9mZnNldCA9IHkpDQorI2RlZmluZSBTRVRfQ1JBTV9OQU1F
TEVOKHgseSkJKCh4KS0+bmFtZWxlbiA9IHkpDQorI2VuZGlmDQorDQogLyog
VW5jb21wcmVzc2lvbiBpbnRlcmZhY2VzIHRvIHRoZSB1bmRlcmx5aW5nIHps
aWIgKi8NCiBpbnQgY3JhbWZzX3VuY29tcHJlc3NfYmxvY2sodm9pZCAqZHN0
LCBpbnQgZHN0bGVuLCB2b2lkICpzcmMsIGludCBzcmNsZW4pOw0KIGludCBj
cmFtZnNfdW5jb21wcmVzc19pbml0KHZvaWQpOw0KZGlmZiAtdXJOIC1YIGRv
bnRkaWZmIGxpbnV4LTIuNC4xNy9zY3JpcHRzL2NyYW1mcy9iaXRvcHRzLmgg
bGludXgtY3Vyci9zY3JpcHRzL2NyYW1mcy9iaXRvcHRzLmgNCi0tLSBsaW51
eC0yLjQuMTcvc2NyaXB0cy9jcmFtZnMvYml0b3B0cy5oCVdlZCBEZWMgMzEg
MTY6MDA6MDAgMTk2OQ0KKysrIGxpbnV4LWN1cnIvc2NyaXB0cy9jcmFtZnMv
Yml0b3B0cy5oCVdlZCBKYW4gIDIgMTY6NDk6MjMgMjAwMg0KQEAgLTAsMCAr
MSwxOCBAQA0KKyNpbmNsdWRlIDxlbmRpYW4uaD4NCisjaW5jbHVkZSA8Ynl0
ZXN3YXAuaD4NCisNCisvKiBtYXliZSBldmVudHVhbGx5IHJlbW92ZSBhbnl0
aGluZyB3ZSBkb24ndCBuZWVkIChiZSBtYWNyb3MpICovDQorDQorI2lmICgg
QllURV9PUkRFUiA9PSBMSVRUTEVfRU5ESUFOICkNCisjZGVmaW5lIGxlMTZf
dG9fY3B1KHgpICh4KQ0KKyNkZWZpbmUgbGUzMl90b19jcHUoeCkgKHgpDQor
I2RlZmluZSBiZTE2X3RvX2NwdSh4KSBic3dhcF8xNih4KQ0KKyNkZWZpbmUg
YmUzMl90b19jcHUoeCkgYnN3YXBfMzIoeCkNCisjZWxpZiAoIEJZVEVfT1JE
RVIgPT0gQklHX0VORElBTiApDQorI2RlZmluZSBsZTE2X3RvX2NwdSh4KSBi
c3dhcF8xNih4KQ0KKyNkZWZpbmUgbGUzMl90b19jcHUoeCkgYnN3YXBfMzIo
eCkNCisjZGVmaW5lIGJlMTZfdG9fY3B1KHgpICh4KQ0KKyNkZWZpbmUgYmUz
Ml90b19jcHUoeCkgKHgpDQorI2Vsc2UNCisjZXJyb3IgImNyYW1mcyBvbmx5
IHdvcmtzIG9uIGxpdHRsZS1lbmRpYW4gYW5kIGJpZy1lbmRpYW4gc3lzdGVt
cyINCisjZW5kaWYNCmRpZmYgLXVyTiAtWCBkb250ZGlmZiBsaW51eC0yLjQu
MTcvc2NyaXB0cy9jcmFtZnMvY3JhbWZzY2suYyBsaW51eC1jdXJyL3Njcmlw
dHMvY3JhbWZzL2NyYW1mc2NrLmMNCi0tLSBsaW51eC0yLjQuMTcvc2NyaXB0
cy9jcmFtZnMvY3JhbWZzY2suYwlUaHUgSnVsIDE5IDE2OjE0OjUzIDIwMDEN
CisrKyBsaW51eC1jdXJyL3NjcmlwdHMvY3JhbWZzL2NyYW1mc2NrLmMJV2Vk
IEphbiAgMiAxNjo0OTowNyAyMDAyDQpAQCAtNTIsNiArNTIsNyBAQA0KICNp
bmNsdWRlIDxsaW51eC9mcy5oPg0KICNpbmNsdWRlIDxsaW51eC9jcmFtZnNf
ZnMuaD4NCiAjaW5jbHVkZSA8emxpYi5oPg0KKyNpbmNsdWRlICJiaXRvcHRz
LmgiDQogDQogc3RhdGljIGNvbnN0IGNoYXIgKnByb2duYW1lID0gImNyYW1m
c2NrIjsNCiANCkBAIC0xMDUsMTcgKzEwNiwxOSBAQA0KIHsNCiAJY2hhciBp
bmZvWzEwXTsNCiANCi0JaWYgKFNfSVNDSFIoaS0+bW9kZSkgfHwgKFNfSVNC
TEsoaS0+bW9kZSkpKSB7DQorCWlmIChTX0lTQ0hSKGxlMTZfdG9fY3B1KGkt
Pm1vZGUpKSB8fCAoU19JU0JMSyhsZTE2X3RvX2NwdShpLT5tb2RlKSkpKSB7
DQogCQkvKiBtYWpvci9taW5vciBudW1iZXJzIGNhbiBiZSBhcyBoaWdoIGFz
IDJeMTIgb3IgNDA5NiAqLw0KLQkJc25wcmludGYoaW5mbywgMTAsICIlNGQs
JTRkIiwgbWFqb3IoaS0+c2l6ZSksIG1pbm9yKGktPnNpemUpKTsNCisJCXNu
cHJpbnRmKGluZm8sIDEwLCAiJTRkLCU0ZCIsIG1ham9yKENSQU1fU1dBQl8y
NChpLT5zaXplKSksIA0KKwkJCSBtaW5vcihDUkFNX1NXQUJfMjQoaS0+c2l6
ZSkpKTsNCiAJfQ0KIAllbHNlIHsNCiAJCS8qIHNpemUgYmUgYXMgaGlnaCBh
cyAyXjI0IG9yIDE2Nzc3MjE2ICovDQotCQlzbnByaW50ZihpbmZvLCAxMCwg
IiU5ZCIsIGktPnNpemUpOw0KKwkJc25wcmludGYoaW5mbywgMTAsICIlOWQi
LCBDUkFNX1NXQUJfMjQoaS0+c2l6ZSkpOw0KIAl9DQogDQogCXByaW50Zigi
JWMgJTA0byAlcyAlNWQ6JS0zZCAlc1xuIiwNCi0JICAgICAgIHR5cGUsIGkt
Pm1vZGUgJiB+U19JRk1ULCBpbmZvLCBpLT51aWQsIGktPmdpZCwgbmFtZSk7
DQorCSAgICAgICB0eXBlLCBsZTE2X3RvX2NwdShpLT5tb2RlKSAmIH5TX0lG
TVQsIGluZm8sIGxlMTZfdG9fY3B1KGktPnVpZCksDQorCSAgICAgICBpLT5n
aWQsIG5hbWUpOw0KIH0NCiANCiAvKg0KQEAgLTE1Nyw4ICsxNjAsOCBAQA0K
IHsNCiAJdW5zaWduZWQgbG9uZyBvZmZzZXQ7DQogDQotCW9mZnNldCA9IHN1
cGVyLT5yb290Lm9mZnNldCA8PCAyOw0KLQlpZiAoc3VwZXItPm1hZ2ljICE9
IENSQU1GU19NQUdJQykNCisJb2Zmc2V0ID0gR0VUX0NSQU1fT0ZGU0VUKCYo
c3VwZXItPnJvb3QpKSA8PCAyOw0KKwlpZiAobGUzMl90b19jcHUoc3VwZXIt
Pm1hZ2ljKSAhPSBDUkFNRlNfTUFHSUMpDQogCQlyZXR1cm4gTlVMTDsNCiAJ
aWYgKG1lbWNtcChzdXBlci0+c2lnbmF0dXJlLCBDUkFNRlNfU0lHTkFUVVJF
LCBzaXplb2Yoc3VwZXItPnNpZ25hdHVyZSkpICE9IDApDQogCQlyZXR1cm4g
TlVMTDsNCkBAIC0xOTEsMjIgKzE5NCwyMyBAQA0KIHN0YXRpYyB2b2lkIGNo
YW5nZV9maWxlX3N0YXR1cyhjaGFyICpwYXRoLCBzdHJ1Y3QgY3JhbWZzX2lu
b2RlICppKQ0KIHsNCiAJc3RydWN0IHV0aW1idWYgZXBvY2ggPSB7IDAsIDAg
fTsNCisJdW5zaWduZWQgc2hvcnQgbW9kZSA9IGxlMTZfdG9fY3B1KGktPm1v
ZGUpOw0KIA0KIAlpZiAoZXVpZCA9PSAwKSB7DQotCQlpZiAobGNob3duKHBh
dGgsIGktPnVpZCwgaS0+Z2lkKSA8IDApIHsNCisJCWlmIChsY2hvd24ocGF0
aCwgbGUxNl90b19jcHUoaS0+dWlkKSwgaS0+Z2lkKSA8IDApIHsNCiAJCQlw
ZXJyb3IocGF0aCk7DQogCQkJZXhpdCg4KTsNCiAJCX0NCi0JCWlmIChTX0lT
TE5LKGktPm1vZGUpKQ0KKwkJaWYgKFNfSVNMTksobW9kZSkpDQogCQkJcmV0
dXJuOw0KLQkJaWYgKChTX0lTVUlEIHwgU19JU0dJRCkgJiBpLT5tb2RlKSB7
DQotCQkJaWYgKGNobW9kKHBhdGgsIGktPm1vZGUpIDwgMCkgew0KKwkJaWYg
KChTX0lTVUlEIHwgU19JU0dJRCkgJiBtb2RlKSB7DQorCQkJaWYgKGNobW9k
KHBhdGgsIG1vZGUpIDwgMCkgew0KIAkJCQlwZXJyb3IocGF0aCk7DQogCQkJ
CWV4aXQoOCk7DQogCQkJfQ0KIAkJfQ0KIAl9DQotCWlmIChTX0lTTE5LKGkt
Pm1vZGUpKQ0KKwlpZiAoU19JU0xOSyhtb2RlKSkNCiAJCXJldHVybjsNCiAJ
aWYgKHV0aW1lKHBhdGgsICZlcG9jaCkgPCAwKSB7DQogCQlwZXJyb3IocGF0
aCk7DQpAQCAtMjE2LDkgKzIyMCw5IEBADQogDQogc3RhdGljIHZvaWQgZG9f
c3ltbGluayhjaGFyICpwYXRoLCBzdHJ1Y3QgY3JhbWZzX2lub2RlICppKQ0K
IHsNCi0JdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBpLT5vZmZzZXQgPDwgMjsN
CisJdW5zaWduZWQgbG9uZyBvZmZzZXQgPSBHRVRfQ1JBTV9PRkZTRVQoaSkg
PDwgMjsNCiAJdW5zaWduZWQgbG9uZyBjdXJyID0gb2Zmc2V0ICsgNDsNCi0J
dW5zaWduZWQgbG9uZyBuZXh0ID0gKih1MzIgKikgcm9tZnNfcmVhZChvZmZz
ZXQpOw0KKwl1bnNpZ25lZCBsb25nIG5leHQgPSBsZTMyX3RvX2NwdSgqKHUz
MiAqKSByb21mc19yZWFkKG9mZnNldCkpOw0KIAl1bnNpZ25lZCBsb25nIHNp
emU7DQogDQogCWlmIChuZXh0ID4gZW5kX2RhdGEpIHsNCkBAIC0yMjYsNyAr
MjMwLDcgQEANCiAJfQ0KIA0KIAlzaXplID0gdW5jb21wcmVzc19ibG9jayhy
b21mc19yZWFkKGN1cnIpLCBuZXh0IC0gY3Vycik7DQotCWlmIChzaXplICE9
IGktPnNpemUpIHsNCisJaWYgKHNpemUgIT0gQ1JBTV9TV0FCXzI0KGktPnNp
emUpKSB7DQogCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBzaXplIGVycm9yIGlu
IHN5bWxpbmsgYCVzJ1xuIiwNCiAJCQlmaWxlbmFtZSwgcGF0aCk7DQogCQll
eGl0KDQpOw0KQEAgLTI1NSwyMSArMjU5LDIzIEBADQogew0KIAlkZXZfdCBk
ZXZ0eXBlID0gMDsNCiAJY2hhciB0eXBlOw0KKwl1bnNpZ25lZCBzaG9ydCBt
b2RlID0gbGUxNl90b19jcHUoaS0+bW9kZSk7DQogDQotCWlmIChTX0lTQ0hS
KGktPm1vZGUpKSB7DQotCQlkZXZ0eXBlID0gaS0+c2l6ZTsNCisJaWYgKFNf
SVNDSFIobW9kZSkpIHsNCisJCWRldnR5cGUgPSBDUkFNX1NXQUJfMjQoaS0+
c2l6ZSk7DQogCQl0eXBlID0gJ2MnOw0KIAl9DQotCWVsc2UgaWYgKFNfSVNC
TEsoaS0+bW9kZSkpIHsNCi0JCWRldnR5cGUgPSBpLT5zaXplOw0KKwllbHNl
IGlmIChTX0lTQkxLKG1vZGUpKSB7DQorCQlkZXZ0eXBlID0gQ1JBTV9TV0FC
XzI0KGktPnNpemUpOw0KIAkJdHlwZSA9ICdiJzsNCiAJfQ0KLQllbHNlIGlm
IChTX0lTRklGTyhpLT5tb2RlKSkNCisJZWxzZSBpZiAoU19JU0ZJRk8obW9k
ZSkpDQogCQl0eXBlID0gJ3AnOw0KLQllbHNlIGlmIChTX0lTU09DSyhpLT5t
b2RlKSkNCisJZWxzZSBpZiAoU19JU1NPQ0sobW9kZSkpDQogCQl0eXBlID0g
J3MnOw0KIAllbHNlIHsNCi0JCWZwcmludGYoc3RkZXJyLCAiJXM6IGJvZ3Vz
IG1vZGUgb24gYCVzJyAoJW8pXG4iLCBmaWxlbmFtZSwgcGF0aCwgaS0+bW9k
ZSk7DQorCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBib2d1cyBtb2RlIG9uIGAl
cycgKCVvKVxuIiwgZmlsZW5hbWUsIA0KKwkJCXBhdGgsIG1vZGUpOw0KIAkJ
ZXhpdCg0KTsNCiAJfQ0KIA0KQEAgLTI3OCw3ICsyODQsNyBAQA0KIAl9DQog
DQogCWlmIChvcHRfZXh0cmFjdCkgew0KLQkJaWYgKG1rbm9kKHBhdGgsIGkt
Pm1vZGUsIGRldnR5cGUpIDwgMCkgew0KKwkJaWYgKG1rbm9kKHBhdGgsIG1v
ZGUsIGRldnR5cGUpIDwgMCkgew0KIAkJCXBlcnJvcihwYXRoKTsNCiAJCQll
eGl0KDgpOw0KIAkJfQ0KQEAgLTI5Miw3ICsyOTgsNyBAQA0KIA0KIAlkbyB7
DQogCQl1bnNpZ25lZCBsb25nIG91dCA9IFBBR0VfQ0FDSEVfU0laRTsNCi0J
CXVuc2lnbmVkIGxvbmcgbmV4dCA9ICoodTMyICopIHJvbWZzX3JlYWQob2Zm
c2V0KTsNCisJCXVuc2lnbmVkIGxvbmcgbmV4dCA9IGxlMzJfdG9fY3B1KCoo
dTMyICopIHJvbWZzX3JlYWQob2Zmc2V0KSk7DQogDQogCQlpZiAobmV4dCA+
IGVuZF9kYXRhKSB7DQogCQkJZW5kX2RhdGEgPSBuZXh0Ow0KQEAgLTMzNCw5
ICszNDAsMTEgQEANCiANCiBzdGF0aWMgdm9pZCBleHBhbmRfZnMoaW50IHBh
dGhsZW4sIGNoYXIgKnBhdGgsIHN0cnVjdCBjcmFtZnNfaW5vZGUgKmlub2Rl
KQ0KIHsNCi0JaWYgKFNfSVNESVIoaW5vZGUtPm1vZGUpKSB7DQotCQlpbnQg
Y291bnQgPSBpbm9kZS0+c2l6ZTsNCi0JCXVuc2lnbmVkIGxvbmcgb2Zmc2V0
ID0gaW5vZGUtPm9mZnNldCA8PCAyOw0KKwl1bnNpZ25lZCBzaG9ydCBtb2Rl
ID0gbGUxNl90b19jcHUoaW5vZGUtPm1vZGUpOw0KKw0KKwlpZiAoU19JU0RJ
Uihtb2RlKSkgew0KKwkJaW50IGNvdW50ID0gQ1JBTV9TV0FCXzI0KGlub2Rl
LT5zaXplKTsNCisJCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gR0VUX0NSQU1f
T0ZGU0VUKGlub2RlKSA8PCAyOw0KIAkJY2hhciAqbmV3cGF0aCA9IG1hbGxv
YyhwYXRobGVuICsgMjU2KTsNCiANCiAJCWlmIChjb3VudCA+IDAgJiYgb2Zm
c2V0IDwgc3RhcnRfaW5vZGUpIHsNCkBAIC0zNTAsMTMgKzM1OCwxMyBAQA0K
IAkJCXByaW50X25vZGUoJ2QnLCBpbm9kZSwgcGF0aCk7DQogCQl9DQogCQlp
ZiAob3B0X2V4dHJhY3QpIHsNCi0JCQlta2RpcihwYXRoLCBpbm9kZS0+bW9k
ZSk7DQorCQkJbWtkaXIocGF0aCwgbW9kZSk7DQogCQkJY2hhbmdlX2ZpbGVf
c3RhdHVzKHBhdGgsIGlub2RlKTsNCiAJCX0NCiAJCXdoaWxlIChjb3VudCA+
IDApIHsNCiAJCQlzdHJ1Y3QgY3JhbWZzX2lub2RlICpjaGlsZCA9IGlnZXQo
b2Zmc2V0KTsNCiAJCQlpbnQgc2l6ZTsNCi0JCQlpbnQgbmV3bGVuID0gY2hp
bGQtPm5hbWVsZW4gPDwgMjsNCisJCQlpbnQgbmV3bGVuID0gR0VUX0NSQU1f
TkFNRUxFTihjaGlsZCkgPDwgMjsNCiANCiAJCQlzaXplID0gc2l6ZW9mKHN0
cnVjdCBjcmFtZnNfaW5vZGUpICsgbmV3bGVuOw0KIAkJCWNvdW50IC09IHNp
emU7DQpAQCAtMzc5LDkgKzM4Nyw5IEBADQogCQl9DQogCQlyZXR1cm47DQog
CX0NCi0JaWYgKFNfSVNSRUcoaW5vZGUtPm1vZGUpKSB7DQorCWlmIChTX0lT
UkVHKG1vZGUpKSB7DQogCQlpbnQgZmQgPSAwOw0KLQkJdW5zaWduZWQgbG9u
ZyBvZmZzZXQgPSBpbm9kZS0+b2Zmc2V0IDw8IDI7DQorCQl1bnNpZ25lZCBs
b25nIG9mZnNldCA9IEdFVF9DUkFNX09GRlNFVChpbm9kZSkgPDwgMjsNCiAN
CiAJCWlmIChvZmZzZXQgPiAwICYmIG9mZnNldCA8IHN0YXJ0X2RhdGEpIHsN
CiAJCQlzdGFydF9kYXRhID0gb2Zmc2V0Ow0KQEAgLTM5MCwxMCArMzk4LDEw
IEBADQogCQkJcHJpbnRfbm9kZSgnZicsIGlub2RlLCBwYXRoKTsNCiAJCX0N
CiAJCWlmIChvcHRfZXh0cmFjdCkgew0KLQkJCWZkID0gb3BlbihwYXRoLCBP
X1dST05MWSB8IE9fQ1JFQVQgfCBPX1RSVU5DLCBpbm9kZS0+bW9kZSk7DQor
CQkJZmQgPSBvcGVuKHBhdGgsIE9fV1JPTkxZIHwgT19DUkVBVCB8IE9fVFJV
TkMsIG1vZGUpOw0KIAkJfQ0KLQkJaWYgKGlub2RlLT5zaXplKSB7DQotCQkJ
ZG9fdW5jb21wcmVzcyhmZCwgb2Zmc2V0LCBpbm9kZS0+c2l6ZSk7DQorCQlp
ZiAoQ1JBTV9TV0FCXzI0KGlub2RlLT5zaXplKSkgew0KKwkJCWRvX3VuY29t
cHJlc3MoZmQsIG9mZnNldCwgQ1JBTV9TV0FCXzI0KGlub2RlLT5zaXplKSk7
DQogCQl9DQogCQlpZiAob3B0X2V4dHJhY3QpIHsNCiAJCQljbG9zZShmZCk7
DQpAQCAtNDAxLDggKzQwOSw4IEBADQogCQl9DQogCQlyZXR1cm47DQogCX0N
Ci0JaWYgKFNfSVNMTksoaW5vZGUtPm1vZGUpKSB7DQotCQl1bnNpZ25lZCBs
b25nIG9mZnNldCA9IGlub2RlLT5vZmZzZXQgPDwgMjsNCisJaWYgKFNfSVNM
TksobW9kZSkpIHsNCisJCXVuc2lnbmVkIGxvbmcgb2Zmc2V0ID0gR0VUX0NS
QU1fT0ZGU0VUKGlub2RlKSA8PCAyOw0KIA0KIAkJaWYgKG9mZnNldCA8IHN0
YXJ0X2RhdGEpIHsNCiAJCQlzdGFydF9kYXRhID0gb2Zmc2V0Ow0KQEAgLTQ5
OSwxMiArNTA3LDEyIEBADQogCX0NCiANCiAJLyogWFhYIC0gdGhpcyBjb3Vs
ZCBiZSBjbGVhbmVyLi4uICovDQotCWlmICgoKHN0cnVjdCBjcmFtZnNfc3Vw
ZXIgKikgYnVmKS0+bWFnaWMgPT0gQ1JBTUZTX01BR0lDKSB7DQorCWlmIChs
ZTMyX3RvX2NwdSgoKHN0cnVjdCBjcmFtZnNfc3VwZXIgKikgYnVmKS0+bWFn
aWMpID09IENSQU1GU19NQUdJQykgew0KIAkJc3RhcnQgPSAwOw0KIAkJc3Vw
ZXIgPSAoc3RydWN0IGNyYW1mc19zdXBlciAqKSBidWY7DQogCX0NCiAJZWxz
ZSBpZiAobGVuZ3RoID49IChQQURfU0laRSArIHNpemVvZihzdHJ1Y3QgY3Jh
bWZzX3N1cGVyKSkgJiYNCi0JCSAoKCgoc3RydWN0IGNyYW1mc19zdXBlciAq
KSAoYnVmICsgUEFEX1NJWkUpKS0+bWFnaWMgPT0gQ1JBTUZTX01BR0lDKSkp
DQorCQkgKChsZTMyX3RvX2NwdSgoKHN0cnVjdCBjcmFtZnNfc3VwZXIgKikg
KGJ1ZiArIFBBRF9TSVpFKSktPm1hZ2ljKSA9PSBDUkFNRlNfTUFHSUMpKSkN
CiAJew0KIAkJc3RhcnQgPSBQQURfU0laRTsNCiAJCXN1cGVyID0gKHN0cnVj
dCBjcmFtZnNfc3VwZXIgKikgKGJ1ZiArIFBBRF9TSVpFKTsNCkBAIC01MTQs
MjEgKzUyMiwyMiBAQA0KIAkJZXhpdCg0KTsNCiAJfQ0KIA0KLQlpZiAoc3Vw
ZXItPmZsYWdzICYgQ1JBTUZTX0ZMQUdfRlNJRF9WRVJTSU9OXzIpIHsNCisJ
aWYgKGxlMzJfdG9fY3B1KHN1cGVyLT5mbGFncykgJiBDUkFNRlNfRkxBR19G
U0lEX1ZFUlNJT05fMikgew0KIAkJLyogbGVuZ3RoIHRlc3QgKi8NCi0JCWlm
IChsZW5ndGggPCBzdXBlci0+c2l6ZSkgew0KKwkJaWYgKGxlbmd0aCA8IGxl
MzJfdG9fY3B1KHN1cGVyLT5zaXplKSkgew0KIAkJCWZwcmludGYoc3RkZXJy
LCAiJXM6IGludmFsaWQgY3JhbWZzLS1maWxlIGxlbmd0aCB0b28gc2hvcnRc
biIsIGZpbGVuYW1lKTsNCiAJCQlleGl0KDQpOw0KIAkJfQ0KLQkJZWxzZSBp
ZiAobGVuZ3RoID4gc3VwZXItPnNpemUpIHsNCisJCWVsc2UgaWYgKGxlbmd0
aCA+IGxlMzJfdG9fY3B1KHN1cGVyLT5zaXplKSkgew0KIAkJCWZwcmludGYo
c3RkZXJyLCAiJXM6IHdhcm5pbmctLWZpbGUgbGVuZ3RoIHRvbyBsb25nLCBw
YWRkZWQgaW1hZ2U/XG4iLCBmaWxlbmFtZSk7DQogCQl9DQogDQogCQkvKiBD
UkMgdGVzdCAqLw0KLQkJY3JjX29sZCA9IHN1cGVyLT5mc2lkLmNyYzsNCi0J
CXN1cGVyLT5mc2lkLmNyYyA9IGNyYzMyKDBMLCBaX05VTEwsIDApOw0KKwkJ
Y3JjX29sZCA9IGxlMzJfdG9fY3B1KHN1cGVyLT5mc2lkLmNyYyk7DQorCQlz
dXBlci0+ZnNpZC5jcmMgPSBsZTMyX3RvX2NwdShjcmMzMigwTCwgWl9OVUxM
LCAwKSk7DQogCQljcmNfbmV3ID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7DQot
CQljcmNfbmV3ID0gY3JjMzIoY3JjX25ldywgKHVuc2lnbmVkIGNoYXIgKikg
YnVmK3N0YXJ0LCBzdXBlci0+c2l6ZSAtIHN0YXJ0KTsNCisJCWNyY19uZXcg
PSBjcmMzMihjcmNfbmV3LCAodW5zaWduZWQgY2hhciAqKSBidWYrc3RhcnQs
IA0KKwkJCQlsZTMyX3RvX2NwdShzdXBlci0+c2l6ZSkgLSBzdGFydCk7DQog
CQlpZiAoY3JjX25ldyAhPSBjcmNfb2xkKSB7DQogCQkJZnByaW50ZihzdGRl
cnIsICIlczogaW52YWxpZCBjcmFtZnMtLWNyYyBlcnJvclxuIiwgZmlsZW5h
bWUpOw0KIAkJCWV4aXQoNCk7DQpAQCAtNTQxLDExICs1NTAsMTEgQEANCiAN
CiAjaWZkZWYgSU5DTFVERV9GU19URVNUUw0KIAlzdXBlciA9IChzdHJ1Y3Qg
Y3JhbWZzX3N1cGVyICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IGNyYW1mc19z
dXBlcikpOw0KLQlpZiAoKChzdHJ1Y3QgY3JhbWZzX3N1cGVyICopIGJ1Zikt
Pm1hZ2ljID09IENSQU1GU19NQUdJQykgew0KKwlpZiAobGUzMl90b19jcHUo
KChzdHJ1Y3QgY3JhbWZzX3N1cGVyICopIGJ1ZiktPm1hZ2ljKSA9PSBDUkFN
RlNfTUFHSUMpIHsNCiAJCW1lbWNweShzdXBlciwgYnVmLCBzaXplb2Yoc3Ry
dWN0IGNyYW1mc19zdXBlcikpOw0KIAl9DQogCWVsc2UgaWYgKGxlbmd0aCA+
PSAoUEFEX1NJWkUgKyBzaXplb2Yoc3RydWN0IGNyYW1mc19zdXBlcikpICYm
DQotCQkgKCgoKHN0cnVjdCBjcmFtZnNfc3VwZXIgKikgKGJ1ZiArIFBBRF9T
SVpFKSktPm1hZ2ljID09IENSQU1GU19NQUdJQykpKQ0KKwkJICgobGUzMl90
b19jcHUoKChzdHJ1Y3QgY3JhbWZzX3N1cGVyICopIChidWYgKyBQQURfU0la
RSkpLT5tYWdpYykgPT0gQ1JBTUZTX01BR0lDKSkpDQogCXsNCiAJCW1lbWNw
eShzdXBlciwgKGJ1ZiArIFBBRF9TSVpFKSwgc2l6ZW9mKHN0cnVjdCBjcmFt
ZnNfc3VwZXIpKTsNCiAJfQ0KQEAgLTU3Niw4ICs1ODUsOCBAQA0KIAkJZnBy
aW50ZihzdGRlcnIsICIlczogaW52YWxpZCBjcmFtZnMtLWRpcmVjdG9yeSBk
YXRhIGVuZCAoJWxkKSAhPSBmaWxlIGRhdGEgc3RhcnQgKCVsZClcbiIsIGZp
bGVuYW1lLCBlbmRfaW5vZGUsIHN0YXJ0X2RhdGEpOw0KIAkJZXhpdCg0KTsN
CiAJfQ0KLQlpZiAoc3VwZXItPmZsYWdzICYgQ1JBTUZTX0ZMQUdfRlNJRF9W
RVJTSU9OXzIpIHsNCi0JCWlmIChlbmRfZGF0YSA+IHN1cGVyLT5zaXplKSB7
DQorCWlmIChsZTMyX3RvX2NwdShzdXBlci0+ZmxhZ3MpICYgQ1JBTUZTX0ZM
QUdfRlNJRF9WRVJTSU9OXzIpIHsNCisJCWlmIChlbmRfZGF0YSA+IGxlMzJf
dG9fY3B1KHN1cGVyLT5zaXplKSkgew0KIAkJCWZwcmludGYoc3RkZXJyLCAi
JXM6IGludmFsaWQgY3JhbWZzLS1pbnZhbGlkIGZpbGUgZGF0YSBvZmZzZXRc
biIsIGZpbGVuYW1lKTsNCiAJCQlleGl0KDQpOw0KIAkJfQ0KZGlmZiAtdXJO
IC1YIGRvbnRkaWZmIGxpbnV4LTIuNC4xNy9zY3JpcHRzL2NyYW1mcy9ta2Ny
YW1mcy5jIGxpbnV4LWN1cnIvc2NyaXB0cy9jcmFtZnMvbWtjcmFtZnMuYw0K
LS0tIGxpbnV4LTIuNC4xNy9zY3JpcHRzL2NyYW1mcy9ta2NyYW1mcy5jCVRo
dSBKdWwgMTkgMTY6MTQ6NTMgMjAwMQ0KKysrIGxpbnV4LWN1cnIvc2NyaXB0
cy9jcmFtZnMvbWtjcmFtZnMuYwlXZWQgSmFuICAyIDE2OjQ5OjE3IDIwMDIN
CkBAIC0zMiw2ICszMiw3IEBADQogI2luY2x1ZGUgPGdldG9wdC5oPg0KICNp
bmNsdWRlIDxsaW51eC9jcmFtZnNfZnMuaD4NCiAjaW5jbHVkZSA8emxpYi5o
Pg0KKyNpbmNsdWRlICJiaXRvcHRzLmgiDQogDQogI2RlZmluZSBQQURfU0la
RSA1MTIJCS8qIG9ubHkgMCBhbmQgNTEyIHN1cHBvcnRlZCBieSBrZXJuZWwg
Ki8NCiANCkBAIC0zMTcsMTkgKzMxOCwyMCBAQA0KIAkJb2Zmc2V0ICs9IG9w
dF9wYWQ7DQogCX0NCiANCi0Jc3VwZXItPm1hZ2ljID0gQ1JBTUZTX01BR0lD
Ow0KLQlzdXBlci0+ZmxhZ3MgPSBDUkFNRlNfRkxBR19GU0lEX1ZFUlNJT05f
MiB8IENSQU1GU19GTEFHX1NPUlRFRF9ESVJTOw0KKwlzdXBlci0+bWFnaWMg
PSBsZTMyX3RvX2NwdShDUkFNRlNfTUFHSUMpOw0KKwlzdXBlci0+ZmxhZ3Mg
PSBsZTMyX3RvX2NwdShDUkFNRlNfRkxBR19GU0lEX1ZFUlNJT05fMiB8IA0K
KwkJCQkgICAgQ1JBTUZTX0ZMQUdfU09SVEVEX0RJUlMpOw0KIAlpZiAob3B0
X2hvbGVzKQ0KLQkJc3VwZXItPmZsYWdzIHw9IENSQU1GU19GTEFHX0hPTEVT
Ow0KKwkJc3VwZXItPmZsYWdzIHw9IGxlMzJfdG9fY3B1KENSQU1GU19GTEFH
X0hPTEVTKTsNCiAJaWYgKGltYWdlX2xlbmd0aCA+IDApDQotCQlzdXBlci0+
ZmxhZ3MgfD0gQ1JBTUZTX0ZMQUdfU0hJRlRFRF9ST09UX09GRlNFVDsNCi0J
c3VwZXItPnNpemUgPSBzaXplOw0KKwkJc3VwZXItPmZsYWdzIHw9IGxlMzJf
dG9fY3B1KENSQU1GU19GTEFHX1NISUZURURfUk9PVF9PRkZTRVQpOw0KKwlz
dXBlci0+c2l6ZSA9IGxlMzJfdG9fY3B1KHNpemUpOw0KIAltZW1jcHkoc3Vw
ZXItPnNpZ25hdHVyZSwgQ1JBTUZTX1NJR05BVFVSRSwgc2l6ZW9mKHN1cGVy
LT5zaWduYXR1cmUpKTsNCiANCi0Jc3VwZXItPmZzaWQuY3JjID0gY3JjMzIo
MEwsIFpfTlVMTCwgMCk7DQotCXN1cGVyLT5mc2lkLmVkaXRpb24gPSBvcHRf
ZWRpdGlvbjsNCi0Jc3VwZXItPmZzaWQuYmxvY2tzID0gdG90YWxfYmxvY2tz
Ow0KLQlzdXBlci0+ZnNpZC5maWxlcyA9IHRvdGFsX25vZGVzOw0KKwlzdXBl
ci0+ZnNpZC5jcmMgPSBsZTMyX3RvX2NwdShjcmMzMigwTCwgWl9OVUxMLCAw
KSk7DQorCXN1cGVyLT5mc2lkLmVkaXRpb24gPSBsZTMyX3RvX2NwdShvcHRf
ZWRpdGlvbik7DQorCXN1cGVyLT5mc2lkLmJsb2NrcyA9IGxlMzJfdG9fY3B1
KHRvdGFsX2Jsb2Nrcyk7DQorCXN1cGVyLT5mc2lkLmZpbGVzID0gbGUzMl90
b19jcHUodG90YWxfbm9kZXMpOw0KIA0KIAltZW1zZXQoc3VwZXItPm5hbWUs
IDB4MDAsIHNpemVvZihzdXBlci0+bmFtZSkpOw0KIAlpZiAob3B0X25hbWUp
DQpAQCAtMzM3LDExICszMzksMTEgQEANCiAJZWxzZQ0KIAkJc3RybmNweShz
dXBlci0+bmFtZSwgIkNvbXByZXNzZWQiLCBzaXplb2Yoc3VwZXItPm5hbWUp
KTsNCiANCi0Jc3VwZXItPnJvb3QubW9kZSA9IHJvb3QtPm1vZGU7DQotCXN1
cGVyLT5yb290LnVpZCA9IHJvb3QtPnVpZDsNCisJc3VwZXItPnJvb3QubW9k
ZSA9IGxlMTZfdG9fY3B1KHJvb3QtPm1vZGUpOw0KKwlzdXBlci0+cm9vdC51
aWQgPSBsZTE2X3RvX2NwdShyb290LT51aWQpOw0KIAlzdXBlci0+cm9vdC5n
aWQgPSByb290LT5naWQ7DQotCXN1cGVyLT5yb290LnNpemUgPSByb290LT5z
aXplOw0KLQlzdXBlci0+cm9vdC5vZmZzZXQgPSBvZmZzZXQgPj4gMjsNCisJ
c3VwZXItPnJvb3Quc2l6ZSA9IENSQU1fU1dBQl8yNChyb290LT5zaXplKTsN
CisJU0VUX0NSQU1fT0ZGU0VUKCYoc3VwZXItPnJvb3QpLCBvZmZzZXQgPj4g
Mik7DQogDQogCXJldHVybiBvZmZzZXQ7DQogfQ0KQEAgLTM1Niw3ICszNTgs
NyBAQA0KIAkJZnByaW50ZihzdGRlcnIsICJmaWxlc3lzdGVtIHRvbyBiaWcu
ICBFeGl0aW5nLlxuIik7DQogCQlleGl0KDgpOw0KIAl9DQotCWlub2RlLT5v
ZmZzZXQgPSAob2Zmc2V0ID4+IDIpOw0KKwlTRVRfQ1JBTV9PRkZTRVQoaW5v
ZGUsIG9mZnNldCA+PiAyKTsNCiB9DQogDQogDQpAQCAtMzc5LDEwICszODEs
MTAgQEANCiANCiAJCQllbnRyeS0+ZGlyX29mZnNldCA9IG9mZnNldDsNCiAN
Ci0JCQlpbm9kZS0+bW9kZSA9IGVudHJ5LT5tb2RlOw0KLQkJCWlub2RlLT51
aWQgPSBlbnRyeS0+dWlkOw0KKwkJCWlub2RlLT5tb2RlID0gbGUxNl90b19j
cHUoZW50cnktPm1vZGUpOw0KKwkJCWlub2RlLT51aWQgPSBsZTE2X3RvX2Nw
dShlbnRyeS0+dWlkKTsNCiAJCQlpbm9kZS0+Z2lkID0gZW50cnktPmdpZDsN
Ci0JCQlpbm9kZS0+c2l6ZSA9IGVudHJ5LT5zaXplOw0KKwkJCWlub2RlLT5z
aXplID0gQ1JBTV9TV0FCXzI0KGVudHJ5LT5zaXplKTsNCiAJCQlpbm9kZS0+
b2Zmc2V0ID0gMDsNCiAJCQkvKiBOb24tZW1wdHkgZGlyZWN0b3JpZXMsIHJl
Z2ZpbGVzIGFuZCBzeW1saW5rcyB3aWxsDQogCQkJICAgd3JpdGUgb3ZlciBp
bm9kZS0+b2Zmc2V0IGxhdGVyLiAqLw0KQEAgLTM5NSw3ICszOTcsNyBAQA0K
IAkJCQkqKGJhc2UgKyBvZmZzZXQgKyBsZW4pID0gJ1wwJzsNCiAJCQkJbGVu
Kys7DQogCQkJfQ0KLQkJCWlub2RlLT5uYW1lbGVuID0gbGVuID4+IDI7DQor
CQkJU0VUX0NSQU1fTkFNRUxFTihpbm9kZSwgbGVuID4+IDIpOw0KIAkJCW9m
ZnNldCArPSBsZW47DQogDQogCQkJLyogVE9ETzogdGhpcyBtYXkgZ2V0IGl0
IHdyb25nIGZvciBjaGFycyA+PSAweDgwLg0KQEAgLTUwMyw3ICs1MDUsNyBA
QA0KIAkJCWV4aXQoOCk7DQogCQl9DQogDQotCQkqKHUzMiAqKSAoYmFzZSAr
IG9mZnNldCkgPSBjdXJyOw0KKwkJKih1MzIgKikgKGJhc2UgKyBvZmZzZXQp
ID0gbGUzMl90b19jcHUoY3Vycik7DQogCQlvZmZzZXQgKz0gNDsNCiAJfSB3
aGlsZSAoc2l6ZSk7DQogDQpAQCAtNjUyLDYgKzY1NCwxMCBAQA0KIAkJZXhp
dCgxNik7DQogCX0NCiAJZmQgPSBvcGVuKG91dGZpbGUsIE9fV1JPTkxZIHwg
T19DUkVBVCB8IE9fVFJVTkMsIDA2NjYpOw0KKwlpZiAoZmQgPCAwKSB7DQor
CQlwZXJyb3Iob3V0ZmlsZSk7DQorCQlleGl0KDgpOw0KKwl9DQogDQogCXJv
b3RfZW50cnkgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBlbnRyeSkpOw0K
IAlpZiAoIXJvb3RfZW50cnkpIHsNCkBAIC03MjUsNyArNzMxLDggQEANCiAN
CiAJLyogUHV0IHRoZSBjaGVja3N1bSBpbi4gKi8NCiAJY3JjID0gY3JjMzIo
Y3JjLCAocm9tX2ltYWdlK29wdF9wYWQpLCAob2Zmc2V0LW9wdF9wYWQpKTsN
Ci0JKChzdHJ1Y3QgY3JhbWZzX3N1cGVyICopIChyb21faW1hZ2Urb3B0X3Bh
ZCkpLT5mc2lkLmNyYyA9IGNyYzsNCisJKChzdHJ1Y3QgY3JhbWZzX3N1cGVy
ICopIChyb21faW1hZ2Urb3B0X3BhZCkpLT5mc2lkLmNyYyA9IA0KKwkJbGUz
Ml90b19jcHUoY3JjKTsNCiAJcHJpbnRmKCJDUkM6ICV4XG4iLCBjcmMpOw0K
IA0KIAkvKiBDaGVjayB0byBtYWtlIHN1cmUgd2UgYWxsb2NhdGVkIGVub3Vn
aCBzcGFjZS4gKi8NCg==
--17438721-1948232257-1010532021=:16310--
-
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/