ZGlmZiAtLWdpdCBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC9jb3JlL2Zhc3Rwcm9jL2Zhc3RfdHJhY2suYyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC9jb3JlL2Zhc3Rwcm9jL2Zhc3RfdHJhY2suYwppbmRleCA1ZDU1NDI2Li4zYWQxMGMxIDEwMDc1NQotLS0gYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQvY29yZS9mYXN0cHJvYy9mYXN0X3RyYWNrLmMKKysrIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L2NvcmUvZmFzdHByb2MvZmFzdF90cmFjay5jCkBAIC0xMTE2LDYgKzExMTYsMjkgQEAKIAlyZXR1cm4gY291bnQ7DQogfQ0KIA0KK3N0YXRpYyBzc2l6ZV90IGRldl9yZXNldF9zZXQoc3RydWN0IGZpbGUgKmZpbGUsDQorCQljb25zdCBjaGFyIF9fdXNlciAqYnVmZmVyLCBzaXplX3QgY291bnQsIGxvZmZfdCAqcG9zKQ0KK3sNCisJc3RydWN0IG5ldF9kZXZpY2UgKmRldiA9IE5VTEw7DQorCXNpemVfdCBzaXplOw0KKwljaGFyIGRldl9uYW1lW01BWF9ORVRfREVWSUNFX05BTUVfTEVOICsgMV0gPSB7MH07DQorDQorCS8vY291bnTOsrK/sPy6rMHLMbj2veHK+Lf7DQorCXNpemUgPSBtaW4oY291bnQgLSAxLCBNQVhfTkVUX0RFVklDRV9OQU1FX0xFTik7DQorCWlmIChjb3B5X2Zyb21fdXNlcihkZXZfbmFtZSwgYnVmZmVyLCBzaXplKSkNCisJCXJldHVybiAtRUZBVUxUOw0KKw0KKwkvL8m+s/20y834wufJ6LG4z+C52HN0YXQNCisJZGV2ID0gZGV2X2dldF9ieV9uYW1lKCZpbml0X25ldCwgZGV2X25hbWUpOw0KKwlpZiAoZGV2KXsNCisJCW1lbXNldCgmZGV2LT5zdGF0cywgMCwgc2l6ZW9mKHN0cnVjdCBuZXRfZGV2aWNlX3N0YXRzKSk7DQorCQlhdG9taWNfbG9uZ19zZXQoJmRldi0+cnhfZHJvcHBlZCwgMCk7DQorCQlkZXZfcHV0KGRldik7DQorCX1lbHNlDQorCQlwcmludGsoImRldl9yZXNldF9zZXQgJXMgbm90IGZpbmRcbiIsIGRldl9uYW1lKTsNCisJcmV0dXJuIGNvdW50Ow0KK30NCisNCiBzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBmYXN0bmF0X2xldmVsX2ZpbGVfb3BzID0gew0KICAgICAub3duZXIgICA9IFRISVNfTU9EVUxFLA0KICAgICAub3BlbiAgICA9IGZhc3RuYXRfbGV2ZWxfb3BlbiwNCkBAIC0xMTk2LDYgKzEyMTksMTEgQEAKIAkud3JpdGUgPSBza2JfZGVidWdfb2ZmX3NldCwNCiB9Ow0KIA0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGRldl9yZXNldF9maWxlX29wcyA9IHsNCisJLm93bmVyID0gVEhJU19NT0RVTEUsDQorCS53cml0ZSA9IGRldl9yZXNldF9zZXQsDQorfTsNCisNCiAvL7/sy9nXqreicHJvY87EvP61xLP1yry7rw0KIGludCBmYXN0X2Nvbm50cmFja19pbml0X3Byb2Modm9pZCkNCiB7DQpAQCAtMTIyNSw5ICsxMjUzLDEyIEBACiANCiAgICAgLy+2wcihwbS907aqsPzQxc+iDQogICAgIHByb2NfY3JlYXRlKCJwa3RfbG9zdGluZm8iLCAwNDQwLCBpbml0X25ldC5wcm9jX25ldCwgJnBrdF9sb3N0aW5mb19maWxlX29wcyk7DQotCQ0KKw0KICAgICAvL3R1cm4gb2ZmIHNrYiBkZWJ1Zw0KICAgICBwcm9jX2NyZWF0ZSgic2tiX2RlYnVnX29mZiIsIDA0NDAsIGluaXRfbmV0LnByb2NfbmV0LCAmc2tiX2RlYnVnX29mZl9maWxlX29wcyk7DQorDQorICAgIC8vcmVzZXQgZGV2IHN0YXRzDQorICAgIHByb2NfY3JlYXRlKCJkZXZfcmVzZXRfc3RhdHMiLCAwNDQwLCBpbml0X25ldC5wcm9jX25ldCwgJmRldl9yZXNldF9maWxlX29wcyk7DQogICAgIHJldHVybiAxOw0KIH0NCiANCmRpZmYgLS1naXQgYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQvc29ja2V0LmMgYi9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQvc29ja2V0LmMKaW5kZXggN2VhM2FiZC4uYWExZTA3ZiAxMDA3NTUKLS0tIGEvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3NvY2tldC5jCisrKyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC9zb2NrZXQuYwpAQCAtNDkxLDYgKzQ5MSw3IEBACiAJaW5vZGUtPmlfZ2lkID0gY3VycmVudF9mc2dpZCgpOwogI2lmZGVmIENPTkZJR19JUENfU09DS0VUCQkKIAlJTklUX0hMSVNUX0hFQUQoJnNvY2stPnBlZXIpOworCXNvY2stPnRhc2sgPSBjdXJyZW50OwogI2VuZGlmCiAJcGVyY3B1X2FkZChzb2NrZXRzX2luX3VzZSwgMSk7CiAJcmV0dXJuIHNvY2s7CmRpZmYgLS1naXQgYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQvc29ja2V0X3JwbXNnLmMgYi9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQvc29ja2V0X3JwbXNnLmMKaW5kZXggODY3Yjk0My4uYTQyYmZjMiAxMDA3NTUKLS0tIGEvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3NvY2tldF9ycG1zZy5jCisrKyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC9zb2NrZXRfcnBtc2cuYwpAQCAtNiw2ICs2LDggQEAKICNpbmNsdWRlIDxuZXQvYWZfdW5peC5oPg0KICNpbmNsdWRlIDxsaW51eC9zeXNjYWxscy5oPg0KICNpbmNsdWRlIDxsaW51eC9maWxlLmg+DQorI2luY2x1ZGUgPGxpbnV4L2RlYnVnZnMuaD4NCisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4NCiAvLyNpbmNsdWRlICJyYW1fY29uZmlnLmgiDQogI2luY2x1ZGUgPGxpbnV4L3NvY2tldF9ycG1zZy5oPg0KIA0KQEAgLTE2LDYgKzE4LDggQEAKICNkZWZpbmUgc29ja19nZXRfc2VtYSBkb3duX2ludGVycnVwdGlibGUNCiAjZGVmaW5lIHNvY2tfcHV0X3NlbWEgdXANCiANCitleHRlcm4gaW50IHNvY2tldF9ycG1zZ19lbmFibGU7DQorDQogc3RydWN0IHNvY2tfY2hhbm5lbCBnX3NvY2tfY2huX2luZm87DQogc3RydWN0IHNvY2tfcnBtc2cgZ19zb2NrX3JwbXNnOw0KIHN0cnVjdCBpcGNfc29ja2V0ICpnX3NvY2tldF9pcGM7DQpAQCAtMjYsNyArMzAsNyBAQAogc3RydWN0IGhsaXN0X2hlYWQgZ19pcGNfc29ja2V0czsNCiBzdHJ1Y3QgaGxpc3RfaGVhZCBnX3NvY2tfcnBtc2dfaW5mbzsNCiBzdHJ1Y3QgaGxpc3RfaGVhZCBnX3NvY2tldHNfaW5mbzsNCi0JDQorc3RydWN0IGhsaXN0X2hlYWQgZ19zdW5hZGRyX2luZm87CQ0KIGNoYXIqIGZsYWdfdmFsdWVbXSA9ew0KIAkiU09DS19ERUFEIiwNCiAJIlNPQ0tfRE9ORSIsDQpAQCAtNzYsNiArODAsOSBAQAogREVGSU5FX1NQSU5MT0NLKHNvY2tfcmVsZWFzZV9wZWVyX2xvY2spOw0KIEVYUE9SVF9TWU1CT0xfR1BMKHNvY2tfcmVsZWFzZV9wZWVyX2xvY2spOw0KIA0KK3N0YXRpYyBzdHJ1Y3QgZGVudHJ5ICppcGNzb2NrZXRfZGVidWdmc19kaXJfZW50cnlfcm9vdDsNCitzdGF0aWMgc3RydWN0IGRlbnRyeSAqaXBjc29ja2V0X2RlYnVnZnNfZGlyX2VudHJ5X3Byb2M7DQorDQogI2RlZmluZSB1bml4X3BlZXIoc2spICh1bml4X3NrKHNrKS0+cGVlcikNCiANCiBleHRlcm4gc3RydWN0IHNvY2sgKnVuaXhfZmluZF9vdGhlcl9wcm94eShzdHJ1Y3QgbmV0ICpuZXQsDQpAQCAtOTYsNiArMTAzLDcgQEAKIGV4dGVybiB2b2lkIHVuaXhfZGdyYW1fZGlzY29ubmVjdGVkX3Byb3h5KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNvY2sgKm90aGVyKTsNCiBleHRlcm4gaW50IHVuaXhfbWtuYW1lX3Byb3h5KHN0cnVjdCBzb2NrYWRkcl91biAqc3VuYWRkciwgaW50IGxlbiwgdW5zaWduZWQgKmhhc2hwKTsNCiBleHRlcm4gdm9pZCB1bml4X3JlbGVhc2Vfc29ja19wcm94eShzdHJ1Y3Qgc29jayAqc2spOw0KK2V4dGVybiB2b2lkIGluaXRfcGVlcmNyZWRfcHJveHkoc3RydWN0IHNvY2sgKnNrKTsNCiANCiAvL3N0YXRpYyB2b2lkIGRlbGF5ZWRfcmVsZWFzZShzdHJ1Y3Qgd29ya19zdHJ1Y3QgKnVudXNlZCk7DQogaW50IHNvY2tfc29jX3NvY2tldF9pc192YWxpZChzdHJ1Y3Qgc29ja2V0KiBwcm94eXNvY2ssIHN0cnVjdCBzb2NrZXQqIGxvY2Fsc29jayk7DQpAQCAtMTAzLDYgKzExMSwyMyBAQAogDQogc3RhdGljIExJU1RfSEVBRChkZWxheWVkX3JlbGVhc2VfbGlzdCk7DQogDQorI2RlZmluZSBERUZJTkVfU0hPV19BVFRSSUJVVEUoX19uYW1lKQkJCQkJXA0KK3N0YXRpYyBpbnQgX19uYW1lIyNfb3BlbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlsZSkJXA0KK3sJCQkJCQkJCQlcDQorCXJldHVybiBzaW5nbGVfb3BlbihmaWxlLCBfX25hbWUjI19zaG93LCBpbm9kZS0+aV9wcml2YXRlKTsJXA0KK30JCQkJCQkJCQlcDQorCQkJCQkJCQkJXA0KK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIF9fbmFtZSMjX2ZvcHMgPSB7CQkJXA0KKwkub3duZXIJCT0gVEhJU19NT0RVTEUsCQkJCQlcDQorCS5vcGVuCQk9IF9fbmFtZSMjX29wZW4sCQkJCVwNCisJLnJlYWQJCT0gc2VxX3JlYWQsCQkJCQlcDQorCS5sbHNlZWsJCT0gc2VxX2xzZWVrLAkJCQkJXA0KKwkucmVsZWFzZQk9IHNpbmdsZV9yZWxlYXNlLAkJCQlcDQorfQ0KKw0KK3N0YXRpYyBpbnQgaXBjX3NvY2tldF9pbmZvX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpOw0KK0RFRklORV9TSE9XX0FUVFJJQlVURShpcGNfc29ja2V0X2luZm8pOw0KKw0KIGVudW0gc29ja19mbGFnc19jYXAgew0KIAlTT0NLX0RFQURfQ0FQLA0KIAlTT0NLX0RPTkVfQ0FQLA0KQEAgLTIwMiw2ICsyMjcsMzIgQEAKIAl9DQogfQ0KIA0KK3N0YXRpYyBpbnQgaXBjX3NvY2tldF9pbmZvX3Nob3coc3RydWN0IHNlcV9maWxlICptLCB2b2lkICp1bnVzZWQpDQorewkNCisJc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrID0gTlVMTDsNCisJY2hhciB0YXNrbmFtZVtUQVNLX0NPTU1fTEVOXSA9IHswfTsNCisJc3RydWN0IGlwY19zb2NrZXQgKnA7DQorCXN0cnVjdCBobGlzdF9ub2RlICpwb3MsKm47DQorCXN0cnVjdCBzb2NrZXQqIGxvY2Fsc29ja2V0OwkNCisJDQorCXNwaW5fbG9jaygmc29ja190YWJsZV9sb2NrKTsNCisJaWYoaGxpc3RfZW1wdHkoJmdfaXBjX3NvY2tldHMpKQ0KKwl7DQorCQlza19zb2Nfd2Fybigic29ja19wcmludF9pcGNfc29ja2V0X2luZm8gIGdfaXBjX3NvY2tldHMgaXMgZW1wdHkiKTsNCisJCXNwaW5fdW5sb2NrKCZzb2NrX3RhYmxlX2xvY2spOw0KKwkJcmV0dXJuIDA7DQorCX0NCisJaGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShwLCBwb3MsIG4sICZnX2lwY19zb2NrZXRzLCBobGlzdF9ub2RlKSB7DQorCQltZW1zZXQodGFza25hbWUsIDAsIFRBU0tfQ09NTV9MRU4pOw0KKwkJbG9jYWxzb2NrZXQgPSBwLT5sb2NhbHNvY2tldDsNCisJCXRhc2sgPSBsb2NhbHNvY2tldC0+dGFzazsNCisJCWdldF90YXNrX2NvbW0odGFza25hbWUsIHRhc2spOwkNCisJCXNrX3NvY193YXJuKCJwaWQ9JWQsIHRhc2tuYW1lPSVzIiwgdGFzay0+cGlkLCB0YXNrbmFtZSk7CQkNCisJfQ0KKwlzcGluX3VubG9jaygmc29ja190YWJsZV9sb2NrKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KIHN0YXRpYyBpbnQgc29ja19zb2NfaXNfc29ja2V0X3BlZXIoc3RydWN0IHNvY2tldCogc29ja2V0LCBzdHJ1Y3Qgc29ja2V0KiBwZWVyKQ0KIHsNCiAJc3RydWN0IHNvY2tldF9pbmZvICpwOw0KQEAgLTU2Niw2ICs2MTcsNjggQEAKIAl1cCgmcHNvY2tfcnBtc2dfaW5mby0+c29ja19zZW0pOw0KIAlyZXR1cm4gcHNvY2tfcnBtc2dfaW5mbzsNCiB9DQorDQorYm9vbCBzb2NrX3NvY19pcGNfc3VuYWRkcl9leGlzdChzdHJ1Y3Qgc29ja2FkZHJfdW4gKnBzb2NrYWRkcl91bikNCit7DQorCXN0cnVjdCBzb2NrX3N1bmFkZHJfaW5mbyAqcDsNCisJc3RydWN0IGhsaXN0X25vZGUgKnBvcywqbjsNCisJDQorCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocCwgcG9zLCBuLCAmZ19zdW5hZGRyX2luZm8sIGhsaXN0X25vZGUpIHsNCisJCWlmKChwLT5zb2NrYWRkci5zdW5fZmFtaWx5ID09IHBzb2NrYWRkcl91bi0+c3VuX2ZhbWlseSkgXA0KKwkJCSYmKDAgPT0gbWVtY21wKHAtPnNvY2thZGRyLnN1bl9wYXRoLCBwc29ja2FkZHJfdW4tPnN1bl9wYXRoLCBVTklYX1BBVEhfTUFYKSkpewkJCQ0KKwkJCQkJCQ0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwl9DQorCQ0KKwlyZXR1cm4gZmFsc2U7DQorfQ0KKw0KK3N0YXRpYyB2b2lkIHNvY2tfc29jX2luc2VydF9pcGNfc3VuYWRkcihzdHJ1Y3Qgc29ja2FkZHJfdW4gKnBzb2NrYWRkcl91bikNCit7DQorCXN0cnVjdCBzb2NrX3N1bmFkZHJfaW5mbyAqcHNvY2tfc3VuYWRkcl9pbmZvID0gTlVMTDsNCisNCisJLy/PyLLpv7RzdW5hZGRyyse38dLRvq3U2mdfc3VuYWRkcl9pbmZv1tANCisJaWYodHJ1ZSA9PSBzb2NrX3NvY19pcGNfc3VuYWRkcl9leGlzdChwc29ja2FkZHJfdW4pKXsNCisJCXNrX3NvY19pbmZvKCJzb2NrX3NvY19pbnNlcnRfaXBjX3N1bmFkZHIsIHN1bmFkZHIgYWxyZWFkeSBleGlzdCIpOw0KKwkJcmV0dXJuOw0KKwl9DQorCQ0KKwlwc29ja19zdW5hZGRyX2luZm8gPSAoc3RydWN0IHNvY2tfc3VuYWRkcl9pbmZvICopa3phbGxvYyhzaXplb2Yoc3RydWN0IHNvY2tfc3VuYWRkcl9pbmZvKSwgR0ZQX0FUT01JQyk7DQorCWlmKHBzb2NrX3N1bmFkZHJfaW5mbyA9PSBOVUxMKXsNCisJCXNrX3NvY19pbmZvKCJzb2NrX3NvY19pbnNlcnRfaXBjX3N1bmFkZHIsIGFsbG9jIGZhaWxlZCIpOw0KKwkJcmV0dXJuOw0KKwl9DQorCW1lbXNldChwc29ja19zdW5hZGRyX2luZm8sIDAsIHNpemVvZihzdHJ1Y3Qgc29ja19zdW5hZGRyX2luZm8pKTsNCisJbWVtY3B5KCZwc29ja19zdW5hZGRyX2luZm8tPnNvY2thZGRyLCBwc29ja2FkZHJfdW4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsJDQorCQkNCisJSU5JVF9ITElTVF9OT0RFKCZwc29ja19zdW5hZGRyX2luZm8tPmhsaXN0X25vZGUpOw0KKwlobGlzdF9hZGRfaGVhZCgmcHNvY2tfc3VuYWRkcl9pbmZvLT5obGlzdF9ub2RlLCAmZ19zdW5hZGRyX2luZm8pOwkNCit9DQorDQorc3RhdGljIGludCBzb2NrX3NvY19kZWxfaXBjX3N1bmFkZHIoc3RydWN0IHNvY2thZGRyX3VuICpwc29ja2FkZHJfdW4pDQorew0KKwlzdHJ1Y3Qgc29ja19zdW5hZGRyX2luZm8gKnA7DQorCXN0cnVjdCBobGlzdF9ub2RlICpwb3MsKm47DQorCWludCByZXQ7DQorCWhsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocCwgcG9zLCBuLCAmZ19zdW5hZGRyX2luZm8sIGhsaXN0X25vZGUpIHsJCQ0KKwkJaWYocHNvY2thZGRyX3VuLT5zdW5fcGF0aFswXSl7DQorCQkJcmV0ID0gc3RybmNtcChwLT5zb2NrYWRkci5zdW5fcGF0aCwgcHNvY2thZGRyX3VuLT5zdW5fcGF0aCwgc3RybGVuKHBzb2NrYWRkcl91bi0+c3VuX3BhdGgpKTsNCisJCX1lbHNlew0KKwkJCXJldCA9IHN0cm5jbXAoJnAtPnNvY2thZGRyLnN1bl9wYXRoWzFdLCAmcHNvY2thZGRyX3VuLT5zdW5fcGF0aFsxXSwgc3RybGVuKCZwc29ja2FkZHJfdW4tPnN1bl9wYXRoWzFdKSk7DQorCQl9CQkNCisJCQ0KKwkJaWYoKHAtPnNvY2thZGRyLnN1bl9mYW1pbHkgPT0gcHNvY2thZGRyX3VuLT5zdW5fZmFtaWx5KSAmJiAoMCA9PSByZXQpKXsNCisJCQlobGlzdF9kZWwoJnAtPmhsaXN0X25vZGUpOwkJCQ0KKwkJCWtmcmVlKHApOw0KKwkJCXNrX3NvY19pbmZvKCJzdW5fcGF0aD0lcywgZGVsIHN1Y2Vzcy4iLCBwc29ja2FkZHJfdW4tPnN1bl9wYXRoKTsNCisJCQlyZXR1cm4gMDsNCisJCX0NCisJfQ0KKwlza19zb2NfaW5mbygic3VuX3BhdGg9JXMsIGRlbCBmYWlsZWQiLCBwc29ja2FkZHJfdW4tPnN1bl9wYXRoKTsNCisJcmV0dXJuIC0xOw0KK30NCisNCiBpbnQgdW5peF9pc19pcGNfc29ja2V0KHN0cnVjdCBzb2NrICpzb2NrKQ0KIHsNCiAJaW50IHJlc3VsdDsNCkBAIC03NTUsNiArODY4LDE4IEBACiAJdXNvY2stPnJzb2NrLnJlbW90ZXNvY2tldCA9IHJlbW90ZXNvY2tldDsNCiB9DQogDQorLy+xvrXYc29ja2V0uPzQwrrzo6y4/NDCtPrA7XNvY2tldNbQcnNvY2vQxc+iDQordm9pZCB1c29ja191cGRhdGUoc3RydWN0IHNvY2sqIHNvY2ssIGludCBsb2NhbGZkLCBzdHJ1Y3Qgc29ja2V0KiBsb2NhbHNvY2tldCkNCit7DQorCXN0cnVjdCB1bml4X3NvY2sqIHVzb2NrOw0KKwlpZihOVUxMID09IHNvY2spew0KKwkJcmV0dXJuOw0KKwl9DQorCXVzb2NrID0gdW5peF9zayhzb2NrKTsNCisJdXNvY2stPnJzb2NrLmxvY2FsZmQgPSBsb2NhbGZkOw0KKwl1c29jay0+cnNvY2subG9jYWxzb2NrZXQgPSBsb2NhbHNvY2tldDsNCit9DQorDQogdm9pZCB1c29ja191cGRhdGVfcmVtb3RlX3Byb3h5X3NvY2tldChzdHJ1Y3Qgc29jayogc29jaywgc3RydWN0IHNvY2tldCogcmVtb3RlcHJveHlzb2NrZXQpDQogew0KIAlzdHJ1Y3QgdW5peF9zb2NrKiB1c29jazsNCkBAIC03OTcsNiArOTIyLDcgQEAKIAkJcHNvY2tldF9pcGMtPnNvY2stPnNrX2ZkID0gcHNvY2tldF9pcGMtPnNvY2tmZDsNCiAJCS8vc29ja19zb2Nfc2V0X3NvY2tldF9pbmZvKHBzb2NrZXRfaXBjLT5zb2NrZXQsIHBzb2NrX3JwbXNnLT5jbGllbnRzb2NrKTsNCiAJCXNvY2tfaG9sZChwc29ja2V0X2lwYy0+c29jayk7IC8vMDcwNA0KKwkJaW5pdF9wZWVyY3JlZF9wcm94eShwc29ja2V0X2lwYy0+c29jayk7DQogCQkvL7P1yry7r7T6wO1zb2NrZXS1xHVzb2Nr0MXPog0KIAkJdXNvY2tfaW5pdChwc29ja2V0X2lwYy0+c29jaywgcHNvY2tfcnBtc2ctPmNsaWVudGZkLCBwc29ja19ycG1zZy0+Y2xpZW50c29jaywgcHNvY2tldF9pcGMtPnNvY2tmZCwgcHNvY2tldF9pcGMtPnNvY2tldCwgcHNvY2tfcnBtc2ctPnNlcnZlcmZkLCBwc29ja19ycG1zZy0+c2VydmVyc29jayk7DQogCQl1c29ja191cGRhdGVfcmVtb3RlX3Byb3h5X3NvY2tldChwc29ja2V0X2lwYy0+c29jaywgcHNvY2tfcnBtc2ctPnNlcnZlcnByb3h5c29jayk7DQpAQCAtMTA4Nyw3ICsxMjEzLDcgQEAKIAkJaXBjc29ja2V0LT5sb2NhbHNvY2tldCA9IG5ld3NvY2s7DQogCQlza19zb2NfaW5mbygicmVtb3Rlc29ja2V0PSV4LCBsb2NhbHNvY2tldD0leCIsIGlwY3NvY2tldC0+cmVtb3Rlc29ja2V0LCBpcGNzb2NrZXQtPmxvY2Fsc29ja2V0KTsNCiAJfWVsc2V7DQotCQlza19zb2NfaW5mbygic29ja19zb2NfZ2V0X2lwY3NvY2tldF9ieV9wcm94eXNvY2sgZmFpbGVkLCBzb2NrPSV4Iiwgc29jayk7DQorCQlza19zb2NfaW5mbygic29ja19zb2NfZ2V0X2lwY3NvY2tldF9ieV9wcm94eXNvY2sgZmFpbGVkLCBwcm94eXNvY2s9JXgsIHNvY2s9JXgiLCBwcm94eXNvY2ssIHNvY2spOw0KIAkJcmV0dXJuIC0xOw0KIAl9DQogCXNrX3NvY19pbmZvKCJzb2NrPSV4LCBuZXdzb2NrPSV4Iiwgc29jaywgbmV3c29jayk7DQpAQCAtMTA5OCw2ICsxMjI0LDcgQEAKIAlzb2NrX3JwbXNnLm5ld3NvY2sgPSBuZXdzb2NrOw0KIAlzb2NrX3NvY19kZWxfc29ja2V0X3BlZXIoc29jaywgaXBjc29ja2V0LT5wcm94eXNvY2tldCk7DQogCXNvY2tfc29jX2luc2VydF9zb2NrZXRfcGVlcihuZXdzb2NrLCBpcGNzb2NrZXQtPnByb3h5c29ja2V0KTsNCisJdXNvY2tfdXBkYXRlKGlwY3NvY2tldC0+c29jaywgbmV3c29jay0+ZmQsIG5ld3NvY2spOw0KIAkvL25ld3NvY2stPnBlZXIgPSBzb2NrLT5wZWVyOyAvLzA3MDYNCiAJLy9zb2NrLT5wZWVyID0gTlVMTDsgLy8wNzA2DQogCXNvY2tfcnBtc2cua2V5ID0gc29ja19ycG1zZy5zZXJ2ZXJzb2NrOw0KQEAgLTE5MTgsMTQgKzIwNDUsMTkgQEAKIHsNCiAJc3RydWN0IGlwY19zb2NrZXQqIGlwY19zb2NrZXQ7DQogCXN0cnVjdCBzb2NrZXQqIHNlcnZlcnByb3h5c29jazsNCi0JaXBjX3NvY2tldCA9IHNvY2tfc29jX2dldF9pcGNzb2NrZXRfYnlfcHJveHlzb2NrKHBzb2NrX3JwbXNnLT5zZXJ2ZXJwcm94eXNvY2spOw0KKwlzZXJ2ZXJwcm94eXNvY2sgPSAoc3RydWN0IHNvY2tldCopcHNvY2tfcnBtc2ctPnNlcnZlcnByb3h5c29jazsNCisJaXBjX3NvY2tldCA9IHNvY2tfc29jX2dldF9pcGNzb2NrZXRfYnlfcHJveHlzb2NrKHNlcnZlcnByb3h5c29jay0+c2spOw0KKwlza19zb2NfaW5mbygic29ja19zb2Nfbm90aWZ5X3Byb3h5X2NoYW5nZV90b19zZXJ2ZXJfcHJvYyBzZXJ2ZXJwcm94eXNvY2s9JXgiLCBwc29ja19ycG1zZy0+c2VydmVycHJveHlzb2NrKTsNCiAJaWYoTlVMTCAhPSBpcGNfc29ja2V0KXsNCiAJCXNrX3NvY19pbmZvKCJzb2NrX3NvY19ub3RpZnlfcHJveHlfY2hhbmdlX3RvX3NlcnZlcl9wcm9jIHJlbW90ZXByb3h5c29ja2V0PSV4IiwgcHNvY2tfcnBtc2ctPmNsaWVudHByb3h5c29jayk7DQogCQlpcGNfc29ja2V0LT5yZW1vdGVwcm94eWZkID0gcHNvY2tfcnBtc2ctPmNsaWVudHByb3h5ZmQ7DQogCQlpcGNfc29ja2V0LT5yZW1vdGVwcm94eXNvY2tldCA9IHBzb2NrX3JwbXNnLT5jbGllbnRwcm94eXNvY2s7DQogCQlzZXJ2ZXJwcm94eXNvY2sgPSAoc3RydWN0IHNvY2tldCopcHNvY2tfcnBtc2ctPnNlcnZlcnByb3h5c29jazsNCiAJCXVzb2NrX3VwZGF0ZV9yZW1vdGVfcHJveHlfc29ja2V0KHNlcnZlcnByb3h5c29jay0+c2ssIHBzb2NrX3JwbXNnLT5jbGllbnRwcm94eXNvY2spOw0KLQl9CQ0KKwl9ZWxzZXsNCisJCXNrX3NvY19pbmZvKCJzb2NrX3NvY19ub3RpZnlfcHJveHlfY2hhbmdlX3RvX3NlcnZlcl9wcm9jIGlwY19zb2NrZXQgaXMgTlVMTCIpOw0KKwl9DQorCQ0KIH0NCiANCiBzdHJ1Y3Qgc29jayAqc29ja19zb2NfZmluZF9vdGhlcihzdHJ1Y3Qgc29ja2V0ICogc29ja2V0LyppbnQgZmQqLywNCkBAIC0xOTM2LDYgKzIwNjgsMTUgQEAKIAlzdHJ1Y3QgaXBjX3NvY2tldCAqcHNvY2tldF9pcGMgPSBOVUxMOw0KIAlzdHJ1Y3Qgc29ja19ycG1zZ19pbmZvICpwc29ja19ycG1zZ19pbmZvID0gTlVMTDsNCiAJaW50IGVycjsNCisJDQorCWlmKDAgPT0gc29ja2V0X3JwbXNnX2VuYWJsZSl7DQorCQlyZXR1cm4gTlVMTDsNCisJfQkNCisJCQ0KKwlpZihmYWxzZSA9PSBzb2NrX3NvY19pcGNfc3VuYWRkcl9leGlzdChzdW5uYW1lKSl7DQorCQlza19zb2NfaW5mbygic29ja19zb2NfaXBjX3N1bmFkZHJfZXhpc3QgaXMgZmFsc2UsIHN1bm5hbWU9JXMiLCBzdW5uYW1lLT5zdW5fcGF0aCk7DQorCQlyZXR1cm4gTlVMTDsgDQorCX0NCiAJLy9zdHJ1Y3Qgc29ja2V0ICpjbGlzb2NrZXQgPSBzb2NrX2dldF9sb2NhbF9zb2NrZXQoZmQsICZlcnIpOw0KIAltZW1jcHkoJnNvY2tfcnBtc2cuc29ja2FkZHIsIHN1bm5hbWUsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsNCiAJc29ja19ycG1zZy5hZGRyX2xlbiA9IGxlbjsNCkBAIC0xOTUyLDYgKzIwOTMsMTAgQEAKIAl9DQogCQ0KIAlwc29ja19ycG1zZ19pbmZvID0gc29ja19zb2NfY3JlYXRlX3JwbXNnX2luZm8oc29ja19ycG1zZy5rZXkpOw0KKwlpZihOVUxMID09IHBzb2NrX3JwbXNnX2luZm8pew0KKwkJc2tfc29jX2luZm8oInNvY2tfc29jX2ZpbmRfb3RoZXIgY3JlYXRlIHJwbXNnIGZhaWxkIFxuIik7DQorCQlyZXR1cm4gTlVMTDsNCisJfQ0KIAlza19zb2NfaW5mbygic29ja19zb2NfZmluZF9vdGhlciBjbGllbnRmZD0lZCwga2V5PSV4Iiwgc29ja19ycG1zZy5jbGllbnRmZCwgc29ja19ycG1zZy5rZXkpOw0KIAlzb2NrX3NlbmRfaXBjX21zZygmc29ja19ycG1zZyk7DQogCWRvd25fdGltZW91dCgmcHNvY2tfcnBtc2dfaW5mby0+c29ja19zZW0sIG1zZWNzX3RvX2ppZmZpZXMoZ19zb2NrX3RpbWVvdXQpKTsNCkBAIC0yMzIxLDYgKzI0NjYsNDYgQEAKIAlyZXR1cm4gMDsNCiB9DQogDQordm9pZCBzb2NrX3NvY191bml4X2JpbmQoc3RydWN0IHNvY2thZGRyX3VuICpzdW5hZGRyKQ0KK3sNCisJc3RydWN0IGlwY19zb2NrZXQgKnBzb2NrZXRfaXBjID0gTlVMTDsNCisJc3RydWN0IHNvY2tfcnBtc2cgc29ja19ycG1zZyA9IHswfTsNCisJc29ja19ycG1zZy5tc2dfdHlwZSA9IE1TR19UWVBFX1VOSVhfQklORDsJCQ0KKwkNCisJbWVtY3B5KCZzb2NrX3JwbXNnLnNvY2thZGRyLCBzdW5hZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX3VuKSk7DQorCXNrX3NvY19pbmZvKCJzb2NrX3NvY191bml4X2JpbmQgIHN1bmFkZHI9JXNcbiIsIHN1bmFkZHItPnN1bl9wYXRoKTsNCisJc29ja19zZW5kX2lwY19tc2coJnNvY2tfcnBtc2cpOyANCit9DQorDQoraW50IHNvY2tfc29jX3VuaXhfYmluZF9wcm9jKHN0cnVjdCBzb2NrX3JwbXNnKiBwc29ja19ycG1zZykNCit7DQorCXN0cnVjdCBzb2NrYWRkcl91biBzdW5hZGRyID0gezB9Ow0KKwltZW1jcHkoJnN1bmFkZHIsICZwc29ja19ycG1zZy0+c29ja2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsNCisJc2tfc29jX2luZm8oInNvY2tfc29jX3VuaXhfYmluZF9wcm9jICBzdW5hZGRyPSVzXG4iLCBzdW5hZGRyLnN1bl9wYXRoKTsNCisJc29ja19zb2NfaW5zZXJ0X2lwY19zdW5hZGRyKCZzdW5hZGRyKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK3ZvaWQgc29ja19zb2NfdW5peF91bmJpbmQoc3RydWN0IHNvY2thZGRyX3VuICpzdW5hZGRyKQ0KK3sNCisJc3RydWN0IGlwY19zb2NrZXQgKnBzb2NrZXRfaXBjID0gTlVMTDsNCisJc3RydWN0IHNvY2tfcnBtc2cgc29ja19ycG1zZyA9IHswfTsNCisJc29ja19ycG1zZy5tc2dfdHlwZSA9IE1TR19UWVBFX1VOSVhfVU5CSU5EOwkJDQorCQ0KKwltZW1jcHkoJnNvY2tfcnBtc2cuc29ja2FkZHIsIHN1bmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsNCisJc2tfc29jX2luZm8oInNvY2tfc29jX3VuaXhfdW5iaW5kICBzdW5hZGRyPSVzXG4iLCBzdW5hZGRyLT5zdW5fcGF0aCk7DQorCXNvY2tfc2VuZF9pcGNfbXNnKCZzb2NrX3JwbXNnKTsgDQorfQ0KKw0KK2ludCBzb2NrX3NvY191bml4X3VuYmluZF9wcm9jKHN0cnVjdCBzb2NrX3JwbXNnKiBwc29ja19ycG1zZykNCit7DQorCXN0cnVjdCBzb2NrYWRkcl91biBzdW5hZGRyID0gezB9Ow0KKwltZW1jcHkoJnN1bmFkZHIsICZwc29ja19ycG1zZy0+c29ja2FkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKTsNCisJc2tfc29jX2luZm8oInNvY2tfc29jX3VuaXhfdW5iaW5kX3Byb2MgIHN1bmFkZHI9JXNcbiIsIHN1bmFkZHIuc3VuX3BhdGgpOw0KKwlzb2NrX3NvY19kZWxfaXBjX3N1bmFkZHIoJnN1bmFkZHIpOw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGludCBzb2NrX2NyZWF0ZV9pY3BfY2hhbm5lbChUX1pEcnZScE1zZ19BY3RvcklEIGNvcmVfaWQsIFRfWkRydlJwTXNnX0NoSUQgY2hhbm5lbF9pZCwgdW5zaWduZWQgaW50IGNoYW5uZWxfc2l6ZSkNCiB7DQogICAgIGludCByZXR2YWw7DQpAQCAtMjQzOCw2ICsyNjIzLDEyIEBACiAJCWNhc2UgTVNHX1RZUEVfTk9USUZZX1BST1hZX0NIQU5HRToNCiAJCQlzb2NrX3NvY19ub3RpZnlfcHJveHlfY2hhbmdlX3RvX3NlcnZlcl9wcm9jKHNvY2tfcnBtc2cpOw0KIAkJCWJyZWFrOw0KKwkJY2FzZSBNU0dfVFlQRV9VTklYX0JJTkQ6DQorCQkJc29ja19zb2NfdW5peF9iaW5kX3Byb2Moc29ja19ycG1zZyk7DQorCQkJYnJlYWs7DQorCQljYXNlIE1TR19UWVBFX1VOSVhfVU5CSU5EOg0KKwkJCXNvY2tfc29jX3VuaXhfdW5iaW5kX3Byb2Moc29ja19ycG1zZyk7DQorCQkJYnJlYWs7DQogCQlkZWZhdWx0Og0KIAkJICAgIGJyZWFrOw0KIAl9DQpAQCAtMjYxOCw2ICsyODA5LDcgQEAKIAlJTklUX0hMSVNUX0hFQUQoJmdfaXBjX3NvY2tldHMpOw0KIAlJTklUX0hMSVNUX0hFQUQoJmdfc29ja19ycG1zZ19pbmZvKTsNCiAJSU5JVF9ITElTVF9IRUFEKCZnX3NvY2tldHNfaW5mbyk7DQorCUlOSVRfSExJU1RfSEVBRCgmZ19zdW5hZGRyX2luZm8pOw0KIAlyZXR2YWwgPSBzb2NrX2NyZWF0ZV9pY3BfY2hhbm5lbChDQVBfSUQsIElDUF9DSE5fU09DS0VULCBJQ1BfQ0hBTk5FTF9TSVpFKTsNCiAJaWYocmV0dmFsIDwgMCkgew0KIAkJc2tfc29jX2VycigiQ3JlYXRlIEljcENoYW5uZWwgY2hhbm5lbF8zMiBmYWlsLiIpOw0KQEAgLTI2NDMsNyArMjgzNSwxOSBAQAogCQlyZXR1cm4gUFRSX0VSUih0aCk7DQogCX0NCiAJZ19zb2NrX2Nobl9pbmZvLnJlY3ZfdGhyZWFkX2luZm8ucF90aHJlYWQgPSB0aDsNCi0JDQorDQorCWlwY3NvY2tldF9kZWJ1Z2ZzX2Rpcl9lbnRyeV9yb290ID0gZGVidWdmc19jcmVhdGVfZGlyKCJpcGNfc29ja2V0IiwgTlVMTCk7DQorCWlmIChpcGNzb2NrZXRfZGVidWdmc19kaXJfZW50cnlfcm9vdCkNCisJCWlwY3NvY2tldF9kZWJ1Z2ZzX2Rpcl9lbnRyeV9wcm9jID0gZGVidWdmc19jcmVhdGVfZGlyKCJwcm9jIiwNCisJCQkJCQkgaXBjc29ja2V0X2RlYnVnZnNfZGlyX2VudHJ5X3Jvb3QpOw0KKw0KKwlpZiAoaXBjc29ja2V0X2RlYnVnZnNfZGlyX2VudHJ5X3Jvb3QpIHsNCisJCWRlYnVnZnNfY3JlYXRlX2ZpbGUoImlwY19zb2NrZXRfaW5mbyIsDQorCQkJCSAgICAwNDQ0LA0KKwkJCQkgICAgaXBjc29ja2V0X2RlYnVnZnNfZGlyX2VudHJ5X3Jvb3QsDQorCQkJCSAgICBOVUxMLA0KKwkJCQkgICAgJmlwY19zb2NrZXRfaW5mb19mb3BzKTsNCisJfQ0KIAlyZXR1cm4gMDsNCiB9DQogDQpkaWZmIC0tZ2l0IGEvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3VuaXgvYWZfdW5peC5jIGIvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3VuaXgvYWZfdW5peC5jCmluZGV4IDAxM2I2ODUuLjMwYTM3ZDAgMTAwNzU1Ci0tLSBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC91bml4L2FmX3VuaXguYworKysgYi9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQvdW5peC9hZl91bml4LmMKQEAgLTExOSw2ICsxMTksOSBAQAogI2luY2x1ZGUgPGxpbnV4L3NvY2tldF9ycG1zZy5oPgogaW50IHNvY2tldF9ycG1zZ19kZWJ1ZyA9IDA7CiBtb2R1bGVfcGFyYW0oc29ja2V0X3JwbXNnX2RlYnVnLCBpbnQsIDA2NDQpOworCitpbnQgc29ja2V0X3JwbXNnX2VuYWJsZSA9IDE7Cittb2R1bGVfcGFyYW0oc29ja2V0X3JwbXNnX2VuYWJsZSwgaW50LCAwNjQ0KTsKICNlbmRpZgogc3RydWN0IGhsaXN0X2hlYWQgdW5peF9zb2NrZXRfdGFibGVbVU5JWF9IQVNIX1NJWkUgKyAxXTsKIEVYUE9SVF9TWU1CT0xfR1BMKHVuaXhfc29ja2V0X3RhYmxlKTsKQEAgLTIwMCw4ICsyMDMsMTMgQEAKIAogc3RhdGljIGlubGluZSB2b2lkIHVuaXhfcmVsZWFzZV9hZGRyKHN0cnVjdCB1bml4X2FkZHJlc3MgKmFkZHIpCiB7Ci0JaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmFkZHItPnJlZmNudCkpCisJaWYgKGF0b21pY19kZWNfYW5kX3Rlc3QoJmFkZHItPnJlZmNudCkpeworI2lmZGVmIENPTkZJR19JUENfU09DS0VUCisJCQlzb2NrX3NvY191bml4X3VuYmluZChhZGRyLT5uYW1lKTsKKyNlbmRpZgogCQlrZnJlZShhZGRyKTsKKwl9CisJCQogfQogCiAvKgpAQCAtOTQzLDcgKzk1MSw5IEBACiAJX191bml4X3JlbW92ZV9zb2NrZXQoc2spOwogCXUtPmFkZHIgPSBhZGRyOwogCV9fdW5peF9pbnNlcnRfc29ja2V0KGxpc3QsIHNrKTsKLQorI2lmZGVmIENPTkZJR19JUENfU09DS0VUCisJCXNvY2tfc29jX3VuaXhfYmluZChzdW5hZGRyKTsKKyNlbmRpZgogb3V0X3VubG9jazoKIAlzcGluX3VubG9jaygmdW5peF90YWJsZV9sb2NrKTsKIG91dF91cDoKQEAgLTI2MTcsNiArMjYyNywxMCBAQAogCXVuaXhfcmVsZWFzZV9zb2NrKHNrLCAwKTsKIH0KIAordm9pZCBpbml0X3BlZXJjcmVkX3Byb3h5KHN0cnVjdCBzb2NrICpzayl7CisJaW5pdF9wZWVyY3JlZChzayk7Cit9CisKICNlbmRpZgogCiBzdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9wcm90b19mYW1pbHkgdW5peF9mYW1pbHlfb3BzID0gewpkaWZmIC0tZ2l0IGEvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3hmcm0veGZybV9wb2xpY3kuYyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC94ZnJtL3hmcm1fcG9saWN5LmMKaW5kZXggNDAzYWY2Mi4uMzNmZDllNSAxMDA3NTUKLS0tIGEvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3hmcm0veGZybV9wb2xpY3kuYworKysgYi9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQveGZybS94ZnJtX3BvbGljeS5jCkBAIC04MTMsNyArODEzLDcgQEAKIAkgICAgd2Fsay0+dHlwZSAhPSBYRlJNX1BPTElDWV9UWVBFX0FOWSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlpZiAobGlzdF9lbXB0eSgmd2Fsay0+d2Fsay5hbGwpICYmIHdhbGstPnNlcSAhPSAwKQorCWlmICgobGlzdF9lbXB0eSgmd2Fsay0+d2Fsay5hbGwpICYmIHdhbGstPnNlcSAhPSAwKSB8fCB3YWxrLT53YWxrLmFsbC5uZXh0ID09IDApCiAJCXJldHVybiAwOwogCiAJd3JpdGVfbG9ja19iaCgmeGZybV9wb2xpY3lfbG9jayk7CkBAIC04NTgsNyArODU4LDcgQEAKIAogdm9pZCB4ZnJtX3BvbGljeV93YWxrX2RvbmUoc3RydWN0IHhmcm1fcG9saWN5X3dhbGsgKndhbGspCiB7Ci0JaWYgKGxpc3RfZW1wdHkoJndhbGstPndhbGsuYWxsKSkKKwlpZiAobGlzdF9lbXB0eSgmd2Fsay0+d2Fsay5hbGwpIHx8IHdhbGstPndhbGsuYWxsLm5leHQgPT0gMCkKIAkJcmV0dXJuOwogCiAJd3JpdGVfbG9ja19iaCgmeGZybV9wb2xpY3lfbG9jayk7CmRpZmYgLS1naXQgYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQveGZybS94ZnJtX3N0YXRlLmMKaW5kZXggYmM1MTJkMy4uODU2M2Y0ZSAxMDA3NTUKLS0tIGEvYXAvb3MvbGludXgvbGludXgtMy40LngvbmV0L3hmcm0veGZybV9zdGF0ZS5jCisrKyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC94ZnJtL3hmcm1fc3RhdGUuYwpAQCAtMTU2Niw3ICsxNTY2LDcgQEAKIAlzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrICp4OwogCWludCBlcnIgPSAwOwogCi0JaWYgKHdhbGstPnNlcSAhPSAwICYmIGxpc3RfZW1wdHkoJndhbGstPmFsbCkpCisJaWYgKCh3YWxrLT5zZXEgIT0gMCAmJiBsaXN0X2VtcHR5KCZ3YWxrLT5hbGwpKSB8fCB3YWxrLT5hbGwubmV4dCA9PSAwKQogCQlyZXR1cm4gMDsKIAogCXNwaW5fbG9ja19iaCgmeGZybV9zdGF0ZV9sb2NrKTsKQEAgLTE2MDksNyArMTYwOSw3IEBACiAKIHZvaWQgeGZybV9zdGF0ZV93YWxrX2RvbmUoc3RydWN0IHhmcm1fc3RhdGVfd2FsayAqd2FsaykKIHsKLQlpZiAobGlzdF9lbXB0eSgmd2Fsay0+YWxsKSkKKwlpZiAobGlzdF9lbXB0eSgmd2Fsay0+YWxsKSB8fCB3YWxrLT5hbGwubmV4dCA9PSAwKQogCQlyZXR1cm47CiAKIAlzcGluX2xvY2tfYmgoJnhmcm1fc3RhdGVfbG9jayk7CmRpZmYgLS1naXQgYS9hcC9vcy9saW51eC9saW51eC0zLjQueC9uZXQveGZybS94ZnJtX3VzZXIuYyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IDA4ODk4NTUuLmMyZDFlOTMgMTAwNzU1Ci0tLSBhL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC94ZnJtL3hmcm1fdXNlci5jCisrKyBiL2FwL29zL2xpbnV4L2xpbnV4LTMuNC54L25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC04NTgsNyArODU4LDYgQEAKIHN0YXRpYyBpbnQgeGZybV9kdW1wX3NhX2RvbmUoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogewogCXN0cnVjdCB4ZnJtX3N0YXRlX3dhbGsgKndhbGsgPSAoc3RydWN0IHhmcm1fc3RhdGVfd2FsayAqKSAmY2ItPmFyZ3NbMV07Ci0JaWYoY2ItPmFyZ3NbMV0pCiAJeGZybV9zdGF0ZV93YWxrX2RvbmUod2Fsayk7CiAJcmV0dXJuIDA7CiB9CkBAIC04NjksOCArODY4LDYgQEAKIAlzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrICp3YWxrID0gKHN0cnVjdCB4ZnJtX3N0YXRlX3dhbGsgKikgJmNiLT5hcmdzWzFdOwogCXN0cnVjdCB4ZnJtX2R1bXBfaW5mbyBpbmZvOwogCi0JaWYoY2ItPmFyZ3NbMV0gPT0gMCkKLQkJcmV0dXJuIDA7CiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrKSA+CiAJCSAgICAgc2l6ZW9mKGNiLT5hcmdzKSAtIHNpemVvZihjYi0+YXJnc1swXSkpOwogCkBAIC0xNTM4LDcgKzE1MzUsNyBAQAogc3RhdGljIGludCB4ZnJtX2R1bXBfcG9saWN5X2RvbmUoc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKQogewogCXN0cnVjdCB4ZnJtX3BvbGljeV93YWxrICp3YWxrID0gKHN0cnVjdCB4ZnJtX3BvbGljeV93YWxrICopICZjYi0+YXJnc1sxXTsKLQlpZihjYi0+YXJnc1sxXSkKKwogCXhmcm1fcG9saWN5X3dhbGtfZG9uZSh3YWxrKTsKIAlyZXR1cm4gMDsKIH0KQEAgLTE1NDksOCArMTU0Niw2IEBACiAJc3RydWN0IHhmcm1fcG9saWN5X3dhbGsgKndhbGsgPSAoc3RydWN0IHhmcm1fcG9saWN5X3dhbGsgKikgJmNiLT5hcmdzWzFdOwogCXN0cnVjdCB4ZnJtX2R1bXBfaW5mbyBpbmZvOwogCi0JaWYoY2ItPmFyZ3NbMV0gPT0gMCkKLQkJcmV0dXJuIDA7CiAJQlVJTERfQlVHX09OKHNpemVvZihzdHJ1Y3QgeGZybV9wb2xpY3lfd2FsaykgPgogCQkgICAgIHNpemVvZihjYi0+YXJncykgLSBzaXplb2YoY2ItPmFyZ3NbMF0pKTsKIAo=