From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1KBcUf-0003pS-Jb for qemu-devel@nongnu.org; Wed, 25 Jun 2008 17:25:33 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1KBcUe-0003pC-CU for qemu-devel@nongnu.org; Wed, 25 Jun 2008 17:25:32 -0400 Received: from [199.232.76.173] (port=52784 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1KBcUe-0003p9-7T for qemu-devel@nongnu.org; Wed, 25 Jun 2008 17:25:32 -0400 Received: from smtp3-g19.free.fr ([212.27.42.29]:54180) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1KBcUd-0004E3-Nm for qemu-devel@nongnu.org; Wed, 25 Jun 2008 17:25:32 -0400 Received: from smtp3-g19.free.fr (localhost.localdomain [127.0.0.1]) by smtp3-g19.free.fr (Postfix) with ESMTP id 9D98C17B55B for ; Wed, 25 Jun 2008 23:25:30 +0200 (CEST) Received: from [127.0.0.1] (rob92-10-88-171-126-33.fbx.proxad.net [88.171.126.33]) by smtp3-g19.free.fr (Postfix) with ESMTP id 27D2B17B52A for ; Wed, 25 Jun 2008 23:25:30 +0200 (CEST) Message-ID: <4862B7CB.8040407@reactos.org> Date: Wed, 25 Jun 2008 23:25:31 +0200 From: =?ISO-8859-1?Q?Herv=E9_Poussineau?= MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------040404000600060908030503" Subject: [Qemu-devel] [PATCH] FDC: rework status0, status1, status2 handling Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org This is a multi-part message in MIME format. --------------040404000600060908030503 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: quoted-printable Hi, Attached patch fixes status0, status1 and status2 handling, which were=20 broken in read/write commands and in some subtle ways. Status values are=20 now calculated during command execution and not at the very end. This allows removing of one hack in fdctrl_handle_sense_interrupt_status= (). This also removes the FD_STATE_SEEK/FD_DID_SEEK stuff. Herv=E9 --------------040404000600060908030503 Content-Type: text/plain; name="fdc_status012.diff" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="fdc_status012.diff" SW5kZXg6IGZkYy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gZmRjLmMJKHJldmlzaW9uIDQ3ODkp DQorKysgZmRjLmMJKHdvcmtpbmcgY29weSkNCkBAIC0xMTYsNTQgKzExNiw2IEBADQogICAg IHJldHVybiBfZmRfc2VjdG9yKGRydi0+aGVhZCwgZHJ2LT50cmFjaywgZHJ2LT5zZWN0LCBk cnYtPmxhc3Rfc2VjdCk7CiB9CiAKLS8qIFNlZWsgdG8gYSBuZXcgcG9zaXRpb246Ci0gKiBy ZXR1cm5zIDAgaWYgYWxyZWFkeSBvbiByaWdodCB0cmFjawotICogcmV0dXJucyAxIGlmIHRy YWNrIGNoYW5nZWQKLSAqIHJldHVybnMgMiBpZiB0cmFjayBpcyBpbnZhbGlkCi0gKiByZXR1 cm5zIDMgaWYgc2VjdG9yIGlzIGludmFsaWQKLSAqIHJldHVybnMgNCBpZiBzZWVrIGlzIGRp c2FibGVkCi0gKi8KLXN0YXRpYyBpbnQgZmRfc2VlayAoZmRyaXZlX3QgKmRydiwgdWludDhf dCBoZWFkLCB1aW50OF90IHRyYWNrLCB1aW50OF90IHNlY3QsCi0gICAgICAgICAgICAgICAg ICAgIGludCBlbmFibGVfc2VlaykKLXsKLSAgICB1aW50MzJfdCBzZWN0b3I7Ci0gICAgaW50 IHJldDsKLQotICAgIGlmICh0cmFjayA+IGRydi0+bWF4X3RyYWNrIHx8Ci0gICAgICAgICho ZWFkICE9IDAgJiYgKGRydi0+ZmxhZ3MgJiBGRElTS19EQkxfU0lERVMpID09IDApKSB7Ci0g ICAgICAgIEZMT1BQWV9EUFJJTlRGKCJ0cnkgdG8gcmVhZCAlZCAlMDJ4ICUwMnggKG1heD0l ZCAlZCAlMDJ4ICUwMngpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICBoZWFkLCB0cmFj aywgc2VjdCwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgKGRydi0+ZmxhZ3MgJiBGRElT S19EQkxfU0lERVMpID09IDAgPyAwIDogMSwKLSAgICAgICAgICAgICAgICAgICAgICAgZHJ2 LT5tYXhfdHJhY2ssIGRydi0+bGFzdF9zZWN0KTsKLSAgICAgICAgcmV0dXJuIDI7Ci0gICAg fQotICAgIGlmIChzZWN0ID4gZHJ2LT5sYXN0X3NlY3QpIHsKLSAgICAgICAgRkxPUFBZX0RQ UklOVEYoInRyeSB0byByZWFkICVkICUwMnggJTAyeCAobWF4PSVkICVkICUwMnggJTAyeClc biIsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlYWQsIHRyYWNrLCBzZWN0LCAxLAotICAg ICAgICAgICAgICAgICAgICAgICAoZHJ2LT5mbGFncyAmIEZESVNLX0RCTF9TSURFUykgPT0g MCA/IDAgOiAxLAotICAgICAgICAgICAgICAgICAgICAgICBkcnYtPm1heF90cmFjaywgZHJ2 LT5sYXN0X3NlY3QpOwotICAgICAgICByZXR1cm4gMzsKLSAgICB9Ci0gICAgc2VjdG9yID0g X2ZkX3NlY3RvcihoZWFkLCB0cmFjaywgc2VjdCwgZHJ2LT5sYXN0X3NlY3QpOwotICAgIHJl dCA9IDA7Ci0gICAgaWYgKHNlY3RvciAhPSBmZF9zZWN0b3IoZHJ2KSkgewotI2lmIDAKLSAg ICAgICAgaWYgKCFlbmFibGVfc2VlaykgewotICAgICAgICAgICAgRkxPUFBZX0VSUk9SKCJu byBpbXBsaWNpdCBzZWVrICVkICUwMnggJTAyeCAobWF4PSVkICUwMnggJTAyeClcbiIsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgaGVhZCwgdHJhY2ssIHNlY3QsIDEsIGRydi0+bWF4 X3RyYWNrLCBkcnYtPmxhc3Rfc2VjdCk7Ci0gICAgICAgICAgICByZXR1cm4gNDsKLSAgICAg ICAgfQotI2VuZGlmCi0gICAgICAgIGRydi0+aGVhZCA9IGhlYWQ7Ci0gICAgICAgIGlmIChk cnYtPnRyYWNrICE9IHRyYWNrKQotICAgICAgICAgICAgcmV0ID0gMTsKLSAgICAgICAgZHJ2 LT50cmFjayA9IHRyYWNrOwotICAgICAgICBkcnYtPnNlY3QgPSBzZWN0OwotICAgIH0KLQot ICAgIHJldHVybiByZXQ7Ci19Ci0KIC8qIFNldCBkcml2ZSBiYWNrIHRvIHRyYWNrIDAgKi8K IHN0YXRpYyB2b2lkIGZkX3JlY2FsaWJyYXRlIChmZHJpdmVfdCAqZHJ2KQogewpAQCAtMzAy LDcgKzI1NCw3IEBADQogc3RhdGljIHZvaWQgZmRjdHJsX3Jlc2V0X2ZpZm8gKGZkY3RybF90 ICpmZGN0cmwpOwogc3RhdGljIGludCBmZGN0cmxfdHJhbnNmZXJfaGFuZGxlciAodm9pZCAq b3BhcXVlLCBpbnQgbmNoYW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpbnQgZG1hX3BvcywgaW50IGRtYV9sZW4pOwotc3RhdGljIHZvaWQgZmRjdHJsX3JhaXNl X2lycSAoZmRjdHJsX3QgKmZkY3RybCwgdWludDhfdCBzdGF0dXMwKTsKK3N0YXRpYyB2b2lk IGZkY3RybF9yYWlzZV9pcnEgKGZkY3RybF90ICpmZGN0cmwpOwogCiBzdGF0aWMgdWludDMy X3QgZmRjdHJsX3JlYWRfc3RhdHVzQSAoZmRjdHJsX3QgKmZkY3RybCk7CiBzdGF0aWMgdWlu dDMyX3QgZmRjdHJsX3JlYWRfc3RhdHVzQiAoZmRjdHJsX3QgKmZkY3RybCk7CkBAIC0zMjcs NyArMjc5LDYgQEANCiBlbnVtIHsKICAgICBGRF9TVEFURV9NVUxUSSAgPSAweDAxLAkvKiBt dWx0aSB0cmFjayBmbGFnICovCiAgICAgRkRfU1RBVEVfRk9STUFUID0gMHgwMiwJLyogZm9y bWF0IGZsYWcgKi8KLSAgICBGRF9TVEFURV9TRUVLICAgPSAweDA0LAkvKiBzZWVrIGZsYWcg Ki8KIH07CiAKIGVudW0gewpAQCAtNDYzLDcgKzQxNCw2IEBADQogfTsKIAogI2RlZmluZSBG RF9NVUxUSV9UUkFDSyhzdGF0ZSkgKChzdGF0ZSkgJiBGRF9TVEFURV9NVUxUSSkKLSNkZWZp bmUgRkRfRElEX1NFRUsoc3RhdGUpICgoc3RhdGUpICYgRkRfU1RBVEVfU0VFSykKICNkZWZp bmUgRkRfRk9STUFUX0NNRChzdGF0ZSkgKChzdGF0ZSkgJiBGRF9TVEFURV9GT1JNQVQpCiAK IHN0cnVjdCBmZGN0cmxfdCB7CkBAIC01MDgsNiArNDU4LDYxIEBADQogICAgIGZkcml2ZV90 IGRyaXZlc1tNQVhfRkRdOwogfTsKIAorLyogU2VlayB0byBhIG5ldyBwb3NpdGlvbjoKKyAq IHJldHVybnMgMCBpZiBhbHJlYWR5IG9uIHJpZ2h0IHRyYWNrCisgKiByZXR1cm5zIDEgaWYg dHJhY2sgY2hhbmdlZAorICogcmV0dXJucyAyIGlmIHRyYWNrIGlzIGludmFsaWQKKyAqIHJl dHVybnMgMyBpZiBzZWN0b3IgaXMgaW52YWxpZAorICogcmV0dXJucyA0IGlmIHNlZWsgaXMg ZGlzYWJsZWQKKyAqLworc3RhdGljIGludCBmZF9zZWVrIChmZGN0cmxfdCAqZmRjdHJsLCBm ZHJpdmVfdCAqZHJ2LAorICAgICAgICAgICAgICAgICAgICB1aW50OF90IGhlYWQsIHVpbnQ4 X3QgdHJhY2ssIHVpbnQ4X3Qgc2VjdCkKK3sKKyAgICB1aW50MzJfdCBzZWN0b3I7CisgICAg aW50IHJldDsKKworICAgIGlmICh0cmFjayA+IGRydi0+bWF4X3RyYWNrIHx8CisgICAgICAg IChoZWFkICE9IDAgJiYgKGRydi0+ZmxhZ3MgJiBGRElTS19EQkxfU0lERVMpID09IDApKSB7 CisgICAgICAgIEZMT1BQWV9EUFJJTlRGKCJ0cnkgdG8gcmVhZCAlZCAlMDJ4ICUwMnggKG1h eD0lZCAlZCAlMDJ4ICUwMngpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICBoZWFkLCB0 cmFjaywgc2VjdCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgKGRydi0+ZmxhZ3MgJiBG RElTS19EQkxfU0lERVMpID09IDAgPyAwIDogMSwKKyAgICAgICAgICAgICAgICAgICAgICAg ZHJ2LT5tYXhfdHJhY2ssIGRydi0+bGFzdF9zZWN0KTsKKyAgICAgICAgZmRjdHJsLT5zdGF0 dXMwIHw9IEZEX1NSMF9BQk5URVJNOworICAgICAgICByZXR1cm4gMjsKKyAgICB9CisgICAg aWYgKHNlY3QgPiBkcnYtPmxhc3Rfc2VjdCkgeworICAgICAgICBGTE9QUFlfRFBSSU5URigi dHJ5IHRvIHJlYWQgJWQgJTAyeCAlMDJ4IChtYXg9JWQgJWQgJTAyeCAlMDJ4KVxuIiwKKyAg ICAgICAgICAgICAgICAgICAgICAgaGVhZCwgdHJhY2ssIHNlY3QsIDEsCisgICAgICAgICAg ICAgICAgICAgICAgIChkcnYtPmZsYWdzICYgRkRJU0tfREJMX1NJREVTKSA9PSAwID8gMCA6 IDEsCisgICAgICAgICAgICAgICAgICAgICAgIGRydi0+bWF4X3RyYWNrLCBkcnYtPmxhc3Rf c2VjdCk7CisgICAgICAgIGZkY3RybC0+c3RhdHVzMCB8PSBGRF9TUjBfQUJOVEVSTTsKKyAg ICAgICAgZmRjdHJsLT5zdGF0dXMxIHw9IEZEX1NSMV9FQzsKKyAgICAgICAgcmV0dXJuIDM7 CisgICAgfQorICAgIHNlY3RvciA9IF9mZF9zZWN0b3IoaGVhZCwgdHJhY2ssIHNlY3QsIGRy di0+bGFzdF9zZWN0KTsKKyAgICByZXQgPSAwOworI2lmIDAKKyAgICBpZiAoIShmZGN0cmwt PmNvbmZpZyAmIEZEX0NPTkZJR19FSVMpICYmIChoZWFkICE9IGRydi0+aGVhZCB8fCB0cmFj ayAhPSBkcnYtPnRyYWNrKSkgeworICAgICAgICBGTE9QUFlfRVJST1IoIm5vIGltcGxpY2l0 IHNlZWsgJWQgJTAyeCAlMDJ4IChjdXJyZW50PSVkICUwMnggJTAyeCwgbWF4PSVkICUwMngg JTAyeClcbiIsCisgICAgICAgICAgICAgICAgICAgICBoZWFkLCB0cmFjaywgc2VjdCwKKyAg ICAgICAgICAgICAgICAgICAgIGRydi0+aGVhZCwgZHJ2LT50cmFjaywgZHJ2LT5zZWN0LAor ICAgICAgICAgICAgICAgICAgICAgMSwgZHJ2LT5tYXhfdHJhY2ssIGRydi0+bGFzdF9zZWN0 KTsKKyAgICAgICAgZmRjdHJsLT5zdGF0dXMwIHw9IEZEX1NSMF9BQk5URVJNOworICAgICAg ICByZXR1cm4gNDsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoc2VjdG9yICE9IGZkX3NlY3Rv cihkcnYpKSB7CisgICAgICAgIGRydi0+aGVhZCA9IGhlYWQ7CisgICAgICAgIGlmIChkcnYt PnRyYWNrICE9IHRyYWNrKQorICAgICAgICAgICAgcmV0ID0gMTsKKyAgICAgICAgZHJ2LT50 cmFjayA9IHRyYWNrOworICAgICAgICBkcnYtPnNlY3QgPSBzZWN0OworICAgIH0KKworICAg IGZkY3RybC0+c3RhdHVzMCB8PSBGRF9TUjBfU0VFSzsKKyAgICByZXR1cm4gcmV0OworfQor CiBzdGF0aWMgdWludDMyX3QgZmRjdHJsX3JlYWQgKHZvaWQgKm9wYXF1ZSwgdWludDMyX3Qg cmVnKQogewogICAgIGZkY3RybF90ICpmZGN0cmwgPSBvcGFxdWU7CkBAIC03MzksMjEgKzc0 NCwxOSBAQA0KICAgICBmZGN0cmwtPnNyYSAmPSB+RkRfU1JBX0lOVFBFTkQ7CiB9CiAKLXN0 YXRpYyB2b2lkIGZkY3RybF9yYWlzZV9pcnEgKGZkY3RybF90ICpmZGN0cmwsIHVpbnQ4X3Qg c3RhdHVzMCkKK3N0YXRpYyB2b2lkIGZkY3RybF9yYWlzZV9pcnEgKGZkY3RybF90ICpmZGN0 cmwpCiB7CiAgICAgLyogU3BhcmMgbXV0YXRpb24gKi8KICAgICBpZiAoZmRjdHJsLT5zdW40 bSAmJiAoZmRjdHJsLT5tc3IgJiBGRF9NU1JfQ01EQlVTWSkpIHsKICAgICAgICAgLyogWFhY OiBub3Qgc3VyZSAqLwogICAgICAgICBmZGN0cmwtPm1zciAmPSB+RkRfTVNSX0NNREJVU1k7 CiAgICAgICAgIGZkY3RybC0+bXNyIHw9IEZEX01TUl9SUU0gfCBGRF9NU1JfRElPOwotICAg ICAgICBmZGN0cmwtPnN0YXR1czAgPSBzdGF0dXMwOwogICAgICAgICByZXR1cm47CiAgICAg fQogICAgIGlmICghKGZkY3RybC0+c3JhICYgRkRfU1JBX0lOVFBFTkQpKSB7CiAgICAgICAg IHFlbXVfc2V0X2lycShmZGN0cmwtPmlycSwgMSk7CiAgICAgICAgIGZkY3RybC0+c3JhIHw9 IEZEX1NSQV9JTlRQRU5EOwogICAgIH0KLSAgICBmZGN0cmwtPnN0YXR1czAgPSBzdGF0dXMw OwogICAgIEZMT1BQWV9EUFJJTlRGKCJTZXQgaW50ZXJydXB0IHN0YXR1cyB0byAweCUwMnhc biIsIGZkY3RybC0+c3RhdHVzMCk7CiB9CiAKQEAgLTc4Miw3ICs3ODUsOCBAQA0KICAgICAg ICAgZmRfcmVjYWxpYnJhdGUoJmZkY3RybC0+ZHJpdmVzW2ldKTsKICAgICBmZGN0cmxfcmVz ZXRfZmlmbyhmZGN0cmwpOwogICAgIGlmIChkb19pcnEpIHsKLSAgICAgICAgZmRjdHJsX3Jh aXNlX2lycShmZGN0cmwsIEZEX1NSMF9SRFlDSEcpOworICAgICAgICBmZGN0cmwtPnN0YXR1 czAgfD0gRkRfU1IwX1JEWUNIRzsKKyAgICAgICAgZmRjdHJsX3JhaXNlX2lycShmZGN0cmwp OwogICAgIH0KIH0KIApAQCAtODE5LDcgKzgyMyw3IEBADQogCiBzdGF0aWMgZmRyaXZlX3Qg KmdldF9jdXJfZHJ2IChmZGN0cmxfdCAqZmRjdHJsKQogewotICAgIHN3aXRjaCAoZmRjdHJs LT5jdXJfZHJ2KSB7CisgICAgc3dpdGNoIChHRVRfQ1VSX0RSVihmZGN0cmwpKSB7CiAgICAg ICAgIGNhc2UgMDogcmV0dXJuIGRydjAoZmRjdHJsKTsKICAgICAgICAgY2FzZSAxOiByZXR1 cm4gZHJ2MShmZGN0cmwpOwogI2lmIE1BWF9GRCA9PSA0CkBAIC0xMDA1LDcgKzEwMDksNyBA QA0KICAgICBmZGN0cmwtPmRhdGFfcG9zID0gMDsKICAgICBmZGN0cmwtPm1zciB8PSBGRF9N U1JfQ01EQlVTWSB8IEZEX01TUl9SUU0gfCBGRF9NU1JfRElPOwogICAgIGlmIChkb19pcnEp Ci0gICAgICAgIGZkY3RybF9yYWlzZV9pcnEoZmRjdHJsLCAweDAwKTsKKyAgICAgICAgZmRj dHJsX3JhaXNlX2lycShmZGN0cmwpOwogfQogCiAvKiBTZXQgYW4gZXJyb3I6IHVuaW1wbGVt ZW50ZWQvdW5rbm93biBjb21tYW5kICovCkBAIC0xMDM0LDExICsxMDM4LDEzIEBADQogICAg ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBjdXJfZHJ2LT5oZWFkID0gMDsK ICAgICAgICAgICAgICAgICBjdXJfZHJ2LT50cmFjaysrOworICAgICAgICAgICAgICAgIGZk Y3RybC0+c3RhdHVzMCB8PSBGRF9TUjBfU0VFSzsKICAgICAgICAgICAgICAgICBpZiAoKGN1 cl9kcnYtPmZsYWdzICYgRkRJU0tfREJMX1NJREVTKSA9PSAwKQogICAgICAgICAgICAgICAg ICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIHsKICAgICAg ICAgICAgIGN1cl9kcnYtPnRyYWNrKys7CisgICAgICAgICAgICBmZGN0cmwtPnN0YXR1czAg fD0gRkRfU1IwX1NFRUs7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAg ICAgICBGTE9QUFlfRFBSSU5URigic2VlayB0byBuZXh0IHRyYWNrICglZCAlMDJ4ICUwMngg PT4gJWQpXG4iLApAQCAtMTA1MSwxOCArMTA1NywyMSBAQA0KIH0KIAogLyogQ2FsbGJhY2sg Zm9yIHRyYW5zZmVyIGVuZCAoc3RvcCBvciBhYm9ydCkgKi8KLXN0YXRpYyB2b2lkIGZkY3Ry bF9zdG9wX3RyYW5zZmVyIChmZGN0cmxfdCAqZmRjdHJsLCB1aW50OF90IHN0YXR1czAsCi0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCBzdGF0dXMxLCB1aW50 OF90IHN0YXR1czIpCitzdGF0aWMgdm9pZCBmZGN0cmxfc3RvcF90cmFuc2ZlciAoZmRjdHJs X3QgKmZkY3RybCkKIHsKICAgICBmZHJpdmVfdCAqY3VyX2RydjsKKyAgICB1aW50OF90IHN0 YXR1czAgPSBmZGN0cmwtPnN0YXR1czA7CiAKICAgICBjdXJfZHJ2ID0gZ2V0X2N1cl9kcnYo ZmRjdHJsKTsKKyAgICAvKiBBZGQgaGVhZCBhbmQgZHJpdmUgdG8gc3RhdHVzMCAqLworICAg IHN0YXR1czAgfD0gKGN1cl9kcnYtPmhlYWQgPDwgMikgfCBHRVRfQ1VSX0RSVihmZGN0cmwp OworCiAgICAgRkxPUFBZX0RQUklOVEYoInRyYW5zZmVyIHN0YXR1czogJTAyeCAlMDJ4ICUw MnggKCUwMngpXG4iLAotICAgICAgICAgICAgICAgICAgIHN0YXR1czAsIHN0YXR1czEsIHN0 YXR1czIsCi0gICAgICAgICAgICAgICAgICAgc3RhdHVzMCB8IChjdXJfZHJ2LT5oZWFkIDw8 IDIpIHwgR0VUX0NVUl9EUlYoZmRjdHJsKSk7Ci0gICAgZmRjdHJsLT5maWZvWzBdID0gc3Rh dHVzMCB8IChjdXJfZHJ2LT5oZWFkIDw8IDIpIHwgR0VUX0NVUl9EUlYoZmRjdHJsKTsKLSAg ICBmZGN0cmwtPmZpZm9bMV0gPSBzdGF0dXMxOwotICAgIGZkY3RybC0+Zmlmb1syXSA9IHN0 YXR1czI7CisgICAgICAgICAgICAgICAgICAgZmRjdHJsLT5zdGF0dXMwLCBmZGN0cmwtPnN0 YXR1czEsIGZkY3RybC0+c3RhdHVzMiwKKyAgICAgICAgICAgICAgICAgICBzdGF0dXMwKTsK KyAgICBmZGN0cmwtPmZpZm9bMF0gPSBzdGF0dXMwOworICAgIGZkY3RybC0+Zmlmb1sxXSA9 IGZkY3RybC0+c3RhdHVzMTsKKyAgICBmZGN0cmwtPmZpZm9bMl0gPSBmZGN0cmwtPnN0YXR1 czI7CiAgICAgZmRjdHJsLT5maWZvWzNdID0gY3VyX2Rydi0+dHJhY2s7CiAgICAgZmRjdHJs LT5maWZvWzRdID0gY3VyX2Rydi0+aGVhZDsKICAgICBmZGN0cmwtPmZpZm9bNV0gPSBjdXJf ZHJ2LT5zZWN0OwpAQCAtMTA4MSw3ICsxMDkwLDYgQEANCiB7CiAgICAgZmRyaXZlX3QgKmN1 cl9kcnY7CiAgICAgdWludDhfdCBraCwga3QsIGtzOwotICAgIGludCBkaWRfc2VlayA9IDA7 CiAKICAgICBTRVRfQ1VSX0RSVihmZGN0cmwsIGZkY3RybC0+Zmlmb1sxXSAmIEZEX0RPUl9T RUxNQVNLKTsKICAgICBjdXJfZHJ2ID0gZ2V0X2N1cl9kcnYoZmRjdHJsKTsKQEAgLTEwOTEs MzEgKzEwOTksMjAgQEANCiAgICAgRkxPUFBZX0RQUklOVEYoIlN0YXJ0IHRyYW5zZmVyIGF0 ICVkICVkICUwMnggJTAyeCAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgIEdFVF9DVVJf RFJWKGZkY3RybCksIGtoLCBrdCwga3MsCiAgICAgICAgICAgICAgICAgICAgX2ZkX3NlY3Rv cihraCwga3QsIGtzLCBjdXJfZHJ2LT5sYXN0X3NlY3QpKTsKLSAgICBzd2l0Y2ggKGZkX3Nl ZWsoY3VyX2Rydiwga2gsIGt0LCBrcywgZmRjdHJsLT5jb25maWcgJiBGRF9DT05GSUdfRUlT KSkgeworICAgIHN3aXRjaCAoZmRfc2VlayhmZGN0cmwsIGN1cl9kcnYsIGtoLCBrdCwga3Mp KSB7CisgICAgY2FzZSAwOgorICAgIGNhc2UgMToKKyAgICAgICAgLyogc3VjY2VzcyAqLwor ICAgICAgICBicmVhazsKICAgICBjYXNlIDI6Ci0gICAgICAgIC8qIHNlY3QgdG9vIGJpZyAq LwotICAgICAgICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwsIEZEX1NSMF9BQk5URVJN LCAweDAwLCAweDAwKTsKLSAgICAgICAgZmRjdHJsLT5maWZvWzNdID0ga3Q7Ci0gICAgICAg IGZkY3RybC0+Zmlmb1s0XSA9IGtoOwotICAgICAgICBmZGN0cmwtPmZpZm9bNV0gPSBrczsK LSAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgMzoKLSAgICAgICAgLyogdHJhY2sgdG9vIGJp ZyAqLwotICAgICAgICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwsIEZEX1NSMF9BQk5U RVJNLCBGRF9TUjFfRUMsIDB4MDApOwotICAgICAgICBmZGN0cmwtPmZpZm9bM10gPSBrdDsK LSAgICAgICAgZmRjdHJsLT5maWZvWzRdID0ga2g7Ci0gICAgICAgIGZkY3RybC0+Zmlmb1s1 XSA9IGtzOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSA0OgotICAgICAgICAvKiBObyBz ZWVrIGVuYWJsZWQgKi8KLSAgICAgICAgZmRjdHJsX3N0b3BfdHJhbnNmZXIoZmRjdHJsLCBG RF9TUjBfQUJOVEVSTSwgMHgwMCwgMHgwMCk7CisgICAgICAgIC8qIGVycm9yICovCisgICAg ICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCk7CiAgICAgICAgIGZkY3RybC0+Zmlm b1szXSA9IGt0OwogICAgICAgICBmZGN0cmwtPmZpZm9bNF0gPSBraDsKICAgICAgICAgZmRj dHJsLT5maWZvWzVdID0ga3M7CiAgICAgICAgIHJldHVybjsKLSAgICBjYXNlIDE6Ci0gICAg ICAgIGRpZF9zZWVrID0gMTsKLSAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg ICAgYnJlYWs7CiAgICAgfQpAQCAtMTEyOCwxMCArMTEyNSw2IEBADQogICAgICAgICBmZGN0 cmwtPmRhdGFfc3RhdGUgfD0gRkRfU1RBVEVfTVVMVEk7CiAgICAgZWxzZQogICAgICAgICBm ZGN0cmwtPmRhdGFfc3RhdGUgJj0gfkZEX1NUQVRFX01VTFRJOwotICAgIGlmIChkaWRfc2Vl aykKLSAgICAgICAgZmRjdHJsLT5kYXRhX3N0YXRlIHw9IEZEX1NUQVRFX1NFRUs7Ci0gICAg ZWxzZQotICAgICAgICBmZGN0cmwtPmRhdGFfc3RhdGUgJj0gfkZEX1NUQVRFX1NFRUs7CiAg ICAgaWYgKGZkY3RybC0+Zmlmb1s1XSA9PSAwMCkgewogICAgICAgICBmZGN0cmwtPmRhdGFf bGVuID0gZmRjdHJsLT5maWZvWzhdOwogICAgIH0gZWxzZSB7CkBAIC0xMTczLDcgKzExNjYs NyBAQA0KICAgICBpZiAoZGlyZWN0aW9uICE9IEZEX0RJUl9XUklURSkKICAgICAgICAgZmRj dHJsLT5tc3IgfD0gRkRfTVNSX0RJTzsKICAgICAvKiBJTyBiYXNlZCB0cmFuc2ZlcjogY2Fs Y3VsYXRlIGxlbiAqLwotICAgIGZkY3RybF9yYWlzZV9pcnEoZmRjdHJsLCAweDAwKTsKKyAg ICBmZGN0cmxfcmFpc2VfaXJxKGZkY3RybCk7CiAKICAgICByZXR1cm47CiB9CkBAIC0xMTg2 LDcgKzExNzksOCBAQA0KICAgICAvKiBXZSBkb24ndCBoYW5kbGUgZGVsZXRlZCBkYXRhLAog ICAgICAqIHNvIHdlIGRvbid0IHJldHVybiAqQU5ZVEhJTkcqCiAgICAgICovCi0gICAgZmRj dHJsX3N0b3BfdHJhbnNmZXIoZmRjdHJsLCBGRF9TUjBfQUJOVEVSTSB8IEZEX1NSMF9TRUVL LCAweDAwLCAweDAwKTsKKyAgICBmZGN0cmwtPnN0YXR1czAgfD0gRkRfU1IwX0FCTlRFUk07 CisgICAgZmRjdHJsX3N0b3BfdHJhbnNmZXIoZmRjdHJsKTsKIH0KIAogLyogaGFuZGxlcnMg Zm9yIERNQSB0cmFuc2ZlcnMgKi8KQEAgLTExOTYsNyArMTE5MCw2IEBADQogICAgIGZkY3Ry bF90ICpmZGN0cmw7CiAgICAgZmRyaXZlX3QgKmN1cl9kcnY7CiAgICAgaW50IGxlbiwgc3Rh cnRfcG9zLCByZWxfcG9zOwotICAgIHVpbnQ4X3Qgc3RhdHVzMCA9IDB4MDAsIHN0YXR1czEg PSAweDAwLCBzdGF0dXMyID0gMHgwMDsKIAogICAgIGZkY3RybCA9IG9wYXF1ZTsKICAgICBp ZiAoZmRjdHJsLT5tc3IgJiBGRF9NU1JfUlFNKSB7CkBAIC0xMjA0LDE2ICsxMTk3LDExIEBA DQogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgY3VyX2RydiA9IGdldF9jdXJfZHJ2 KGZkY3RybCk7Ci0gICAgaWYgKGZkY3RybC0+ZGF0YV9kaXIgPT0gRkRfRElSX1NDQU5FIHx8 IGZkY3RybC0+ZGF0YV9kaXIgPT0gRkRfRElSX1NDQU5MIHx8Ci0gICAgICAgIGZkY3RybC0+ ZGF0YV9kaXIgPT0gRkRfRElSX1NDQU5IKQotICAgICAgICBzdGF0dXMyID0gRkRfU1IyX1NO UzsKICAgICBpZiAoZG1hX2xlbiA+IGZkY3RybC0+ZGF0YV9sZW4pCiAgICAgICAgIGRtYV9s ZW4gPSBmZGN0cmwtPmRhdGFfbGVuOwogICAgIGlmIChjdXJfZHJ2LT5icyA9PSBOVUxMKSB7 Ci0gICAgICAgIGlmIChmZGN0cmwtPmRhdGFfZGlyID09IEZEX0RJUl9XUklURSkKLSAgICAg ICAgICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCwgRkRfU1IwX0FCTlRFUk0gfCBG RF9TUjBfU0VFSywgMHgwMCwgMHgwMCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGZk Y3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCwgRkRfU1IwX0FCTlRFUk0sIDB4MDAsIDB4MDAp OworICAgICAgICBmZGN0cmwtPnN0YXR1czAgfD0gRkRfU1IwX0FCTlRFUk07CisgICAgICAg IGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCk7CiAgICAgICAgIGxlbiA9IDA7CiAgICAg ICAgIGdvdG8gdHJhbnNmZXJfZXJyb3I7CiAgICAgfQpAQCAtMTI1MSw3ICsxMjM5LDggQEAN CiAgICAgICAgICAgICBpZiAoYmRydl93cml0ZShjdXJfZHJ2LT5icywgZmRfc2VjdG9yKGN1 cl9kcnYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRjdHJsLT5maWZvLCAxKSA8 IDApIHsKICAgICAgICAgICAgICAgICBGTE9QUFlfRVJST1IoIndyaXRpbmcgc2VjdG9yICVk XG4iLCBmZF9zZWN0b3IoY3VyX2RydikpOwotICAgICAgICAgICAgICAgIGZkY3RybF9zdG9w X3RyYW5zZmVyKGZkY3RybCwgRkRfU1IwX0FCTlRFUk0gfCBGRF9TUjBfU0VFSywgMHgwMCwg MHgwMCk7CisgICAgICAgICAgICAgICAgZmRjdHJsLT5zdGF0dXMwIHw9IEZEX1NSMF9BQk5U RVJNOworICAgICAgICAgICAgICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCk7CiAg ICAgICAgICAgICAgICAgZ290byB0cmFuc2Zlcl9lcnJvcjsKICAgICAgICAgICAgIH0KICAg ICAgICAgICAgIGJyZWFrOwpAQCAtMTI2MywxNCArMTI1MiwxNiBAQA0KICAgICAgICAgICAg ICAgICBETUFfcmVhZF9tZW1vcnkgKG5jaGFuLCB0bXBidWYsIGZkY3RybC0+ZGF0YV9wb3Ms IGxlbik7CiAgICAgICAgICAgICAgICAgcmV0ID0gbWVtY21wKHRtcGJ1ZiwgZmRjdHJsLT5m aWZvICsgcmVsX3BvcywgbGVuKTsKICAgICAgICAgICAgICAgICBpZiAocmV0ID09IDApIHsK LSAgICAgICAgICAgICAgICAgICAgc3RhdHVzMiA9IEZEX1NSMl9TRUg7CisgICAgICAgICAg ICAgICAgICAgIGZkY3RybC0+c3RhdHVzMiB8PSBGRF9TUjJfU0VIOworICAgICAgICAgICAg ICAgICAgICBmZGN0cmwtPnN0YXR1czIgJj0gfkZEX1NSMl9TTlM7CiAgICAgICAgICAgICAg ICAgICAgIGdvdG8gZW5kX3RyYW5zZmVyOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg ICAgICAgICBpZiAoKHJldCA8IDAgJiYgZmRjdHJsLT5kYXRhX2RpciA9PSBGRF9ESVJfU0NB TkwpIHx8CiAgICAgICAgICAgICAgICAgICAgIChyZXQgPiAwICYmIGZkY3RybC0+ZGF0YV9k aXIgPT0gRkRfRElSX1NDQU5IKSkgewotICAgICAgICAgICAgICAgICAgICBzdGF0dXMyID0g MHgwMDsKKyAgICAgICAgICAgICAgICAgICAgZmRjdHJsLT5zdGF0dXMyICY9IH5GRF9TUjJf U05TOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZF90cmFuc2ZlcjsKICAgICAgICAg ICAgICAgICB9CisgICAgICAgICAgICAgICAgZmRjdHJsLT5zdGF0dXMyIHw9IEZEX1NSMl9T TlM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAt MTI4NiwxNCArMTI3Nyw4IEBADQogICAgIGxlbiA9IGZkY3RybC0+ZGF0YV9wb3MgLSBzdGFy dF9wb3M7CiAgICAgRkxPUFBZX0RQUklOVEYoImVuZCB0cmFuc2ZlciAlZCAlZCAlZFxuIiwK ICAgICAgICAgICAgICAgICAgICBmZGN0cmwtPmRhdGFfcG9zLCBsZW4sIGZkY3RybC0+ZGF0 YV9sZW4pOwotICAgIGlmIChmZGN0cmwtPmRhdGFfZGlyID09IEZEX0RJUl9TQ0FORSB8fAot ICAgICAgICBmZGN0cmwtPmRhdGFfZGlyID09IEZEX0RJUl9TQ0FOTCB8fAotICAgICAgICBm ZGN0cmwtPmRhdGFfZGlyID09IEZEX0RJUl9TQ0FOSCkKLSAgICAgICAgc3RhdHVzMiA9IEZE X1NSMl9TRUg7Ci0gICAgaWYgKEZEX0RJRF9TRUVLKGZkY3RybC0+ZGF0YV9zdGF0ZSkpCi0g ICAgICAgIHN0YXR1czAgfD0gRkRfU1IwX1NFRUs7CiAgICAgZmRjdHJsLT5kYXRhX2xlbiAt PSBsZW47Ci0gICAgZmRjdHJsX3N0b3BfdHJhbnNmZXIoZmRjdHJsLCBzdGF0dXMwLCBzdGF0 dXMxLCBzdGF0dXMyKTsKKyAgICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwpOwogIHRy YW5zZmVyX2Vycm9yOgogCiAgICAgcmV0dXJuIGxlbjsKQEAgLTEzMjIsNyArMTMwNyw4IEBA DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZF9zZWN0b3IoY3VyX2Ry dikpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICBpZiAoYmRydl9yZWFkKGN1cl9kcnYtPmJzLCBmZF9zZWN0b3IoY3Vy X2RydiksIGZkY3RybC0+ZmlmbywgMSkgPCAwKSB7CisgICAgICAgICAgICBpZiAoY3VyX2Ry di0+YnMgPT0gTlVMTCB8fAorICAgICAgICAgICAgICAgIGJkcnZfcmVhZChjdXJfZHJ2LT5i cywgZmRfc2VjdG9yKGN1cl9kcnYpLCBmZGN0cmwtPmZpZm8sIDEpIDwgMCkgewogICAgICAg ICAgICAgICAgIEZMT1BQWV9EUFJJTlRGKCJlcnJvciBnZXR0aW5nIHNlY3RvciAlZFxuIiwK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZF9zZWN0b3IoY3VyX2RydikpOwog ICAgICAgICAgICAgICAgIC8qIFN1cmUsIGltYWdlIHNpemUgaXMgdG9vIHNtYWxsLi4uICov CkBAIC0xMzM3LDcgKzEzMjMsNyBAQA0KICAgICAgICAgICogdGhlbiBmcm9tIHN0YXR1cyBt b2RlIHRvIGNvbW1hbmQgbW9kZQogICAgICAgICAgKi8KICAgICAgICAgaWYgKGZkY3RybC0+ bXNyICYgRkRfTVNSX05PTkRNQSkgewotICAgICAgICAgICAgZmRjdHJsX3N0b3BfdHJhbnNm ZXIoZmRjdHJsLCBGRF9TUjBfU0VFSywgMHgwMCwgMHgwMCk7CisgICAgICAgICAgICBmZGN0 cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg ICAgZmRjdHJsX3Jlc2V0X2ZpZm8oZmRjdHJsKTsKICAgICAgICAgICAgIGZkY3RybF9yZXNl dF9pcnEoZmRjdHJsKTsKQEAgLTEzNjEsMzEgKzEzNDcsMjAgQEANCiAgICAgRkxPUFBZX0RQ UklOVEYoImZvcm1hdCBzZWN0b3IgYXQgJWQgJWQgJTAyeCAlMDJ4ICglZClcbiIsCiAgICAg ICAgICAgICAgICAgICAgR0VUX0NVUl9EUlYoZmRjdHJsKSwga2gsIGt0LCBrcywKICAgICAg ICAgICAgICAgICAgICBfZmRfc2VjdG9yKGtoLCBrdCwga3MsIGN1cl9kcnYtPmxhc3Rfc2Vj dCkpOwotICAgIHN3aXRjaCAoZmRfc2VlayhjdXJfZHJ2LCBraCwga3QsIGtzLCBmZGN0cmwt PmNvbmZpZyAmIEZEX0NPTkZJR19FSVMpKSB7CisgICAgc3dpdGNoIChmZF9zZWVrKGZkY3Ry bCwgY3VyX2Rydiwga2gsIGt0LCBrcykpIHsKKyAgICBjYXNlIDA6CisgICAgY2FzZSAxOgor ICAgICAgICAvKiBzdWNjZXNzICovCisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgMjoKLSAg ICAgICAgLyogc2VjdCB0b28gYmlnICovCi0gICAgICAgIGZkY3RybF9zdG9wX3RyYW5zZmVy KGZkY3RybCwgRkRfU1IwX0FCTlRFUk0sIDB4MDAsIDB4MDApOwotICAgICAgICBmZGN0cmwt PmZpZm9bM10gPSBrdDsKLSAgICAgICAgZmRjdHJsLT5maWZvWzRdID0ga2g7Ci0gICAgICAg IGZkY3RybC0+Zmlmb1s1XSA9IGtzOwotICAgICAgICByZXR1cm47CiAgICAgY2FzZSAzOgot ICAgICAgICAvKiB0cmFjayB0b28gYmlnICovCi0gICAgICAgIGZkY3RybF9zdG9wX3RyYW5z ZmVyKGZkY3RybCwgRkRfU1IwX0FCTlRFUk0sIEZEX1NSMV9FQywgMHgwMCk7Ci0gICAgICAg IGZkY3RybC0+Zmlmb1szXSA9IGt0OwotICAgICAgICBmZGN0cmwtPmZpZm9bNF0gPSBraDsK LSAgICAgICAgZmRjdHJsLT5maWZvWzVdID0ga3M7Ci0gICAgICAgIHJldHVybjsKICAgICBj YXNlIDQ6Ci0gICAgICAgIC8qIE5vIHNlZWsgZW5hYmxlZCAqLwotICAgICAgICBmZGN0cmxf c3RvcF90cmFuc2ZlcihmZGN0cmwsIEZEX1NSMF9BQk5URVJNLCAweDAwLCAweDAwKTsKKyAg ICAgICAgLyogZXJyb3IgKi8KKyAgICAgICAgZmRjdHJsX3N0b3BfdHJhbnNmZXIoZmRjdHJs KTsKICAgICAgICAgZmRjdHJsLT5maWZvWzNdID0ga3Q7CiAgICAgICAgIGZkY3RybC0+Zmlm b1s0XSA9IGtoOwogICAgICAgICBmZGN0cmwtPmZpZm9bNV0gPSBrczsKICAgICAgICAgcmV0 dXJuOwotICAgIGNhc2UgMToKLSAgICAgICAgZmRjdHJsLT5kYXRhX3N0YXRlIHw9IEZEX1NU QVRFX1NFRUs7Ci0gICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFr OwogICAgIH0KQEAgLTEzOTMsMTUgKzEzNjgsMTMgQEANCiAgICAgaWYgKGN1cl9kcnYtPmJz ID09IE5VTEwgfHwKICAgICAgICAgYmRydl93cml0ZShjdXJfZHJ2LT5icywgZmRfc2VjdG9y KGN1cl9kcnYpLCBmZGN0cmwtPmZpZm8sIDEpIDwgMCkgewogICAgICAgICBGTE9QUFlfRVJS T1IoImZvcm1hdHRpbmcgc2VjdG9yICVkXG4iLCBmZF9zZWN0b3IoY3VyX2RydikpOwotICAg ICAgICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwsIEZEX1NSMF9BQk5URVJNIHwgRkRf U1IwX1NFRUssIDB4MDAsIDB4MDApOworICAgICAgICBmZGN0cmwtPnN0YXR1czAgfD0gRkRf U1IwX0FCTlRFUk07CisgICAgICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCk7CiAg ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGN1cl9kcnYtPnNlY3QgPT0gY3VyX2Rydi0+bGFz dF9zZWN0KSB7CiAgICAgICAgICAgICBmZGN0cmwtPmRhdGFfc3RhdGUgJj0gfkZEX1NUQVRF X0ZPUk1BVDsKICAgICAgICAgICAgIC8qIExhc3Qgc2VjdG9yIGRvbmUgKi8KLSAgICAgICAg ICAgIGlmIChGRF9ESURfU0VFSyhmZGN0cmwtPmRhdGFfc3RhdGUpKQotICAgICAgICAgICAg ICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCwgRkRfU1IwX1NFRUssIDB4MDAsIDB4 MDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZkY3RybF9zdG9wX3Ry YW5zZmVyKGZkY3RybCwgMHgwMCwgMHgwMCwgMHgwMCk7CisgICAgICAgICAgICBmZGN0cmxf c3RvcF90cmFuc2ZlcihmZGN0cmwpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg LyogTW9yZSB0byBkbyAqLwogICAgICAgICAgICAgZmRjdHJsLT5kYXRhX3BvcyA9IDA7CkBA IC0xNTEyLDcgKzE0ODUsOSBAQA0KIHsKICAgICBmZHJpdmVfdCAqY3VyX2RydiA9IGdldF9j dXJfZHJ2KGZkY3RybCk7CiAKLSAgICAvKiBYWFg6IHNob3VsZCBzZXQgbWFpbiBzdGF0dXMg cmVnaXN0ZXIgdG8gYnVzeSAqLworICAgIC8qIFNldCBtYWluIHN0YXR1cyByZWdpc3RlciB0 byBidXN5ICovCisgICAgZmRjdHJsLT5tc3IgJj0gfkZEX01TUl9SUU07CisKICAgICBjdXJf ZHJ2LT5oZWFkID0gKGZkY3RybC0+Zmlmb1sxXSA+PiAyKSAmIDE7CiAgICAgcWVtdV9tb2Rf dGltZXIoZmRjdHJsLT5yZXN1bHRfdGltZXIsCiAgICAgICAgICAgICAgICAgICAgcWVtdV9n ZXRfY2xvY2sodm1fY2xvY2spICsgKHRpY2tzX3Blcl9zZWMgLyA1MCkpOwpAQCAtMTUyOSw3 ICsxNTA0LDYgQEANCiAgICAgICAgIGZkY3RybC0+ZGF0YV9zdGF0ZSB8PSBGRF9TVEFURV9N VUxUSTsKICAgICBlbHNlCiAgICAgICAgIGZkY3RybC0+ZGF0YV9zdGF0ZSAmPSB+RkRfU1RB VEVfTVVMVEk7Ci0gICAgZmRjdHJsLT5kYXRhX3N0YXRlICY9IH5GRF9TVEFURV9TRUVLOwog ICAgIGN1cl9kcnYtPmJwcyA9CiAgICAgICAgIGZkY3RybC0+Zmlmb1syXSA+IDcgPyAxNjM4 NCA6IDEyOCA8PCBmZGN0cmwtPmZpZm9bMl07CiAjaWYgMApAQCAtMTU0NCw3ICsxNTE4LDcg QEANCiAgICAgICogdGhlIHNlY3RvciB3aXRoIHRoZSBzcGVjaWZpZWQgZmlsbCBieXRlCiAg ICAgICovCiAgICAgZmRjdHJsLT5kYXRhX3N0YXRlICY9IH5GRF9TVEFURV9GT1JNQVQ7Ci0g ICAgZmRjdHJsX3N0b3BfdHJhbnNmZXIoZmRjdHJsLCAweDAwLCAweDAwLCAweDAwKTsKKyAg ICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwpOwogfQogCiBzdGF0aWMgdm9pZCBmZGN0 cmxfaGFuZGxlX3NwZWNpZnkgKGZkY3RybF90ICpmZGN0cmwsIGludCBkaXJlY3Rpb24pCkBA IC0xNTg0LDIzICsxNTU4LDE2IEBADQogICAgIGZkX3JlY2FsaWJyYXRlKGN1cl9kcnYpOwog ICAgIGZkY3RybF9yZXNldF9maWZvKGZkY3RybCk7CiAgICAgLyogUmFpc2UgSW50ZXJydXB0 ICovCi0gICAgZmRjdHJsX3JhaXNlX2lycShmZGN0cmwsIEZEX1NSMF9TRUVLKTsKKyAgICBm ZGN0cmwtPnN0YXR1czAgfD0gRkRfU1IwX1NFRUs7CisgICAgZmRjdHJsX3JhaXNlX2lycShm ZGN0cmwpOwogfQogCiBzdGF0aWMgdm9pZCBmZGN0cmxfaGFuZGxlX3NlbnNlX2ludGVycnVw dF9zdGF0dXMgKGZkY3RybF90ICpmZGN0cmwsIGludCBkaXJlY3Rpb24pCiB7CiAgICAgZmRy aXZlX3QgKmN1cl9kcnYgPSBnZXRfY3VyX2RydihmZGN0cmwpOwogCi0jaWYgMAogICAgIGZk Y3RybC0+Zmlmb1swXSA9CiAgICAgICAgIGZkY3RybC0+c3RhdHVzMCB8IChjdXJfZHJ2LT5o ZWFkIDw8IDIpIHwgR0VUX0NVUl9EUlYoZmRjdHJsKTsKLSNlbHNlCi0gICAgLyogWFhYOiBz dGF0dXMwIGhhbmRsaW5nIGlzIGJyb2tlbiBmb3IgcmVhZC93cml0ZQotICAgICAgIGNvbW1h bmRzLCBzbyB3ZSBkbyB0aGlzIGhhY2suIEl0IHNob3VsZCBiZSBzdXBwcmVzc2VkCi0gICAg ICAgQVNBUCAqLwotICAgIGZkY3RybC0+Zmlmb1swXSA9Ci0gICAgICAgIEZEX1NSMF9TRUVL IHwgKGN1cl9kcnYtPmhlYWQgPDwgMikgfCBHRVRfQ1VSX0RSVihmZGN0cmwpOwotI2VuZGlm CiAgICAgZmRjdHJsLT5maWZvWzFdID0gY3VyX2Rydi0+dHJhY2s7CiAgICAgZmRjdHJsX3Nl dF9maWZvKGZkY3RybCwgMiwgMCk7CiAgICAgZmRjdHJsX3Jlc2V0X2lycShmZGN0cmwpOwpA QCAtMTYxNCwxMyArMTU4MSwxMyBAQA0KICAgICBTRVRfQ1VSX0RSVihmZGN0cmwsIGZkY3Ry bC0+Zmlmb1sxXSAmIEZEX0RPUl9TRUxNQVNLKTsKICAgICBjdXJfZHJ2ID0gZ2V0X2N1cl9k cnYoZmRjdHJsKTsKICAgICBmZGN0cmxfcmVzZXRfZmlmbyhmZGN0cmwpOwotICAgIGlmIChm ZGN0cmwtPmZpZm9bMl0gPiBjdXJfZHJ2LT5tYXhfdHJhY2spIHsKLSAgICAgICAgZmRjdHJs X3JhaXNlX2lycShmZGN0cmwsIEZEX1NSMF9BQk5URVJNIHwgRkRfU1IwX1NFRUspOwotICAg IH0gZWxzZSB7CisgICAgZmRjdHJsLT5zdGF0dXMwIHw9IEZEX1NSMF9TRUVLOworICAgIGlm IChmZGN0cmwtPmZpZm9bMl0gPiBjdXJfZHJ2LT5tYXhfdHJhY2spCisgICAgICAgIGZkY3Ry bC0+c3RhdHVzMCB8PSBGRF9TUjBfQUJOVEVSTTsKKyAgICBlbHNlCiAgICAgICAgIGN1cl9k cnYtPnRyYWNrID0gZmRjdHJsLT5maWZvWzJdOwotICAgICAgICAvKiBSYWlzZSBJbnRlcnJ1 cHQgKi8KLSAgICAgICAgZmRjdHJsX3JhaXNlX2lycShmZGN0cmwsIEZEX1NSMF9TRUVLKTsK LSAgICB9CisgICAgLyogUmFpc2UgSW50ZXJydXB0ICovCisgICAgZmRjdHJsX3JhaXNlX2ly cShmZGN0cmwpOwogfQogCiBzdGF0aWMgdm9pZCBmZGN0cmxfaGFuZGxlX3BlcnBlbmRpY3Vs YXJfbW9kZSAoZmRjdHJsX3QgKmZkY3RybCwgaW50IGRpcmVjdGlvbikKQEAgLTE2ODksNyAr MTY1Niw4IEBADQogICAgIH0KICAgICBmZGN0cmxfcmVzZXRfZmlmbyhmZGN0cmwpOwogICAg IC8qIFJhaXNlIEludGVycnVwdCAqLwotICAgIGZkY3RybF9yYWlzZV9pcnEoZmRjdHJsLCBG RF9TUjBfU0VFSyk7CisgICAgZmRjdHJsLT5zdGF0dXMwIHw9IEZEX1NSMF9TRUVLOworICAg IGZkY3RybF9yYWlzZV9pcnEoZmRjdHJsKTsKIH0KIAogc3RhdGljIHZvaWQgZmRjdHJsX2hh bmRsZV9yZWxhdGl2ZV9zZWVrX2luIChmZGN0cmxfdCAqZmRjdHJsLCBpbnQgZGlyZWN0aW9u KQpAQCAtMTcwNSw3ICsxNjczLDggQEANCiAgICAgfQogICAgIGZkY3RybF9yZXNldF9maWZv KGZkY3RybCk7CiAgICAgLyogUmFpc2UgSW50ZXJydXB0ICovCi0gICAgZmRjdHJsX3JhaXNl X2lycShmZGN0cmwsIEZEX1NSMF9TRUVLKTsKKyAgICBmZGN0cmwtPnN0YXR1czAgfD0gRkRf U1IwX1NFRUs7CisgICAgZmRjdHJsX3JhaXNlX2lycShmZGN0cmwpOwogfQogCiBzdGF0aWMg Y29uc3Qgc3RydWN0IHsKQEAgLTE3NzYsNyArMTc0NSw4IEBADQogICAgICAgICBpZiAocG9z ID09IEZEX1NFQ1RPUl9MRU4gLSAxIHx8CiAgICAgICAgICAgICBmZGN0cmwtPmRhdGFfcG9z ID09IGZkY3RybC0+ZGF0YV9sZW4pIHsKICAgICAgICAgICAgIGN1cl9kcnYgPSBnZXRfY3Vy X2RydihmZGN0cmwpOwotICAgICAgICAgICAgaWYgKGJkcnZfd3JpdGUoY3VyX2Rydi0+YnMs IGZkX3NlY3RvcihjdXJfZHJ2KSwgZmRjdHJsLT5maWZvLCAxKSA8IDApIHsKKyAgICAgICAg ICAgIGlmIChjdXJfZHJ2LT5icyA9PSBOVUxMIHx8CisgICAgICAgICAgICAgICAgYmRydl93 cml0ZShjdXJfZHJ2LT5icywgZmRfc2VjdG9yKGN1cl9kcnYpLCBmZGN0cmwtPmZpZm8sIDEp IDwgMCkgewogICAgICAgICAgICAgICAgIEZMT1BQWV9FUlJPUigid3JpdGluZyBzZWN0b3Ig JWRcbiIsIGZkX3NlY3RvcihjdXJfZHJ2KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwog ICAgICAgICAgICAgfQpAQCAtMTc5MCw3ICsxNzYwLDcgQEANCiAgICAgICAgICAqIHRoZW4g ZnJvbSBzdGF0dXMgbW9kZSB0byBjb21tYW5kIG1vZGUKICAgICAgICAgICovCiAgICAgICAg IGlmIChmZGN0cmwtPmRhdGFfcG9zID09IGZkY3RybC0+ZGF0YV9sZW4pCi0gICAgICAgICAg ICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwsIEZEX1NSMF9TRUVLLCAweDAwLCAweDAw KTsKKyAgICAgICAgICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCk7CiAgICAgICAg IHJldHVybjsKICAgICB9CiAgICAgaWYgKGZkY3RybC0+ZGF0YV9wb3MgPT0gMCkgewpAQCAt MTgxMSw2ICsxNzgxLDE1IEBADQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK KyAgICAgICAgaWYgKGZkY3RybC0+Zmlmb1swXSAhPSBGRF9DTURfU0VOU0VfSU5URVJSVVBU X1NUQVRVUykKKyAgICAgICAgeworICAgICAgICAgICAgLyogUmVzZXQgc3RhdHVzMCwgZXhj ZXB0IGZvciBTRU5TRV9JTlRFUlJVUFRfU1RBVFVTCisgICAgICAgICAgICAgKiB3aGljaCBy ZXR1cm5zIGl0ICovCisgICAgICAgICAgICBmZGN0cmwtPnN0YXR1czAgPSAwOworICAgICAg ICB9CisgICAgICAgIGZkY3RybC0+c3RhdHVzMSA9IDA7CisgICAgICAgIGZkY3RybC0+c3Rh dHVzMiA9IDA7CisKICAgICAgICAgcG9zID0gY29tbWFuZF90b19oYW5kbGVyW2ZkY3RybC0+ Zmlmb1swXSAmIDB4ZmZdOwogICAgICAgICBGTE9QUFlfRFBSSU5URigidHJlYXQgJXMgY29t bWFuZFxuIiwgaGFuZGxlcnNbcG9zXS5uYW1lKTsKICAgICAgICAgKCpoYW5kbGVyc1twb3Nd LmhhbmRsZXIpKGZkY3RybCwgaGFuZGxlcnNbcG9zXS5kaXJlY3Rpb24pOwpAQCAtMTgyOSw3 ICsxODA4LDcgQEANCiAgICAgaWYgKGN1cl9kcnYtPmxhc3Rfc2VjdCAhPSAwKSB7CiAgICAg ICAgIGN1cl9kcnYtPnNlY3QgPSAoY3VyX2Rydi0+c2VjdCAlIGN1cl9kcnYtPmxhc3Rfc2Vj dCkgKyAxOwogICAgIH0KLSAgICBmZGN0cmxfc3RvcF90cmFuc2ZlcihmZGN0cmwsIDB4MDAs IDB4MDAsIDB4MDApOworICAgIGZkY3RybF9zdG9wX3RyYW5zZmVyKGZkY3RybCk7CiB9CiAK IC8qIEluaXQgZnVuY3Rpb25zICovCg== --------------040404000600060908030503--