From: marko.makela Date: May 29 2012 8:06pm Subject: bzr push into mysql-trunk-wl6255 branch (marko.makela:3898 to 3900) WL#6255 List-Archive: http://lists.mysql.com/commits/144016 Message-Id: <201205292006.q4TK6buA011720@acsmt356.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 IDM5MDAgTWFya28gTcOka2Vsw6QJMjAxMi0wNS0yOQogICAgICBXTCM2MjU1OiBSZW1vdmUgb25l IG1vcmUgYm9ndXMgYXNzZXJ0aW9uIG9uIHRhYmxlLT5uX3JlZl9jb3VudC4KCiAgICBtb2RpZmll ZDoKICAgICAgc3RvcmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKIDM4OTkg TWFya28gTcOka2Vsw6QJMjAxMi0wNS0yOQogICAgICBXTCM2MjU1IGJ1ZyBmaXhlcy4KICAgICAg CiAgICAgIHJvd19sb2dfdGFibGVfZGVsZXRlKCksIHJvd19sb2dfdGFibGVfdXBkYXRlKCk6IElu dGVycHJldCBuZXdfcGsgaW4KICAgICAgbmV3X2luZGV4LCBub3QgaW4gdGhlIGNsdXN0ZXJlZCBp bmRleCBvZiB0aGUgb2xkIHRhYmxlIGRlZmluaXRpb24uCiAgICAgIAogICAgICByb3dfbG9nX3Rh YmxlX2FwcGx5X2RlbGV0ZSgpLCByb3dfbG9nX3RhYmxlX2FwcGx5X3VwZGF0ZSgpLAogICAgICBy b3dfbG9nX3RhYmxlX2FwcGx5X29wKCk6IEFkZCB0aGUgcGFyYW1ldGVyIG5ld190cnhfaWRfY29s LgoKICAgIG1vZGlmaWVkOgogICAgICBzdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNjCiAz ODk4IE1hcmtvIE3DpGtlbMOkCTIwMTItMDUtMjkKICAgICAgV0wjNjI1NSBidWcgZml4LgogICAg ICAKICAgICAgaGFfaW5ub2Jhc2U6OmlucGxhY2VfYWx0ZXJfdGFibGUoKTogUmVtb3ZlIGEgYm9n dXMgZGVidWcgYXNzZXJ0aW9uIG9uCiAgICAgIHByZWJ1aWx0LT50YWJsZS0+bl9yZWZfY291bnQg YW5kIGV4cGxhaW4gd2h5IGl0IGJlY2FtZSBib2d1cy4KCiAgICBtb2RpZmllZDoKICAgICAgc3Rv cmFnZS9pbm5vYmFzZS9oYW5kbGVyL2hhbmRsZXIwYWx0ZXIuY2MKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjJwotLS0gYS9zdG9yYWdl L2lubm9iYXNlL2hhbmRsZXIvaGFuZGxlcjBhbHRlci5jYwlyZXZpZDptYXJrby5tYWtlbGFAb3Jh Y2xlLmNvbS0yMDEyMDUyOTE5MDUxMy1jZG93MTExbDUweDZrdDYxCisrKyBiL3N0b3JhZ2UvaW5u b2Jhc2UvaGFuZGxlci9oYW5kbGVyMGFsdGVyLmNjCXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUu Y29tLTIwMTIwNTI5MjAwNTQ0LTl3NW0weG5nMmY5ZnVpb2EKQEAgLTI1MjEsMTAgKzI1MjEsOCBA QCBvb206CiAJCXV0X2QoZGljdF90YWJsZV9jaGVja19mb3JfZHVwX2luZGV4ZXMoCiAJCQkgICAg IHByZWJ1aWx0LT50YWJsZSwgQ0hFQ0tfUEFSVElBTF9PSykpOwogCQl1dF9kKG11dGV4X2V4aXQo JmRpY3Rfc3lzLT5tdXRleCkpOwotCQkvKiBuX3JlZl9jb3VudCBtdXN0IGJlIDEsIG9yIDIgd2hl biBwdXJnZQotCQloYXBwZW5zIHRvIGJlIGV4ZWN1dGluZyBvbiB0aGlzIHZlcnkgdGFibGUuICov Ci0JCURCVUdfQVNTRVJUKGN0eC0+aW5kZXhlZF90YWJsZSA9PSBwcmVidWlsdC0+dGFibGUKLQkJ CSAgICB8fCBwcmVidWlsdC0+dGFibGUtPm5fcmVmX2NvdW50IC0gMSA8PSAxKTsKKwkJLyogcHJl YnVpbHQtPnRhYmxlLT5uX3JlZl9jb3VudCBjYW4gYmUgYW55dGhpbmcgaGVyZSwKKwkJZ2l2ZW4g dGhhdCB3ZSBob2xkIGF0IG1vc3QgYSBzaGFyZWQgbG9jayBvbiB0aGUgdGFibGUuICovCiAJCWdv dG8gb2tfZXhpdDsKIAljYXNlIERCX0RVUExJQ0FURV9LRVk6CiAJCWlmIChwcmVidWlsdC0+dHJ4 LT5lcnJvcl9rZXlfbnVtID09IFVMSU5UX1VOREVGSU5FRCkgewoKPT09IG1vZGlmaWVkIGZpbGUg J3N0b3JhZ2UvaW5ub2Jhc2Uvcm93L3JvdzBsb2cuY2MnCi0tLSBhL3N0b3JhZ2UvaW5ub2Jhc2Uv cm93L3JvdzBsb2cuY2MJcmV2aWQ6bWFya28ubWFrZWxhQG9yYWNsZS5jb20tMjAxMjA1MjkxOTA1 MTMtY2RvdzExMWw1MHg2a3Q2MQorKysgYi9zdG9yYWdlL2lubm9iYXNlL3Jvdy9yb3cwbG9nLmNj CXJldmlkOm1hcmtvLm1ha2VsYUBvcmFjbGUuY29tLTIwMTIwNTI5MjAwNTQ0LTl3NW0weG5nMmY5 ZnVpb2EKQEAgLTQwOSwyMCArNDA5LDI4IEBAIHJvd19sb2dfdGFibGVfZGVsZXRlKAogCQlyZXR1 cm47CiAJfQogCisJZGljdF90YWJsZV90KiBuZXdfdGFibGUgPSBpbmRleC0+b25saW5lX2xvZy0+ dGFibGU7CisJZGljdF9pbmRleF90KiBuZXdfaW5kZXggPSBkaWN0X3RhYmxlX2dldF9maXJzdF9p bmRleChuZXdfdGFibGUpOworCisJdXRfYWQoZGljdF9pbmRleF9pc19jbHVzdChuZXdfaW5kZXgp KTsKKwl1dF9hZCghZGljdF9pbmRleF9pc19vbmxpbmVfZGRsKG5ld19pbmRleCkpOworCiAJLyog Q3JlYXRlIHRoZSB0dXBsZSBQUklNQVJZIEtFWSwgREJfVFJYX0lEIGluIHRoZSBuZXdfdGFibGUu ICovCiAJaWYgKGluZGV4LT5vbmxpbmVfbG9nLT5zYW1lX3BrKSB7CiAJCWJ5dGUqCQlkYl90cnhf aWQ7CiAJCWR0dXBsZV90Kgl0dXBsZTsKKwkJdXRfYWQobmV3X2luZGV4LT5uX3VuaXEgPT0gaW5k ZXgtPm5fdW5pcSk7CiAKIAkJLyogVGhlIFBSSU1BUlkgS0VZIGFuZCBEQl9UUlhfSUQgYXJlIGlu IHRoZSBmaXJzdAogCQlmaWVsZHMgb2YgdGhlIHJlY29yZC4gKi8KLQkJaGVhcCA9IG1lbV9oZWFw X2NyZWF0ZShEQVRBX1RSWF9JRF9MRU4KLQkJCQkgICAgICAgKyBEVFVQTEVfRVNUX0FMTE9DKGlu ZGV4LT5uX3VuaXEgKyAxKSk7Ci0JCW9sZF9wayA9IHR1cGxlID0gZHR1cGxlX2NyZWF0ZShoZWFw LCBpbmRleC0+bl91bmlxICsgMSk7Ci0JCWR0dXBsZV9zZXRfbl9maWVsZHNfY21wKHR1cGxlLCBp bmRleC0+bl91bmlxKTsKLQkJZGljdF9pbmRleF9jb3B5X3R5cGVzKHR1cGxlLCBpbmRleCwgaW5k ZXgtPm5fdW5pcSArIDEpOworCQloZWFwID0gbWVtX2hlYXBfY3JlYXRlKAorCQkJREFUQV9UUlhf SURfTEVOCisJCQkrIERUVVBMRV9FU1RfQUxMT0MobmV3X2luZGV4LT5uX3VuaXEgKyAxKSk7CisJ CW9sZF9wayA9IHR1cGxlID0gZHR1cGxlX2NyZWF0ZShoZWFwLCBuZXdfaW5kZXgtPm5fdW5pcSAr IDEpOworCQlkaWN0X2luZGV4X2NvcHlfdHlwZXModHVwbGUsIG5ld19pbmRleCwgdHVwbGUtPm5f ZmllbGRzKTsKKwkJZHR1cGxlX3NldF9uX2ZpZWxkc19jbXAodHVwbGUsIG5ld19pbmRleC0+bl91 bmlxKTsKIAotCQlmb3IgKHVsaW50IGkgPSAwOyBpIDwgaW5kZXgtPm5fdW5pcTsgaSsrKSB7CisJ CWZvciAodWxpbnQgaSA9IDA7IGkgPCBuZXdfaW5kZXgtPm5fdW5pcTsgaSsrKSB7CiAJCQl1bGlu dAkJbGVuOwogCQkJY29uc3Qgdm9pZCoJZmllbGQJPSByZWNfZ2V0X250aF9maWVsZCgKIAkJCQly ZWMsIG9mZnNldHMsIGksICZsZW4pOwpAQCAtNDM3LDE0ICs0NDUsMTAgQEAgcm93X2xvZ190YWJs ZV9kZWxldGUoCiAJCQltZW1faGVhcF9hbGxvYyhoZWFwLCBEQVRBX1RSWF9JRF9MRU4pKTsKIAkJ dHJ4X3dyaXRlX3RyeF9pZChkYl90cnhfaWQsIHRyeF9pZCk7CiAKLQkJZGZpZWxkX3NldF9kYXRh KGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBpbmRleC0+bl91bmlxKSwKKwkJZGZpZWxkX3Nl dF9kYXRhKGR0dXBsZV9nZXRfbnRoX2ZpZWxkKHR1cGxlLCBuZXdfaW5kZXgtPm5fdW5pcSksCiAJ CQkJZGJfdHJ4X2lkLCBEQVRBX1RSWF9JRF9MRU4pOwogCX0gZWxzZSB7CiAJCS8qIFRoZSBQUklN QVJZIEtFWSBoYXMgY2hhbmdlZC4gVHJhbnNsYXRlIHRoZSB0dXBsZS4gKi8KLQkJZGljdF90YWJs ZV90KgluZXdfdGFibGUKLQkJCT0gaW5kZXgtPm9ubGluZV9sb2ctPnRhYmxlOwotCQlkaWN0X2lu ZGV4X3QqCW5ld19pbmRleAotCQkJPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleChuZXdfdGFi bGUpOwogCQlkZmllbGRfdCoJZGZpZWxkOwogCiAJCW9sZF9wayA9IHJvd19sb2dfdGFibGVfZ2V0 X3BrKHJlYywgaW5kZXgsIG9mZnNldHMsICZoZWFwKTsKQEAgLTQ2OCw3ICs0NzIsNyBAQCByb3df bG9nX3RhYmxlX2RlbGV0ZSgKIAl1dF9hZChEQVRBX1RSWF9JRF9MRU4gPT0gZHR1cGxlX2dldF9u dGhfZmllbGQoCiAJCSAgICAgIG9sZF9waywgb2xkX3BrLT5uX2ZpZWxkcyAtIDEpLT5sZW4pOwog CW9sZF9wa19zaXplID0gcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZV9jb21wX3ByZWZpeCgKLQkJaW5k ZXgsIG9sZF9way0+ZmllbGRzLCBvbGRfcGstPm5fZmllbGRzLAorCQluZXdfaW5kZXgsIG9sZF9w ay0+ZmllbGRzLCBvbGRfcGstPm5fZmllbGRzLAogCQkwLCAmb2xkX3BrX2V4dHJhX3NpemUpIC0g UkVDX05fTkVXX0VYVFJBX0JZVEVTOwogCXV0X2FkKG9sZF9wa19leHRyYV9zaXplID49IFJFQ19O X05FV19FWFRSQV9CWVRFUyk7CiAJb2xkX3BrX2V4dHJhX3NpemUgLT0gUkVDX05fTkVXX0VYVFJB X0JZVEVTOwpAQCAtNDgyLDcgKzQ4Niw3IEBAIHJvd19sb2dfdGFibGVfZGVsZXRlKAogCQkqYisr ID0gb2xkX3BrX2V4dHJhX3NpemU7CiAKIAkJcmVjX2NvbnZlcnRfZHR1cGxlX3RvX3JlY19jb21w KAotCQkJYiArIG9sZF9wa19leHRyYV9zaXplLCAwLCBpbmRleCwKKwkJCWIgKyBvbGRfcGtfZXh0 cmFfc2l6ZSwgMCwgbmV3X2luZGV4LAogCQkJUkVDX1NUQVRVU19PUkRJTkFSWSwKIAkJCW9sZF9w ay0+ZmllbGRzLCBvbGRfcGstPm5fZmllbGRzLCAwKTsKIApAQCAtNTM3LDYgKzU0MSwxMiBAQCBy b3dfbG9nX3RhYmxlX3VwZGF0ZSgKIAkJcmV0dXJuOwogCX0KIAorCWRpY3RfdGFibGVfdCogbmV3 X3RhYmxlID0gaW5kZXgtPm9ubGluZV9sb2ctPnRhYmxlOworCWRpY3RfaW5kZXhfdCogbmV3X2lu ZGV4ID0gZGljdF90YWJsZV9nZXRfZmlyc3RfaW5kZXgobmV3X3RhYmxlKTsKKworCXV0X2FkKGRp Y3RfaW5kZXhfaXNfY2x1c3QobmV3X2luZGV4KSk7CisJdXRfYWQoIWRpY3RfaW5kZXhfaXNfb25s aW5lX2RkbChuZXdfaW5kZXgpKTsKKwogCWlmIChyZWNfb2Zmc19jb21wKG9mZnNldHMpKSB7CiAJ CXV0X2FkKHJlY19nZXRfc3RhdHVzKHJlYykgPT0gUkVDX1NUQVRVU19PUkRJTkFSWSk7CiAKQEAg LTU1Nyw3ICs1NjcsNyBAQCByb3dfbG9nX3RhYmxlX3VwZGF0ZSgKIAkJdXRfYWQob2xkX3BrKTsK IAkJdXRfYWQoZHR1cGxlX2dldF9uX2ZpZWxkcyhvbGRfcGspID4gMSk7CiAJCW9sZF9wa19zaXpl ID0gcmVjX2dldF9jb252ZXJ0ZWRfc2l6ZV9jb21wX3ByZWZpeCgKLQkJCWluZGV4LCBvbGRfcGst PmZpZWxkcywgb2xkX3BrLT5uX2ZpZWxkcywKKwkJCW5ld19pbmRleCwgb2xkX3BrLT5maWVsZHMs IG9sZF9way0+bl9maWVsZHMsCiAJCQkwLCAmb2xkX3BrX2V4dHJhX3NpemUpIC0gUkVDX05fTkVX X0VYVFJBX0JZVEVTOwogCQl1dF9hZChvbGRfcGtfZXh0cmFfc2l6ZSA+PSBSRUNfTl9ORVdfRVhU UkFfQllURVMpOwogCQlvbGRfcGtfZXh0cmFfc2l6ZSAtPSBSRUNfTl9ORVdfRVhUUkFfQllURVM7 CkBAIC01NzMsNyArNTgzLDcgQEAgcm93X2xvZ190YWJsZV91cGRhdGUoCiAJCQkqYisrID0gb2xk X3BrX2V4dHJhX3NpemU7CiAKIAkJCXJlY19jb252ZXJ0X2R0dXBsZV90b19yZWNfY29tcCgKLQkJ CQliICsgb2xkX3BrX2V4dHJhX3NpemUsIDAsIGluZGV4LAorCQkJCWIgKyBvbGRfcGtfZXh0cmFf c2l6ZSwgMCwgbmV3X2luZGV4LAogCQkJCVJFQ19TVEFUVVNfT1JESU5BUlksCiAJCQkJb2xkX3Br LT5maWVsZHMsIG9sZF9way0+bl9maWVsZHMsIDApOwogCQkJYiArPSBvbGRfcGtfc2l6ZTsKQEAg LTY2Nyw4ICs2NzcsOCBAQCByb3dfbG9nX3RhYmxlX2dldF9waygKIAkJfQogCiAJCXR1cGxlID0g ZHR1cGxlX2NyZWF0ZSgqaGVhcCwgbmV3X25fdW5pcSArIDIpOworCQlkaWN0X2luZGV4X2NvcHlf dHlwZXModHVwbGUsIG5ld19pbmRleCwgdHVwbGUtPm5fZmllbGRzKTsKIAkJZHR1cGxlX3NldF9u X2ZpZWxkc19jbXAodHVwbGUsIG5ld19uX3VuaXEpOwotCQlkaWN0X2luZGV4X2NvcHlfdHlwZXMo dHVwbGUsIG5ld19pbmRleCwgbmV3X25fdW5pcSArIDIpOwogCiAJCWZvciAodWxpbnQgbmV3X2kg PSAwOyBuZXdfaSA8IG5ld19uX3VuaXE7IG5ld19pKyspIHsKIAkJCWRpY3RfZmllbGRfdCoJCWlm aWVsZDsKQEAgLTExMjksNiArMTEzOSw5IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfZGVsZXRlKAog CXF1ZV90aHJfdCoJCXRociwJCS8qITwgaW46IHF1ZXJ5IGdyYXBoICovCiAJdWxpbnQJCQl0cnhf aWRfY29sLAkvKiE8IGluOiBwb3NpdGlvbiBvZgogCQkJCQkJREJfVFJYX0lEIGluIHRoZQorCQkJ CQkJb2xkIGNsdXN0ZXJlZCBpbmRleCAqLworCXVsaW50CQkJbmV3X3RyeF9pZF9jb2wsCS8qITwg aW46IHBvc2l0aW9uIG9mCisJCQkJCQlEQl9UUlhfSUQgaW4gdGhlIG5ldwogCQkJCQkJY2x1c3Rl cmVkIGluZGV4ICovCiAJY29uc3QgbXJlY190KgkJbXJlYywJCS8qITwgaW46IG1lcmdlIHJlY29y ZCAqLwogCWNvbnN0IHVsaW50KgkJbW9mZnNldHMsCS8qITwgaW46IG9mZnNldHMgb2YgbXJlYyAq LwpAQCAtMTE0OSw3ICsxMTYyLDcgQEAgcm93X2xvZ190YWJsZV9hcHBseV9kZWxldGUoCiAKIAkv KiBDb252ZXJ0IHRoZSByb3cgdG8gYSBzZWFyY2ggdHVwbGUuICovCiAJb2xkX3BrID0gZHR1cGxl X2NyZWF0ZShoZWFwLCBpbmRleC0+bl91bmlxICsgMSk7Ci0JZGljdF90YWJsZV9jb3B5X3R5cGVz KG9sZF9waywgbmV3X3RhYmxlKTsKKwlkaWN0X2luZGV4X2NvcHlfdHlwZXMob2xkX3BrLCBpbmRl eCwgb2xkX3BrLT5uX2ZpZWxkcyk7CiAJZHR1cGxlX3NldF9uX2ZpZWxkc19jbXAob2xkX3BrLCBp bmRleC0+bl91bmlxKTsKIAogCWZvciAodWxpbnQgaSA9IDA7IGkgPD0gaW5kZXgtPm5fdW5pcTsg aSsrKSB7CkBAIC0xMjA1LDcgKzEyMTgsNyBAQCBhbGxfZG9uZToKIAkJdXRfYWQobGVuID09IERB VEFfVFJYX0lEX0xFTik7CiAJCWNvbnN0IHZvaWQqCXJlY190cnhfaWQKIAkJCT0gcmVjX2dldF9u dGhfZmllbGQoYnRyX3BjdXJfZ2V0X3JlYygmcGN1ciksIG9mZnNldHMsCi0JCQkJCSAgICB0cnhf aWRfY29sLCAmbGVuKTsKKwkJCQkJICAgIG5ld190cnhfaWRfY29sLCAmbGVuKTsKIAkJdXRfYWQo bGVuID09IERBVEFfVFJYX0lEX0xFTik7CiAJCWlmIChtZW1jbXAobXJlY190cnhfaWQsIHJlY190 cnhfaWQsIERBVEFfVFJYX0lEX0xFTikpIHsKIAkJCWdvdG8gYWxsX2RvbmU7CkBAIC0xMjI1LDYg KzEyMzgsOSBAQCByb3dfbG9nX3RhYmxlX2FwcGx5X3VwZGF0ZSgKIAlxdWVfdGhyX3QqCQl0aHIs CQkvKiE8IGluOiBxdWVyeSBncmFwaCAqLwogCXVsaW50CQkJdHJ4X2lkX2NvbCwJLyohPCBpbjog cG9zaXRpb24gb2YKIAkJCQkJCURCX1RSWF9JRCBpbiB0aGUKKwkJCQkJCW9sZCBjbHVzdGVyZWQg aW5kZXggKi8KKwl1bGludAkJCW5ld190cnhfaWRfY29sLAkvKiE8IGluOiBwb3NpdGlvbiBvZgor CQkJCQkJREJfVFJYX0lEIGluIHRoZSBuZXcKIAkJCQkJCWNsdXN0ZXJlZCBpbmRleCAqLwogCWNv bnN0IG1yZWNfdCoJCW1yZWMsCQkvKiE8IGluOiBtZXJnZSByZWNvcmQgKi8KIAljb25zdCB1bGlu dCoJCW9mZnNldHMsCS8qITwgaW46IG9mZnNldHMgb2YgbXJlYyAqLwpAQCAtMTMxOCw4ICsxMzM0 LDggQEAgZGVsZXRlX2luc2VydDoKIAkJZ290byBpbnNlcnQ7CiAJfQogCi0JaWYgKHVwZF9nZXRf bnRoX2ZpZWxkKHVwZGF0ZSwgMCktPmZpZWxkX25vIDwgdHJ4X2lkX2NvbCkgewotCQlpZiAoIWR1 cC0+aW5kZXgtPm9ubGluZV9sb2ctPnNhbWVfcGspIHsKKwlpZiAodXBkX2dldF9udGhfZmllbGQo dXBkYXRlLCAwKS0+ZmllbGRfbm8gPCBuZXdfdHJ4X2lkX2NvbCkgeworCQlpZiAoZHVwLT5pbmRl eC0+b25saW5lX2xvZy0+c2FtZV9waykgewogCQkJdXRfYWQoMCk7CiAJCQllcnJvciA9IERCX0NP UlJVUFRJT047CiAJCQlnb3RvIGZ1bmNfZXhpdDsKQEAgLTEzMzQsMTcgKzEzNTAsMTcgQEAgZGVs ZXRlX2luc2VydDoKIAkJCW1yZWMsIG9mZnNldHMsIHRyeF9pZF9jb2wsICZsZW4pOwogCQl1dF9h ZChsZW4gPT0gREFUQV9UUlhfSURfTEVOKTsKIAkJY29uc3QgZGZpZWxkX3QqCW5ld190cnhfcm9s bAk9IGR0dXBsZV9nZXRfbnRoX2ZpZWxkKAotCQkJb2xkX3BrLCB0cnhfaWRfY29sKTsKKwkJCW9s ZF9waywgbmV3X3RyeF9pZF9jb2wpOwogCQkvKiBXZSBhc3N1bWUgdGhhdCBEQl9UUlhfSUQsREJf Uk9MTF9QVFIgYXJlIHN0b3JlZAogCQlpbiBvbmUgY29udGlndW91cyBibG9jay4gKi8KIAkJdXRf YWQocmVjX2dldF9udGhfZmllbGQobXJlYywgb2Zmc2V0cywgdHJ4X2lkX2NvbCArIDEsICZsZW4p CiAJCSAgICAgID09IGN1cl90cnhfcm9sbCArIERBVEFfVFJYX0lEX0xFTik7CiAJCXV0X2FkKGxl biA9PSBEQVRBX1JPTExfUFRSX0xFTik7CiAJCXV0X2FkKG5ld190cnhfcm9sbC0+bGVuID09IERB VEFfVFJYX0lEX0xFTik7Ci0JCXV0X2FkKGR0dXBsZV9nZXRfbnRoX2ZpZWxkKG9sZF9waywgdHJ4 X2lkX2NvbCArIDEpCisJCXV0X2FkKGR0dXBsZV9nZXRfbnRoX2ZpZWxkKG9sZF9waywgbmV3X3Ry eF9pZF9jb2wgKyAxKQogCQkgICAgICAtPiBsZW4gPT0gREFUQV9ST0xMX1BUUl9MRU4pOwogCQl1 dF9hZChzdGF0aWNfY2FzdDxjb25zdCBieXRlKj4oCi0JCQkgICAgICBkdHVwbGVfZ2V0X250aF9m aWVsZChvbGRfcGssIHRyeF9pZF9jb2wgKyAxKQorCQkJICAgICAgZHR1cGxlX2dldF9udGhfZmll bGQob2xkX3BrLCBuZXdfdHJ4X2lkX2NvbCArIDEpCiAJCQkgICAgICAtPmRhdGEpCiAJCSAgICAg ID09IHN0YXRpY19jYXN0PGNvbnN0IGJ5dGUqPihuZXdfdHJ4X3JvbGwtPmRhdGEpCiAJCSAgICAg ICsgREFUQV9UUlhfSURfTEVOKTsKQEAgLTE0NjAsNyArMTQ3Niw5IEBAIHJvd19sb2dfdGFibGVf YXBwbHlfb3AoCiAvKj09PT09PT09PT09PT09PT09PT0qLwogCXF1ZV90aHJfdCoJCXRociwJCS8q ITwgaW46IHF1ZXJ5IGdyYXBoICovCiAJdWxpbnQJCQl0cnhfaWRfY29sLAkvKiE8IGluOiBwb3Np dGlvbiBvZgotCQkJCQkJREJfVFJYX0lEIGluIGluZGV4ICovCisJCQkJCQlEQl9UUlhfSUQgaW4g b2xkIGluZGV4ICovCisJdWxpbnQJCQluZXdfdHJ4X2lkX2NvbCwJLyohPCBpbjogcG9zaXRpb24g b2YKKwkJCQkJCURCX1RSWF9JRCBpbiBuZXcgaW5kZXggKi8KIAlkaWN0X3RhYmxlX3QqCQluZXdf dGFibGUsCS8qITwgaW4vb3V0OiB0YWJsZQogCQkJCQkJYmVpbmcgcmVidWlsdCAqLwogCWNvbnN0 IHN0cnVjdCBUQUJMRSoJYWx0ZXJlZF90YWJsZSwJLyohPCBpbjogbmV3IE15U1FMCkBAIC0xNTUz LDcgKzE1NzEsOCBAQCByb3dfbG9nX3RhYmxlX2FwcGx5X29wKAogCQluZXh0X21yZWMgPSBtcmVj ICsgcmVjX29mZnNfZGF0YV9zaXplKG9mZnNldHMpOwogCiAJCSplcnJvciA9IHJvd19sb2dfdGFi bGVfYXBwbHlfZGVsZXRlKAotCQkJdGhyLCB0cnhfaWRfY29sLCBtcmVjLCBvZmZzZXRzLCBvZmZz ZXRzX2hlYXAsIGhlYXAsCisJCQl0aHIsIHRyeF9pZF9jb2wsIG5ld190cnhfaWRfY29sLAorCQkJ bXJlYywgb2Zmc2V0cywgb2Zmc2V0c19oZWFwLCBoZWFwLAogCQkJbmV3X3RhYmxlKTsKIAkJYnJl YWs7CiAJY2FzZSBST1dfVF9VUERBVEU6CkBAIC0xNTk1LDcgKzE2MTQsOCBAQCByb3dfbG9nX3Rh YmxlX2FwcGx5X29wKAogCQkJfQogCiAJCQlvbGRfcGsgPSBkdHVwbGVfY3JlYXRlKGhlYXAsIG5l d19pbmRleC0+bl91bmlxKTsKLQkJCWRpY3RfdGFibGVfY29weV90eXBlcyhvbGRfcGssIG5ld190 YWJsZSk7CisJCQlkaWN0X2luZGV4X2NvcHlfdHlwZXMoCisJCQkJb2xkX3BrLCBuZXdfaW5kZXgs IG9sZF9way0+bl9maWVsZHMpOwogCiAJCQkvKiBDb3B5IHRoZSBQUklNQVJZIEtFWSBmaWVsZHMg ZnJvbSBtcmVjIHRvIG9sZF9way4gKi8KIAkJCWZvciAodWxpbnQgaSA9IDA7IGkgPCBuZXdfaW5k ZXgtPm5fdW5pcTsgaSsrKSB7CkBAIC0xNjMzLDcgKzE2NTMsOCBAQCByb3dfbG9nX3RhYmxlX2Fw cGx5X29wKAogCQkJLyogQ29weSB0aGUgUFJJTUFSWSBLRVkgZmllbGRzIGFuZAogCQkJREJfVFJY X0lELCBEQl9ST0xMX1BUUiBmcm9tIG1yZWMgdG8gb2xkX3BrLiAqLwogCQkJb2xkX3BrID0gZHR1 cGxlX2NyZWF0ZShoZWFwLCBuZXdfaW5kZXgtPm5fdW5pcSArIDIpOwotCQkJZGljdF90YWJsZV9j b3B5X3R5cGVzKG9sZF9waywgbmV3X3RhYmxlKTsKKwkJCWRpY3RfaW5kZXhfY29weV90eXBlcyhv bGRfcGssIG5ld19pbmRleCwKKwkJCQkJICAgICAgb2xkX3BrLT5uX2ZpZWxkcyk7CiAKIAkJCWZv ciAodWxpbnQgaSA9IDA7CiAJCQkgICAgIGkgPCBkaWN0X2luZGV4X2dldF9uX3VuaXF1ZShuZXdf aW5kZXgpICsgMjsKQEAgLTE2OTQsNyArMTcxNSw3IEBAIHJvd19sb2dfdGFibGVfYXBwbHlfb3Ao CiAJCQkJICAgIGR1cC0+aW5kZXgsCiAJCQkJICAgIHRyeF9yZWFkX3RyeF9pZChkYl90cnhfaWQp KSkgewogCQkJCSplcnJvciA9IHJvd19sb2dfdGFibGVfYXBwbHlfdXBkYXRlKAotCQkJCQl0aHIs IHRyeF9pZF9jb2wsCisJCQkJCXRociwgdHJ4X2lkX2NvbCwgbmV3X3RyeF9pZF9jb2wsCiAJCQkJ CW1yZWMsIG9mZnNldHMsIG9mZnNldHNfaGVhcCwgaGVhcCwKIAkJCQkJbmV3X3RhYmxlLCBhbHRl cmVkX3RhYmxlLCBkdXAsIG9sZF9wayk7CiAJCQl9CkBAIC0xNzMyLDExICsxNzUzLDE1IEBAIHJv d19sb2dfdGFibGVfYXBwbHlfb3BzKAogCWJvb2wJCWhhc19pbmRleF9sb2NrOwogCWRpY3RfaW5k ZXhfdCoJaW5kZXgJCT0gY29uc3RfY2FzdDxkaWN0X2luZGV4X3QqPigKIAkJZHVwLT5pbmRleCk7 CisJZGljdF90YWJsZV90KgluZXdfdGFibGUJPSBpbmRleC0+b25saW5lX2xvZy0+dGFibGU7CisJ ZGljdF9pbmRleF90KgluZXdfaW5kZXgJPSBkaWN0X3RhYmxlX2dldF9maXJzdF9pbmRleCgKKwkJ bmV3X3RhYmxlKTsKIAljb25zdCB1bGludAlpCQk9IDEgKyBSRUNfT0ZGU19IRUFERVJfU0laRQog CQkrIGRpY3RfaW5kZXhfZ2V0X25fZmllbGRzKGluZGV4KTsKIAljb25zdCB1bGludAl0cnhfaWRf Y29sCT0gZGljdF9jb2xfZ2V0X2NsdXN0X3BvcygKLQkJZGljdF90YWJsZV9nZXRfc3lzX2NvbChp bmRleC0+dGFibGUsIERBVEFfVFJYX0lEKSwKLQkJaW5kZXgpOworCQlkaWN0X3RhYmxlX2dldF9z eXNfY29sKGluZGV4LT50YWJsZSwgREFUQV9UUlhfSUQpLCBpbmRleCk7CisJY29uc3QgdWxpbnQJ bmV3X3RyeF9pZF9jb2wJPSBkaWN0X2NvbF9nZXRfY2x1c3RfcG9zKAorCQlkaWN0X3RhYmxlX2dl dF9zeXNfY29sKG5ld190YWJsZSwgREFUQV9UUlhfSUQpLCBuZXdfaW5kZXgpOwogCXRyeF90KgkJ dHJ4CQk9IHRocl9nZXRfdHJ4KHRocik7CiAKIAl1dF9hZChkaWN0X2luZGV4X2lzX2NsdXN0KGlu ZGV4KSk7CkBAIC0xNzQ1LDEyICsxNzcwLDExIEBAIHJvd19sb2dfdGFibGVfYXBwbHlfb3BzKAog I2lmZGVmIFVOSVZfU1lOQ19ERUJVRwogCXV0X2FkKHJ3X2xvY2tfb3duKGRpY3RfaW5kZXhfZ2V0 X2xvY2soaW5kZXgpLCBSV19MT0NLX0VYKSk7CiAjZW5kaWYgLyogVU5JVl9TWU5DX0RFQlVHICov Ci0JdXRfYWQoaW5kZXgtPm9ubGluZV9sb2cpOwotCXV0X2FkKGluZGV4LT5vbmxpbmVfbG9nLT50 YWJsZSk7Ci0JdXRfYWQoIWRpY3RfaW5kZXhfaXNfb25saW5lX2RkbCgKLQkJICAgICAgZGljdF90 YWJsZV9nZXRfZmlyc3RfaW5kZXgoaW5kZXgtPm9ubGluZV9sb2ctPnRhYmxlKSkpOworCXV0X2Fk KCFkaWN0X2luZGV4X2lzX29ubGluZV9kZGwobmV3X2luZGV4KSk7CiAJdXRfYWQodHJ4X2lkX2Nv bCA+IDApOwogCXV0X2FkKHRyeF9pZF9jb2wgIT0gVUxJTlRfVU5ERUZJTkVEKTsKKwl1dF9hZChu ZXdfdHJ4X2lkX2NvbCA+IDApOworCXV0X2FkKG5ld190cnhfaWRfY29sICE9IFVMSU5UX1VOREVG SU5FRCk7CiAKIAlVTklWX01FTV9JTlZBTElEKCZtcmVjX2VuZCwgc2l6ZW9mIG1yZWNfZW5kKTsK IApAQCAtMTg4OCw3ICsxOTEyLDcgQEAgYWxsX2RvbmU6CiAJCW1lbWNweSgobXJlY190KikgbXJl Y19lbmQsIG5leHRfbXJlYywKIAkJICAgICAgICgmaW5kZXgtPm9ubGluZV9sb2ctPmhlYWQuYnVm KVsxXSAtIG1yZWNfZW5kKTsKIAkJbXJlYyA9IHJvd19sb2dfdGFibGVfYXBwbHlfb3AoCi0JCQl0 aHIsIHRyeF9pZF9jb2wsCisJCQl0aHIsIHRyeF9pZF9jb2wsIG5ld190cnhfaWRfY29sLAogCQkJ aW5kZXgtPm9ubGluZV9sb2ctPnRhYmxlLCBhbHRlcmVkX3RhYmxlLAogCQkJZHVwLCAmZXJyb3Is IG9mZnNldHNfaGVhcCwgaGVhcCwKIAkJCWluZGV4LT5vbmxpbmVfbG9nLT5oZWFkLmJ1ZiwKQEAg LTE5ODcsNyArMjAxMSw3IEBAIGFsbF9kb25lOgogCQl9CiAKIAkJbmV4dF9tcmVjID0gcm93X2xv Z190YWJsZV9hcHBseV9vcCgKLQkJCXRociwgdHJ4X2lkX2NvbCwKKwkJCXRociwgdHJ4X2lkX2Nv bCwgbmV3X3RyeF9pZF9jb2wsCiAJCQlpbmRleC0+b25saW5lX2xvZy0+dGFibGUsIGFsdGVyZWRf dGFibGUsCiAJCQlkdXAsICZlcnJvciwgb2Zmc2V0c19oZWFwLCBoZWFwLAogCQkJbXJlYywgbXJl Y19lbmQsIG9mZnNldHMpOwoKTm8gYnVuZGxlIChyZWFzb246IHVzZWxlc3MgZm9yIHB1c2ggZW1h aWxzKS4=