From mboxrd@z Thu Jan 1 00:00:00 1970 From: Noboru Iwamatsu Subject: [PATCH 1/3] PVUSB update and bugfix: frontend part Date: Wed, 07 Oct 2009 16:27:49 +0900 Message-ID: <4ACC42F5.2080308@jp.fujitsu.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040903080807010704080302" Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: xen-devel@lists.xensource.com List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------040903080807010704080302 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit Signed-off-by: Noboru Iwamatsu --------------040903080807010704080302 Content-Type: text/plain; name="usbfront-v2.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="usbfront-v2.patch" ZGlmZiAtciA0YWMzZTFkNjYwNWMgLXIgM2JlOTM5OTc1YWQ2IGRyaXZlcnMveGVuL3VzYmZy b250L3VzYmZyb250LWRiZy5jCi0tLSBhL2RyaXZlcnMveGVuL3VzYmZyb250L3VzYmZyb250 LWRiZy5jCVR1ZSBTZXAgMjkgMTE6MjM6MDYgMjAwOSArMDEwMAorKysgYi9kcml2ZXJzL3hl bi91c2Jmcm9udC91c2Jmcm9udC1kYmcuYwlUdWUgT2N0IDA2IDE1OjE4OjI3IDIwMDkgKzA5 MDAKQEAgLTYwLDcgKzYwLDcgQEAKIAogCXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5sb2Nr LCBmbGFncyk7CiAKLQl0ZW1wID0gc2NucHJpbnRmIChuZXh0LCBzaXplLAorCXRlbXAgPSBz Y25wcmludGYobmV4dCwgc2l6ZSwKIAkJCSJidXMgJXMsIGRldmljZSAlc1xuIgogCQkJIiVz XG4iCiAJCQkieGVuaGNkLCBoY2Qgc3RhdGUgJWRcbiIsCkBAIC03NCw3ICs3NCw4IEBACiAj aWZkZWYgWEVOSENEX1NUQVRTCiAJdGVtcCA9IHNjbnByaW50ZihuZXh0LCBzaXplLAogCQki Y29tcGxldGUgJWxkIHVubGluayAlbGQgcmluZ19mdWxsICVsZFxuIiwKLQkJaW5mby0+c3Rh dHMuY29tcGxldGUsIGluZm8tPnN0YXRzLnVubGluaywgaW5mby0+c3RhdHMucmluZ19mdWxs KTsKKwkJaW5mby0+c3RhdHMuY29tcGxldGUsIGluZm8tPnN0YXRzLnVubGluaywKKwkJaW5m by0+c3RhdHMucmluZ19mdWxsKTsKIAlzaXplIC09IHRlbXA7CiAJbmV4dCArPSB0ZW1wOwog I2VuZGlmCmRpZmYgLXIgNGFjM2UxZDY2MDVjIC1yIDNiZTkzOTk3NWFkNiBkcml2ZXJzL3hl bi91c2Jmcm9udC91c2Jmcm9udC1oY2QuYwotLS0gYS9kcml2ZXJzL3hlbi91c2Jmcm9udC91 c2Jmcm9udC1oY2QuYwlUdWUgU2VwIDI5IDExOjIzOjA2IDIwMDkgKzAxMDAKKysrIGIvZHJp dmVycy94ZW4vdXNiZnJvbnQvdXNiZnJvbnQtaGNkLmMJVHVlIE9jdCAwNiAxNToxODoyNyAy MDA5ICswOTAwCkBAIC01NCw3ICs1NCw3IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAog CXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5sb2NrLCBmbGFncyk7Ci0JaWYgKEhDX0lTX1JV Tk5JTkcoaW5mb190b19oY2QoaW5mbyktPnN0YXRlKSkgeworCWlmIChsaWtlbHkoSENfSVNf UlVOTklORyhpbmZvX3RvX2hjZChpbmZvKS0+c3RhdGUpKSkgewogCQl0aW1lcl9hY3Rpb25f ZG9uZShpbmZvLCBUSU1FUl9SSU5HX1dBVENIRE9HKTsKIAkJeGVuaGNkX2dpdmViYWNrX3Vu bGlua2VkX3VyYnMoaW5mbyk7CiAJCXhlbmhjZF9raWNrX3BlbmRpbmdfdXJicyhpbmZvKTsK QEAgLTcwLDkgKzcwLDEwIEBACiAJc3RydWN0IHVzYmZyb250X2luZm8gKmluZm8gPSBoY2Rf dG9faW5mbyhoY2QpOwogCiAJc3Bpbl9sb2NrX2luaXQoJmluZm8tPmxvY2spOwotCUlOSVRf TElTVF9IRUFEKCZpbmZvLT5wZW5kaW5nX3VyYnMpOwotCUlOSVRfTElTVF9IRUFEKCZpbmZv LT5pbnByb2dyZXNzX3VyYnMpOwotCUlOSVRfTElTVF9IRUFEKCZpbmZvLT51bmxpbmtlZF91 cmJzKTsKKwlJTklUX0xJU1RfSEVBRCgmaW5mby0+cGVuZGluZ19zdWJtaXRfbGlzdCk7CisJ SU5JVF9MSVNUX0hFQUQoJmluZm8tPnBlbmRpbmdfdW5saW5rX2xpc3QpOworCUlOSVRfTElT VF9IRUFEKCZpbmZvLT5pbl9wcm9ncmVzc19saXN0KTsKKwlJTklUX0xJU1RfSEVBRCgmaW5m by0+Z2l2ZWJhY2tfd2FpdGluZ19saXN0KTsKIAlpbml0X3RpbWVyKCZpbmZvLT53YXRjaGRv Zyk7CiAJaW5mby0+d2F0Y2hkb2cuZnVuY3Rpb24gPSB4ZW5oY2Rfd2F0Y2hkb2c7CiAJaW5m by0+d2F0Y2hkb2cuZGF0YSA9ICh1bnNpZ25lZCBsb25nKSBpbmZvOwpAQCAtMTAxLDcwICsx MDIsMTQgQEAKIAlkZWxfdGltZXJfc3luYygmaW5mby0+d2F0Y2hkb2cpOwogCXJlbW92ZV9k ZWJ1Z19maWxlKGluZm8pOwogCXNwaW5fbG9ja19pcnEoJmluZm8tPmxvY2spOwotCS8qCi0J ICogVE9ETzogcG9ydCBwb3dlciBvZmYsIGNhbmNlbCBhbGwgdXJicy4KLQkgKi8KLQotCWlm IChIQ19JU19SVU5OSU5HKGhjZC0+c3RhdGUpKQotCQloY2QtPnN0YXRlID0gSENfU1RBVEVf SEFMVDsKKwkvKiBjYW5jZWwgYWxsIHVyYnMgKi8KKwloY2QtPnN0YXRlID0gSENfU1RBVEVf SEFMVDsKKwl4ZW5oY2RfY2FuY2VsX2FsbF9lbnF1ZXVlZF91cmJzKGluZm8pOworCXhlbmhj ZF9naXZlYmFja191bmxpbmtlZF91cmJzKGluZm8pOwogCXNwaW5fdW5sb2NrX2lycSgmaW5m by0+bG9jayk7CiB9CiAKIC8qCi0gKiBUT0RPOiBpbmNvbXBsZXRlIHN1c3BlbmQvcmVzdW1l IGZ1bmN0aW9ucyEKLSAqLwotI2lmIDAKLSNpZmRlZiBDT05GSUdfUE0KLS8qCi0gKiBzdXNw ZW5kIHJ1bm5pbmcgSEMKLSAqLwotc3RhdGljIGludCB4ZW5oY2Rfc3VzcGVuZChzdHJ1Y3Qg dXNiX2hjZCAqaGNkLCBwbV9tZXNzYWdlX3QgbWVzc2FnZSkKLXsKLQlzdHJ1Y3QgdXNiZnJv bnRfaW5mbyAqaW5mbyA9IGhjZF90b19pbmZvKGhjZCk7Ci0JdW5zaWduZWQgbG9uZyBmbGFn czsKLQlpbnQgcmV0ID0gMDsKLQotCXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5sb2NrLCBm bGFncyk7Ci0JaWYgKGhjZC0+c3RhdGUgIT0gSENfU1RBVEVfU1VTUEVOREVEKSB7Ci0JCXJl dCA9IC1FSU5WQUw7Ci0JCWdvdG8gZG9uZTsKLQl9Ci0KLQkvKgotCSAqIFRPRE86Ci0JICog CWNhbmNlbGluZyBhbGwgdHJhbnNmZXIsIGNsZWFyIGFsbCBoYyBxdWV1ZSwKLQkgKiAJc3Rv cCBrdGhyZWFkLAotCSAqLwotCi0JY2xlYXJfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUs ICZoY2QtPmZsYWdzKTsKLWRvbmU6Ci0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+ bG9jaywgZmxhZ3MpOwotCi0JcmV0dXJuIHJldDsKLX0KLQotLyoKLSAqIHJlc3VtZSBIQwot ICovCi1zdGF0aWMgaW50IHhlbmhjZF9yZXN1bWUoc3RydWN0IHVzYl9oY2QgKmhjZCkKLXsK LQlzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAqaW5mbyA9IGhjZF90b19pbmZvKGhjZCk7Ci0JaW50 IHJldCA9IC1FSU5WQUw7Ci0KLQlzZXRfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZo Y2QtPmZsYWdzKTsKLQotCS8qCi0JICogVE9ETzoKLQkgKiAJcmUtaW5pdCBIQy4KLQkgKiAJ cmVzdW1lIGFsbCByb290aHViIHBvcnRzLgotCSAqLwotCi0JcmV0dXJuIHJldDsKLX0KLSNl bmRpZgotI2VuZGlmCi0KLS8qCiAgKiBjYWxsZWQgYXMgLnVyYl9lbnF1ZXVlKCkKICAqIG5v bi1lcnJvciByZXR1cm5zIGFyZSBwcm9taXNlIHRvIGdpdmViYWNrIHRoZSB1cmIgbGF0ZXIK ICAqLwpAQCAtMTk3LDExICsxNDIsNiBAQAogCiAvKgogICogY2FsbGVkIGFzIC51cmJfZGVx dWV1ZSgpCi0gKgotICoganVzdCBtYXJrIHRoZSB1cmIgYXMgdW5saW5rZWQKLSAqIGlmIHRo ZSB1cmIgaXMgaW4gcGVuZGluZ191cmJzLCBtb3ZlIHRvIHVubGlua2VkX3VyYnMKLSAqIFRP RE86Ci0gKiAJY2FuY2VsaW5nIHRoZSB1cmIgdHJhbnNmZXIgaW4gYmFja2VuZAogICovCiBz dGF0aWMgaW50IHhlbmhjZF91cmJfZGVxdWV1ZShzdHJ1Y3QgdXNiX2hjZCAqaGNkLAogCQkJ CSAgICBzdHJ1Y3QgdXJiICp1cmIpCkBAIC0yMzQsNDYgKzE3NCw1NCBAQAogCXJldHVybiAw OwogfQogCi0vKgotICogVE9ETzoKLSAqIHN1c3BlbmQvcmVzdW1lIHdob2xlIGhjZCBhbmQg cm9vdGh1YgotICovCiBzdGF0aWMgY29uc3QgY2hhciBoY2RfbmFtZVtdID0gInhlbl9oY2Qi OwogCi1zdHJ1Y3QgaGNfZHJpdmVyIHVzYmZyb250X2hjX2RyaXZlciA9IHsKK3N0cnVjdCBo Y19kcml2ZXIgeGVuX3VzYjIwX2hjX2RyaXZlciA9IHsKIAkuZGVzY3JpcHRpb24gPSBoY2Rf bmFtZSwKLQkucHJvZHVjdF9kZXNjID0gRFJJVkVSX0RFU0MsCisJLnByb2R1Y3RfZGVzYyA9 ICJYZW4gVVNCMi4wIFZpcnR1YWwgSG9zdCBDb250cm9sbGVyIiwKIAkuaGNkX3ByaXZfc2l6 ZSA9IHNpemVvZihzdHJ1Y3QgdXNiZnJvbnRfaW5mbyksCiAJLmZsYWdzID0gSENEX1VTQjIs CiAKLQkvKgotCSAqIGJhc2ljIEhDIGxpZmVjeWNsZSBvcGVyYXRpb25zCi0JICovCisJLyog YmFzaWMgSEMgbGlmZWN5Y2xlIG9wZXJhdGlvbnMgKi8KIAkucmVzZXQgPSB4ZW5oY2Rfc2V0 dXAsCiAJLnN0YXJ0ID0geGVuaGNkX3J1biwKIAkuc3RvcCA9IHhlbmhjZF9zdG9wLAotI2lm IDAKLSNpZmRlZiBDT05GSUdfUE0KLQkuc3VzcGVuZCA9IHhlbmhjZF9zdXNwZW5kLAotCS5y ZXN1bWUgPSB4ZW5oY2RfcmVzdW1lLAotI2VuZGlmCi0jZW5kaWYKLQkvKgotCSAqIG1hbmFn aW5nIHVyYiBJL08KLQkgKi8KKworCS8qIG1hbmFnaW5nIHVyYiBJL08gKi8KIAkudXJiX2Vu cXVldWUgPSB4ZW5oY2RfdXJiX2VucXVldWUsCiAJLnVyYl9kZXF1ZXVlID0geGVuaGNkX3Vy Yl9kZXF1ZXVlLAogCS5nZXRfZnJhbWVfbnVtYmVyID0geGVuaGNkX2dldF9mcmFtZSwKIAot CS8qCi0JICogcm9vdCBodWIgb3BlcmF0aW9ucwotCSAqLworCS8qIHJvb3QgaHViIG9wZXJh dGlvbnMgKi8KIAkuaHViX3N0YXR1c19kYXRhID0geGVuaGNkX2h1Yl9zdGF0dXNfZGF0YSwK IAkuaHViX2NvbnRyb2wgPSB4ZW5oY2RfaHViX2NvbnRyb2wsCi0jaWYgMAogI2lmZGVmIENP TkZJR19QTQogCS5idXNfc3VzcGVuZCA9IHhlbmhjZF9idXNfc3VzcGVuZCwKIAkuYnVzX3Jl c3VtZSA9IHhlbmhjZF9idXNfcmVzdW1lLAogI2VuZGlmCit9OworCitzdHJ1Y3QgaGNfZHJp dmVyIHhlbl91c2IxMV9oY19kcml2ZXIgPSB7CisJLmRlc2NyaXB0aW9uID0gaGNkX25hbWUs CisJLnByb2R1Y3RfZGVzYyA9ICJYZW4gVVNCMS4xIFZpcnR1YWwgSG9zdCBDb250cm9sbGVy IiwKKwkuaGNkX3ByaXZfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgdXNiZnJvbnRfaW5mbyksCisJ LmZsYWdzID0gSENEX1VTQjExLAorCisJLyogYmFzaWMgSEMgbGlmZWN5Y2xlIG9wZXJhdGlv bnMgKi8KKwkucmVzZXQgPSB4ZW5oY2Rfc2V0dXAsCisJLnN0YXJ0ID0geGVuaGNkX3J1biwK Kwkuc3RvcCA9IHhlbmhjZF9zdG9wLAorCisJLyogbWFuYWdpbmcgdXJiIEkvTyAqLworCS51 cmJfZW5xdWV1ZSA9IHhlbmhjZF91cmJfZW5xdWV1ZSwKKwkudXJiX2RlcXVldWUgPSB4ZW5o Y2RfdXJiX2RlcXVldWUsCisJLmdldF9mcmFtZV9udW1iZXIgPSB4ZW5oY2RfZ2V0X2ZyYW1l LAorCisJLyogcm9vdCBodWIgb3BlcmF0aW9ucyAqLworCS5odWJfc3RhdHVzX2RhdGEgPSB4 ZW5oY2RfaHViX3N0YXR1c19kYXRhLAorCS5odWJfY29udHJvbCA9IHhlbmhjZF9odWJfY29u dHJvbCwKKyNpZmRlZiBDT05GSUdfUE0KKwkuYnVzX3N1c3BlbmQgPSB4ZW5oY2RfYnVzX3N1 c3BlbmQsCisJLmJ1c19yZXN1bWUgPSB4ZW5oY2RfYnVzX3Jlc3VtZSwKICNlbmRpZgogfTsK ZGlmZiAtciA0YWMzZTFkNjYwNWMgLXIgM2JlOTM5OTc1YWQ2IGRyaXZlcnMveGVuL3VzYmZy b250L3VzYmZyb250LWh1Yi5jCi0tLSBhL2RyaXZlcnMveGVuL3VzYmZyb250L3VzYmZyb250 LWh1Yi5jCVR1ZSBTZXAgMjkgMTE6MjM6MDYgMjAwOSArMDEwMAorKysgYi9kcml2ZXJzL3hl bi91c2Jmcm9udC91c2Jmcm9udC1odWIuYwlUdWUgT2N0IDA2IDE1OjE4OjI3IDIwMDkgKzA5 MDAKQEAgLTUwLDE1ICs1MCwxNiBAQAogewogCWludCBwb3J0OwogCi0JcG9ydCA9IHBvcnRu dW0gLTE7CisJcG9ydCA9IHBvcnRudW0gLSAxOwogCWlmIChpbmZvLT5wb3J0c1twb3J0XS5z dGF0dXMgJiBVU0JfUE9SVF9TVEFUX1BPV0VSKSB7CiAJCXN3aXRjaCAoaW5mby0+ZGV2aWNl c1twb3J0XS5zcGVlZCkgewogCQljYXNlIFVTQl9TUEVFRF9VTktOT1dOOgotCQkJaW5mby0+ cG9ydHNbcG9ydF0uc3RhdHVzICY9IH4oVVNCX1BPUlRfU1RBVF9DT05ORUNUSU9OIHwKLQkJ CQkJCQlVU0JfUE9SVF9TVEFUX0VOQUJMRSB8Ci0JCQkJCQkJVVNCX1BPUlRfU1RBVF9MT1df U1BFRUQgfAotCQkJCQkJCVVTQl9QT1JUX1NUQVRfSElHSF9TUEVFRCB8Ci0JCQkJCQkJVVNC X1BPUlRfU1RBVF9TVVNQRU5EKTsKKwkJCWluZm8tPnBvcnRzW3BvcnRdLnN0YXR1cyAmPQor CQkJCX4oVVNCX1BPUlRfU1RBVF9DT05ORUNUSU9OIHwKKwkJCQkJVVNCX1BPUlRfU1RBVF9F TkFCTEUgfAorCQkJCQlVU0JfUE9SVF9TVEFUX0xPV19TUEVFRCB8CisJCQkJCVVTQl9QT1JU X1NUQVRfSElHSF9TUEVFRCB8CisJCQkJCVVTQl9QT1JUX1NUQVRfU1VTUEVORCk7CiAJCQli cmVhazsKIAkJY2FzZSBVU0JfU1BFRURfTE9XOgogCQkJaW5mby0+cG9ydHNbcG9ydF0uc3Rh dHVzIHw9IFVTQl9QT1JUX1NUQVRfQ09OTkVDVElPTjsKQEAgLTg2LDYgKzg3LDkgQEAKIHsK IAlpbnQgcG9ydDsKIAorCWlmIChwb3J0bnVtIDwgMSB8fCBwb3J0bnVtID4gaW5mby0+cmhf bnVtcG9ydHMpCisJCXJldHVybjsgLyogaW52YWxpZCBwb3J0IG51bWJlciAqLworCiAJcG9y dCA9IHBvcnRudW0gLSAxOwogCWlmIChpbmZvLT5kZXZpY2VzW3BvcnRdLnNwZWVkICE9IHNw ZWVkKSB7CiAJCXN3aXRjaCAoc3BlZWQpIHsKQEAgLTEwNywzMCArMTExLDYgQEAKIAl9CiB9 CiAKLXZvaWQgcmhwb3J0X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYmZyb250X2luZm8gKmluZm8s IGludCBwb3J0bnVtKQotewotCXJocG9ydF9jb25uZWN0KGluZm8sIHBvcnRudW0sIFVTQl9T UEVFRF9VTktOT1dOKTsKLX0KLQotdm9pZCB4ZW5oY2Rfcmhwb3J0X3N0YXRlX2NoYW5nZShz dHJ1Y3QgdXNiZnJvbnRfaW5mbyAqaW5mbywKLQkJCQlpbnQgcG9ydG51bSwgZW51bSB1c2Jf ZGV2aWNlX3NwZWVkIHNwZWVkKQotewotCWludCBjaGFuZ2VkID0gMDsKLQl1bnNpZ25lZCBs b25nIGZsYWdzOwotCi0JaWYgKHBvcnRudW0gPCAxIHx8IHBvcnRudW0gPiBpbmZvLT5yaF9u dW1wb3J0cykKLQkJcmV0dXJuOyAvKiBpbnZhbGlkIHBvcnQgbnVtYmVyICovCi0KLQlzcGlu X2xvY2tfaXJxc2F2ZSgmaW5mby0+bG9jaywgZmxhZ3MpOwotCXJocG9ydF9jb25uZWN0KGlu Zm8sIHBvcnRudW0sIHNwZWVkKTsKLQlpZiAoaW5mby0+cG9ydHNbcG9ydG51bS0xXS5jX2Nv bm5lY3Rpb24pCi0JCWNoYW5nZWQgPSAxOwotCXNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmlu Zm8tPmxvY2ssIGZsYWdzKTsKLQotCWlmIChjaGFuZ2VkKQotCQl1c2JfaGNkX3BvbGxfcmhf c3RhdHVzKGluZm9fdG9faGNkKGluZm8pKTsKLX0KLQogLyoKICAqIFNldFBvcnRGZWF0dXJl KFBPUlRfU1VTUEVOREVEKQogICovCkBAIC0yMTQsNyArMTk0LDcgQEAKIHsKIAlpbnQgcG9y dDsKIAotCXBvcnQgPSBwb3J0bnVtIC0xOworCXBvcnQgPSBwb3J0bnVtIC0gMTsKIAlpbmZv LT5wb3J0c1twb3J0XS5zdGF0dXMgJj0gfihVU0JfUE9SVF9TVEFUX0VOQUJMRQogCQkJCQl8 IFVTQl9QT1JUX1NUQVRfTE9XX1NQRUVECiAJCQkJCXwgVVNCX1BPUlRfU1RBVF9ISUdIX1NQ RUVEKTsKQEAgLTIyNyw1NyArMjA3LDUxIEBACiAJaW5mby0+cG9ydHNbcG9ydF0udGltZW91 dCA9IGppZmZpZXMgKyBtc2Vjc190b19qaWZmaWVzKDEwKTsKIH0KIAotI2lmIDAKICNpZmRl ZiBDT05GSUdfUE0KIHN0YXRpYyBpbnQgeGVuaGNkX2J1c19zdXNwZW5kKHN0cnVjdCB1c2Jf aGNkICpoY2QpCiB7CiAJc3RydWN0IHVzYmZyb250X2luZm8gKmluZm8gPSBoY2RfdG9faW5m byhoY2QpOworCWludCByZXQgPSAwOwogCWludCBpLCBwb3J0czsKIAogCXBvcnRzID0gaW5m by0+cmhfbnVtcG9ydHM7CiAKIAlzcGluX2xvY2tfaXJxKCZpbmZvLT5sb2NrKTsKLQotCWlm IChIQ19JU19SVU5OSU5HKGhjZC0+c3RhdGUpKSB7Ci0JCS8qCi0JCSAqIFRPRE86Ci0JCSAq IGNsZWFuIHF1ZXVlLAotCQkgKiBzdG9wIGFsbCB0cmFuc2ZlcnMsCi0JCSAqIC4uLgotCQkg Ki8KLQkJaGNkLT5zdGF0ZSA9IEhDX1NUQVRFX1FVSUVTQ0lORzsKKwlpZiAoIXRlc3RfYml0 KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZpbmZvLT5mbGFncykpCisJCXJldCA9IC1FU0hV VERPV047CisJZWxzZSBpZiAoIWluZm8tPmRlYWQpIHsKKwkJLyogc3VzcGVuZCBhbnkgYWN0 aXZlIHBvcnRzKi8KKwkJZm9yIChpID0gMTsgaSA8PSBwb3J0czsgaSsrKQorCQkJcmhwb3J0 X3N1c3BlbmQoaW5mbywgaSk7CiAJfQotCi0JLyogc3VzcGVuZCBhbnkgYWN0aXZlIHBvcnRz Ki8KLQlmb3IgKGkgPSAxOyBpIDw9IHBvcnRzOyBpKyspIHsKLQkJcmhwb3J0X3N1c3BlbmQo aW5mbywgaSk7Ci0JfQorCXNwaW5fdW5sb2NrX2lycSgmaW5mby0+bG9jayk7CiAKIAlkZWxf dGltZXJfc3luYygmaW5mby0+d2F0Y2hkb2cpOwogCi0Jc3Bpbl91bmxvY2tfaXJxKCZpbmZv LT5sb2NrKTsKLQotCXJldHVybiAwOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBpbnQg eGVuaGNkX2J1c19yZXN1bWUoc3RydWN0IHVzYl9oY2QgKmhjZCkKIHsKIAlzdHJ1Y3QgdXNi ZnJvbnRfaW5mbyAqaW5mbyA9IGhjZF90b19pbmZvKGhjZCk7CisJaW50IHJldCA9IDA7CiAJ aW50IGksIHBvcnRzOwogCiAJcG9ydHMgPSBpbmZvLT5yaF9udW1wb3J0czsKIAogCXNwaW5f bG9ja19pcnEoJmluZm8tPmxvY2spOwotCS8qIHJlc3VtZSBhbnkgc3VzcGVuZGVkIHBvcnRz Ki8KLQlmb3IgKGkgPSAxOyBpIDw9IHBvcnRzOyBpKyspIHsKLQkJcmhwb3J0X3Jlc3VtZShp bmZvLCBpKTsKKwlpZiAoIXRlc3RfYml0KEhDRF9GTEFHX0hXX0FDQ0VTU0lCTEUsICZpbmZv LT5mbGFncykpCisJCXJldCA9IC1FU0hVVERPV047CisJZWxzZSBpZiAoIWluZm8tPmRlYWQp IHsKKwkJLyogcmVzdW1lIGFueSBzdXNwZW5kZWQgcG9ydHMqLworCQlmb3IgKGkgPSAxOyBp IDw9IHBvcnRzOyBpKyspCisJCQlyaHBvcnRfcmVzdW1lKGluZm8sIGkpOwogCX0KLQloY2Qt PnN0YXRlID0gSENfU1RBVEVfUlVOTklORzsKIAlzcGluX3VubG9ja19pcnEoJmluZm8tPmxv Y2spOwotCXJldHVybiAwOworCisJcmV0dXJuIHJldDsKIH0KICNlbmRpZgotI2VuZGlmCiAK IHN0YXRpYyB2b2lkIHhlbmhjZF9odWJfZGVzY3JpcHRvcihzdHJ1Y3QgdXNiZnJvbnRfaW5m byAqaW5mbywKIAkJCQkgIHN0cnVjdCB1c2JfaHViX2Rlc2NyaXB0b3IgKmRlc2MpCkBAIC0y OTUsOCArMjY5LDggQEAKIAlkZXNjLT5iRGVzY0xlbmd0aCA9IDcgKyAyICogdGVtcDsKIAog CS8qIGJpdG1hcHMgZm9yIERldmljZVJlbW92YWJsZSBhbmQgUG9ydFB3ckN0cmxNYXNrICov Ci0JbWVtc2V0ICgmZGVzYy0+Yml0bWFwWzBdLCAwLCB0ZW1wKTsKLQltZW1zZXQgKCZkZXNj LT5iaXRtYXBbdGVtcF0sIDB4ZmYsIHRlbXApOworCW1lbXNldCgmZGVzYy0+Yml0bWFwWzBd LCAwLCB0ZW1wKTsKKwltZW1zZXQoJmRlc2MtPmJpdG1hcFt0ZW1wXSwgMHhmZiwgdGVtcCk7 CiAKIAkvKiBwZXItcG9ydCBvdmVyIGN1cnJlbnQgcmVwb3J0aW5nIGFuZCBubyBwb3dlciBz d2l0Y2hpbmcgKi8KIAl0ZW1wID0gMHgwMDBhOwpAQCAtMzgwLDExICszNTQsNiBAQAogCWlu dCBpOwogCWludCBjaGFuZ2VkID0gMDsKIAotI2lmZGVmIFVTQkZST05UX0RFQlVHCi0JV1BS SU5USygieGVudXNiX2h1Yl9jb250cm9sKHR5cGVSZXEgJXggd1ZhbHVlICV4IHdJbmRleCAl eClcbiIsCi0JICAgICAgIHR5cGVSZXEsIHdWYWx1ZSwgd0luZGV4KTsKLSNlbmRpZgotCiAJ c3Bpbl9sb2NrX2lycXNhdmUoJmluZm8tPmxvY2ssIGZsYWdzKTsKIAlzd2l0Y2ggKHR5cGVS ZXEpIHsKIAljYXNlIENsZWFySHViRmVhdHVyZToKQEAgLTM5NCw3ICszNjMsNyBAQAogCQlp ZiAoIXdJbmRleCB8fCB3SW5kZXggPiBwb3J0cykKIAkJCWdvdG8gZXJyb3I7CiAKLQkJc3dp dGNoKHdWYWx1ZSkgeworCQlzd2l0Y2ggKHdWYWx1ZSkgewogCQljYXNlIFVTQl9QT1JUX0ZF QVRfU1VTUEVORDoKIAkJCXJocG9ydF9yZXN1bWUoaW5mbywgd0luZGV4KTsKIAkJCWJyZWFr OwpAQCAtNDE0LDcgKzM4Myw3IEBACiAJCWJyZWFrOwogCWNhc2UgR2V0SHViRGVzY3JpcHRv cjoKIAkJeGVuaGNkX2h1Yl9kZXNjcmlwdG9yKGluZm8sCi0JCQkJICAgICAgKHN0cnVjdCB1 c2JfaHViX2Rlc2NyaXB0b3IqKSBidWYpOworCQkJCSAgICAgIChzdHJ1Y3QgdXNiX2h1Yl9k ZXNjcmlwdG9yICopIGJ1Zik7CiAJCWJyZWFrOwogCWNhc2UgR2V0SHViU3RhdHVzOgogCQkv KiBhbHdheXMgbG9jYWwgcG93ZXIgc3VwcGx5IGdvb2QgYW5kIG5vIG92ZXItY3VycmVudCBl eGlzdHMuICovCkBAIC00NDQsNyArNDEzLDcgQEAKIAkJCQlpbmZvLT5kZXZpY2VzW3dJbmRl eF0uc3RhdHVzID0gVVNCX1NUQVRFX0RFRkFVTFQ7CiAJCQl9CiAKLQkJCXN3aXRjaChpbmZv LT5kZXZpY2VzW3dJbmRleF0uc3BlZWQpIHsKKwkJCXN3aXRjaCAoaW5mby0+ZGV2aWNlc1t3 SW5kZXhdLnNwZWVkKSB7CiAJCQljYXNlIFVTQl9TUEVFRF9MT1c6CiAJCQkJaW5mby0+cG9y dHNbd0luZGV4XS5zdGF0dXMgfD0gVVNCX1BPUlRfU1RBVF9MT1dfU1BFRUQ7CiAJCQkJYnJl YWs7CkBAIC00NjYsNyArNDM1LDcgQEAKIAkJaWYgKCF3SW5kZXggfHwgd0luZGV4ID4gcG9y dHMpCiAJCQlnb3RvIGVycm9yOwogCi0JCXN3aXRjaCh3VmFsdWUpIHsKKwkJc3dpdGNoICh3 VmFsdWUpIHsKIAkJY2FzZSBVU0JfUE9SVF9GRUFUX1BPV0VSOgogCQkJcmhwb3J0X3Bvd2Vy X29uKGluZm8sIHdJbmRleCk7CiAJCQlicmVhazsKQEAgLTQ3Nyw5ICs0NDYsOCBAQAogCQkJ cmhwb3J0X3N1c3BlbmQoaW5mbywgd0luZGV4KTsKIAkJCWJyZWFrOwogCQlkZWZhdWx0Ogot CQkJaWYgKChpbmZvLT5wb3J0c1t3SW5kZXgtMV0uc3RhdHVzICYgVVNCX1BPUlRfU1RBVF9Q T1dFUikgIT0gMCkgeworCQkJaWYgKChpbmZvLT5wb3J0c1t3SW5kZXgtMV0uc3RhdHVzICYg VVNCX1BPUlRfU1RBVF9QT1dFUikgIT0gMCkKIAkJCQlpbmZvLT5wb3J0c1t3SW5kZXgtMV0u c3RhdHVzIHw9ICgxIDw8IHdWYWx1ZSk7Ci0JCQl9CiAJCX0KIAkJYnJlYWs7CiAKQEAgLTQ5 MSw5ICs0NTksOCBAQAogCiAJLyogY2hlY2sgc3RhdHVzIGZvciBlYWNoIHBvcnQgKi8KIAlm b3IgKGkgPSAwOyBpIDwgcG9ydHM7IGkrKykgewotCQlpZiAoaW5mby0+cG9ydHNbaV0uc3Rh dHVzICYgUE9SVF9DX01BU0spIHsKKwkJaWYgKGluZm8tPnBvcnRzW2ldLnN0YXR1cyAmIFBP UlRfQ19NQVNLKQogCQkJY2hhbmdlZCA9IDE7Ci0JCX0KIAl9CiAJaWYgKGNoYW5nZWQpCiAJ CXVzYl9oY2RfcG9sbF9yaF9zdGF0dXMoaGNkKTsKZGlmZiAtciA0YWMzZTFkNjYwNWMgLXIg M2JlOTM5OTc1YWQ2IGRyaXZlcnMveGVuL3VzYmZyb250L3VzYmZyb250LXEuYwotLS0gYS9k cml2ZXJzL3hlbi91c2Jmcm9udC91c2Jmcm9udC1xLmMJVHVlIFNlcCAyOSAxMToyMzowNiAy MDA5ICswMTAwCisrKyBiL2RyaXZlcnMveGVuL3VzYmZyb250L3VzYmZyb250LXEuYwlUdWUg T2N0IDA2IDE1OjE4OjI3IDIwMDkgKzA5MDAKQEAgLTUwLDEzICs1MCwxMyBAQAogCXN0cnVj dCB1cmJfcHJpdiAqdXJicDsKIAogCXVyYnAgPSBrbWVtX2NhY2hlX3phbGxvYyh4ZW5oY2Rf dXJicF9jYWNoZXAsIEdGUF9BVE9NSUMpOwotCWlmICghdXJicCkgeworCWlmICghdXJicCkK IAkJcmV0dXJuIE5VTEw7Ci0JfQogCiAJdXJicC0+dXJiID0gdXJiOwogCXVyYi0+aGNwcml2 ID0gdXJicDsKIAl1cmJwLT5yZXFfaWQgPSB+MDsKKwl1cmJwLT51bmxpbmtfcmVxX2lkID0g fjA7CiAJSU5JVF9MSVNUX0hFQUQoJnVyYnAtPmxpc3QpOwogCiAJcmV0dXJuIHVyYnA7CkBA IC03Myw3ICs3Myw3IEBACiB7CiAJdW5zaWduZWQgbG9uZyBmcmVlOwogCWZyZWUgPSBpbmZv LT5zaGFkb3dfZnJlZTsKLQlCVUdfT04oZnJlZSA+IFVTQl9SSU5HX1NJWkUpOworCUJVR19P TihmcmVlID49IFVTQl9VUkJfUklOR19TSVpFKTsKIAlpbmZvLT5zaGFkb3dfZnJlZSA9IGlu Zm8tPnNoYWRvd1tmcmVlXS5yZXEuaWQ7CiAJaW5mby0+c2hhZG93W2ZyZWVdLnJlcS5pZCA9 ICh1bnNpZ25lZCBpbnQpMHgwZmZmOyAvKiBkZWJ1ZyAqLwogCXJldHVybiBmcmVlOwpAQCAt OTAsNyArOTAsNyBAQAogc3RhdGljIGlubGluZSBpbnQgY291bnRfcGFnZXModm9pZCAqYWRk ciwgaW50IGxlbmd0aCkKIHsKIAl1bnNpZ25lZCBsb25nIHN0YXJ0ID0gKHVuc2lnbmVkIGxv bmcpIGFkZHIgPj4gUEFHRV9TSElGVDsKLQl1bnNpZ25lZCBsb25nIGVuZCA9ICh1bnNpZ25l ZCBsb25nKSAoYWRkciArIGxlbmd0aCArIFBBR0VfU0laRSAtMSkgPj4gUEFHRV9TSElGVDsK Kwl1bnNpZ25lZCBsb25nIGVuZCA9ICh1bnNpZ25lZCBsb25nKSAoYWRkciArIGxlbmd0aCAr IFBBR0VfU0laRSAtIDEpID4+IFBBR0VfU0hJRlQ7CiAJcmV0dXJuIGVuZCAtIHN0YXJ0Owog fQogCkBAIC0xMDgsNyArMTA4LDcgQEAKIAogCWxlbiA9IGxlbmd0aDsKIAotCWZvcihpID0g MDtpIDwgbnJfcGFnZXM7aSsrKXsKKwlmb3IgKGkgPSAwOyBpIDwgbnJfcGFnZXM7IGkrKykg ewogCQlCVUdfT04oIWxlbik7CiAKIAkJcGFnZSA9IHZpcnRfdG9fcGFnZShhZGRyKTsKQEAg LTExNiw3ICsxMTYsNyBAQAogCQlvZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShhZGRyKTsKIAog CQlieXRlcyA9IFBBR0VfU0laRSAtIG9mZnNldDsKLQkJaWYoYnl0ZXMgPiBsZW4pCisJCWlm IChieXRlcyA+IGxlbikKIAkJCWJ5dGVzID0gbGVuOwogCiAJCXJlZiA9IGdudHRhYl9jbGFp bV9ncmFudF9yZWZlcmVuY2UoZ3JlZl9oZWFkKTsKQEAgLTEzMiw3ICsxMzIsNyBAQAogfQog CiBzdGF0aWMgaW50IG1hcF91cmJfZm9yX3JlcXVlc3Qoc3RydWN0IHVzYmZyb250X2luZm8g KmluZm8sIHN0cnVjdCB1cmIgKnVyYiwKLQkJdXNiaWZfcmVxdWVzdF90ICpyZXEpCisJCXVz YmlmX3VyYl9yZXF1ZXN0X3QgKnJlcSkKIHsKIAlncmFudF9yZWZfdCBncmVmX2hlYWQ7CiAJ aW50IG5yX2J1ZmZfcGFnZXMgPSAwOwpAQCAtMTc1LDE0ICsxNzUsMTIgQEAKIAkJcmVxLT51 Lmlzb2Muc3RhcnRfZnJhbWUgPSB1cmItPnN0YXJ0X2ZyYW1lOwogCQlyZXEtPnUuaXNvYy5u dW1iZXJfb2ZfcGFja2V0cyA9IHVyYi0+bnVtYmVyX29mX3BhY2tldHM7CiAJCXJlcS0+dS5p c29jLm5yX2ZyYW1lX2Rlc2Nfc2VncyA9IG5yX2lzb2Rlc2NfcGFnZXM7Ci0JCS8qCi0JCSAq IHVyYi0+bnVtYmVyX29mX3BhY2tldHMgbXVzdCBiZSA+IDAKLQkJICovCisJCS8qIHVyYi0+ bnVtYmVyX29mX3BhY2tldHMgbXVzdCBiZSA+IDAgKi8KIAkJaWYgKHVubGlrZWx5KHVyYi0+ bnVtYmVyX29mX3BhY2tldHMgPD0gMCkpCiAJCQlCVUcoKTsKIAkJeGVuaGNkX2dudHRhYl9t YXAoaW5mbywgJnVyYi0+aXNvX2ZyYW1lX2Rlc2NbMF0sCi0JCQkJc2l6ZW9mKHN0cnVjdCB1 c2JfaXNvX3BhY2tldF9kZXNjcmlwdG9yKSAqIHVyYi0+bnVtYmVyX29mX3BhY2tldHMsCi0J CQkJJmdyZWZfaGVhZCwgJnJlcS0+c2VnW25yX2J1ZmZfcGFnZXNdLCBucl9pc29kZXNjX3Bh Z2VzLCAwKTsKKwkJCXNpemVvZihzdHJ1Y3QgdXNiX2lzb19wYWNrZXRfZGVzY3JpcHRvcikg KiB1cmItPm51bWJlcl9vZl9wYWNrZXRzLAorCQkJJmdyZWZfaGVhZCwgJnJlcS0+c2VnW25y X2J1ZmZfcGFnZXNdLCBucl9pc29kZXNjX3BhZ2VzLCAwKTsKIAkJZ250dGFiX2ZyZWVfZ3Jh bnRfcmVmZXJlbmNlcyhncmVmX2hlYWQpOwogCQlicmVhazsKIAljYXNlIFBJUEVfSU5URVJS VVBUOgpAQCAtMjEzLDkgKzIxMSwxMiBAQAogCiAJZm9yIChpID0gMDsgaSA8IG5yX3NlZ3M7 IGkrKykKIAkJZ250dGFiX2VuZF9mb3JlaWduX2FjY2VzcyhzaGFkb3ctPnJlcS5zZWdbaV0u Z3JlZiwgMFVMKTsKKworCXNoYWRvdy0+cmVxLm5yX2J1ZmZlcl9zZWdzID0gMDsKKwlzaGFk b3ctPnJlcS51Lmlzb2MubnJfZnJhbWVfZGVzY19zZWdzID0gMDsKIH0KIAotc3RhdGljIHZv aWQgeGVuaGNkX2dpdmViYWNrX3VyYihzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAqaW5mbywgc3Ry dWN0IHVyYiAqdXJiKQorc3RhdGljIHZvaWQgeGVuaGNkX2dpdmViYWNrX3VyYihzdHJ1Y3Qg dXNiZnJvbnRfaW5mbyAqaW5mbywgc3RydWN0IHVyYiAqdXJiLCBpbnQgc3RhdHVzKQogX19y ZWxlYXNlcyhpbmZvLT5sb2NrKQogX19hY3F1aXJlcyhpbmZvLT5sb2NrKQogewpAQCAtMjI4 LDYgKzIyOSw5IEBACiAJY2FzZSAtRU5PRU5UOgogCQlDT1VOVChpbmZvLT5zdGF0cy51bmxp bmspOwogCQlicmVhazsKKwljYXNlIC1FSU5QUk9HUkVTUzoKKwkJdXJiLT5zdGF0dXMgPSBz dGF0dXM7CisJCS8qIGZhbGxpbmcgdGhyb3VnaCAqLwogCWRlZmF1bHQ6CiAJCUNPVU5UKGlu Zm8tPnN0YXRzLmNvbXBsZXRlKTsKIAl9CkBAIC0yMzgsMjggKzI0MiwzNSBAQAogCiBzdGF0 aWMgaW5saW5lIGludCB4ZW5oY2RfZG9fcmVxdWVzdChzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAq aW5mbywgc3RydWN0IHVyYl9wcml2ICp1cmJwKQogewotCXVzYmlmX3JlcXVlc3RfdCAqcmlu Z19yZXE7CisJdXNiaWZfdXJiX3JlcXVlc3RfdCAqcmVxOwogCXN0cnVjdCB1cmIgKnVyYiA9 IHVyYnAtPnVyYjsKIAl1aW50MTZfdCBpZDsKIAlpbnQgbm90aWZ5OwogCWludCByZXQgPSAw OwogCi0JcmluZ19yZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZpbmZvLT5yaW5nLCBpbmZvLT5y aW5nLnJlcV9wcm9kX3B2dCk7CisJcmVxID0gUklOR19HRVRfUkVRVUVTVCgmaW5mby0+dXJi X3JpbmcsIGluZm8tPnVyYl9yaW5nLnJlcV9wcm9kX3B2dCk7CiAJaWQgPSBnZXRfaWRfZnJv bV9mcmVlbGlzdChpbmZvKTsKLQlyaW5nX3JlcS0+aWQgPSBpZDsKKwlyZXEtPmlkID0gaWQ7 CiAKLQlyZXQgPSBtYXBfdXJiX2Zvcl9yZXF1ZXN0KGluZm8sIHVyYiwgcmluZ19yZXEpOwot CWlmIChyZXQgPCAwKSB7Ci0JCWFkZF9pZF90b19mcmVlbGlzdChpbmZvLCBpZCk7Ci0JCXJl dHVybiByZXQ7CisJaWYgKHVubGlrZWx5KHVyYnAtPnVubGlua2VkKSkgeworCQlyZXEtPnUu dW5saW5rLnVubGlua19pZCA9IHVyYnAtPnJlcV9pZDsKKwkJcmVxLT5waXBlID0gdXNiaWZf c2V0dW5saW5rX3BpcGUodXNiaWZfc2V0cG9ydG51bV9waXBlKAorCQkJCXVyYi0+cGlwZSwg dXJiLT5kZXYtPnBvcnRudW0pKTsKKwkJdXJicC0+dW5saW5rX3JlcV9pZCA9IGlkOworCX0g ZWxzZSB7CisJCXJldCA9IG1hcF91cmJfZm9yX3JlcXVlc3QoaW5mbywgdXJiLCByZXEpOwor CQlpZiAocmV0IDwgMCkgeworCQkJYWRkX2lkX3RvX2ZyZWVsaXN0KGluZm8sIGlkKTsKKwkJ CXJldHVybiByZXQ7CisJCX0KKwkJdXJicC0+cmVxX2lkID0gaWQ7CiAJfQogCi0JaW5mby0+ cmluZy5yZXFfcHJvZF9wdnQrKzsKKwlpbmZvLT51cmJfcmluZy5yZXFfcHJvZF9wdnQrKzsK IAlpbmZvLT5zaGFkb3dbaWRdLnVyYiA9IHVyYjsKLQlpbmZvLT5zaGFkb3dbaWRdLnJlcSA9 ICpyaW5nX3JlcTsKLQl1cmJwLT5yZXFfaWQgPSBpZDsKKwlpbmZvLT5zaGFkb3dbaWRdLnJl cSA9ICpyZXE7CiAKLQlSSU5HX1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElGWSgmaW5m by0+cmluZywgbm90aWZ5KTsKKwlSSU5HX1BVU0hfUkVRVUVTVFNfQU5EX0NIRUNLX05PVElG WSgmaW5mby0+dXJiX3JpbmcsIG5vdGlmeSk7CiAJaWYgKG5vdGlmeSkKIAkJbm90aWZ5X3Jl bW90ZV92aWFfaXJxKGluZm8tPmlycSk7CiAKQEAgLTI3MSwxOSArMjgyLDE5IEBACiAJc3Ry dWN0IHVyYl9wcml2ICp1cmJwOwogCWludCByZXQ7CiAKLQl3aGlsZSAoIWxpc3RfZW1wdHko JmluZm8tPnBlbmRpbmdfdXJicykpIHsKLQkJaWYgKFJJTkdfRlVMTCgmaW5mby0+cmluZykp IHsKKwl3aGlsZSAoIWxpc3RfZW1wdHkoJmluZm8tPnBlbmRpbmdfc3VibWl0X2xpc3QpKSB7 CisJCWlmIChSSU5HX0ZVTEwoJmluZm8tPnVyYl9yaW5nKSkgewogCQkJQ09VTlQoaW5mby0+ c3RhdHMucmluZ19mdWxsKTsKIAkJCXRpbWVyX2FjdGlvbihpbmZvLCBUSU1FUl9SSU5HX1dB VENIRE9HKTsKIAkJCWdvdG8gZG9uZTsKIAkJfQogCi0JCXVyYnAgPSBsaXN0X2VudHJ5KGlu Zm8tPnBlbmRpbmdfdXJicy5uZXh0LCBzdHJ1Y3QgdXJiX3ByaXYsIGxpc3QpOworCQl1cmJw ID0gbGlzdF9lbnRyeShpbmZvLT5wZW5kaW5nX3N1Ym1pdF9saXN0Lm5leHQsIHN0cnVjdCB1 cmJfcHJpdiwgbGlzdCk7CiAJCXJldCA9IHhlbmhjZF9kb19yZXF1ZXN0KGluZm8sIHVyYnAp OwogCQlpZiAocmV0ID09IDApCi0JCQlsaXN0X21vdmVfdGFpbCgmdXJicC0+bGlzdCwgJmlu Zm8tPmlucHJvZ3Jlc3NfdXJicyk7CisJCQlsaXN0X21vdmVfdGFpbCgmdXJicC0+bGlzdCwg JmluZm8tPmluX3Byb2dyZXNzX2xpc3QpOwogCQllbHNlCi0JCQl4ZW5oY2RfZ2l2ZWJhY2tf dXJiKGluZm8sIHVyYnAtPnVyYik7CisJCQl4ZW5oY2RfZ2l2ZWJhY2tfdXJiKGluZm8sIHVy YnAtPnVyYiwgLUVTSFVURE9XTik7CiAJfQogCXRpbWVyX2FjdGlvbl9kb25lKGluZm8sIFRJ TUVSX1NDQU5fUEVORElOR19VUkJTKTsKIApAQCAtMjkxLDEyICszMDIsNDEgQEAKIAlyZXR1 cm47CiB9CiAKKy8qCisgKiBjYWxsZXIgbXVzdCBsb2NrIGluZm8tPmxvY2sKKyAqLworc3Rh dGljIHZvaWQgeGVuaGNkX2NhbmNlbF9hbGxfZW5xdWV1ZWRfdXJicyhzdHJ1Y3QgdXNiZnJv bnRfaW5mbyAqaW5mbykKK3sKKwlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnAsICp0bXA7CisKKwls aXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUodXJicCwgdG1wLCAmaW5mby0+aW5fcHJvZ3Jlc3Nf bGlzdCwgbGlzdCkgeworCQlpZiAoIXVyYnAtPnVubGlua2VkKSB7CisJCQl4ZW5oY2RfZ250 dGFiX2RvbmUoJmluZm8tPnNoYWRvd1t1cmJwLT5yZXFfaWRdKTsKKwkJCWJhcnJpZXIoKTsK KwkJCWlmICh1cmJwLT51cmItPnN0YXR1cyA9PSAtRUlOUFJPR1JFU1MpCS8qIG5vdCBkZXF1 ZXVlZCAqLworCQkJCXhlbmhjZF9naXZlYmFja191cmIoaW5mbywgdXJicC0+dXJiLCAtRVNI VVRET1dOKTsKKwkJCWVsc2UJCQkJCS8qIGRlcXVldWVkICovCisJCQkJeGVuaGNkX2dpdmVi YWNrX3VyYihpbmZvLCB1cmJwLT51cmIsIHVyYnAtPnVyYi0+c3RhdHVzKTsKKwkJfQorCQlp bmZvLT5zaGFkb3dbdXJicC0+cmVxX2lkXS51cmIgPSBOVUxMOworCX0KKworCWxpc3RfZm9y X2VhY2hfZW50cnlfc2FmZSh1cmJwLCB0bXAsICZpbmZvLT5wZW5kaW5nX3N1Ym1pdF9saXN0 LCBsaXN0KSB7CisJCXhlbmhjZF9naXZlYmFja191cmIoaW5mbywgdXJicC0+dXJiLCAtRVNI VVRET1dOKTsKKwl9CisKKwlyZXR1cm47Cit9CisKKy8qCisgKiBjYWxsZXIgbXVzdCBsb2Nr IGluZm8tPmxvY2sKKyAqLwogc3RhdGljIHZvaWQgeGVuaGNkX2dpdmViYWNrX3VubGlua2Vk X3VyYnMoc3RydWN0IHVzYmZyb250X2luZm8gKmluZm8pCiB7CiAJc3RydWN0IHVyYl9wcml2 ICp1cmJwLCAqdG1wOwogCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHVyYnAsIHRtcCwg JmluZm8tPnVubGlua2VkX3VyYnMsIGxpc3QpIHsKLQkJeGVuaGNkX2dpdmViYWNrX3VyYihp bmZvLCB1cmJwLT51cmIpOworCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZSh1cmJwLCB0bXAs ICZpbmZvLT5naXZlYmFja193YWl0aW5nX2xpc3QsIGxpc3QpIHsKKwkJeGVuaGNkX2dpdmVi YWNrX3VyYihpbmZvLCB1cmJwLT51cmIsIHVyYnAtPnVyYi0+c3RhdHVzKTsKIAl9CiB9CiAK QEAgLTMwNCwyMiArMzQ0LDIyIEBACiB7CiAJaW50IHJldCA9IDA7CiAKLQlpZiAoUklOR19G VUxMKCZpbmZvLT5yaW5nKSkgewotCQlsaXN0X2FkZF90YWlsKCZ1cmJwLT5saXN0LCAmaW5m by0+cGVuZGluZ191cmJzKTsKKwlpZiAoUklOR19GVUxMKCZpbmZvLT51cmJfcmluZykpIHsK KwkJbGlzdF9hZGRfdGFpbCgmdXJicC0+bGlzdCwgJmluZm8tPnBlbmRpbmdfc3VibWl0X2xp c3QpOwogCQlDT1VOVChpbmZvLT5zdGF0cy5yaW5nX2Z1bGwpOwogCQl0aW1lcl9hY3Rpb24o aW5mbywgVElNRVJfUklOR19XQVRDSERPRyk7CiAJCWdvdG8gZG9uZTsKIAl9CiAKLQlpZiAo IWxpc3RfZW1wdHkoJmluZm8tPnBlbmRpbmdfdXJicykpIHsKLQkJbGlzdF9hZGRfdGFpbCgm dXJicC0+bGlzdCwgJmluZm8tPnBlbmRpbmdfdXJicyk7CisJaWYgKCFsaXN0X2VtcHR5KCZp bmZvLT5wZW5kaW5nX3N1Ym1pdF9saXN0KSkgeworCQlsaXN0X2FkZF90YWlsKCZ1cmJwLT5s aXN0LCAmaW5mby0+cGVuZGluZ19zdWJtaXRfbGlzdCk7CiAJCXRpbWVyX2FjdGlvbihpbmZv LCBUSU1FUl9TQ0FOX1BFTkRJTkdfVVJCUyk7CiAJCWdvdG8gZG9uZTsKIAl9CiAKIAlyZXQg PSB4ZW5oY2RfZG9fcmVxdWVzdChpbmZvLCB1cmJwKTsKIAlpZiAocmV0ID09IDApCi0JCWxp c3RfYWRkX3RhaWwoJnVyYnAtPmxpc3QsICZpbmZvLT5pbnByb2dyZXNzX3VyYnMpOworCQls aXN0X2FkZF90YWlsKCZ1cmJwLT5saXN0LCAmaW5mby0+aW5fcHJvZ3Jlc3NfbGlzdCk7CiAK IGRvbmU6CiAJcmV0dXJuIHJldDsKQEAgLTMyNywyNiArMzY3LDQ3IEBACiAKIHN0YXRpYyBp bnQgeGVuaGNkX3VubGlua191cmIoc3RydWN0IHVzYmZyb250X2luZm8gKmluZm8sIHN0cnVj dCB1cmJfcHJpdiAqdXJicCkKIHsKKwlpbnQgcmV0ID0gMDsKKworCS8qIGFscmVhZHkgdW5s aW5rZWQ/ICovCiAJaWYgKHVyYnAtPnVubGlua2VkKQogCQlyZXR1cm4gLUVCVVNZOworCiAJ dXJicC0+dW5saW5rZWQgPSAxOwogCi0JLyogaWYgdGhlIHVyYiBpcyBpbiBwZW5kaW5nX3Vy YnMgKi8KKwkvKiB0aGUgdXJiIGlzIHN0aWxsIGluIHBlbmRpbmdfc3VibWl0IHF1ZXVlICov CiAJaWYgKHVyYnAtPnJlcV9pZCA9PSB+MCkgewotCQlsaXN0X21vdmVfdGFpbCgmdXJicC0+ bGlzdCwgJmluZm8tPnVubGlua2VkX3VyYnMpOworCQlsaXN0X21vdmVfdGFpbCgmdXJicC0+ bGlzdCwgJmluZm8tPmdpdmViYWNrX3dhaXRpbmdfbGlzdCk7CiAJCXRpbWVyX2FjdGlvbihp bmZvLCBUSU1FUl9TQ0FOX1BFTkRJTkdfVVJCUyk7CisJCWdvdG8gZG9uZTsKIAl9CiAKLQkv KiBUT0RPOiBzZW5kIGNhbmNlbCByZXF1ZXN0IHRvIGJhY2tlbmQgKi8KKwkvKiBzZW5kIHVu bGluayByZXF1ZXN0IHRvIGJhY2tlbmQgKi8KKwlpZiAoUklOR19GVUxMKCZpbmZvLT51cmJf cmluZykpIHsKKwkJbGlzdF9tb3ZlX3RhaWwoJnVyYnAtPmxpc3QsICZpbmZvLT5wZW5kaW5n X3VubGlua19saXN0KTsKKwkJQ09VTlQoaW5mby0+c3RhdHMucmluZ19mdWxsKTsKKwkJdGlt ZXJfYWN0aW9uKGluZm8sIFRJTUVSX1JJTkdfV0FUQ0hET0cpOworCQlnb3RvIGRvbmU7CisJ fQogCi0JcmV0dXJuIDA7CisJaWYgKCFsaXN0X2VtcHR5KCZpbmZvLT5wZW5kaW5nX3VubGlu a19saXN0KSkgeworCQlsaXN0X21vdmVfdGFpbCgmdXJicC0+bGlzdCwgJmluZm8tPnBlbmRp bmdfdW5saW5rX2xpc3QpOworCQl0aW1lcl9hY3Rpb24oaW5mbywgVElNRVJfU0NBTl9QRU5E SU5HX1VSQlMpOworCQlnb3RvIGRvbmU7CisJfQorCisJcmV0ID0geGVuaGNkX2RvX3JlcXVl c3QoaW5mbywgdXJicCk7CisJaWYgKHJldCA9PSAwKQorCQlsaXN0X21vdmVfdGFpbCgmdXJi cC0+bGlzdCwgJmluZm8tPmluX3Byb2dyZXNzX2xpc3QpOworCitkb25lOgorCXJldHVybiBy ZXQ7CiB9CiAKLXN0YXRpYyBpbnQgeGVuaGNkX2VuZF9zdWJtaXRfdXJiKHN0cnVjdCB1c2Jm cm9udF9pbmZvICppbmZvKQorc3RhdGljIGludCB4ZW5oY2RfdXJiX3JlcXVlc3RfZG9uZShz dHJ1Y3QgdXNiZnJvbnRfaW5mbyAqaW5mbykKIHsKLQl1c2JpZl9yZXNwb25zZV90ICpyaW5n X3JlczsKKwl1c2JpZl91cmJfcmVzcG9uc2VfdCAqcmVzOwogCXN0cnVjdCB1cmIgKnVyYjsK LQlzdHJ1Y3QgdXJiX3ByaXYgKnVyYnA7CiAKIAlSSU5HX0lEWCBpLCBycDsKIAl1aW50MTZf dCBpZDsKQEAgLTM1NCwzMyArNDE1LDM1IEBACiAJdW5zaWduZWQgbG9uZyBmbGFnczsKIAog CXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5sb2NrLCBmbGFncyk7Ci0JcnAgPSBpbmZvLT5y aW5nLnNyaW5nLT5yc3BfcHJvZDsKKworCXJwID0gaW5mby0+dXJiX3Jpbmcuc3JpbmctPnJz cF9wcm9kOwogCXJtYigpOyAvKiBlbnN1cmUgd2Ugc2VlIHF1ZXVlZCByZXNwb25zZXMgdXAg dG8gInJwIiAqLwogCi0JZm9yIChpID0gaW5mby0+cmluZy5yc3BfY29uczsgaSAhPSBycDsg aSsrKSB7Ci0JCXJpbmdfcmVzID0gUklOR19HRVRfUkVTUE9OU0UoJmluZm8tPnJpbmcsIGkp OwotCQlpZCA9IHJpbmdfcmVzLT5pZDsKLQkJeGVuaGNkX2dudHRhYl9kb25lKCZpbmZvLT5z aGFkb3dbaWRdKTsKLQkJdXJiID0gaW5mby0+c2hhZG93W2lkXS51cmI7Ci0JCWJhcnJpZXIo KTsKKwlmb3IgKGkgPSBpbmZvLT51cmJfcmluZy5yc3BfY29uczsgaSAhPSBycDsgaSsrKSB7 CisJCXJlcyA9IFJJTkdfR0VUX1JFU1BPTlNFKCZpbmZvLT51cmJfcmluZywgaSk7CisJCWlk ID0gcmVzLT5pZDsKKworCQlpZiAobGlrZWx5KHVzYmlmX3BpcGVzdWJtaXQoaW5mby0+c2hh ZG93W2lkXS5yZXEucGlwZSkpKSB7CisJCQl4ZW5oY2RfZ250dGFiX2RvbmUoJmluZm8tPnNo YWRvd1tpZF0pOworCQkJdXJiID0gaW5mby0+c2hhZG93W2lkXS51cmI7CisJCQliYXJyaWVy KCk7CisJCQlpZiAobGlrZWx5KHVyYikpIHsKKwkJCQl1cmItPmFjdHVhbF9sZW5ndGggPSBy ZXMtPmFjdHVhbF9sZW5ndGg7CisJCQkJdXJiLT5lcnJvcl9jb3VudCA9IHJlcy0+ZXJyb3Jf Y291bnQ7CisJCQkJdXJiLT5zdGFydF9mcmFtZSA9IHJlcy0+c3RhcnRfZnJhbWU7CisJCQkJ YmFycmllcigpOworCQkJCXhlbmhjZF9naXZlYmFja191cmIoaW5mbywgdXJiLCByZXMtPnN0 YXR1cyk7CisJCQl9CisJCX0KKwogCQlhZGRfaWRfdG9fZnJlZWxpc3QoaW5mbywgaWQpOwor CX0KKwlpbmZvLT51cmJfcmluZy5yc3BfY29ucyA9IGk7CiAKLQkJdXJicCA9IChzdHJ1Y3Qg dXJiX3ByaXYgKil1cmItPmhjcHJpdjsKLQkJaWYgKGxpa2VseSghdXJicC0+dW5saW5rZWQp KSB7Ci0JCQl1cmItPnN0YXR1cyA9IHJpbmdfcmVzLT5zdGF0dXM7Ci0JCQl1cmItPmFjdHVh bF9sZW5ndGggPSByaW5nX3Jlcy0+YWN0dWFsX2xlbmd0aDsKLQkJCXVyYi0+ZXJyb3JfY291 bnQgPSByaW5nX3Jlcy0+ZXJyb3JfY291bnQ7Ci0JCQl1cmItPnN0YXJ0X2ZyYW1lID0gcmlu Z19yZXMtPnN0YXJ0X2ZyYW1lOwotCQl9Ci0JCWJhcnJpZXIoKTsKLQkJeGVuaGNkX2dpdmVi YWNrX3VyYihpbmZvLCB1cmIpOwotCX0KLQlpbmZvLT5yaW5nLnJzcF9jb25zID0gaTsKLQot CWlmIChpICE9IGluZm8tPnJpbmcucmVxX3Byb2RfcHZ0KQotCQlSSU5HX0ZJTkFMX0NIRUNL X0ZPUl9SRVNQT05TRVMoJmluZm8tPnJpbmcsIG1vcmVfdG9fZG8pOworCWlmIChpICE9IGlu Zm8tPnVyYl9yaW5nLnJlcV9wcm9kX3B2dCkKKwkJUklOR19GSU5BTF9DSEVDS19GT1JfUkVT UE9OU0VTKCZpbmZvLT51cmJfcmluZywgbW9yZV90b19kbyk7CiAJZWxzZQotCQlpbmZvLT5y aW5nLnNyaW5nLT5yc3BfZXZlbnQgPSBpICsgMTsKKwkJaW5mby0+dXJiX3Jpbmcuc3Jpbmct PnJzcF9ldmVudCA9IGkgKyAxOwogCiAJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmaW5mby0+ bG9jaywgZmxhZ3MpOwogCkBAIC0zODksNiArNDUyLDYxIEBACiAJcmV0dXJuIG1vcmVfdG9f ZG87CiB9CiAKK3N0YXRpYyBpbnQgeGVuaGNkX2Nvbm5fbm90aWZ5KHN0cnVjdCB1c2Jmcm9u dF9pbmZvICppbmZvKQoreworCXVzYmlmX2Nvbm5fcmVzcG9uc2VfdCAqcmVzOworCXVzYmlm X2Nvbm5fcmVxdWVzdF90ICpyZXE7CisJUklOR19JRFggcmMsIHJwOworCXVpbnQxNl90IGlk OworCXVpbnQ4X3QgcG9ydG51bSwgc3BlZWQ7CisJaW50IG1vcmVfdG9fZG8gPSAwOworCWlu dCBub3RpZnk7CisJaW50IHBvcnRfY2hhbmdlZCA9IDA7CisJdW5zaWduZWQgbG9uZyBmbGFn czsKKworCXNwaW5fbG9ja19pcnFzYXZlKCZpbmZvLT5sb2NrLCBmbGFncyk7CisKKwlyYyA9 IGluZm8tPmNvbm5fcmluZy5yc3BfY29uczsKKwlycCA9IGluZm8tPmNvbm5fcmluZy5zcmlu Zy0+cnNwX3Byb2Q7CisJcm1iKCk7IC8qIGVuc3VyZSB3ZSBzZWUgcXVldWVkIHJlc3BvbnNl cyB1cCB0byAicnAiICovCisKKwl3aGlsZSAocmMgIT0gcnApIHsKKwkJcmVzID0gUklOR19H RVRfUkVTUE9OU0UoJmluZm8tPmNvbm5fcmluZywgcmMpOworCQlpZCA9IHJlcy0+aWQ7CisJ CXBvcnRudW0gPSByZXMtPnBvcnRudW07CisJCXNwZWVkID0gcmVzLT5zcGVlZDsKKwkJaW5m by0+Y29ubl9yaW5nLnJzcF9jb25zID0gKytyYzsKKworCQlyaHBvcnRfY29ubmVjdChpbmZv LCBwb3J0bnVtLCBzcGVlZCk7CisJCWlmIChpbmZvLT5wb3J0c1twb3J0bnVtLTFdLmNfY29u bmVjdGlvbikKKwkJCXBvcnRfY2hhbmdlZCA9IDE7CisKKwkJYmFycmllcigpOworCisJCXJl cSA9IFJJTkdfR0VUX1JFUVVFU1QoJmluZm8tPmNvbm5fcmluZywgaW5mby0+Y29ubl9yaW5n LnJlcV9wcm9kX3B2dCk7CisJCXJlcS0+aWQgPSBpZDsKKwkJaW5mby0+Y29ubl9yaW5nLnJl cV9wcm9kX3B2dCsrOworCX0KKworCWlmIChyYyAhPSBpbmZvLT5jb25uX3JpbmcucmVxX3By b2RfcHZ0KQorCQlSSU5HX0ZJTkFMX0NIRUNLX0ZPUl9SRVNQT05TRVMoJmluZm8tPmNvbm5f cmluZywgbW9yZV90b19kbyk7CisJZWxzZQorCQlpbmZvLT5jb25uX3Jpbmcuc3JpbmctPnJz cF9ldmVudCA9IHJjICsgMTsKKworCVJJTkdfUFVTSF9SRVFVRVNUU19BTkRfQ0hFQ0tfTk9U SUZZKCZpbmZvLT5jb25uX3JpbmcsIG5vdGlmeSk7CisJaWYgKG5vdGlmeSkKKwkJbm90aWZ5 X3JlbW90ZV92aWFfaXJxKGluZm8tPmlycSk7CisKKwlzcGluX3VubG9ja19pcnFyZXN0b3Jl KCZpbmZvLT5sb2NrLCBmbGFncyk7CisKKwlpZiAocG9ydF9jaGFuZ2VkKQorCQl1c2JfaGNk X3BvbGxfcmhfc3RhdHVzKGluZm9fdG9faGNkKGluZm8pKTsKKworCWNvbmRfcmVzY2hlZCgp OworCisJcmV0dXJuIG1vcmVfdG9fZG87Cit9CisKIGludCB4ZW5oY2Rfc2NoZWR1bGUodm9p ZCAqYXJnKQogewogCXN0cnVjdCB1c2Jmcm9udF9pbmZvICppbmZvID0gKHN0cnVjdCB1c2Jm cm9udF9pbmZvICopIGFyZzsKQEAgLTQwMCw3ICs1MTgsMTAgQEAKIAkJaW5mby0+d2FpdGlu Z19yZXNwID0gMDsKIAkJc21wX21iKCk7CiAKLQkJaWYgKHhlbmhjZF9lbmRfc3VibWl0X3Vy YihpbmZvKSkKKwkJaWYgKHhlbmhjZF91cmJfcmVxdWVzdF9kb25lKGluZm8pKQorCQkJaW5m by0+d2FpdGluZ19yZXNwID0gMTsKKworCQlpZiAoeGVuaGNkX2Nvbm5fbm90aWZ5KGluZm8p KQogCQkJaW5mby0+d2FpdGluZ19yZXNwID0gMTsKIAl9CiAKZGlmZiAtciA0YWMzZTFkNjYw NWMgLXIgM2JlOTM5OTc1YWQ2IGRyaXZlcnMveGVuL3VzYmZyb250L3VzYmZyb250LmgKLS0t IGEvZHJpdmVycy94ZW4vdXNiZnJvbnQvdXNiZnJvbnQuaAlUdWUgU2VwIDI5IDExOjIzOjA2 IDIwMDkgKzAxMDAKKysrIGIvZHJpdmVycy94ZW4vdXNiZnJvbnQvdXNiZnJvbnQuaAlUdWUg T2N0IDA2IDE1OjE4OjI3IDIwMDkgKzA5MDAKQEAgLTY2LDggKzY2LDYgQEAKICNpbmNsdWRl ICIuLi8uLi91c2IvY29yZS9oY2QuaCIKICNpbmNsdWRlICIuLi8uLi91c2IvY29yZS9odWIu aCIKIAotI2RlZmluZSBEUklWRVJfREVTQyAiWGVuIFVTQjIuMCBWaXJ0dWFsIEhvc3QgQ29u dHJvbGxlciBkcml2ZXIgKHVzYmZyb250KSIKLQogc3RhdGljIGlubGluZSBzdHJ1Y3QgdXNi ZnJvbnRfaW5mbyAqaGNkX3RvX2luZm8oc3RydWN0IHVzYl9oY2QgKmhjZCkKIHsKIAlyZXR1 cm4gKHN0cnVjdCB1c2Jmcm9udF9pbmZvICopIChoY2QtPmhjZF9wcml2KTsKQEAgLTc1LDE3 ICs3MywxNiBAQAogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCB1c2JfaGNkICppbmZvX3RvX2hj ZChzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAqaW5mbykKIHsKLQlyZXR1cm4gY29udGFpbmVyX29m ICgodm9pZCAqKSBpbmZvLCBzdHJ1Y3QgdXNiX2hjZCwgaGNkX3ByaXYpOworCXJldHVybiBj b250YWluZXJfb2YoKHZvaWQgKikgaW5mbywgc3RydWN0IHVzYl9oY2QsIGhjZF9wcml2KTsK IH0KIAotLyoKLSAqIFByaXZhdGUgcGVyLVVSQiBkYXRhCi0gKi8KKy8qIFByaXZhdGUgcGVy LVVSQiBkYXRhICovCiBzdHJ1Y3QgdXJiX3ByaXYgewogCXN0cnVjdCBsaXN0X2hlYWQgbGlz dDsKIAlzdHJ1Y3QgdXJiICp1cmI7Ci0JaW50IHJlcV9pZDsJLyogUklOR19SRVFVRVNUIGlk ICovCi0JdW5zaWduZWQgdW5saW5rZWQ6MTsgLyogZGVxdWV1ZWQgdXJiIGp1c3QgbWFya2Vk ICovCisJaW50IHJlcV9pZDsJLyogUklOR19SRVFVRVNUIGlkIGZvciBzdWJtaXR0aW5nICov CisJaW50IHVubGlua19yZXFfaWQ7IC8qIFJJTkdfUkVRVUVTVCBpZCBmb3IgdW5saW5raW5n ICovCisJdW5zaWduZWQgdW5saW5rZWQ6MTsgLyogZGVxdWV1ZWQgbWFya2VyICovCiB9Owog CiAvKiB2aXJ0dWFsIHJvb3RodWIgcG9ydCBzdGF0dXMgKi8KQEAgLTEwNSw3ICsxMDIsNyBA QAogCiAvKiBSSU5HIHJlcXVlc3Qgc2hhZG93ICovCiBzdHJ1Y3QgdXNiX3NoYWRvdyB7Ci0J dXNiaWZfcmVxdWVzdF90IHJlcTsKKwl1c2JpZl91cmJfcmVxdWVzdF90IHJlcTsKIAlzdHJ1 Y3QgdXJiICp1cmI7CiB9OwogCkBAIC0xMTcsNjIgKzExNCw0NiBAQAogfTsKIAogc3RydWN0 IHVzYmZyb250X2luZm8gewotCS8qCi0JICogVmlydHVhbCBIb3N0IENvbnRyb2xsZXIgaGFz IDMgcXVldWVzLgotCSAqCi0JICogcGVuZGluZ191cmJzOgotCSAqIAlJZiB4ZW5oY2RfdXJi X2VucXVldWUoKSBjYWxsZWQgaW4gUklOR19GVUxMIHN0YXRlLAotCSAqIAl0aGUgZW5xdWV1 ZWQgdXJicyBhcmUgYWRkZWQgdG8gdGhpcyBxdWV1ZSwgYW5kIHdhaXRzCi0JICogCXRvIGJl IHNlbnQgdG8gdGhlIGJhY2tlbmQuCi0JICoKLQkgKiBpbnByb2dyZXNzX3VyYnM6Ci0JICog CUFmdGVyIHhlbmhjZF91cmJfZW5xdWV1ZSgpIGNhbGxlZCBhbmQgUklOR19SRVFVRVNUIHNl bnQsCi0JICogCXRoZSB1cmJzIGFyZSBhZGRlZCB0byB0aGlzIHF1ZXVlIGFuZCB3YWl0cyBm b3IgUklOR19SRVNQT05TRS4KLQkgKgotCSAqIHVubGlua2VkX3VyYnM6Ci0JICoJV2hlbiB4 ZW5oY2RfdXJiX2RlcXVldWUoKSBjYWxsZWQsIGlmIHRoZSBkZXF1ZXVlZCB1cmIgaXMKLQkg KglsaXN0ZWQgaW4gcGVuZGluZ191cmJzLCB0aGF0IHVyYiBpcyBtb3ZlZCB0byB0aGlzIHF1 ZXVlCi0JICoJYW5kIHdhaXRzIHRvIGJlIGdpdmVuIGJhY2sgdG8gdGhlIFVTQiBjb3JlLgot CSAqLwotCXN0cnVjdCBsaXN0X2hlYWQgcGVuZGluZ191cmJzOwotCXN0cnVjdCBsaXN0X2hl YWQgaW5wcm9ncmVzc191cmJzOwotCXN0cnVjdCBsaXN0X2hlYWQgdW5saW5rZWRfdXJiczsK KwkvKiBWaXJ0dWFsIEhvc3QgQ29udHJvbGxlciBoYXMgNCB1cmIgcXVldWVzICovCisJc3Ry dWN0IGxpc3RfaGVhZCBwZW5kaW5nX3N1Ym1pdF9saXN0OworCXN0cnVjdCBsaXN0X2hlYWQg cGVuZGluZ191bmxpbmtfbGlzdDsKKwlzdHJ1Y3QgbGlzdF9oZWFkIGluX3Byb2dyZXNzX2xp c3Q7CisJc3RydWN0IGxpc3RfaGVhZCBnaXZlYmFja193YWl0aW5nX2xpc3Q7CisKIAlzcGlu bG9ja190IGxvY2s7CiAKLQkvKgotCSAqIHRpbWVyIGZ1bmN0aW9uIHRoYXQga2ljayBwZW5k aW5nX3VyYnMgYW5kIHVubGlua191cmJzLgotCSAqLworCS8qIHRpbWVyIHRoYXQga2ljayBw ZW5kaW5nIGFuZCBnaXZlYmFjayB3YWl0aW5nIHVyYnMgKi8KKwlzdHJ1Y3QgdGltZXJfbGlz dCB3YXRjaGRvZzsKIAl1bnNpZ25lZCBsb25nIGFjdGlvbnM7Ci0Jc3RydWN0IHRpbWVyX2xp c3Qgd2F0Y2hkb2c7CiAKLQkvKgotCSAqIFZpcnR1YWwgcm9vdGh1YjoKLQkgKiBFbXVsYXRl cyB0aGUgaHViIHBvcnRzIGFuZCB0aGUgYXR0YWNoZWQgZGV2aWNlcyBzdGF0dXMuCi0JICog VVNCX01BWENISUxEUkVOIGlzIGRlZmluZWQgKDE2KSBpbiBpbmNsdWRlL2xpbnV4L3VzYi5o Ci0JICovCisJLyogdmlydHVhbCByb290IGh1YiAqLwogCWludCByaF9udW1wb3J0czsKIAlz dHJ1Y3Qgcmhwb3J0X3N0YXR1cyBwb3J0c1tVU0JfTUFYQ0hJTERSRU5dOwogCXN0cnVjdCB2 ZGV2aWNlX3N0YXR1cyBkZXZpY2VzW1VTQl9NQVhDSElMRFJFTl07CiAKKwkvKiBYZW4gcmVs YXRlZCBzdGFmZiAqLworCXN0cnVjdCB4ZW5idXNfZGV2aWNlICp4YmRldjsKKwlpbnQgdXJi X3JpbmdfcmVmOworCWludCBjb25uX3JpbmdfcmVmOworCXVzYmlmX3VyYl9mcm9udF9yaW5n X3QgdXJiX3Jpbmc7CisJdXNiaWZfY29ubl9mcm9udF9yaW5nX3QgY29ubl9yaW5nOworCisJ dW5zaWduZWQgaW50IGlycTsgLyogZXZlbnQgY2hhbm5lbCAqLworCXN0cnVjdCB1c2Jfc2hh ZG93IHNoYWRvd1tVU0JfVVJCX1JJTkdfU0laRV07CisJdW5zaWduZWQgbG9uZyBzaGFkb3df ZnJlZTsKKworCS8qIFJJTkdfUkVTUE9OU0UgdGhyZWFkICovCisJc3RydWN0IHRhc2tfc3Ry dWN0ICprdGhyZWFkOworCXdhaXRfcXVldWVfaGVhZF90IHdxOworCXVuc2lnbmVkIGludCB3 YWl0aW5nX3Jlc3A7CisKKwkvKiB4bWl0IHN0YXRpc3RpY3MgKi8KICNpZmRlZiBYRU5IQ0Rf U1RBVFMKIAlzdHJ1Y3QgeGVuaGNkX3N0YXRzIHN0YXRzOwogI2RlZmluZSBDT1VOVCh4KSBk byB7ICh4KSsrOyB9IHdoaWxlICgwKQogI2Vsc2UKICNkZWZpbmUgQ09VTlQoeCkgZG8ge30g d2hpbGUgKDApCiAjZW5kaWYKLQotCS8qIFhlbiByZWxhdGVkIHN0YWZmICovCi0Jc3RydWN0 IHhlbmJ1c19kZXZpY2UgKnhiZGV2OwotCWludCByaW5nX3JlZjsKLQl1c2JpZl9mcm9udF9y aW5nX3QgcmluZzsKLQl1bnNpZ25lZCBpbnQgaXJxOwotCXN0cnVjdCB1c2Jfc2hhZG93IHNo YWRvd1tVU0JfUklOR19TSVpFXTsKLQl1bnNpZ25lZCBsb25nIHNoYWRvd19mcmVlOwotCi0J LyogUklOR19SRVNQT05TRSB0aHJlYWQgKi8KLQlzdHJ1Y3QgdGFza19zdHJ1Y3QgKmt0aHJl YWQ7Ci0Jd2FpdF9xdWV1ZV9oZWFkX3Qgd3E7Ci0JdW5zaWduZWQgaW50IHdhaXRpbmdfcmVz cDsKIH07CiAKICNkZWZpbmUgWEVOSENEX1JJTkdfSklGRklFUyAoSFovMjAwKQpAQCAtMTk5 LDcgKzE4MCw3IEBACiAJaWYgKCF0ZXN0X2FuZF9zZXRfYml0KGFjdGlvbiwgJmluZm8tPmFj dGlvbnMpKSB7CiAJCXVuc2lnbmVkIGxvbmcgdDsKIAotCQlzd2l0Y2goYWN0aW9uKSB7CisJ CXN3aXRjaCAoYWN0aW9uKSB7CiAJCWNhc2UgVElNRVJfUklOR19XQVRDSERPRzoKIAkJCXQg PSBYRU5IQ0RfUklOR19KSUZGSUVTOwogCQkJYnJlYWs7CkBAIC0yMTEsNiArMTkyLDEyIEBA CiAJfQogfQogCitleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKnhlbmhjZF91cmJwX2NhY2hl cDsKK2V4dGVybiBzdHJ1Y3QgaGNfZHJpdmVyIHhlbl91c2IyMF9oY19kcml2ZXI7CitleHRl cm4gc3RydWN0IGhjX2RyaXZlciB4ZW5fdXNiMTFfaGNfZHJpdmVyOwogaXJxcmV0dXJuX3Qg eGVuaGNkX2ludChpbnQgaXJxLCB2b2lkICpkZXZfaWQsIHN0cnVjdCBwdF9yZWdzICpwdHJl Z3MpOwordm9pZCB4ZW5oY2Rfcmhwb3J0X3N0YXRlX2NoYW5nZShzdHJ1Y3QgdXNiZnJvbnRf aW5mbyAqaW5mbywKKwkJCQlpbnQgcG9ydCwgZW51bSB1c2JfZGV2aWNlX3NwZWVkIHNwZWVk KTsKK2ludCB4ZW5oY2Rfc2NoZWR1bGUodm9pZCAqYXJnKTsKIAogI2VuZGlmIC8qIF9fWEVO X1VTQkZST05UX0hfXyAqLwpkaWZmIC1yIDRhYzNlMWQ2NjA1YyAtciAzYmU5Mzk5NzVhZDYg ZHJpdmVycy94ZW4vdXNiZnJvbnQveGVuYnVzLmMKLS0tIGEvZHJpdmVycy94ZW4vdXNiZnJv bnQveGVuYnVzLmMJVHVlIFNlcCAyOSAxMToyMzowNiAyMDA5ICswMTAwCisrKyBiL2RyaXZl cnMveGVuL3VzYmZyb250L3hlbmJ1cy5jCVR1ZSBPY3QgMDYgMTU6MTg6MjcgMjAwOSArMDkw MApAQCAtNDUsNTAgKzQ1LDcwIEBACiAKICNpbmNsdWRlICJ1c2Jmcm9udC5oIgogCi1leHRl cm4gc3RydWN0IGhjX2RyaXZlciB1c2Jmcm9udF9oY19kcml2ZXI7Ci1leHRlcm4gc3RydWN0 IGttZW1fY2FjaGUgKnhlbmhjZF91cmJwX2NhY2hlcDsKLWV4dGVybiB2b2lkIHhlbmhjZF9y aHBvcnRfc3RhdGVfY2hhbmdlKHN0cnVjdCB1c2Jmcm9udF9pbmZvICppbmZvLAotCQkJCQlp bnQgcG9ydCwgZW51bSB1c2JfZGV2aWNlX3NwZWVkIHNwZWVkKTsKLWV4dGVybiBpbnQgeGVu aGNkX3NjaGVkdWxlKHZvaWQgKmFyZyk7Ci0KICNkZWZpbmUgR1JBTlRfSU5WQUxJRF9SRUYg MAogCi1zdGF0aWMgdm9pZCB1c2JpZl9mcmVlKHN0cnVjdCB1c2Jmcm9udF9pbmZvICppbmZv KQorc3RhdGljIHZvaWQgZGVzdHJveV9yaW5ncyhzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAqaW5m bykKIHsKLQlpZiAoaW5mby0+cmluZ19yZWYgIT0gR1JBTlRfSU5WQUxJRF9SRUYpIHsKLQkJ Z250dGFiX2VuZF9mb3JlaWduX2FjY2VzcyhpbmZvLT5yaW5nX3JlZiwKLQkJCQkJICAodW5z aWduZWQgbG9uZylpbmZvLT5yaW5nLnNyaW5nKTsKLQkJaW5mby0+cmluZ19yZWYgPSBHUkFO VF9JTlZBTElEX1JFRjsKLQkJaW5mby0+cmluZy5zcmluZyA9IE5VTEw7Ci0JfQogCWlmIChp bmZvLT5pcnEpCiAJCXVuYmluZF9mcm9tX2lycWhhbmRsZXIoaW5mby0+aXJxLCBpbmZvKTsK IAlpbmZvLT5pcnEgPSAwOworCisJaWYgKGluZm8tPnVyYl9yaW5nX3JlZiAhPSBHUkFOVF9J TlZBTElEX1JFRikgeworCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzKGluZm8tPnVyYl9y aW5nX3JlZiwKKwkJCQkJICAodW5zaWduZWQgbG9uZylpbmZvLT51cmJfcmluZy5zcmluZyk7 CisJCWluZm8tPnVyYl9yaW5nX3JlZiA9IEdSQU5UX0lOVkFMSURfUkVGOworCX0KKwlpbmZv LT51cmJfcmluZy5zcmluZyA9IE5VTEw7CisKKwlpZiAoaW5mby0+Y29ubl9yaW5nX3JlZiAh PSBHUkFOVF9JTlZBTElEX1JFRikgeworCQlnbnR0YWJfZW5kX2ZvcmVpZ25fYWNjZXNzKGlu Zm8tPmNvbm5fcmluZ19yZWYsCisJCQkJCSAgKHVuc2lnbmVkIGxvbmcpaW5mby0+Y29ubl9y aW5nLnNyaW5nKTsKKwkJaW5mby0+Y29ubl9yaW5nX3JlZiA9IEdSQU5UX0lOVkFMSURfUkVG OworCX0KKwlpbmZvLT5jb25uX3Jpbmcuc3JpbmcgPSBOVUxMOwogfQogCi1zdGF0aWMgaW50 IHNldHVwX3VzYnJpbmcoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKK3N0YXRpYyBpbnQg c2V0dXBfcmluZ3Moc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRldiwKIAkJCSAgIHN0cnVjdCB1 c2Jmcm9udF9pbmZvICppbmZvKQogewotCXVzYmlmX3NyaW5nX3QgKnNyaW5nOworCXVzYmlm X3VyYl9zcmluZ190ICp1cmJfc3Jpbmc7CisJdXNiaWZfY29ubl9zcmluZ190ICpjb25uX3Ny aW5nOwogCWludCBlcnI7CiAKLQlpbmZvLT5yaW5nX3JlZj0gR1JBTlRfSU5WQUxJRF9SRUY7 CisJaW5mby0+dXJiX3JpbmdfcmVmID0gR1JBTlRfSU5WQUxJRF9SRUY7CisJaW5mby0+Y29u bl9yaW5nX3JlZiA9IEdSQU5UX0lOVkFMSURfUkVGOwogCi0Jc3JpbmcgPSAodXNiaWZfc3Jp bmdfdCAqKWdldF96ZXJvZWRfcGFnZShHRlBfTk9JT3xfX0dGUF9ISUdIKTsKLQlpZiAoIXNy aW5nKSB7Ci0JCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCAtRU5PTUVNLCAiYWxsb2NhdGluZyBz aGFyZWQgcmluZyIpOworCXVyYl9zcmluZyA9ICh1c2JpZl91cmJfc3JpbmdfdCAqKWdldF96 ZXJvZWRfcGFnZShHRlBfTk9JT3xfX0dGUF9ISUdIKTsKKwlpZiAoIXVyYl9zcmluZykgewor CQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgLUVOT01FTSwgImFsbG9jYXRpbmcgdXJiIHJpbmci KTsKIAkJcmV0dXJuIC1FTk9NRU07CiAJfQotCVNIQVJFRF9SSU5HX0lOSVQoc3JpbmcpOwot CUZST05UX1JJTkdfSU5JVCgmaW5mby0+cmluZywgc3JpbmcsIFBBR0VfU0laRSk7CisJU0hB UkVEX1JJTkdfSU5JVCh1cmJfc3JpbmcpOworCUZST05UX1JJTkdfSU5JVCgmaW5mby0+dXJi X3JpbmcsIHVyYl9zcmluZywgUEFHRV9TSVpFKTsKIAotCWVyciA9IHhlbmJ1c19ncmFudF9y aW5nKGRldiwgdmlydF90b19tZm4oaW5mby0+cmluZy5zcmluZykpOworCWVyciA9IHhlbmJ1 c19ncmFudF9yaW5nKGRldiwgdmlydF90b19tZm4oaW5mby0+dXJiX3Jpbmcuc3JpbmcpKTsK IAlpZiAoZXJyIDwgMCkgewotCQlmcmVlX3BhZ2UoKHVuc2lnbmVkIGxvbmcpc3JpbmcpOwot CQlpbmZvLT5yaW5nLnNyaW5nID0gTlVMTDsKKwkJZnJlZV9wYWdlKCh1bnNpZ25lZCBsb25n KXVyYl9zcmluZyk7CisJCWluZm8tPnVyYl9yaW5nLnNyaW5nID0gTlVMTDsKIAkJZ290byBm YWlsOwogCX0KLQlpbmZvLT5yaW5nX3JlZiA9IGVycjsKKwlpbmZvLT51cmJfcmluZ19yZWYg PSBlcnI7CisKKwljb25uX3NyaW5nID0gKHVzYmlmX2Nvbm5fc3JpbmdfdCAqKWdldF96ZXJv ZWRfcGFnZShHRlBfTk9JT3xfX0dGUF9ISUdIKTsKKwlpZiAoIWNvbm5fc3JpbmcpIHsKKwkJ eGVuYnVzX2Rldl9mYXRhbChkZXYsIC1FTk9NRU0sICJhbGxvY2F0aW5nIGNvbm4gcmluZyIp OworCQlyZXR1cm4gLUVOT01FTTsKKwl9CisJU0hBUkVEX1JJTkdfSU5JVChjb25uX3NyaW5n KTsKKwlGUk9OVF9SSU5HX0lOSVQoJmluZm8tPmNvbm5fcmluZywgY29ubl9zcmluZywgUEFH RV9TSVpFKTsKKworCWVyciA9IHhlbmJ1c19ncmFudF9yaW5nKGRldiwgdmlydF90b19tZm4o aW5mby0+Y29ubl9yaW5nLnNyaW5nKSk7CisJaWYgKGVyciA8IDApIHsKKwkJZnJlZV9wYWdl KCh1bnNpZ25lZCBsb25nKWNvbm5fc3JpbmcpOworCQlpbmZvLT5jb25uX3Jpbmcuc3Jpbmcg PSBOVUxMOworCQlnb3RvIGZhaWw7CisJfQorCWluZm8tPmNvbm5fcmluZ19yZWYgPSBlcnI7 CiAKIAllcnIgPSBiaW5kX2xpc3RlbmluZ19wb3J0X3RvX2lycWhhbmRsZXIoCiAJCWRldi0+ b3RoZXJlbmRfaWQsIHhlbmhjZF9pbnQsIFNBX1NBTVBMRV9SQU5ET00sICJ1c2JpZiIsIGlu Zm8pOwpAQCAtMTAxLDcgKzEyMSw3IEBACiAKIAlyZXR1cm4gMDsKIGZhaWw6Ci0JdXNiaWZf ZnJlZShpbmZvKTsKKwlkZXN0cm95X3JpbmdzKGluZm8pOwogCXJldHVybiBlcnI7CiB9CiAK QEAgLTExMiw3ICsxMzIsNyBAQAogCXN0cnVjdCB4ZW5idXNfdHJhbnNhY3Rpb24geGJ0Owog CWludCBlcnI7CiAKLQllcnIgPSBzZXR1cF91c2JyaW5nKGRldiwgaW5mbyk7CisJZXJyID0g c2V0dXBfcmluZ3MoZGV2LCBpbmZvKTsKIAlpZiAoZXJyKQogCQlnb3RvIG91dDsKIApAQCAt MTIzLDEwICsxNDMsMTcgQEAKIAkJZ290byBkZXN0cm95X3Jpbmc7CiAJfQogCi0JZXJyID0g eGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5hbWUsICJyaW5nLXJlZiIsICIldSIsCi0J CQkgICAgaW5mby0+cmluZ19yZWYpOworCWVyciA9IHhlbmJ1c19wcmludGYoeGJ0LCBkZXYt Pm5vZGVuYW1lLCAidXJiLXJpbmctcmVmIiwgIiV1IiwKKwkJCSAgICBpbmZvLT51cmJfcmlu Z19yZWYpOwogCWlmIChlcnIpIHsKLQkJbWVzc2FnZSA9ICJ3cml0aW5nIHJpbmctcmVmIjsK KwkJbWVzc2FnZSA9ICJ3cml0aW5nIHVyYi1yaW5nLXJlZiI7CisJCWdvdG8gYWJvcnRfdHJh bnNhY3Rpb247CisJfQorCisJZXJyID0geGVuYnVzX3ByaW50Zih4YnQsIGRldi0+bm9kZW5h bWUsICJjb25uLXJpbmctcmVmIiwgIiV1IiwKKwkJCSAgICBpbmZvLT5jb25uX3JpbmdfcmVm KTsKKwlpZiAoZXJyKSB7CisJCW1lc3NhZ2UgPSAid3JpdGluZyBjb25uLXJpbmctcmVmIjsK IAkJZ290byBhYm9ydF90cmFuc2FjdGlvbjsKIAl9CiAKQEAgLTE0NSw4ICsxNzIsNiBAQAog CQlnb3RvIGRlc3Ryb3lfcmluZzsKIAl9CiAKLQl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwg WGVuYnVzU3RhdGVJbml0aWFsaXNlZCk7Ci0KIAlyZXR1cm4gMDsKIAogYWJvcnRfdHJhbnNh Y3Rpb246CkBAIC0xNTQsMTcgKzE3OSw0NSBAQAogCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBl cnIsICIlcyIsIG1lc3NhZ2UpOwogCiBkZXN0cm95X3Jpbmc6Ci0JdXNiaWZfZnJlZShpbmZv KTsKKwlkZXN0cm95X3JpbmdzKGluZm8pOwogCiBvdXQ6CiAJcmV0dXJuIGVycjsKIH0KIAor c3RhdGljIGludCBjb25uZWN0KHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCit7CisJc3Ry dWN0IHVzYmZyb250X2luZm8gKmluZm8gPSBkZXYtPmRldi5kcml2ZXJfZGF0YTsKKworCXVz YmlmX2Nvbm5fcmVxdWVzdF90ICpyZXE7CisJaW50IGksIGlkeCwgZXJyOworCWludCBub3Rp Znk7CisKKwllcnIgPSB0YWxrX3RvX2JhY2tlbmQoZGV2LCBpbmZvKTsKKwlpZiAoZXJyKQor CQlyZXR1cm4gZXJyOworCisJLyogcHJlcGFyZSByaW5nIGZvciBob3RwbHVnIG5vdGlmaWNh dGlvbiAqLworCWZvciAoaWR4ID0gMCwgaSA9IDA7IGkgPCBVU0JfQ09OTl9SSU5HX1NJWkU7 IGkrKykgeworCQlyZXEgPSBSSU5HX0dFVF9SRVFVRVNUKCZpbmZvLT5jb25uX3JpbmcsIGlk eCk7CisJCXJlcS0+aWQgPSBpZHg7CisJCWlkeCsrOworCX0KKwlpbmZvLT5jb25uX3Jpbmcu cmVxX3Byb2RfcHZ0ID0gaWR4OworCisJUklOR19QVVNIX1JFUVVFU1RTX0FORF9DSEVDS19O T1RJRlkoJmluZm8tPmNvbm5fcmluZywgbm90aWZ5KTsKKwlpZiAobm90aWZ5KQorCQlub3Rp ZnlfcmVtb3RlX3ZpYV9pcnEoaW5mby0+aXJxKTsKKworCXJldHVybiAwOworfQorCiBzdGF0 aWMgc3RydWN0IHVzYl9oY2QgKmNyZWF0ZV9oY2Qoc3RydWN0IHhlbmJ1c19kZXZpY2UgKmRl dikKIHsKIAlpbnQgaTsKIAlpbnQgZXJyID0gMDsKIAlpbnQgbnVtX3BvcnRzOworCWludCB1 c2JfdmVyOwogCXN0cnVjdCB1c2JfaGNkICpoY2QgPSBOVUxMOwogCXN0cnVjdCB1c2Jmcm9u dF9pbmZvICppbmZvID0gTlVMTDsKIApAQCAtMTc5LDIwICsyMzIsMzggQEAKIAkJcmV0dXJu IEVSUl9QVFIoLUVJTlZBTCk7CiAJfQogCi0JaGNkID0gdXNiX2NyZWF0ZV9oY2QoJnVzYmZy b250X2hjX2RyaXZlciwgJmRldi0+ZGV2LCBkZXYtPmRldi5idXNfaWQpOworCWVyciA9IHhl bmJ1c19zY2FuZihYQlRfTklMLCBkZXYtPm90aGVyZW5kLAorCQkJCQkidXNiLXZlciIsICIl ZCIsICZ1c2JfdmVyKTsKKwlpZiAoZXJyICE9IDEpIHsKKwkJeGVuYnVzX2Rldl9mYXRhbChk ZXYsIGVyciwgInJlYWRpbmcgdXNiLXZlciIpOworCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFM KTsKKwl9CisJc3dpdGNoICh1c2JfdmVyKSB7CisJY2FzZSBVU0JfVkVSX1VTQjExOgorCQlo Y2QgPSB1c2JfY3JlYXRlX2hjZCgmeGVuX3VzYjExX2hjX2RyaXZlciwgJmRldi0+ZGV2LCBk ZXYtPmRldi5idXNfaWQpOworCQlicmVhazsKKwljYXNlIFVTQl9WRVJfVVNCMjA6CisJCWhj ZCA9IHVzYl9jcmVhdGVfaGNkKCZ4ZW5fdXNiMjBfaGNfZHJpdmVyLCAmZGV2LT5kZXYsIGRl di0+ZGV2LmJ1c19pZCk7CisJCWJyZWFrOworCWRlZmF1bHQ6CisJCXhlbmJ1c19kZXZfZmF0 YWwoZGV2LCBlcnIsICJpbnZhbGlkIHVzYi12ZXIiKTsKKwkJcmV0dXJuIEVSUl9QVFIoLUVJ TlZBTCk7CisJfQogCWlmICghaGNkKSB7Ci0JCXhlbmJ1c19kZXZfZmF0YWwoZGV2LCBlcnIs ICJmYWlsIHRvIGFsbG9jYXRlIFVTQiBob3N0IGNvbnRyb2xsZXIiKTsKKwkJeGVuYnVzX2Rl dl9mYXRhbChkZXYsIGVyciwKKwkJCQkiZmFpbCB0byBhbGxvY2F0ZSBVU0IgaG9zdCBjb250 cm9sbGVyIik7CiAJCXJldHVybiBFUlJfUFRSKC1FTk9NRU0pOwogCX0KKwogCWluZm8gPSBo Y2RfdG9faW5mbyhoY2QpOwogCWluZm8tPnhiZGV2ID0gZGV2OwogCWluZm8tPnJoX251bXBv cnRzID0gbnVtX3BvcnRzOwogCi0JZm9yIChpID0gMDsgaSA8IFVTQl9SSU5HX1NJWkU7IGkr KykgewotCQlpbmZvLT5zaGFkb3dbaV0ucmVxLmlkID0gaSsxOworCWZvciAoaSA9IDA7IGkg PCBVU0JfVVJCX1JJTkdfU0laRTsgaSsrKSB7CisJCWluZm8tPnNoYWRvd1tpXS5yZXEuaWQg PSBpICsgMTsKIAkJaW5mby0+c2hhZG93W2ldLnVyYiA9IE5VTEw7CiAJfQotCWluZm8tPnNo YWRvd1tVU0JfUklOR19TSVpFLTFdLnJlcS5pZCA9IDB4MGZmZjsKKwlpbmZvLT5zaGFkb3db VVNCX1VSQl9SSU5HX1NJWkUtMV0ucmVxLmlkID0gMHgwZmZmOwogCiAJcmV0dXJuIGhjZDsK IH0KQEAgLTIxMSw3ICsyODIsOCBAQAogCWhjZCA9IGNyZWF0ZV9oY2QoZGV2KTsKIAlpZiAo SVNfRVJSKGhjZCkpIHsKIAkJZXJyID0gUFRSX0VSUihoY2QpOwotCQl4ZW5idXNfZGV2X2Zh dGFsKGRldiwgZXJyLCAiZmFpbCB0byBjcmVhdGUgdXNiIGhvc3QgY29udHJvbGxlciIpOwor CQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLAorCQkJCSJmYWlsIHRvIGNyZWF0ZSB1c2Ig aG9zdCBjb250cm9sbGVyIik7CiAJCWdvdG8gZmFpbDsKIAl9CiAKQEAgLTIyMCwyMiArMjky LDE5IEBACiAKIAllcnIgPSB1c2JfYWRkX2hjZChoY2QsIDAsIDApOwogCWlmIChlcnIgIT0g MCkgewotCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLCAiZmFpbCB0byBhZGRpbmcgVVNC IGhvc3QgY29udHJvbGxlciIpOworCQl4ZW5idXNfZGV2X2ZhdGFsKGRldiwgZXJyLAorCQkJ CSJmYWlsIHRvIGFkZGluZyBVU0IgaG9zdCBjb250cm9sbGVyIik7CiAJCWdvdG8gZmFpbDsK IAl9CiAKIAlpbml0X3dhaXRxdWV1ZV9oZWFkKCZpbmZvLT53cSk7CiAJc25wcmludGYobmFt ZSwgVEFTS19DT01NX0xFTiwgInhlbmhjZC4lZCIsIGhjZC0+c2VsZi5idXNudW0pOwogCWlu Zm8tPmt0aHJlYWQgPSBrdGhyZWFkX3J1bih4ZW5oY2Rfc2NoZWR1bGUsIGluZm8sIG5hbWUp OwotICAgICAgICBpZiAoSVNfRVJSKGluZm8tPmt0aHJlYWQpKSB7Ci0gICAgICAgICAgICAg ICAgZXJyID0gUFRSX0VSUihpbmZvLT5rdGhyZWFkKTsKLSAgICAgICAgICAgICAgICBpbmZv LT5rdGhyZWFkID0gTlVMTDsKLSAgICAgICAgICAgICAgICBnb3RvIGZhaWw7Ci0gICAgICAg IH0KLQotCWVyciA9IHRhbGtfdG9fYmFja2VuZChkZXYsIGluZm8pOwotCWlmIChlcnIpCisJ aWYgKElTX0VSUihpbmZvLT5rdGhyZWFkKSkgeworCQllcnIgPSBQVFJfRVJSKGluZm8tPmt0 aHJlYWQpOworCQlpbmZvLT5rdGhyZWFkID0gTlVMTDsKIAkJZ290byBmYWlsOworCX0KIAog CXJldHVybiAwOwogCkBAIC0yNDUsNTggKzMxNCw0MSBAQAogCXJldHVybiBlcnI7CiB9CiAK LS8qCi0gKiAwPWRpc2Nvbm5lY3RlZCwgMT1sb3dfc3BlZWQsIDI9ZnVsbF9zcGVlZCwgMz1o aWdoX3NwZWVkCi0gKi8KLXN0YXRpYyB2b2lkIHVzYmZyb250X2RvX2hvdHBsdWcoc3RydWN0 IHVzYmZyb250X2luZm8gKmluZm8pCitzdGF0aWMgdm9pZCB1c2Jmcm9udF9kaXNjb25uZWN0 KHN0cnVjdCB4ZW5idXNfZGV2aWNlICpkZXYpCiB7Ci0JY2hhciBwb3J0X3N0cls4XTsKLQlp bnQgaTsKLQlpbnQgZXJyOwotCWludCBzdGF0ZTsKKwlzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAq aW5mbyA9IGRldi0+ZGV2LmRyaXZlcl9kYXRhOworCXN0cnVjdCB1c2JfaGNkICpoY2QgPSBp bmZvX3RvX2hjZChpbmZvKTsKIAotCWZvciAoaSA9IDE7IGkgPD0gaW5mby0+cmhfbnVtcG9y dHM7IGkrKykgewotCQlzcHJpbnRmKHBvcnRfc3RyLCAicG9ydC0lZCIsIGkpOwotCQllcnIg PSB4ZW5idXNfc2NhbmYoWEJUX05JTCwgaW5mby0+eGJkZXYtPm90aGVyZW5kLAotCQkJCQlw b3J0X3N0ciwgIiVkIiwgJnN0YXRlKTsKLQkJaWYgKGVyciA9PSAxKQotCQkJeGVuaGNkX3Jo cG9ydF9zdGF0ZV9jaGFuZ2UoaW5mbywgaSwgc3RhdGUpOworCXVzYl9yZW1vdmVfaGNkKGhj ZCk7CisJaWYgKGluZm8tPmt0aHJlYWQpIHsKKwkJa3RocmVhZF9zdG9wKGluZm8tPmt0aHJl YWQpOworCQlpbmZvLT5rdGhyZWFkID0gTlVMTDsKIAl9CisJeGVuYnVzX2Zyb250ZW5kX2Ns b3NlZChkZXYpOwogfQogCiBzdGF0aWMgdm9pZCBiYWNrZW5kX2NoYW5nZWQoc3RydWN0IHhl bmJ1c19kZXZpY2UgKmRldiwKIAkJCQkgICAgIGVudW0geGVuYnVzX3N0YXRlIGJhY2tlbmRf c3RhdGUpCiB7Ci0Jc3RydWN0IHVzYmZyb250X2luZm8gKmluZm8gPSBkZXYtPmRldi5kcml2 ZXJfZGF0YTsKLQogCXN3aXRjaCAoYmFja2VuZF9zdGF0ZSkgewogCWNhc2UgWGVuYnVzU3Rh dGVJbml0aWFsaXNpbmc6Ci0JY2FzZSBYZW5idXNTdGF0ZUluaXRXYWl0OgogCWNhc2UgWGVu YnVzU3RhdGVJbml0aWFsaXNlZDoKKwljYXNlIFhlbmJ1c1N0YXRlQ29ubmVjdGVkOgorCWNh c2UgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nOgorCWNhc2UgWGVuYnVzU3RhdGVSZWNvbmZp Z3VyZWQ6CiAJY2FzZSBYZW5idXNTdGF0ZVVua25vd246CiAJY2FzZSBYZW5idXNTdGF0ZUNs b3NlZDoKIAkJYnJlYWs7CiAKLQljYXNlIFhlbmJ1c1N0YXRlQ29ubmVjdGVkOgotCQlpZiAo ZGV2LT5zdGF0ZSA9PSBYZW5idXNTdGF0ZUNvbm5lY3RlZCkKKwljYXNlIFhlbmJ1c1N0YXRl SW5pdFdhaXQ6CisJCWlmIChkZXYtPnN0YXRlICE9IFhlbmJ1c1N0YXRlSW5pdGlhbGlzaW5n KQogCQkJYnJlYWs7Ci0JCWlmIChkZXYtPnN0YXRlID09IFhlbmJ1c1N0YXRlSW5pdGlhbGlz ZWQpCi0JCQl1c2Jmcm9udF9kb19ob3RwbHVnKGluZm8pOworCQljb25uZWN0KGRldik7CiAJ CXhlbmJ1c19zd2l0Y2hfc3RhdGUoZGV2LCBYZW5idXNTdGF0ZUNvbm5lY3RlZCk7CiAJCWJy ZWFrOwogCiAJY2FzZSBYZW5idXNTdGF0ZUNsb3Npbmc6Ci0JCXhlbmJ1c19mcm9udGVuZF9j bG9zZWQoZGV2KTsKLQkJYnJlYWs7Ci0KLQljYXNlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmlu ZzoKLQkJaWYgKGRldi0+c3RhdGUgPT0gWGVuYnVzU3RhdGVDb25uZWN0ZWQpCi0JCQl4ZW5i dXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVSZWNvbmZpZ3VyaW5nKTsKLQkJYnJl YWs7Ci0KLQljYXNlIFhlbmJ1c1N0YXRlUmVjb25maWd1cmVkOgotCQl1c2Jmcm9udF9kb19o b3RwbHVnKGluZm8pOwotCQl4ZW5idXNfc3dpdGNoX3N0YXRlKGRldiwgWGVuYnVzU3RhdGVD b25uZWN0ZWQpOworCQl1c2Jmcm9udF9kaXNjb25uZWN0KGRldik7CiAJCWJyZWFrOwogCiAJ ZGVmYXVsdDoKQEAgLTMxMSwxMiArMzYzLDcgQEAKIAlzdHJ1Y3QgdXNiZnJvbnRfaW5mbyAq aW5mbyA9IGRldi0+ZGV2LmRyaXZlcl9kYXRhOwogCXN0cnVjdCB1c2JfaGNkICpoY2QgPSBp bmZvX3RvX2hjZChpbmZvKTsKIAotCXVzYl9yZW1vdmVfaGNkKGhjZCk7Ci0JaWYgKGluZm8t Pmt0aHJlYWQpIHsKLQkJa3RocmVhZF9zdG9wKGluZm8tPmt0aHJlYWQpOwotCQlpbmZvLT5r dGhyZWFkID0gTlVMTDsKLQl9Ci0JdXNiaWZfZnJlZShpbmZvKTsKKwlkZXN0cm95X3Jpbmdz KGluZm8pOwogCXVzYl9wdXRfaGNkKGhjZCk7CiAKIAlyZXR1cm4gMDsKQEAgLTM2MSw1ICs0 MDgsNSBAQAogbW9kdWxlX2V4aXQodXNiZnJvbnRfZXhpdCk7CiAKIE1PRFVMRV9BVVRIT1Io IiIpOwotTU9EVUxFX0RFU0NSSVBUSU9OKERSSVZFUl9ERVNDKTsKK01PRFVMRV9ERVNDUklQ VElPTigiWGVuIFVTQiBWaXJ0dWFsIEhvc3QgQ29udHJvbGxlciBkcml2ZXIgKHVzYmZyb250 KSIpOwogTU9EVUxFX0xJQ0VOU0UoIkR1YWwgQlNEL0dQTCIpOwo= --------------040903080807010704080302 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------040903080807010704080302--