From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1X6eFh-0004hR-MH for ltp-list@lists.sourceforge.net; Mon, 14 Jul 2014 11:17:01 +0000 Received: from smtp110.iad3a.emailsrvr.com ([173.203.187.110]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.76) id 1X6eFe-0000G2-SN for ltp-list@lists.sourceforge.net; Mon, 14 Jul 2014 11:17:01 +0000 Date: Mon, 14 Jul 2014 16:29:43 +0530 (IST) From: shinto.john@smartplayin.com MIME-Version: 1.0 Content-Type: multipart/mixed;boundary="----=_20140714162943000000_87027" Message-ID: <1405335583.552821152@apps.rackspace.com> Subject: [LTP] NO .gcda files ERROR while running LCOV for LTP coverage List-Id: Linux Test Project General Discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-list-bounces@lists.sourceforge.net To: naresh.kamboju@linaro.org, Peter Oberparleiter Cc: ltp-list@lists.sourceforge.net, ltp-coverage@lists.sourceforge.net ------=_20140714162943000000_87027 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi Peter/Naresh/All,

=0A

 

=0A

Kernel version: 3.8.1= 3

=0A

I am sending this mail to get your valuable inputs regarding an is= sue i am facing while running LCOV as part of an LTP activity.

=0A

 

= =0A

Cur= rently i am working on LTP and GCOV integration on TI J6 board.

=0A

I have enab= led the GCOV in kernel using attached patch.

=0A

This patch works fine for Beag= le bone black with same kernel version 3.8.13 and coverage results are capt= ured for LTP.

=0A

 

=0A

Now in J6 i face below issue.

=0A

 

=0A

root@dra7xx-evm:/= home/coverage# lcov -c -o coverage.info
Auto-detecting gcov kernel sup= port.
Found upstream gcov kernel support at /sys/kernel/debug/gcov
Copying data to temporary directory /tmp/D5EuajnqI8
Capturing covera= ge data from /tmp/D5EuajnqI8
Found gcov version: 4.7.2
Scanning /= tmp/D5EuajnqI8 for .gcda files ...
geninfo: ERROR: no .gcda fi= les found in /tmp/D5EuajnqI8!

=0A

But when i checked /sys/= kernel/debug/gcov/, i could see .gcda and .gcno files in all the kernel fol= ders. for eg

=0A

ls -l /sys/kernel/debug/gcov/home/dattatraya.patil/dar7xx/boar= d-support/linux/kernel/wait.*

=0A

-rw-------    1 root &nbs= p;   root         &n= bsp;   0 Jan  1  1970 wait.gcda
lrwxrwxrwx &n= bsp;  1 root     root     = ;        0 Jan  1  1970 wait.g= cno -> /home/dattatraya.patil/dar7xx/board-support/linux/kernel/.tmp_wai= t.gcno

=0A

 

=0A

ls -l /home/dattatraya.patil/dar7xx/board-support= /linux/kernel/.tmp_wait.gcno
-rw-rw-r--    1 1001 =     1003         107= 48 Jul 14  2014 /home/dattatraya.patil/dar7xx/board-support/linux/kern= el/.tmp_wait.gcno

=0A

In /sys/kernel/debug/gcov  folder, the .= gcda and .gcno files looks empty with 0kb.

=0A

can you please share your valid= inputs to point out the possible issue?

=0A

 

=0A

Regards,

=0A

Shinto

=0A

 

<= /font> ------=_20140714162943000000_87027 Content-Type: text/x-patch;name="0001-GCOV-enabled-for-ARM-1.patch" Content-Transfer-Encoding: base64 Content-ID: <0001-GCOV-enabled-for-ARM-1.patch@1405335583.3313> Content-Disposition: attachment; filename="0001-GCOV-enabled-for-ARM-1.patch" RnJvbSAyMjgzMjM2MjdjN2MxNjI5NjgzOWJjZmI2NDNmOTk3NzIwMTA3M2QxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpEYXRlOiBXZWQsIDkgQXByIDIwMTQgMTY6MjM6NTggKzA1MzAKU3ViamVj dDogW1BBVENIXSBHQ09WIGVuYWJsZWQgZm9yIEFSTQoKCmRpZmYgLS1naXQgYS9hcmNoL2FybS9i b290L01ha2VmaWxlIGIvYXJjaC9hcm0vYm9vdC9NYWtlZmlsZQppbmRleCBiZWRjNjUxLi4zMzgy NmQ5IDEwMDY0NAotLS0gYS9hcmNoL2FybS9ib290L01ha2VmaWxlCisrKyBiL2FyY2gvYXJtL2Jv b3QvTWFrZWZpbGUKQEAgLTE0LDcgKzE0LDggQEAKIGlmbmVxICgkKE1BQ0hJTkUpLCkKIGluY2x1 ZGUgJChzcmN0cmVlKS8kKE1BQ0hJTkUpL01ha2VmaWxlLmJvb3QKIGVuZGlmCi0KCitHQ09WX1BS T0ZJTEUgOj0gbgogIyBOb3RlOiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgbXVzdCBhbHdheXMg YmUgdHJ1ZToKICMgICBaUkVMQUREUiA9PSB2aXJ0X3RvX3BoeXMoUEFHRV9PRkZTRVQgKyBURVhU X09GRlNFVCkKICMgICBQQVJBTVNfUEhZUyBtdXN0IGJlIHdpdGhpbiA0TUIgb2YgWlJFTEFERFIK ZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2Jvb3QvYm9vdHAvTWFrZWZpbGUgYi9hcmNoL2FybS9ib290 L2Jvb3RwL01ha2VmaWxlCmluZGV4IGMzOTRlMzAuLjk5YzUyMDEgMTAwNjQ0Ci0tLSBhL2FyY2gv YXJtL2Jvb3QvYm9vdHAvTWFrZWZpbGUKKysrIGIvYXJjaC9hcm0vYm9vdC9ib290cC9NYWtlZmls ZQpAQCAtNCw2ICs0LDcgQEAKICMgVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGJ5IHRoZSBnbG9iYWwg bWFrZWZpbGUgc28gdGhhdCB5b3UgY2FuIGFkZCB5b3VyIG93bgogIyBhcmNoaXRlY3R1cmUtc3Bl Y2lmaWMgZmxhZ3MgYW5kIGRlcGVuZGVuY2llcy4KICMKK0dDT1ZfUFJPRklMRSAgICAgICAgOj0g bgogCiBMREZMQUdTX2Jvb3RwCTo9LXAgLS1uby11bmRlZmluZWQgLVggXAogCQkgLS1kZWZzeW0g aW5pdHJkX3BoeXM9JChJTklUUkRfUEhZUykgXApkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vYm9vdC9j b21wcmVzc2VkL01ha2VmaWxlIGIvYXJjaC9hcm0vYm9vdC9jb21wcmVzc2VkL01ha2VmaWxlCmlu ZGV4IDVjYWQ4YTYuLjc0ZWVjYzIgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2Jvb3QvY29tcHJlc3Nl ZC9NYWtlZmlsZQorKysgYi9hcmNoL2FybS9ib290L2NvbXByZXNzZWQvTWFrZWZpbGUKQEAgLTIw LDEyICsyMCwxMCBAQCBpZmVxICgkKENPTkZJR19aQk9PVF9ST01fU0hfTU9CSUxFX1NESEkpLHkp CiBPQkpTCQkrPSBzZGhpLXNobW9iaWxlLm8KIE9CSlMJCSs9IHNkaGktc2g3MzcyLm8KIGVuZGlm Ci0KIEFGTEFHU19oZWFkLm8gKz0gLURURVhUX09GRlNFVD0kKFRFWFRfT0ZGU0VUKQogSEVBRAk9 IGhlYWQubwogT0JKUwkrPSBtaXNjLm8gZGVjb21wcmVzcy5vCiBGT05UQwk9ICQoc3JjdHJlZSkv ZHJpdmVycy92aWRlby9jb25zb2xlL2ZvbnRfYWNvcm5fOHg4LmMKLQogIyBzdHJpbmcgbGlicmFy eSBjb2RlICgtT3MgaXMgZW5mb3JjZWQgdG8ga2VlcCBpdCBtdWNoIHNtYWxsZXIpCiBPQkpTCQkr PSBzdHJpbmcubwogQ0ZMQUdTX3N0cmluZy5vCTo9IC1PcwpAQCAtMzMsNiArMzEsNyBAQCBDRkxB R1Nfc3RyaW5nLm8JOj0gLU9zCiBpZmVxICgkKENPTkZJR19BUk1fVklSVF9FWFQpLHkpCiBPQkpT CQkrPSBoeXAtc3R1Yi5vCiBlbmRpZgorR0NPVl9QUk9GSUxFICAgICAgICAgICAgICAgIDo9IG4K IAogIwogIyBBcmNoaXRlY3R1cmUgZGVwZW5kZW5jaWVzCmRpZmYgLS1naXQgYS9hcmNoL2FybS9i b290L2R0cy9NYWtlZmlsZSBiL2FyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlCmluZGV4IDlkYTAx NmYuLjJjZmI4N2EgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlCisrKyBi L2FyY2gvYXJtL2Jvb3QvZHRzL01ha2VmaWxlCkBAIC0xLDMgKzEsNiBAQAorCitHQ09WX1BST0ZJ TEUgOj0gbgogaWZlcSAoJChDT05GSUdfT0YpLHkpCiAKICMgS2VlcCBhdDkxIGR0YiBmaWxlcyBz b3J0ZWQgYWxwaGFiZXRpY2FsbHkgZm9yIGVhY2ggU29DCmRpZmYgLS1naXQgYS9hcmNoL2FybS9j b25maWdzL29tYXAycGx1c19kZWZjb25maWcgYi9hcmNoL2FybS9jb25maWdzL29tYXAycGx1c19k ZWZjb25maWcKaW5kZXggZDMyMmRlYy4uNTJiODVkOSAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY29u Zmlncy9vbWFwMnBsdXNfZGVmY29uZmlnCisrKyBiL2FyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVz X2RlZmNvbmZpZwpAQCAtMTY4LDcgKzE2OCwxMiBAQCBDT05GSUdfQ0xPTkVfQkFDS1dBUkRTPXkK IAogIwogIyBHQ09WLWJhc2VkIGtlcm5lbCBwcm9maWxpbmcKLSMKK0NPTkZJR19HQ09WX0tFUk5F TD15CitDT05GSUdfR0NPVl9QUk9GSUxFX0FMTD15CitDT05GSUdfR0NPVl9GT1JNQVRfQVVUT0RF VEVDVD15CitDT05GSUdfR0NPVl9GT1JNQVRfNF83PXkKK0NPTkZJR19HQ09WX1BST0M9eQorCiAj IENPTkZJR19HQ09WX0tFUk5FTCBpcyBub3Qgc2V0CiBDT05GSUdfSEFWRV9HRU5FUklDX0RNQV9D T0hFUkVOVD15CiBDT05GSUdfU0xBQklORk89eQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVk ZS9hc20vZWxmLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9lbGYuaAppbmRleCAzODA1MGIxLi40 MGMzY2ZlIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9lbGYuaAorKysgYi9hcmNo L2FybS9pbmNsdWRlL2FzbS9lbGYuaApAQCAtNTIsNiArNTIsNyBAQCB0eXBlZGVmIHN0cnVjdCB1 c2VyX2ZwIGVsZl9mcHJlZ3NldF90OwogI2RlZmluZSBSX0FSTV9BQlMzMgkJMgogI2RlZmluZSBS X0FSTV9DQUxMCQkyOAogI2RlZmluZSBSX0FSTV9KVU1QMjQJCTI5CisjZGVmaW5lIFJfQVJNX1RB UkdFVDEgICAgICAgICAgIDM4IAogI2RlZmluZSBSX0FSTV9WNEJYCQk0MAogI2RlZmluZSBSX0FS TV9QUkVMMzEJCTQyCiAjZGVmaW5lIFJfQVJNX01PVldfQUJTX05DCTQzCmRpZmYgLS1naXQgYS9h cmNoL2FybS9rZXJuZWwvTWFrZWZpbGUgYi9hcmNoL2FybS9rZXJuZWwvTWFrZWZpbGUKaW5kZXgg NWJiZWM3Yi4uMzQ3MzEzNyAxMDA2NDQKLS0tIGEvYXJjaC9hcm0va2VybmVsL01ha2VmaWxlCisr KyBiL2FyY2gvYXJtL2tlcm5lbC9NYWtlZmlsZQpAQCAtMTAsNyArMTAsOSBAQCBDRkxBR1NfUkVN T1ZFX2Z0cmFjZS5vID0gLXBnCiBDRkxBR1NfUkVNT1ZFX2luc24ubyA9IC1wZwogQ0ZMQUdTX1JF TU9WRV9wYXRjaC5vID0gLXBnCiBlbmRpZgotCgorR0NPVl9QUk9GSUxFIDo9IG4KIENGTEFHU19S RU1PVkVfcmV0dXJuX2FkZHJlc3MubyA9IC1wZwogCiAjIE9iamVjdCBmaWxlIGxpc3RzLgpkaWZm IC0tZ2l0IGEvYXJjaC9hcm0va2VybmVsL21vZHVsZS5jIGIvYXJjaC9hcm0va2VybmVsL21vZHVs ZS5jCmluZGV4IDFlOWJlNWQuLjcxNzJhMGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2tlcm5lbC9t b2R1bGUuYworKysgYi9hcmNoL2FybS9rZXJuZWwvbW9kdWxlLmMKQEAgLTg5LDYgKzg5LDcgQEAg YXBwbHlfcmVsb2NhdGUoRWxmMzJfU2hkciAqc2VjaGRycywgY29uc3QgY2hhciAqc3RydGFiLCB1 bnNpZ25lZCBpbnQgc3ltaW5kZXgsCiAJCQlicmVhazsKIAogCQljYXNlIFJfQVJNX0FCUzMyOgor ICAgICAgICAgICAgICAgIGNhc2UgUl9BUk1fVEFSR0VUMToKIAkJCSoodTMyICopbG9jICs9IHN5 bS0+c3RfdmFsdWU7CiAJCQlicmVhazsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hc20tZ2VuZXJp Yy92bWxpbnV4Lmxkcy5oIGIvaW5jbHVkZS9hc20tZ2VuZXJpYy92bWxpbnV4Lmxkcy5oCmluZGV4 IGQxZWE3Y2UuLjdjNTQ1M2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvYXNtLWdlbmVyaWMvdm1saW51 eC5sZHMuaAorKysgYi9pbmNsdWRlL2FzbS1nZW5lcmljL3ZtbGludXgubGRzLmgKQEAgLTQ3Myw3 ICs0NzMsNyBAQAogI2lmZGVmIENPTkZJR19DT05TVFJVQ1RPUlMKICNkZWZpbmUgS0VSTkVMX0NU T1JTKCkJLiA9IEFMSUdOKDgpOwkJCSAgIFwKIAkJCVZNTElOVVhfU1lNQk9MKF9fY3RvcnNfc3Rh cnQpID0gLjsgXAotCQkJKiguY3RvcnMpCQkJICAgXAorCQkJKihDT05GSUdfQ09OU1RSVUNUT1JT X05BTUUpCSAgIFwKIAkJCVZNTElOVVhfU1lNQk9MKF9fY3RvcnNfZW5kKSA9IC47CiAjZWxzZQog I2RlZmluZSBLRVJORUxfQ1RPUlMoKQpkaWZmIC0tZ2l0IGEvaW5pdC9LY29uZmlnIGIvaW5pdC9L Y29uZmlnCmluZGV4IGJlOGI3ZjUuLmZjNjY1ZjkgMTAwNjQ0Ci0tLSBhL2luaXQvS2NvbmZpZwor KysgYi9pbml0L0tjb25maWcKQEAgLTIwLDYgKzIwLDEyIEBAIGNvbmZpZyBDT05TVFJVQ1RPUlMK IAlib29sCiAJZGVwZW5kcyBvbiAhVU1MCiAKK2NvbmZpZyBDT05TVFJVQ1RPUlNfTkFNRQorICAg ICAgICBzdHJpbmcKKyAgICAgICAgZGVwZW5kcyBvbiBDT05TVFJVQ1RPUlMKKyAgICAgICAgZGVm YXVsdCAiLmluaXRfYXJyYXkiIGlmIEFSTSAmJiBBRUFCSQorICAgICAgICBkZWZhdWx0ICIuY3Rv cnMiIAorCiBjb25maWcgSEFWRV9JUlFfV09SSwogCWJvb2wKIAoKZGlmZiAtLWdpdCBhL2tlcm5l bC9nY292L0tjb25maWcgYi9rZXJuZWwvZ2Nvdi9LY29uZmlnCmluZGV4IGE5MjAyODEuLmNmNjZj NWMgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9nY292L0tjb25maWcKKysrIGIva2VybmVsL2djb3YvS2Nv bmZpZwpAQCAtMzUsNyArMzUsNyBAQCBjb25maWcgR0NPVl9LRVJORUwKIGNvbmZpZyBHQ09WX1BS T0ZJTEVfQUxMCiAJYm9vbCAiUHJvZmlsZSBlbnRpcmUgS2VybmVsIgogCWRlcGVuZHMgb24gR0NP Vl9LRVJORUwKLQlkZXBlbmRzIG9uIFNVUEVSSCB8fCBTMzkwIHx8IFg4NiB8fCAoUFBDICYmIEVY UEVSSU1FTlRBTCkgfHwgTUlDUk9CTEFaRQorCWRlcGVuZHMgb24gU1VQRVJIIHx8IFMzOTAgfHwg WDg2IHx8IFBQQyB8fCBNSUNST0JMQVpFIHx8IEFSTQogCWRlZmF1bHQgbgogCS0tLWhlbHAtLS0K IAlUaGlzIG9wdGlvbnMgYWN0aXZhdGVzIHByb2ZpbGluZyBmb3IgdGhlIGVudGlyZSBrZXJuZWwu CkBAIC00Niw0ICs0NiwzNCBAQCBjb25maWcgR0NPVl9QUk9GSUxFX0FMTAogCWxhcmdlciBhbmQg cnVuIHNsb3dlci4gQWxzbyBiZSBzdXJlIHRvIGV4Y2x1ZGUgZmlsZXMgZnJvbSBwcm9maWxpbmcK IAl3aGljaCBhcmUgbm90IGxpbmtlZCB0byB0aGUga2VybmVsIGltYWdlIHRvIHByZXZlbnQgbGlu a2VyIGVycm9ycy4KIAorY2hvaWNlCisJcHJvbXB0ICJTcGVjaWZ5IEdDT1YgZm9ybWF0IgorCWRl cGVuZHMgb24gR0NPVl9LRVJORUwKKwlkZWZhdWx0IEdDT1ZfRk9STUFUX0FVVE9ERVRFQ1QKKwkt LS1oZWxwLS0tCisJVGhlIGdjb3YgZm9ybWF0IGlzIHVzdWFsbHkgZGV0ZXJtaW5lZCBieSB0aGUg R0NDIHZlcnNpb24sIGJ1dCB0aGVyZSBhcmUKKwlleGNlcHRpb25zIHdoZXJlIGZvcm1hdCBjaGFu Z2VzIGFyZSBpbnRlZ3JhdGVkIGluIGxvd2VyLXZlcnNpb24gR0NDcy4KKwlJbiBzdWNoIGEgY2Fz ZSB1c2UgdGhpcyBvcHRpb24gdG8gYWRqdXN0IHRoZSBmb3JtYXQgdXNlZCBpbiB0aGUga2VybmVs CisJYWNjb3JkaW5nbHkuCisKKwlJZiB1bnN1cmUsIGNob29zZSAiQXV0b2RldGVjdCIuCisKK2Nv bmZpZyBHQ09WX0ZPUk1BVF9BVVRPREVURUNUCisJYm9vbCAiQXV0b2RldGVjdCIKKwktLS1oZWxw LS0tCisJU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHVzZSB0aGUgZm9ybWF0IHRoYXQgY29ycmVzcG9u ZHMgdG8geW91ciBHQ0MKKwl2ZXJzaW9uLgorCitjb25maWcgR0NPVl9GT1JNQVRfM180CisJYm9v bCAiR0NDIDMuNCBmb3JtYXQiCisJLS0taGVscC0tLQorCVNlbGVjdCB0aGlzIG9wdGlvbiB0byB1 c2UgdGhlIGZvcm1hdCBkZWZpbmVkIGJ5IEdDQyAzLjQuCisKK2NvbmZpZyBHQ09WX0ZPUk1BVF80 XzcKKwlib29sICJHQ0MgNC43IGZvcm1hdCIKKwktLS1oZWxwLS0tCisJU2VsZWN0IHRoaXMgb3B0 aW9uIHRvIHVzZSB0aGUgZm9ybWF0IGRlZmluZWQgYnkgR0NDIDQuNy4KKworZW5kY2hvaWNlCisK IGVuZG1lbnUKZGlmZiAtLWdpdCBhL2tlcm5lbC9nY292L01ha2VmaWxlIGIva2VybmVsL2djb3Yv TWFrZWZpbGUKaW5kZXggZTk3Y2E1OS4uNTJhYTdlOCAxMDA2NDQKLS0tIGEva2VybmVsL2djb3Yv TWFrZWZpbGUKKysrIGIva2VybmVsL2djb3YvTWFrZWZpbGUKQEAgLTEsMyArMSwzMyBAQAogY2Nm bGFncy15IDo9IC1EU1JDVFJFRT0nIiQoc3JjdHJlZSkiJyAtRE9CSlRSRUU9JyIkKG9ianRyZWUp IicKIAotb2JqLSQoQ09ORklHX0dDT1ZfS0VSTkVMKSA6PSBiYXNlLm8gZnMubyBnY2NfM180Lm8K KyMgaWYtbHQKKyMgVXNhZ2UgVkFSIDo9ICQoY2FsbCBpZi1sdCwgJChhKSwgJChiKSkKKyMgUmV0 dXJucyAxIGlmIChhIDwgYikKK2lmLWx0ID0gJChzaGVsbCBbICQoMSkgLWx0ICQoMikgXSAmJiBl Y2hvIDEpCisKK2lmZXEgKCQoQ09ORklHX0dDT1ZfRk9STUFUXzNfNCkseSkKKyAgY2MtdmVyIDo9 IDAzMDQKK2Vsc2UgaWZlcSAoJChDT05GSUdfR0NPVl9GT1JNQVRfNF83KSx5KQorICBjYy12ZXIg Oj0gMDQwNworZWxzZQorIyBVc2UgY2MtdmVyc2lvbiBpZiBhdmFpbGFibGUsIG90aGVyd2lzZSBz ZXQgMAorIworIyBzY3JpcHRzL0tidWlsZC5pbmNsdWRlLCB3aGljaCBjb250YWlucyBjYy12ZXJz aW9uIGZ1bmN0aW9uLCBpcyBub3QgaW5jbHVkZWQKKyMgZHVyaW5nIG1ha2UgY2xlYW4gIm1ha2Ug LWYgc2NyaXB0cy9NYWtlZmlsZS5jbGVhbiBvYmo9a2VybmVsL2djb3YiCisjIE1lYW5pbmcgY2Mt dmVyIGlzIGVtcHR5IGNhdXNpbmcgaWYtbHQgdGVzdCB0byBmYWlsIHdpdGgKKyMgIi9iaW4vc2g6 IGxpbmUgMDogWzogLWx0OiB1bmFyeSBvcGVyYXRvciBleHBlY3RlZCIgZXJyb3IgbWVzYWdlLgor IyBUaGlzIGhhcyBubyBhZmZlY3Qgb24gdGhlIGNsZWFuIHBoYXNlLCBidXQgdGhlIGVycm9yIG1l c3NhZ2UgY291bGQgYmUKKyMgY29uZnVzaW5nL2Fubm95aW5nLiBTbyB0aGlzIGR1bW15IHdvcmth cm91bmQgc2V0cyBjYy12ZXIgdG8gemVybyBpZiBjYy12ZXJzaW9uCisjIGlzIG5vdCBhdmFpbGFi bGUuIFdlIGNhbiBwcm9iYWJseSBtb3ZlIGlmLWx0IHRvIEtidWlsZC5pbmNsdWRlLCBzbyBpdCdz IGFsc28KKyMgbm90IGRlZmluZWQgZHVyaW5nIGNsZWFuIG9yIHRvIGluY2x1ZGUgS2J1aWxkLmlu Y2x1ZGUgaW4KKyMgc2NyaXB0cy9NYWtlZmlsZS5jbGVhbi4gQnV0IHRoZSBmb2xsb3dpbmcgd29y a2Fyb3VuZCBzZWVtcyBsZWFzdCBpbnZhc2l2ZS4KKyAgY2MtdmVyIDo9ICQoaWYgJChjYWxsIGNj LXZlcnNpb24pLCQoY2FsbCBjYy12ZXJzaW9uKSwwKQorZW5kaWYKKworb2JqLSQoQ09ORklHX0dD T1ZfS0VSTkVMKSA6PSBiYXNlLm8gZnMubworCitpZmVxICgkKGNhbGwgaWYtbHQsICQoY2MtdmVy KSwgMDQwNyksMSkKKyAgb2JqLSQoQ09ORklHX0dDT1ZfS0VSTkVMKSArPSBnY2NfM180Lm8KK2Vs c2UKKyAgb2JqLSQoQ09ORklHX0dDT1ZfS0VSTkVMKSArPSBnY2NfNF83Lm8KK2VuZGlmCmRpZmYg LS1naXQgYS9rZXJuZWwvZ2Nvdi9iYXNlLmMgYi9rZXJuZWwvZ2Nvdi9iYXNlLmMKaW5kZXggOWIy MmQwMy4uZjQ1Yjc1YiAxMDA2NDQKLS0tIGEva2VybmVsL2djb3YvYmFzZS5jCisrKyBiL2tlcm5l bC9nY292L2Jhc2UuYwpAQCAtMjAsNyArMjAsNiBAQAogI2luY2x1ZGUgPGxpbnV4L211dGV4Lmg+ CiAjaW5jbHVkZSAiZ2Nvdi5oIgogCi1zdGF0aWMgc3RydWN0IGdjb3ZfaW5mbyAqZ2Nvdl9pbmZv X2hlYWQ7CiBzdGF0aWMgaW50IGdjb3ZfZXZlbnRzX2VuYWJsZWQ7CiBzdGF0aWMgREVGSU5FX01V VEVYKGdjb3ZfbG9jayk7CiAKQEAgLTM0LDcgKzMzLDcgQEAgdm9pZCBfX2djb3ZfaW5pdChzdHJ1 Y3QgZ2Nvdl9pbmZvICppbmZvKQogCiAJbXV0ZXhfbG9jaygmZ2Nvdl9sb2NrKTsKIAlpZiAoZ2Nv dl92ZXJzaW9uID09IDApIHsKLQkJZ2Nvdl92ZXJzaW9uID0gaW5mby0+dmVyc2lvbjsKKwkJZ2Nv dl92ZXJzaW9uID0gZ2Nvdl9pbmZvX3ZlcnNpb24oaW5mbyk7CiAJCS8qCiAJCSAqIFByaW50aW5n IGdjYydzIHZlcnNpb24gbWFnaWMgbWF5IHByb3ZlIHVzZWZ1bCBmb3IgZGVidWdnaW5nCiAJCSAq IGluY29tcGF0aWJpbGl0eSByZXBvcnRzLgpAQCAtNDUsOCArNDQsNyBAQCB2b2lkIF9fZ2Nvdl9p bml0KHN0cnVjdCBnY292X2luZm8gKmluZm8pCiAJICogQWRkIG5ldyBwcm9maWxpbmcgZGF0YSBz dHJ1Y3R1cmUgdG8gbGlzdCBhbmQgaW5mb3JtIGV2ZW50CiAJICogbGlzdGVuZXIuCiAJICovCi0J aW5mby0+bmV4dCA9IGdjb3ZfaW5mb19oZWFkOwotCWdjb3ZfaW5mb19oZWFkID0gaW5mbzsKKwln Y292X2luZm9fbGluayhpbmZvKTsKIAlpZiAoZ2Nvdl9ldmVudHNfZW5hYmxlZCkKIAkJZ2Nvdl9l dmVudChHQ09WX0FERCwgaW5mbyk7CiAJbXV0ZXhfdW5sb2NrKCZnY292X2xvY2spOwpAQCAtODEs NiArNzksMTIgQEAgdm9pZCBfX2djb3ZfbWVyZ2VfZGVsdGEoZ2Nvdl90eXBlICpjb3VudGVycywg dW5zaWduZWQgaW50IG5fY291bnRlcnMpCiB9CiBFWFBPUlRfU1lNQk9MKF9fZ2Nvdl9tZXJnZV9k ZWx0YSk7CiAKK3ZvaWQgX19nY292X21lcmdlX2lvcihnY292X3R5cGUgKmNvdW50ZXJzLCB1bnNp Z25lZCBpbnQgbl9jb3VudGVycykKK3sKKwkvKiBVbnVzZWQuICovCit9CitFWFBPUlRfU1lNQk9M KF9fZ2Nvdl9tZXJnZV9pb3IpOworCiAvKioKICAqIGdjb3ZfZW5hYmxlX2V2ZW50cyAtIGVuYWJs ZSBldmVudCByZXBvcnRpbmcgdGhyb3VnaCBnY292X2V2ZW50KCkKICAqCkBAIC05MSwxMyArOTUs MTUgQEAgRVhQT1JUX1NZTUJPTChfX2djb3ZfbWVyZ2VfZGVsdGEpOwogICovCiB2b2lkIGdjb3Zf ZW5hYmxlX2V2ZW50cyh2b2lkKQogewotCXN0cnVjdCBnY292X2luZm8gKmluZm87CisJc3RydWN0 IGdjb3ZfaW5mbyAqaW5mbyA9IE5VTEw7CiAKIAltdXRleF9sb2NrKCZnY292X2xvY2spOwogCWdj b3ZfZXZlbnRzX2VuYWJsZWQgPSAxOworCiAJLyogUGVyZm9ybSBldmVudCBjYWxsYmFjayBmb3Ig cHJldmlvdXNseSByZWdpc3RlcmVkIGVudHJpZXMuICovCi0JZm9yIChpbmZvID0gZ2Nvdl9pbmZv X2hlYWQ7IGluZm87IGluZm8gPSBpbmZvLT5uZXh0KQorCXdoaWxlICgoaW5mbyA9IGdjb3ZfaW5m b19uZXh0KGluZm8pKSkKIAkJZ2Nvdl9ldmVudChHQ09WX0FERCwgaW5mbyk7CisKIAltdXRleF91 bmxvY2soJmdjb3ZfbG9jayk7CiB9CiAKQEAgLTExMiwyNSArMTE4LDIzIEBAIHN0YXRpYyBpbnQg Z2Nvdl9tb2R1bGVfbm90aWZpZXIoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQg bG9uZyBldmVudCwKIAkJCQl2b2lkICpkYXRhKQogewogCXN0cnVjdCBtb2R1bGUgKm1vZCA9IGRh dGE7Ci0Jc3RydWN0IGdjb3ZfaW5mbyAqaW5mbzsKLQlzdHJ1Y3QgZ2Nvdl9pbmZvICpwcmV2Owor CXN0cnVjdCBnY292X2luZm8gKmluZm8gPSBOVUxMOworCXN0cnVjdCBnY292X2luZm8gKnByZXYg PSBOVUxMOwogCiAJaWYgKGV2ZW50ICE9IE1PRFVMRV9TVEFURV9HT0lORykKIAkJcmV0dXJuIE5P VElGWV9PSzsKIAltdXRleF9sb2NrKCZnY292X2xvY2spOwotCXByZXYgPSBOVUxMOworCiAJLyog UmVtb3ZlIGVudHJpZXMgbG9jYXRlZCBpbiBtb2R1bGUgZnJvbSBsaW5rZWQgbGlzdC4gKi8KLQlm b3IgKGluZm8gPSBnY292X2luZm9faGVhZDsgaW5mbzsgaW5mbyA9IGluZm8tPm5leHQpIHsKKwl3 aGlsZSAoKGluZm8gPSBnY292X2luZm9fbmV4dChpbmZvKSkpIHsKIAkJaWYgKHdpdGhpbihpbmZv LCBtb2QtPm1vZHVsZV9jb3JlLCBtb2QtPmNvcmVfc2l6ZSkpIHsKLQkJCWlmIChwcmV2KQotCQkJ CXByZXYtPm5leHQgPSBpbmZvLT5uZXh0OwotCQkJZWxzZQotCQkJCWdjb3ZfaW5mb19oZWFkID0g aW5mby0+bmV4dDsKKwkJCWdjb3ZfaW5mb191bmxpbmsocHJldiwgaW5mbyk7CiAJCQlpZiAoZ2Nv dl9ldmVudHNfZW5hYmxlZCkKIAkJCQlnY292X2V2ZW50KEdDT1ZfUkVNT1ZFLCBpbmZvKTsKIAkJ fSBlbHNlCiAJCQlwcmV2ID0gaW5mbzsKIAl9CisKIAltdXRleF91bmxvY2soJmdjb3ZfbG9jayk7 CiAKIAlyZXR1cm4gTk9USUZZX09LOwpkaWZmIC0tZ2l0IGEva2VybmVsL2djb3YvZnMuYyBiL2tl cm5lbC9nY292L2ZzLmMKaW5kZXggOWJkMDkzNC4uMTVmZjAxYSAxMDA2NDQKLS0tIGEva2VybmVs L2djb3YvZnMuYworKysgYi9rZXJuZWwvZ2Nvdi9mcy5jCkBAIC03NCw4ICs3NCw4IEBAIHN0YXRp YyBpbnQgX19pbml0IGdjb3ZfcGVyc2lzdF9zZXR1cChjaGFyICpzdHIpCiB7CiAJdW5zaWduZWQg bG9uZyB2YWw7CiAKLQlpZiAoc3RyaWN0X3N0cnRvdWwoc3RyLCAwLCAmdmFsKSkgewotCQlwcl93 YXJuaW5nKCJpbnZhbGlkIGdjb3ZfcGVyc2lzdCBwYXJhbWV0ZXIgJyVzJ1xuIiwgc3RyKTsKKwlp ZiAoa3N0cnRvdWwoc3RyLCAwLCAmdmFsKSkgeworCQlwcl93YXJuKCJpbnZhbGlkIGdjb3ZfcGVy c2lzdCBwYXJhbWV0ZXIgJyVzJ1xuIiwgc3RyKTsKIAkJcmV0dXJuIDA7CiAJfQogCWdjb3ZfcGVy c2lzdCA9IHZhbDsKQEAgLTI0Miw3ICsyNDIsNyBAQCBzdGF0aWMgc3RydWN0IGdjb3Zfbm9kZSAq Z2V0X25vZGVfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lKQogCiAJbGlzdF9mb3JfZWFjaF9lbnRy eShub2RlLCAmYWxsX2hlYWQsIGFsbCkgewogCQlpbmZvID0gZ2V0X25vZGVfaW5mbyhub2RlKTsK LQkJaWYgKGluZm8gJiYgKHN0cmNtcChpbmZvLT5maWxlbmFtZSwgbmFtZSkgPT0gMCkpCisJCWlm IChpbmZvICYmIChzdHJjbXAoZ2Nvdl9pbmZvX2ZpbGVuYW1lKGluZm8pLCBuYW1lKSA9PSAwKSkK IAkJCXJldHVybiBub2RlOwogCX0KIApAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyBzc2l6ZV90 IGdjb3Zfc2VxX3dyaXRlKHN0cnVjdCBmaWxlICpmaWxlLCBjb25zdCBjaGFyIF9fdXNlciAqYWRk ciwKIAlzZXEgPSBmaWxlLT5wcml2YXRlX2RhdGE7CiAJaW5mbyA9IGdjb3ZfaXRlcl9nZXRfaW5m byhzZXEtPnByaXZhdGUpOwogCW11dGV4X2xvY2soJm5vZGVfbG9jayk7Ci0Jbm9kZSA9IGdldF9u b2RlX2J5X25hbWUoaW5mby0+ZmlsZW5hbWUpOworCW5vZGUgPSBnZXRfbm9kZV9ieV9uYW1lKGdj b3ZfaW5mb19maWxlbmFtZShpbmZvKSk7CiAJaWYgKG5vZGUpIHsKIAkJLyogUmVzZXQgY291bnRz IG9yIHJlbW92ZSBub2RlIGZvciB1bmxvYWRlZCBtb2R1bGVzLiAqLwogCQlpZiAobm9kZS0+bnVt X2xvYWRlZCA9PSAwKQpAQCAtMzY1LDcgKzM2NSw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpkZXNr ZXcoY29uc3QgY2hhciAqYmFzZW5hbWUpCiAgKi8KIHN0YXRpYyB2b2lkIGFkZF9saW5rcyhzdHJ1 Y3QgZ2Nvdl9ub2RlICpub2RlLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQpCiB7Ci0JY2hhciAqYmFz ZW5hbWU7CisJY29uc3QgY2hhciAqYmFzZW5hbWU7CiAJY2hhciAqdGFyZ2V0OwogCWludCBudW07 CiAJaW50IGk7CkBAIC0zNzYsMTQgKzM3NiwxNCBAQCBzdGF0aWMgdm9pZCBhZGRfbGlua3Moc3Ry dWN0IGdjb3Zfbm9kZSAqbm9kZSwgc3RydWN0IGRlbnRyeSAqcGFyZW50KQogCWlmICghbm9kZS0+ bGlua3MpCiAJCXJldHVybjsKIAlmb3IgKGkgPSAwOyBpIDwgbnVtOyBpKyspIHsKLQkJdGFyZ2V0 ID0gZ2V0X2xpbmtfdGFyZ2V0KGdldF9ub2RlX2luZm8obm9kZSktPmZpbGVuYW1lLAotCQkJCQkg Jmdjb3ZfbGlua1tpXSk7CisJCXRhcmdldCA9IGdldF9saW5rX3RhcmdldCgKKwkJCQlnY292X2lu Zm9fZmlsZW5hbWUoZ2V0X25vZGVfaW5mbyhub2RlKSksCisJCQkJJmdjb3ZfbGlua1tpXSk7CiAJ CWlmICghdGFyZ2V0KQogCQkJZ290byBvdXRfZXJyOwotCQliYXNlbmFtZSA9IHN0cnJjaHIodGFy Z2V0LCAnLycpOwotCQlpZiAoIWJhc2VuYW1lKQorCQliYXNlbmFtZSA9IGtiYXNlbmFtZSh0YXJn ZXQpOworCQlpZiAoYmFzZW5hbWUgPT0gdGFyZ2V0KQogCQkJZ290byBvdXRfZXJyOwotCQliYXNl bmFtZSsrOwogCQlub2RlLT5saW5rc1tpXSA9IGRlYnVnZnNfY3JlYXRlX3N5bWxpbmsoZGVza2V3 KGJhc2VuYW1lKSwKIAkJCQkJCQlwYXJlbnQsCXRhcmdldCk7CiAJCWlmICghbm9kZS0+bGlua3Nb aV0pCkBAIC00NTAsNyArNDUwLDcgQEAgc3RhdGljIHN0cnVjdCBnY292X25vZGUgKm5ld19ub2Rl KHN0cnVjdCBnY292X25vZGUgKnBhcmVudCwKIAl9IGVsc2UKIAkJbm9kZS0+ZGVudHJ5ID0gZGVi dWdmc19jcmVhdGVfZGlyKG5vZGUtPm5hbWUsIHBhcmVudC0+ZGVudHJ5KTsKIAlpZiAoIW5vZGUt PmRlbnRyeSkgewotCQlwcl93YXJuaW5nKCJjb3VsZCBub3QgY3JlYXRlIGZpbGVcbiIpOworCQlw cl93YXJuKCJjb3VsZCBub3QgY3JlYXRlIGZpbGVcbiIpOwogCQlrZnJlZShub2RlKTsKIAkJcmV0 dXJuIE5VTEw7CiAJfQpAQCAtNDYzLDcgKzQ2Myw3IEBAIHN0YXRpYyBzdHJ1Y3QgZ2Nvdl9ub2Rl ICpuZXdfbm9kZShzdHJ1Y3QgZ2Nvdl9ub2RlICpwYXJlbnQsCiAKIGVycl9ub21lbToKIAlrZnJl ZShub2RlKTsKLQlwcl93YXJuaW5nKCJvdXQgb2YgbWVtb3J5XG4iKTsKKwlwcl93YXJuKCJvdXQg b2YgbWVtb3J5XG4iKTsKIAlyZXR1cm4gTlVMTDsKIH0KIApAQCAtNTc2LDcgKzU3Niw3IEBAIHN0 YXRpYyB2b2lkIGFkZF9ub2RlKHN0cnVjdCBnY292X2luZm8gKmluZm8pCiAJc3RydWN0IGdjb3Zf bm9kZSAqcGFyZW50OwogCXN0cnVjdCBnY292X25vZGUgKm5vZGU7CiAKLQlmaWxlbmFtZSA9IGtz dHJkdXAoaW5mby0+ZmlsZW5hbWUsIEdGUF9LRVJORUwpOworCWZpbGVuYW1lID0ga3N0cmR1cChn Y292X2luZm9fZmlsZW5hbWUoaW5mbyksIEdGUF9LRVJORUwpOwogCWlmICghZmlsZW5hbWUpCiAJ CXJldHVybjsKIAlwYXJlbnQgPSAmcm9vdF9ub2RlOwpAQCAtNjMwLDggKzYzMCw4IEBAIHN0YXRp YyB2b2lkIGFkZF9pbmZvKHN0cnVjdCBnY292X25vZGUgKm5vZGUsIHN0cnVjdCBnY292X2luZm8g KmluZm8pCiAJICovCiAJbG9hZGVkX2luZm8gPSBrY2FsbG9jKG51bSArIDEsIHNpemVvZihzdHJ1 Y3QgZ2Nvdl9pbmZvICopLCBHRlBfS0VSTkVMKTsKIAlpZiAoIWxvYWRlZF9pbmZvKSB7Ci0JCXBy X3dhcm5pbmcoImNvdWxkIG5vdCBhZGQgJyVzJyAob3V0IG9mIG1lbW9yeSlcbiIsCi0JCQkgICBp bmZvLT5maWxlbmFtZSk7CisJCXByX3dhcm4oImNvdWxkIG5vdCBhZGQgJyVzJyAob3V0IG9mIG1l bW9yeSlcbiIsCisJCQlnY292X2luZm9fZmlsZW5hbWUoaW5mbykpOwogCQlyZXR1cm47CiAJfQog CW1lbWNweShsb2FkZWRfaW5mbywgbm9kZS0+bG9hZGVkX2luZm8sCkBAIC02NDQsOCArNjQ0LDkg QEAgc3RhdGljIHZvaWQgYWRkX2luZm8oc3RydWN0IGdjb3Zfbm9kZSAqbm9kZSwgc3RydWN0IGdj b3ZfaW5mbyAqaW5mbykKIAkJICogZGF0YSBzZXQgcmVwbGFjZXMgdGhlIGNvcHkgb2YgdGhlIGxh c3Qgb25lLgogCQkgKi8KIAkJaWYgKCFnY292X2luZm9faXNfY29tcGF0aWJsZShub2RlLT51bmxv YWRlZF9pbmZvLCBpbmZvKSkgewotCQkJcHJfd2FybmluZygiZGlzY2FyZGluZyBzYXZlZCBkYXRh IGZvciAlcyAiCi0JCQkJICAgIihpbmNvbXBhdGlibGUgdmVyc2lvbilcbiIsIGluZm8tPmZpbGVu YW1lKTsKKwkJCXByX3dhcm4oImRpc2NhcmRpbmcgc2F2ZWQgZGF0YSBmb3IgJXMgIgorCQkJCSIo aW5jb21wYXRpYmxlIHZlcnNpb24pXG4iLAorCQkJCWdjb3ZfaW5mb19maWxlbmFtZShpbmZvKSk7 CiAJCQlnY292X2luZm9fZnJlZShub2RlLT51bmxvYWRlZF9pbmZvKTsKIAkJCW5vZGUtPnVubG9h ZGVkX2luZm8gPSBOVUxMOwogCQl9CkBAIC02NTUsOCArNjU2LDggQEAgc3RhdGljIHZvaWQgYWRk X2luZm8oc3RydWN0IGdjb3Zfbm9kZSAqbm9kZSwgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbykKIAkJ ICogVGhlIGluaXRpYWwgb25lIHRha2VzIHByZWNlZGVuY2UuCiAJCSAqLwogCQlpZiAoIWdjb3Zf aW5mb19pc19jb21wYXRpYmxlKG5vZGUtPmxvYWRlZF9pbmZvWzBdLCBpbmZvKSkgewotCQkJcHJf d2FybmluZygiY291bGQgbm90IGFkZCAnJXMnIChpbmNvbXBhdGlibGUgIgotCQkJCSAgICJ2ZXJz aW9uKVxuIiwgaW5mby0+ZmlsZW5hbWUpOworCQkJcHJfd2FybigiY291bGQgbm90IGFkZCAnJXMn IChpbmNvbXBhdGlibGUgIgorCQkJCSJ2ZXJzaW9uKVxuIiwgZ2Nvdl9pbmZvX2ZpbGVuYW1lKGlu Zm8pKTsKIAkJCWtmcmVlKGxvYWRlZF9pbmZvKTsKIAkJCXJldHVybjsKIAkJfQpAQCAtNjkxLDgg KzY5Miw5IEBAIHN0YXRpYyB2b2lkIHNhdmVfaW5mbyhzdHJ1Y3QgZ2Nvdl9ub2RlICpub2RlLCBz dHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQogCWVsc2UgewogCQlub2RlLT51bmxvYWRlZF9pbmZvID0g Z2Nvdl9pbmZvX2R1cChpbmZvKTsKIAkJaWYgKCFub2RlLT51bmxvYWRlZF9pbmZvKSB7Ci0JCQlw cl93YXJuaW5nKCJjb3VsZCBub3Qgc2F2ZSBkYXRhIGZvciAnJXMnICIKLQkJCQkgICAiKG91dCBv ZiBtZW1vcnkpXG4iLCBpbmZvLT5maWxlbmFtZSk7CisJCQlwcl93YXJuKCJjb3VsZCBub3Qgc2F2 ZSBkYXRhIGZvciAnJXMnICIKKwkJCQkiKG91dCBvZiBtZW1vcnkpXG4iLAorCQkJCWdjb3ZfaW5m b19maWxlbmFtZShpbmZvKSk7CiAJCX0KIAl9CiB9CkBAIC03MDcsOCArNzA5LDggQEAgc3RhdGlj IHZvaWQgcmVtb3ZlX2luZm8oc3RydWN0IGdjb3Zfbm9kZSAqbm9kZSwgc3RydWN0IGdjb3ZfaW5m byAqaW5mbykKIAogCWkgPSBnZXRfaW5mb19pbmRleChub2RlLCBpbmZvKTsKIAlpZiAoaSA8IDAp IHsKLQkJcHJfd2FybmluZygiY291bGQgbm90IHJlbW92ZSAnJXMnIChub3QgZm91bmQpXG4iLAot CQkJICAgaW5mby0+ZmlsZW5hbWUpOworCQlwcl93YXJuKCJjb3VsZCBub3QgcmVtb3ZlICclcycg KG5vdCBmb3VuZClcbiIsCisJCQlnY292X2luZm9fZmlsZW5hbWUoaW5mbykpOwogCQlyZXR1cm47 CiAJfQogCWlmIChnY292X3BlcnNpc3QpCkBAIC03MzUsNyArNzM3LDcgQEAgdm9pZCBnY292X2V2 ZW50KGVudW0gZ2Nvdl9hY3Rpb24gYWN0aW9uLCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQogCXN0 cnVjdCBnY292X25vZGUgKm5vZGU7CiAKIAltdXRleF9sb2NrKCZub2RlX2xvY2spOwotCW5vZGUg PSBnZXRfbm9kZV9ieV9uYW1lKGluZm8tPmZpbGVuYW1lKTsKKwlub2RlID0gZ2V0X25vZGVfYnlf bmFtZShnY292X2luZm9fZmlsZW5hbWUoaW5mbykpOwogCXN3aXRjaCAoYWN0aW9uKSB7CiAJY2Fz ZSBHQ09WX0FERDoKIAkJaWYgKG5vZGUpCkBAIC03NDcsOCArNzQ5LDggQEAgdm9pZCBnY292X2V2 ZW50KGVudW0gZ2Nvdl9hY3Rpb24gYWN0aW9uLCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQogCQlp ZiAobm9kZSkKIAkJCXJlbW92ZV9pbmZvKG5vZGUsIGluZm8pOwogCQllbHNlIHsKLQkJCXByX3dh cm5pbmcoImNvdWxkIG5vdCByZW1vdmUgJyVzJyAobm90IGZvdW5kKVxuIiwKLQkJCQkgICBpbmZv LT5maWxlbmFtZSk7CisJCQlwcl93YXJuKCJjb3VsZCBub3QgcmVtb3ZlICclcycgKG5vdCBmb3Vu ZClcbiIsCisJCQkJZ2Nvdl9pbmZvX2ZpbGVuYW1lKGluZm8pKTsKIAkJfQogCQlicmVhazsKIAl9 CmRpZmYgLS1naXQgYS9rZXJuZWwvZ2Nvdi9nY2NfM180LmMgYi9rZXJuZWwvZ2Nvdi9nY2NfM180 LmMKaW5kZXggYWU1YmI0Mi4uMjdiYzg4YSAxMDA2NDQKLS0tIGEva2VybmVsL2djb3YvZ2NjXzNf NC5jCisrKyBiL2tlcm5lbC9nY292L2djY18zXzQuYwpAQCAtMjEsNiArMjEsMTIxIEBACiAjaW5j bHVkZSA8bGludXgvdm1hbGxvYy5oPgogI2luY2x1ZGUgImdjb3YuaCIKIAorI2RlZmluZSBHQ09W X0NPVU5URVJTCQk1CisKK3N0YXRpYyBzdHJ1Y3QgZ2Nvdl9pbmZvICpnY292X2luZm9faGVhZDsK KworLyoqCisgKiBzdHJ1Y3QgZ2Nvdl9mbl9pbmZvIC0gcHJvZmlsaW5nIG1ldGEgZGF0YSBwZXIg ZnVuY3Rpb24KKyAqIEBpZGVudDogb2JqZWN0IGZpbGUtdW5pcXVlIGZ1bmN0aW9uIGlkZW50aWZp ZXIKKyAqIEBjaGVja3N1bTogZnVuY3Rpb24gY2hlY2tzdW0KKyAqIEBuX2N0cnM6IG51bWJlciBv ZiB2YWx1ZXMgcGVyIGNvdW50ZXIgdHlwZSBiZWxvbmdpbmcgdG8gdGhpcyBmdW5jdGlvbgorICoK KyAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQg ZG9lc24ndCBjaGFuZ2UKKyAqIGF0IHJ1bi10aW1lLgorICovCitzdHJ1Y3QgZ2Nvdl9mbl9pbmZv IHsKKwl1bnNpZ25lZCBpbnQgaWRlbnQ7CisJdW5zaWduZWQgaW50IGNoZWNrc3VtOworCXVuc2ln bmVkIGludCBuX2N0cnNbMF07Cit9OworCisvKioKKyAqIHN0cnVjdCBnY292X2N0cl9pbmZvIC0g cHJvZmlsaW5nIGRhdGEgcGVyIGNvdW50ZXIgdHlwZQorICogQG51bTogbnVtYmVyIG9mIGNvdW50 ZXIgdmFsdWVzIGZvciB0aGlzIHR5cGUKKyAqIEB2YWx1ZXM6IGFycmF5IG9mIGNvdW50ZXIgdmFs dWVzIGZvciB0aGlzIHR5cGUKKyAqIEBtZXJnZTogbWVyZ2UgZnVuY3Rpb24gZm9yIGNvdW50ZXIg dmFsdWVzIG9mIHRoaXMgdHlwZSAodW51c2VkKQorICoKKyAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0 ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UKKyAqIGF0IHJ1 bi10aW1lIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgdmFsdWVzIGFycmF5LgorICovCitzdHJ1 Y3QgZ2Nvdl9jdHJfaW5mbyB7CisJdW5zaWduZWQgaW50CW51bTsKKwlnY292X3R5cGUJKnZhbHVl czsKKwl2b2lkCQkoKm1lcmdlKShnY292X3R5cGUgKiwgdW5zaWduZWQgaW50KTsKK307CisKKy8q KgorICogc3RydWN0IGdjb3ZfaW5mbyAtIHByb2ZpbGluZyBkYXRhIHBlciBvYmplY3QgZmlsZQor ICogQHZlcnNpb246IGdjb3YgdmVyc2lvbiBtYWdpYyBpbmRpY2F0aW5nIHRoZSBnY2MgdmVyc2lv biB1c2VkIGZvciBjb21waWxhdGlvbgorICogQG5leHQ6IGxpc3QgaGVhZCBmb3IgYSBzaW5nbHkt bGlua2VkIGxpc3QKKyAqIEBzdGFtcDogdGltZSBzdGFtcAorICogQGZpbGVuYW1lOiBuYW1lIG9m IHRoZSBhc3NvY2lhdGVkIGdjb3YgZGF0YSBmaWxlCisgKiBAbl9mdW5jdGlvbnM6IG51bWJlciBv ZiBpbnN0cnVtZW50ZWQgZnVuY3Rpb25zCisgKiBAZnVuY3Rpb25zOiBmdW5jdGlvbiBkYXRhCisg KiBAY3RyX21hc2s6IG1hc2sgc3BlY2lmeWluZyB3aGljaCBjb3VudGVyIHR5cGVzIGFyZSBhY3Rp dmUKKyAqIEBjb3VudHM6IGNvdW50ZXIgZGF0YSBwZXIgY291bnRlciB0eXBlCisgKgorICogVGhp cyBkYXRhIGlzIGdlbmVyYXRlZCBieSBnY2MgZHVyaW5nIGNvbXBpbGF0aW9uIGFuZCBkb2Vzbid0 IGNoYW5nZQorICogYXQgcnVuLXRpbWUgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBuZXh0IHBv aW50ZXIuCisgKi8KK3N0cnVjdCBnY292X2luZm8geworCXVuc2lnbmVkIGludAkJCXZlcnNpb247 CisJc3RydWN0IGdjb3ZfaW5mbwkJKm5leHQ7CisJdW5zaWduZWQgaW50CQkJc3RhbXA7CisJY29u c3QgY2hhcgkJCSpmaWxlbmFtZTsKKwl1bnNpZ25lZCBpbnQJCQluX2Z1bmN0aW9uczsKKwljb25z dCBzdHJ1Y3QgZ2Nvdl9mbl9pbmZvCSpmdW5jdGlvbnM7CisJdW5zaWduZWQgaW50CQkJY3RyX21h c2s7CisJc3RydWN0IGdjb3ZfY3RyX2luZm8JCWNvdW50c1swXTsKK307CisKKy8qKgorICogZ2Nv dl9pbmZvX2ZpbGVuYW1lIC0gcmV0dXJuIGluZm8gZmlsZW5hbWUKKyAqIEBpbmZvOiBwcm9maWxp bmcgZGF0YSBzZXQKKyAqLworY29uc3QgY2hhciAqZ2Nvdl9pbmZvX2ZpbGVuYW1lKHN0cnVjdCBn Y292X2luZm8gKmluZm8pCit7CisJcmV0dXJuIGluZm8tPmZpbGVuYW1lOworfQorCisvKioKKyAq IGdjb3ZfaW5mb192ZXJzaW9uIC0gcmV0dXJuIGluZm8gdmVyc2lvbgorICogQGluZm86IHByb2Zp bGluZyBkYXRhIHNldAorICovCit1bnNpZ25lZCBpbnQgZ2Nvdl9pbmZvX3ZlcnNpb24oc3RydWN0 IGdjb3ZfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5mby0+dmVyc2lvbjsKK30KKworLyoqCisg KiBnY292X2luZm9fbmV4dCAtIHJldHVybiBuZXh0IHByb2ZpbGluZyBkYXRhIHNldAorICogQGlu Zm86IHByb2ZpbGluZyBkYXRhIHNldAorICoKKyAqIFJldHVybnMgbmV4dCBnY292X2luZm8gZm9s bG93aW5nIEBpbmZvIG9yIGZpcnN0IGdjb3ZfaW5mbyBpbiB0aGUgY2hhaW4gaWYKKyAqIEBpbmZv IGlzICVOVUxMLgorICovCitzdHJ1Y3QgZ2Nvdl9pbmZvICpnY292X2luZm9fbmV4dChzdHJ1Y3Qg Z2Nvdl9pbmZvICppbmZvKQoreworCWlmICghaW5mbykKKwkJcmV0dXJuIGdjb3ZfaW5mb19oZWFk OworCisJcmV0dXJuIGluZm8tPm5leHQ7Cit9CisKKy8qKgorICogZ2Nvdl9pbmZvX2xpbmsgLSBs aW5rL2FkZCBwcm9maWxpbmcgZGF0YSBzZXQgdG8gdGhlIGxpc3QKKyAqIEBpbmZvOiBwcm9maWxp bmcgZGF0YSBzZXQKKyAqLwordm9pZCBnY292X2luZm9fbGluayhzdHJ1Y3QgZ2Nvdl9pbmZvICpp bmZvKQoreworCWluZm8tPm5leHQgPSBnY292X2luZm9faGVhZDsKKwlnY292X2luZm9faGVhZCA9 IGluZm87Cit9CisKKy8qKgorICogZ2Nvdl9pbmZvX3VubGluayAtIHVubGluay9yZW1vdmUgcHJv ZmlsaW5nIGRhdGEgc2V0IGZyb20gdGhlIGxpc3QKKyAqIEBwcmV2OiBwcmV2aW91cyBwcm9maWxp bmcgZGF0YSBzZXQKKyAqIEBpbmZvOiBwcm9maWxpbmcgZGF0YSBzZXQKKyAqLwordm9pZCBnY292 X2luZm9fdW5saW5rKHN0cnVjdCBnY292X2luZm8gKnByZXYsIHN0cnVjdCBnY292X2luZm8gKmlu Zm8pCit7CisJaWYgKHByZXYpCisJCXByZXYtPm5leHQgPSBpbmZvLT5uZXh0OworCWVsc2UKKwkJ Z2Nvdl9pbmZvX2hlYWQgPSBpbmZvLT5uZXh0OworfQorCiAvKiBTeW1ib2xpYyBsaW5rcyB0byBi ZSBjcmVhdGVkIGZvciBlYWNoIHByb2ZpbGluZyBkYXRhIGZpbGUuICovCiBjb25zdCBzdHJ1Y3Qg Z2Nvdl9saW5rIGdjb3ZfbGlua1tdID0gewogCXsgT0JKX1RSRUUsICJnY25vIiB9LAkvKiBMaW5r IHRvIC5nY25vIGZpbGUgaW4gJChvYmp0cmVlKS4gKi8KZGlmZiAtLWdpdCBhL2tlcm5lbC9nY292 L2djY180XzcuYyBiL2tlcm5lbC9nY292L2djY180XzcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwLi4yYzZlNDYzCi0tLSAvZGV2L251bGwKKysrIGIva2VybmVsL2djb3YvZ2Nj XzRfNy5jCkBAIC0wLDAgKzEsNTYwIEBACisvKgorICogIFRoaXMgY29kZSBwcm92aWRlcyBmdW5j dGlvbnMgdG8gaGFuZGxlIGdjYydzIHByb2ZpbGluZyBkYXRhIGZvcm1hdAorICogIGludHJvZHVj ZWQgd2l0aCBnY2MgNC43LgorICoKKyAqICBUaGlzIGZpbGUgaXMgYmFzZWQgaGVhdmlseSBvbiBn Y2NfM180LmMgZmlsZS4KKyAqCisgKiAgRm9yIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcsIHJlZmVy IHRvIGdjYyBzb3VyY2U6CisgKiAgZ2NjL2djb3YtaW8uaAorICogIGxpYmdjYy9saWJnY292LmMK KyAqCisgKiAgVXNlcyBnY2MtaW50ZXJuYWwgZGF0YSBkZWZpbml0aW9ucy4KKyAqLworCisjaW5j bHVkZSA8bGludXgvZXJybm8uaD4KKyNpbmNsdWRlIDxsaW51eC9zbGFiLmg+CisjaW5jbHVkZSA8 bGludXgvc3RyaW5nLmg+CisjaW5jbHVkZSA8bGludXgvc2VxX2ZpbGUuaD4KKyNpbmNsdWRlIDxs aW51eC92bWFsbG9jLmg+CisjaW5jbHVkZSAiZ2Nvdi5oIgorCisjZGVmaW5lIEdDT1ZfQ09VTlRF UlMJCQk4CisjZGVmaW5lIEdDT1ZfVEFHX0ZVTkNUSU9OX0xFTkdUSAkzCisKK3N0YXRpYyBzdHJ1 Y3QgZ2Nvdl9pbmZvICpnY292X2luZm9faGVhZDsKKworLyoqCisgKiBzdHJ1Y3QgZ2Nvdl9jdHJf aW5mbyAtIGluZm9ybWF0aW9uIGFib3V0IGNvdW50ZXJzIGZvciBhIHNpbmdsZSBmdW5jdGlvbgor ICogQG51bTogbnVtYmVyIG9mIGNvdW50ZXIgdmFsdWVzIGZvciB0aGlzIHR5cGUKKyAqIEB2YWx1 ZXM6IGFycmF5IG9mIGNvdW50ZXIgdmFsdWVzIGZvciB0aGlzIHR5cGUKKyAqCisgKiBUaGlzIGRh dGEgaXMgZ2VuZXJhdGVkIGJ5IGdjYyBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGRvZXNuJ3QgY2hh bmdlCisgKiBhdCBydW4tdGltZSB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHZhbHVlcyBhcnJh eS4KKyAqLworc3RydWN0IGdjb3ZfY3RyX2luZm8geworCXVuc2lnbmVkIGludCBudW07CisJZ2Nv dl90eXBlICp2YWx1ZXM7Cit9OworCisvKioKKyAqIHN0cnVjdCBnY292X2ZuX2luZm8gLSBwcm9m aWxpbmcgbWV0YSBkYXRhIHBlciBmdW5jdGlvbgorICogQGtleTogY29tZGF0IGtleQorICogQGlk ZW50OiB1bmlxdWUgaWRlbnQgb2YgZnVuY3Rpb24KKyAqIEBsaW5lbm9fY2hlY2tzdW06IGZ1bmN0 aW9uIGxpbmVvX2NoZWNrc3VtCisgKiBAY2ZnX2NoZWNrc3VtOiBmdW5jdGlvbiBjZmcgY2hlY2tz dW0KKyAqIEBjdHJzOiBpbnN0cnVtZW50ZWQgY291bnRlcnMKKyAqCisgKiBUaGlzIGRhdGEgaXMg Z2VuZXJhdGVkIGJ5IGdjYyBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGRvZXNuJ3QgY2hhbmdlCisg KiBhdCBydW4tdGltZS4KKyAqCisgKiBJbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBmdW5jdGlv bi4gIFRoaXMgdXNlcyB0aGUgdHJhaWxpbmcgYXJyYXkKKyAqIGlkaW9tLiBUaGUgbnVtYmVyIG9m IGNvdW50ZXJzIGlzIGRldGVybWluZWQgZnJvbSB0aGUgbWVyZ2UgcG9pbnRlcgorICogYXJyYXkg aW4gZ2Nvdl9pbmZvLiAgVGhlIGtleSBpcyB1c2VkIHRvIGRldGVjdCB3aGljaCBvZiBhIHNldCBv ZgorICogY29tZGF0IGZ1bmN0aW9ucyB3YXMgc2VsZWN0ZWQgLS0gaXQgcG9pbnRzIHRvIHRoZSBn Y292X2luZm8gb2JqZWN0CisgKiBvZiB0aGUgb2JqZWN0IGZpbGUgY29udGFpbmluZyB0aGUgc2Vs ZWN0ZWQgY29tZGF0IGZ1bmN0aW9uLgorICovCitzdHJ1Y3QgZ2Nvdl9mbl9pbmZvIHsKKwljb25z dCBzdHJ1Y3QgZ2Nvdl9pbmZvICprZXk7CisJdW5zaWduZWQgaW50IGlkZW50OworCXVuc2lnbmVk IGludCBsaW5lbm9fY2hlY2tzdW07CisJdW5zaWduZWQgaW50IGNmZ19jaGVja3N1bTsKKwlzdHJ1 Y3QgZ2Nvdl9jdHJfaW5mbyBjdHJzWzBdOworfTsKKworLyoqCisgKiBzdHJ1Y3QgZ2Nvdl9pbmZv IC0gcHJvZmlsaW5nIGRhdGEgcGVyIG9iamVjdCBmaWxlCisgKiBAdmVyc2lvbjogZ2NvdiB2ZXJz aW9uIG1hZ2ljIGluZGljYXRpbmcgdGhlIGdjYyB2ZXJzaW9uIHVzZWQgZm9yIGNvbXBpbGF0aW9u CisgKiBAbmV4dDogbGlzdCBoZWFkIGZvciBhIHNpbmdseS1saW5rZWQgbGlzdAorICogQHN0YW1w OiB1bmlxdWlmeWluZyB0aW1lIHN0YW1wCisgKiBAZmlsZW5hbWU6IG5hbWUgb2YgdGhlIGFzc29j aWF0ZWQgZ2NvdiBkYXRhIGZpbGUKKyAqIEBtZXJnZTogbWVyZ2UgZnVuY3Rpb25zIChudWxsIGZv ciB1bnVzZWQgY291bnRlciB0eXBlKQorICogQG5fZnVuY3Rpb25zOiBudW1iZXIgb2YgaW5zdHJ1 bWVudGVkIGZ1bmN0aW9ucworICogQGZ1bmN0aW9uczogcG9pbnRlciB0byBwb2ludGVycyB0byBm dW5jdGlvbiBpbmZvcm1hdGlvbgorICoKKyAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2Nj IGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UKKyAqIGF0IHJ1bi10aW1lIHdp dGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgbmV4dCBwb2ludGVyLgorICovCitzdHJ1Y3QgZ2Nvdl9p bmZvIHsKKwl1bnNpZ25lZCBpbnQgdmVyc2lvbjsKKwlzdHJ1Y3QgZ2Nvdl9pbmZvICpuZXh0Owor CXVuc2lnbmVkIGludCBzdGFtcDsKKwljb25zdCBjaGFyICpmaWxlbmFtZTsKKwl2b2lkICgqbWVy Z2VbR0NPVl9DT1VOVEVSU10pKGdjb3ZfdHlwZSAqLCB1bnNpZ25lZCBpbnQpOworCXVuc2lnbmVk IGludCBuX2Z1bmN0aW9uczsKKwlzdHJ1Y3QgZ2Nvdl9mbl9pbmZvICoqZnVuY3Rpb25zOworfTsK KworLyoqCisgKiBnY292X2luZm9fZmlsZW5hbWUgLSByZXR1cm4gaW5mbyBmaWxlbmFtZQorICog QGluZm86IHByb2ZpbGluZyBkYXRhIHNldAorICovCitjb25zdCBjaGFyICpnY292X2luZm9fZmls ZW5hbWUoc3RydWN0IGdjb3ZfaW5mbyAqaW5mbykKK3sKKwlyZXR1cm4gaW5mby0+ZmlsZW5hbWU7 Cit9CisKKy8qKgorICogZ2Nvdl9pbmZvX3ZlcnNpb24gLSByZXR1cm4gaW5mbyB2ZXJzaW9uCisg KiBAaW5mbzogcHJvZmlsaW5nIGRhdGEgc2V0CisgKi8KK3Vuc2lnbmVkIGludCBnY292X2luZm9f dmVyc2lvbihzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQoreworCXJldHVybiBpbmZvLT52ZXJzaW9u OworfQorCisvKioKKyAqIGdjb3ZfaW5mb19uZXh0IC0gcmV0dXJuIG5leHQgcHJvZmlsaW5nIGRh dGEgc2V0CisgKiBAaW5mbzogcHJvZmlsaW5nIGRhdGEgc2V0CisgKgorICogUmV0dXJucyBuZXh0 IGdjb3ZfaW5mbyBmb2xsb3dpbmcgQGluZm8gb3IgZmlyc3QgZ2Nvdl9pbmZvIGluIHRoZSBjaGFp biBpZgorICogQGluZm8gaXMgJU5VTEwuCisgKi8KK3N0cnVjdCBnY292X2luZm8gKmdjb3ZfaW5m b19uZXh0KHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisJaWYgKCFpbmZvKQorCQlyZXR1cm4g Z2Nvdl9pbmZvX2hlYWQ7CisKKwlyZXR1cm4gaW5mby0+bmV4dDsKK30KKworLyoqCisgKiBnY292 X2luZm9fbGluayAtIGxpbmsvYWRkIHByb2ZpbGluZyBkYXRhIHNldCB0byB0aGUgbGlzdAorICog QGluZm86IHByb2ZpbGluZyBkYXRhIHNldAorICovCit2b2lkIGdjb3ZfaW5mb19saW5rKHN0cnVj dCBnY292X2luZm8gKmluZm8pCit7CisJaW5mby0+bmV4dCA9IGdjb3ZfaW5mb19oZWFkOworCWdj b3ZfaW5mb19oZWFkID0gaW5mbzsKK30KKworLyoqCisgKiBnY292X2luZm9fdW5saW5rIC0gdW5s aW5rL3JlbW92ZSBwcm9maWxpbmcgZGF0YSBzZXQgZnJvbSB0aGUgbGlzdAorICogQHByZXY6IHBy ZXZpb3VzIHByb2ZpbGluZyBkYXRhIHNldAorICogQGluZm86IHByb2ZpbGluZyBkYXRhIHNldAor ICovCit2b2lkIGdjb3ZfaW5mb191bmxpbmsoc3RydWN0IGdjb3ZfaW5mbyAqcHJldiwgc3RydWN0 IGdjb3ZfaW5mbyAqaW5mbykKK3sKKwlpZiAocHJldikKKwkJcHJldi0+bmV4dCA9IGluZm8tPm5l eHQ7CisJZWxzZQorCQlnY292X2luZm9faGVhZCA9IGluZm8tPm5leHQ7Cit9CisKKy8qIFN5bWJv bGljIGxpbmtzIHRvIGJlIGNyZWF0ZWQgZm9yIGVhY2ggcHJvZmlsaW5nIGRhdGEgZmlsZS4gKi8K K2NvbnN0IHN0cnVjdCBnY292X2xpbmsgZ2Nvdl9saW5rW10gPSB7CisJeyBPQkpfVFJFRSwgImdj bm8iIH0sCS8qIExpbmsgdG8gLmdjbm8gZmlsZSBpbiAkKG9ianRyZWUpLiAqLworCXsgMCwgTlVM TH0sCit9OworCisvKgorICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBjb3VudGVyIGlzIGFjdGl2ZS4g RG9lc24ndCBjaGFuZ2UgYXQgcnVuLXRpbWUuCisgKi8KK3N0YXRpYyBpbnQgY291bnRlcl9hY3Rp dmUoc3RydWN0IGdjb3ZfaW5mbyAqaW5mbywgdW5zaWduZWQgaW50IHR5cGUpCit7CisJcmV0dXJu IGluZm8tPm1lcmdlW3R5cGVdID8gMSA6IDA7Cit9CisKKy8qIERldGVybWluZSBudW1iZXIgb2Yg YWN0aXZlIGNvdW50ZXJzLiBCYXNlZCBvbiBnY2MgbWFnaWMuICovCitzdGF0aWMgdW5zaWduZWQg aW50IG51bV9jb3VudGVyX2FjdGl2ZShzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQoreworCXVuc2ln bmVkIGludCBpOworCXVuc2lnbmVkIGludCByZXN1bHQgPSAwOworCisJZm9yIChpID0gMDsgaSA8 IEdDT1ZfQ09VTlRFUlM7IGkrKykgeworCQlpZiAoY291bnRlcl9hY3RpdmUoaW5mbywgaSkpCisJ CQlyZXN1bHQrKzsKKwl9CisJcmV0dXJuIHJlc3VsdDsKK30KKworLyoqCisgKiBnY292X2luZm9f cmVzZXQgLSByZXNldCBwcm9maWxpbmcgZGF0YSB0byB6ZXJvCisgKiBAaW5mbzogcHJvZmlsaW5n IGRhdGEgc2V0CisgKi8KK3ZvaWQgZ2Nvdl9pbmZvX3Jlc2V0KHN0cnVjdCBnY292X2luZm8gKmlu Zm8pCit7CisJc3RydWN0IGdjb3ZfY3RyX2luZm8gKmNpX3B0cjsKKwl1bnNpZ25lZCBpbnQgZmlf aWR4OworCXVuc2lnbmVkIGludCBjdF9pZHg7CisKKwlmb3IgKGZpX2lkeCA9IDA7IGZpX2lkeCA8 IGluZm8tPm5fZnVuY3Rpb25zOyBmaV9pZHgrKykgeworCQljaV9wdHIgPSBpbmZvLT5mdW5jdGlv bnNbZmlfaWR4XS0+Y3RyczsKKworCQlmb3IgKGN0X2lkeCA9IDA7IGN0X2lkeCA8IEdDT1ZfQ09V TlRFUlM7IGN0X2lkeCsrKSB7CisJCQlpZiAoIWNvdW50ZXJfYWN0aXZlKGluZm8sIGN0X2lkeCkp CisJCQkJY29udGludWU7CisKKwkJCW1lbXNldChjaV9wdHItPnZhbHVlcywgMCwKKwkJCQkJc2l6 ZW9mKGdjb3ZfdHlwZSkgKiBjaV9wdHItPm51bSk7CisJCQljaV9wdHIrKzsKKwkJfQorCX0KK30K KworLyoqCisgKiBnY292X2luZm9faXNfY29tcGF0aWJsZSAtIGNoZWNrIGlmIHByb2ZpbGluZyBk YXRhIGNhbiBiZSBhZGRlZAorICogQGluZm8xOiBmaXJzdCBwcm9maWxpbmcgZGF0YSBzZXQKKyAq IEBpbmZvMjogc2Vjb25kIHByb2ZpbGluZyBkYXRhIHNldAorICoKKyAqIFJldHVybnMgbm9uLXpl cm8gaWYgcHJvZmlsaW5nIGRhdGEgY2FuIGJlIGFkZGVkLCB6ZXJvIG90aGVyd2lzZS4KKyAqLwor aW50IGdjb3ZfaW5mb19pc19jb21wYXRpYmxlKHN0cnVjdCBnY292X2luZm8gKmluZm8xLCBzdHJ1 Y3QgZ2Nvdl9pbmZvICppbmZvMikKK3sKKwlyZXR1cm4gKGluZm8xLT5zdGFtcCA9PSBpbmZvMi0+ c3RhbXApOworfQorCisvKioKKyAqIGdjb3ZfaW5mb19hZGQgLSBhZGQgdXAgcHJvZmlsaW5nIGRh dGEKKyAqIEBkZXN0OiBwcm9maWxpbmcgZGF0YSBzZXQgdG8gd2hpY2ggZGF0YSBpcyBhZGRlZAor ICogQHNvdXJjZTogcHJvZmlsaW5nIGRhdGEgc2V0IHdoaWNoIGlzIGFkZGVkCisgKgorICogQWRk cyBwcm9maWxpbmcgY291bnRzIG9mIEBzb3VyY2UgdG8gQGRlc3QuCisgKi8KK3ZvaWQgZ2Nvdl9p bmZvX2FkZChzdHJ1Y3QgZ2Nvdl9pbmZvICpkc3QsIHN0cnVjdCBnY292X2luZm8gKnNyYykKK3sK KwlzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAqZGNpX3B0cjsKKwlzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAq c2NpX3B0cjsKKwl1bnNpZ25lZCBpbnQgZmlfaWR4OworCXVuc2lnbmVkIGludCBjdF9pZHg7CisJ dW5zaWduZWQgaW50IHZhbF9pZHg7CisKKwlmb3IgKGZpX2lkeCA9IDA7IGZpX2lkeCA8IHNyYy0+ bl9mdW5jdGlvbnM7IGZpX2lkeCsrKSB7CisJCWRjaV9wdHIgPSBkc3QtPmZ1bmN0aW9uc1tmaV9p ZHhdLT5jdHJzOworCQlzY2lfcHRyID0gc3JjLT5mdW5jdGlvbnNbZmlfaWR4XS0+Y3RyczsKKwor CQlmb3IgKGN0X2lkeCA9IDA7IGN0X2lkeCA8IEdDT1ZfQ09VTlRFUlM7IGN0X2lkeCsrKSB7CisJ CQlpZiAoIWNvdW50ZXJfYWN0aXZlKHNyYywgY3RfaWR4KSkKKwkJCQljb250aW51ZTsKKworCQkJ Zm9yICh2YWxfaWR4ID0gMDsgdmFsX2lkeCA8IHNjaV9wdHItPm51bTsgdmFsX2lkeCsrKQorCQkJ CWRjaV9wdHItPnZhbHVlc1t2YWxfaWR4XSArPQorCQkJCQlzY2lfcHRyLT52YWx1ZXNbdmFsX2lk eF07CisKKwkJCWRjaV9wdHIrKzsKKwkJCXNjaV9wdHIrKzsKKwkJfQorCX0KK30KKworLyoqCisg KiBnY292X2luZm9fZHVwIC0gZHVwbGljYXRlIHByb2ZpbGluZyBkYXRhIHNldAorICogQGluZm86 IHByb2ZpbGluZyBkYXRhIHNldCB0byBkdXBsaWNhdGUKKyAqCisgKiBSZXR1cm4gbmV3bHkgYWxs b2NhdGVkIGR1cGxpY2F0ZSBvbiBzdWNjZXNzLCAlTlVMTCBvbiBlcnJvci4KKyAqLworc3RydWN0 IGdjb3ZfaW5mbyAqZ2Nvdl9pbmZvX2R1cChzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQoreworCXN0 cnVjdCBnY292X2luZm8gKmR1cDsKKwlzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAqZGNpX3B0cjsgLyog ZHN0IGNvdW50ZXIgaW5mbyAqLworCXN0cnVjdCBnY292X2N0cl9pbmZvICpzY2lfcHRyOyAvKiBz cmMgY291bnRlciBpbmZvICovCisJdW5zaWduZWQgaW50IGFjdGl2ZTsKKwl1bnNpZ25lZCBpbnQg ZmlfaWR4OyAvKiBmdW5jdGlvbiBpbmZvIGlkeCAqLworCXVuc2lnbmVkIGludCBjdF9pZHg7IC8q IGNvdW50ZXIgdHlwZSBpZHggKi8KKwlzaXplX3QgZmlfc2l6ZTsgLyogZnVuY3Rpb24gaW5mbyBz aXplICovCisJc2l6ZV90IGN2X3NpemU7IC8qIGNvdW50ZXIgdmFsdWVzIHNpemUgKi8KKworCWR1 cCA9IGttZW1kdXAoaW5mbywgc2l6ZW9mKCpkdXApLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWR1cCkK KwkJcmV0dXJuIE5VTEw7CisKKwlkdXAtPm5leHQgPSBOVUxMOworCWR1cC0+ZmlsZW5hbWUgPSBO VUxMOworCWR1cC0+ZnVuY3Rpb25zID0gTlVMTDsKKworCWR1cC0+ZmlsZW5hbWUgPSBrc3RyZHVw KGluZm8tPmZpbGVuYW1lLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWR1cC0+ZmlsZW5hbWUpCisJCWdv dG8gZXJyX2ZyZWU7CisKKwlkdXAtPmZ1bmN0aW9ucyA9IGtjYWxsb2MoaW5mby0+bl9mdW5jdGlv bnMsCisJCQkJIHNpemVvZihzdHJ1Y3QgZ2Nvdl9mbl9pbmZvICopLCBHRlBfS0VSTkVMKTsKKwlp ZiAoIWR1cC0+ZnVuY3Rpb25zKQorCQlnb3RvIGVycl9mcmVlOworCisJYWN0aXZlID0gbnVtX2Nv dW50ZXJfYWN0aXZlKGluZm8pOworCWZpX3NpemUgPSBzaXplb2Yoc3RydWN0IGdjb3ZfZm5faW5m byk7CisJZmlfc2l6ZSArPSBzaXplb2Yoc3RydWN0IGdjb3ZfY3RyX2luZm8pICogYWN0aXZlOwor CisJZm9yIChmaV9pZHggPSAwOyBmaV9pZHggPCBpbmZvLT5uX2Z1bmN0aW9uczsgZmlfaWR4Kysp IHsKKwkJZHVwLT5mdW5jdGlvbnNbZmlfaWR4XSA9IGt6YWxsb2MoZmlfc2l6ZSwgR0ZQX0tFUk5F TCk7CisJCWlmICghZHVwLT5mdW5jdGlvbnNbZmlfaWR4XSkKKwkJCWdvdG8gZXJyX2ZyZWU7CisK KwkJKihkdXAtPmZ1bmN0aW9uc1tmaV9pZHhdKSA9ICooaW5mby0+ZnVuY3Rpb25zW2ZpX2lkeF0p OworCisJCXNjaV9wdHIgPSBpbmZvLT5mdW5jdGlvbnNbZmlfaWR4XS0+Y3RyczsKKwkJZGNpX3B0 ciA9IGR1cC0+ZnVuY3Rpb25zW2ZpX2lkeF0tPmN0cnM7CisKKwkJZm9yIChjdF9pZHggPSAwOyBj dF9pZHggPCBhY3RpdmU7IGN0X2lkeCsrKSB7CisKKwkJCWN2X3NpemUgPSBzaXplb2YoZ2Nvdl90 eXBlKSAqIHNjaV9wdHItPm51bTsKKworCQkJZGNpX3B0ci0+dmFsdWVzID0gdm1hbGxvYyhjdl9z aXplKTsKKworCQkJaWYgKCFkY2lfcHRyLT52YWx1ZXMpCisJCQkJZ290byBlcnJfZnJlZTsKKwor CQkJZGNpX3B0ci0+bnVtID0gc2NpX3B0ci0+bnVtOworCQkJbWVtY3B5KGRjaV9wdHItPnZhbHVl cywgc2NpX3B0ci0+dmFsdWVzLCBjdl9zaXplKTsKKworCQkJc2NpX3B0cisrOworCQkJZGNpX3B0 cisrOworCQl9CisJfQorCisJcmV0dXJuIGR1cDsKK2Vycl9mcmVlOgorCWdjb3ZfaW5mb19mcmVl KGR1cCk7CisJcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogZ2Nvdl9pbmZvX2ZyZWUgLSByZWxl YXNlIG1lbW9yeSBmb3IgcHJvZmlsaW5nIGRhdGEgc2V0IGR1cGxpY2F0ZQorICogQGluZm86IHBy b2ZpbGluZyBkYXRhIHNldCBkdXBsaWNhdGUgdG8gZnJlZQorICovCit2b2lkIGdjb3ZfaW5mb19m cmVlKHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisJdW5zaWduZWQgaW50IGFjdGl2ZTsKKwl1 bnNpZ25lZCBpbnQgZmlfaWR4OworCXVuc2lnbmVkIGludCBjdF9pZHg7CisJc3RydWN0IGdjb3Zf Y3RyX2luZm8gKmNpX3B0cjsKKworCWlmICghaW5mby0+ZnVuY3Rpb25zKQorCQlnb3RvIGZyZWVf aW5mbzsKKworCWFjdGl2ZSA9IG51bV9jb3VudGVyX2FjdGl2ZShpbmZvKTsKKworCWZvciAoZmlf aWR4ID0gMDsgZmlfaWR4IDwgaW5mby0+bl9mdW5jdGlvbnM7IGZpX2lkeCsrKSB7CisJCWlmICgh aW5mby0+ZnVuY3Rpb25zW2ZpX2lkeF0pCisJCQljb250aW51ZTsKKworCQljaV9wdHIgPSBpbmZv LT5mdW5jdGlvbnNbZmlfaWR4XS0+Y3RyczsKKworCQlmb3IgKGN0X2lkeCA9IDA7IGN0X2lkeCA8 IGFjdGl2ZTsgY3RfaWR4KyssIGNpX3B0cisrKQorCQkJdmZyZWUoY2lfcHRyLT52YWx1ZXMpOwor CisJCWtmcmVlKGluZm8tPmZ1bmN0aW9uc1tmaV9pZHhdKTsKKwl9CisKK2ZyZWVfaW5mbzoKKwlr ZnJlZShpbmZvLT5mdW5jdGlvbnMpOworCWtmcmVlKGluZm8tPmZpbGVuYW1lKTsKKwlrZnJlZShp bmZvKTsKK30KKworI2RlZmluZSBJVEVSX1NUUklERQlQQUdFX1NJWkUKKworLyoqCisgKiBzdHJ1 Y3QgZ2Nvdl9pdGVyYXRvciAtIHNwZWNpZmllcyBjdXJyZW50IGZpbGUgcG9zaXRpb24gaW4gbG9n aWNhbCByZWNvcmRzCisgKiBAaW5mbzogYXNzb2NpYXRlZCBwcm9maWxpbmcgZGF0YQorICogQGJ1 ZmZlcjogYnVmZmVyIGNvbnRhaW5pbmcgZmlsZSBkYXRhCisgKiBAc2l6ZTogc2l6ZSBvZiBidWZm ZXIKKyAqIEBwb3M6IGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQorICovCitzdHJ1Y3QgZ2Nvdl9p dGVyYXRvciB7CisJc3RydWN0IGdjb3ZfaW5mbyAqaW5mbzsKKwl2b2lkICpidWZmZXI7CisJc2l6 ZV90IHNpemU7CisJbG9mZl90IHBvczsKK307CisKKy8qKgorICogc3RvcmVfZ2Nvdl91MzIgLSBz dG9yZSAzMiBiaXQgbnVtYmVyIGluIGdjb3YgZm9ybWF0IHRvIGJ1ZmZlcgorICogQGJ1ZmZlcjog dGFyZ2V0IGJ1ZmZlciBvciBOVUxMCisgKiBAb2ZmOiBvZmZzZXQgaW50byB0aGUgYnVmZmVyCisg KiBAdjogdmFsdWUgdG8gYmUgc3RvcmVkCisgKgorICogTnVtYmVyIGZvcm1hdCBkZWZpbmVkIGJ5 IGdjYzogbnVtYmVycyBhcmUgcmVjb3JkZWQgaW4gdGhlIDMyIGJpdAorICogdW5zaWduZWQgYmlu YXJ5IGZvcm0gb2YgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIG1hY2hpbmUgZ2VuZXJhdGluZyB0aGUK KyAqIGZpbGUuIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQuIElmIEBidWZmZXIg aXMgJU5VTEwsIGRvZXNuJ3QKKyAqIHN0b3JlIGFueXRoaW5nLgorICovCitzdGF0aWMgc2l6ZV90 IHN0b3JlX2djb3ZfdTMyKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IG9mZiwgdTMyIHYpCit7CisJdTMy ICpkYXRhOworCisJaWYgKGJ1ZmZlcikgeworCQlkYXRhID0gYnVmZmVyICsgb2ZmOworCQkqZGF0 YSA9IHY7CisJfQorCisJcmV0dXJuIHNpemVvZigqZGF0YSk7Cit9CisKKy8qKgorICogc3RvcmVf Z2Nvdl91NjQgLSBzdG9yZSA2NCBiaXQgbnVtYmVyIGluIGdjb3YgZm9ybWF0IHRvIGJ1ZmZlcgor ICogQGJ1ZmZlcjogdGFyZ2V0IGJ1ZmZlciBvciBOVUxMCisgKiBAb2ZmOiBvZmZzZXQgaW50byB0 aGUgYnVmZmVyCisgKiBAdjogdmFsdWUgdG8gYmUgc3RvcmVkCisgKgorICogTnVtYmVyIGZvcm1h dCBkZWZpbmVkIGJ5IGdjYzogbnVtYmVycyBhcmUgcmVjb3JkZWQgaW4gdGhlIDMyIGJpdAorICog dW5zaWduZWQgYmluYXJ5IGZvcm0gb2YgdGhlIGVuZGlhbm5lc3Mgb2YgdGhlIG1hY2hpbmUgZ2Vu ZXJhdGluZyB0aGUKKyAqIGZpbGUuIDY0IGJpdCBudW1iZXJzIGFyZSBzdG9yZWQgYXMgdHdvIDMy IGJpdCBudW1iZXJzLCB0aGUgbG93IHBhcnQKKyAqIGZpcnN0LiBSZXR1cm5zIHRoZSBudW1iZXIg b2YgYnl0ZXMgc3RvcmVkLiBJZiBAYnVmZmVyIGlzICVOVUxMLCBkb2Vzbid0IHN0b3JlCisgKiBh bnl0aGluZy4KKyAqLworc3RhdGljIHNpemVfdCBzdG9yZV9nY292X3U2NCh2b2lkICpidWZmZXIs IHNpemVfdCBvZmYsIHU2NCB2KQoreworCXUzMiAqZGF0YTsKKworCWlmIChidWZmZXIpIHsKKwkJ ZGF0YSA9IGJ1ZmZlciArIG9mZjsKKworCQlkYXRhWzBdID0gKHYgJiAweGZmZmZmZmZmVUwpOwor CQlkYXRhWzFdID0gKHYgPj4gMzIpOworCX0KKworCXJldHVybiBzaXplb2YoKmRhdGEpICogMjsK K30KKworLyoqCisgKiBjb252ZXJ0X3RvX2djZGEgLSBjb252ZXJ0IHByb2ZpbGluZyBkYXRhIHNl dCB0byBnY2RhIGZpbGUgZm9ybWF0CisgKiBAYnVmZmVyOiB0aGUgYnVmZmVyIHRvIHN0b3JlIGZp bGUgZGF0YSBvciAlTlVMTCBpZiBubyBkYXRhIHNob3VsZCBiZSBzdG9yZWQKKyAqIEBpbmZvOiBw cm9maWxpbmcgZGF0YSBzZXQgdG8gYmUgY29udmVydGVkCisgKgorICogUmV0dXJucyB0aGUgbnVt YmVyIG9mIGJ5dGVzIHRoYXQgd2VyZS93b3VsZCBoYXZlIGJlZW4gc3RvcmVkIGludG8gdGhlIGJ1 ZmZlci4KKyAqLworc3RhdGljIHNpemVfdCBjb252ZXJ0X3RvX2djZGEoY2hhciAqYnVmZmVyLCBz dHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQoreworCXN0cnVjdCBnY292X2ZuX2luZm8gKmZpX3B0cjsK KwlzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAqY2lfcHRyOworCXVuc2lnbmVkIGludCBmaV9pZHg7CisJ dW5zaWduZWQgaW50IGN0X2lkeDsKKwl1bnNpZ25lZCBpbnQgY3ZfaWR4OworCXNpemVfdCBwb3Mg PSAwOworCisJLyogRmlsZSBoZWFkZXIuICovCisJcG9zICs9IHN0b3JlX2djb3ZfdTMyKGJ1ZmZl ciwgcG9zLCBHQ09WX0RBVEFfTUFHSUMpOworCXBvcyArPSBzdG9yZV9nY292X3UzMihidWZmZXIs IHBvcywgaW5mby0+dmVyc2lvbik7CisJcG9zICs9IHN0b3JlX2djb3ZfdTMyKGJ1ZmZlciwgcG9z LCBpbmZvLT5zdGFtcCk7CisKKwlmb3IgKGZpX2lkeCA9IDA7IGZpX2lkeCA8IGluZm8tPm5fZnVu Y3Rpb25zOyBmaV9pZHgrKykgeworCQlmaV9wdHIgPSBpbmZvLT5mdW5jdGlvbnNbZmlfaWR4XTsK KworCQkvKiBGdW5jdGlvbiByZWNvcmQuICovCisJCXBvcyArPSBzdG9yZV9nY292X3UzMihidWZm ZXIsIHBvcywgR0NPVl9UQUdfRlVOQ1RJT04pOworCQlwb3MgKz0gc3RvcmVfZ2Nvdl91MzIoYnVm ZmVyLCBwb3MsIEdDT1ZfVEFHX0ZVTkNUSU9OX0xFTkdUSCk7CisJCXBvcyArPSBzdG9yZV9nY292 X3UzMihidWZmZXIsIHBvcywgZmlfcHRyLT5pZGVudCk7CisJCXBvcyArPSBzdG9yZV9nY292X3Uz MihidWZmZXIsIHBvcywgZmlfcHRyLT5saW5lbm9fY2hlY2tzdW0pOworCQlwb3MgKz0gc3RvcmVf Z2Nvdl91MzIoYnVmZmVyLCBwb3MsIGZpX3B0ci0+Y2ZnX2NoZWNrc3VtKTsKKworCQljaV9wdHIg PSBmaV9wdHItPmN0cnM7CisKKwkJZm9yIChjdF9pZHggPSAwOyBjdF9pZHggPCBHQ09WX0NPVU5U RVJTOyBjdF9pZHgrKykgeworCQkJaWYgKCFjb3VudGVyX2FjdGl2ZShpbmZvLCBjdF9pZHgpKQor CQkJCWNvbnRpbnVlOworCisJCQkvKiBDb3VudGVyIHJlY29yZC4gKi8KKwkJCXBvcyArPSBzdG9y ZV9nY292X3UzMihidWZmZXIsIHBvcywKKwkJCQkJICAgICAgR0NPVl9UQUdfRk9SX0NPVU5URVIo Y3RfaWR4KSk7CisJCQlwb3MgKz0gc3RvcmVfZ2Nvdl91MzIoYnVmZmVyLCBwb3MsIGNpX3B0ci0+ bnVtICogMik7CisKKwkJCWZvciAoY3ZfaWR4ID0gMDsgY3ZfaWR4IDwgY2lfcHRyLT5udW07IGN2 X2lkeCsrKSB7CisJCQkJcG9zICs9IHN0b3JlX2djb3ZfdTY0KGJ1ZmZlciwgcG9zLAorCQkJCQkJ ICAgICAgY2lfcHRyLT52YWx1ZXNbY3ZfaWR4XSk7CisJCQl9CisKKwkJCWNpX3B0cisrOworCQl9 CisJfQorCisJcmV0dXJuIHBvczsKK30KKworLyoqCisgKiBnY292X2l0ZXJfbmV3IC0gYWxsb2Nh dGUgYW5kIGluaXRpYWxpemUgcHJvZmlsaW5nIGRhdGEgaXRlcmF0b3IKKyAqIEBpbmZvOiBwcm9m aWxpbmcgZGF0YSBzZXQgdG8gYmUgaXRlcmF0ZWQKKyAqCisgKiBSZXR1cm4gZmlsZSBpdGVyYXRv ciBvbiBzdWNjZXNzLCAlTlVMTCBvdGhlcndpc2UuCisgKi8KK3N0cnVjdCBnY292X2l0ZXJhdG9y ICpnY292X2l0ZXJfbmV3KHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisJc3RydWN0IGdjb3Zf aXRlcmF0b3IgKml0ZXI7CisKKwlpdGVyID0ga3phbGxvYyhzaXplb2Yoc3RydWN0IGdjb3ZfaXRl cmF0b3IpLCBHRlBfS0VSTkVMKTsKKwlpZiAoIWl0ZXIpCisJCWdvdG8gZXJyX2ZyZWU7CisKKwlp dGVyLT5pbmZvID0gaW5mbzsKKwkvKiBEcnktcnVuIHRvIGdldCB0aGUgYWN0dWFsIGJ1ZmZlciBz aXplLiAqLworCWl0ZXItPnNpemUgPSBjb252ZXJ0X3RvX2djZGEoTlVMTCwgaW5mbyk7CisJaXRl ci0+YnVmZmVyID0gdm1hbGxvYyhpdGVyLT5zaXplKTsKKwlpZiAoIWl0ZXItPmJ1ZmZlcikKKwkJ Z290byBlcnJfZnJlZTsKKworCWNvbnZlcnRfdG9fZ2NkYShpdGVyLT5idWZmZXIsIGluZm8pOwor CisJcmV0dXJuIGl0ZXI7CisKK2Vycl9mcmVlOgorCWtmcmVlKGl0ZXIpOworCXJldHVybiBOVUxM OworfQorCisKKy8qKgorICogZ2Nvdl9pdGVyX2dldF9pbmZvIC0gcmV0dXJuIHByb2ZpbGluZyBk YXRhIHNldCBmb3IgZ2l2ZW4gZmlsZSBpdGVyYXRvcgorICogQGl0ZXI6IGZpbGUgaXRlcmF0b3IK KyAqLwordm9pZCBnY292X2l0ZXJfZnJlZShzdHJ1Y3QgZ2Nvdl9pdGVyYXRvciAqaXRlcikKK3sK Kwl2ZnJlZShpdGVyLT5idWZmZXIpOworCWtmcmVlKGl0ZXIpOworfQorCisvKioKKyAqIGdjb3Zf aXRlcl9nZXRfaW5mbyAtIHJldHVybiBwcm9maWxpbmcgZGF0YSBzZXQgZm9yIGdpdmVuIGZpbGUg aXRlcmF0b3IKKyAqIEBpdGVyOiBmaWxlIGl0ZXJhdG9yCisgKi8KK3N0cnVjdCBnY292X2luZm8g Kmdjb3ZfaXRlcl9nZXRfaW5mbyhzdHJ1Y3QgZ2Nvdl9pdGVyYXRvciAqaXRlcikKK3sKKwlyZXR1 cm4gaXRlci0+aW5mbzsKK30KKworLyoqCisgKiBnY292X2l0ZXJfc3RhcnQgLSByZXNldCBmaWxl IGl0ZXJhdG9yIHRvIHN0YXJ0aW5nIHBvc2l0aW9uCisgKiBAaXRlcjogZmlsZSBpdGVyYXRvcgor ICovCit2b2lkIGdjb3ZfaXRlcl9zdGFydChzdHJ1Y3QgZ2Nvdl9pdGVyYXRvciAqaXRlcikKK3sK KwlpdGVyLT5wb3MgPSAwOworfQorCisvKioKKyAqIGdjb3ZfaXRlcl9uZXh0IC0gYWR2YW5jZSBm aWxlIGl0ZXJhdG9yIHRvIG5leHQgbG9naWNhbCByZWNvcmQKKyAqIEBpdGVyOiBmaWxlIGl0ZXJh dG9yCisgKgorICogUmV0dXJuIHplcm8gaWYgbmV3IHBvc2l0aW9uIGlzIHZhbGlkLCBub24temVy byBpZiBpdGVyYXRvciBoYXMgcmVhY2hlZCBlbmQuCisgKi8KK2ludCBnY292X2l0ZXJfbmV4dChz dHJ1Y3QgZ2Nvdl9pdGVyYXRvciAqaXRlcikKK3sKKwlpZiAoaXRlci0+cG9zIDwgaXRlci0+c2l6 ZSkKKwkJaXRlci0+cG9zICs9IElURVJfU1RSSURFOworCisJaWYgKGl0ZXItPnBvcyA+PSBpdGVy LT5zaXplKQorCQlyZXR1cm4gLUVJTlZBTDsKKworCXJldHVybiAwOworfQorCisvKioKKyAqIGdj b3ZfaXRlcl93cml0ZSAtIHdyaXRlIGRhdGEgZm9yIGN1cnJlbnQgcG9zIHRvIHNlcV9maWxlCisg KiBAaXRlcjogZmlsZSBpdGVyYXRvcgorICogQHNlcTogc2VxX2ZpbGUgaGFuZGxlCisgKgorICog UmV0dXJuIHplcm8gb24gc3VjY2Vzcywgbm9uLXplcm8gb3RoZXJ3aXNlLgorICovCitpbnQgZ2Nv dl9pdGVyX3dyaXRlKHN0cnVjdCBnY292X2l0ZXJhdG9yICppdGVyLCBzdHJ1Y3Qgc2VxX2ZpbGUg KnNlcSkKK3sKKwlzaXplX3QgbGVuOworCisJaWYgKGl0ZXItPnBvcyA+PSBpdGVyLT5zaXplKQor CQlyZXR1cm4gLUVJTlZBTDsKKworCWxlbiA9IElURVJfU1RSSURFOworCWlmIChpdGVyLT5wb3Mg KyBsZW4gPiBpdGVyLT5zaXplKQorCQlsZW4gPSBpdGVyLT5zaXplIC0gaXRlci0+cG9zOworCisJ c2VxX3dyaXRlKHNlcSwgaXRlci0+YnVmZmVyICsgaXRlci0+cG9zLCBsZW4pOworCisJcmV0dXJu IDA7Cit9CmRpZmYgLS1naXQgYS9rZXJuZWwvZ2Nvdi9nY292LmggYi9rZXJuZWwvZ2Nvdi9nY292 LmgKaW5kZXggMDYwMDczZS4uOTJjOGUyMiAxMDA2NDQKLS0tIGEva2VybmVsL2djb3YvZ2Nvdi5o CisrKyBiL2tlcm5lbC9nY292L2djb3YuaApAQCAtMjEsNyArMjEsNiBAQAogICogZ2NjIGFuZCBu ZWVkIHRvIGJlIGtlcHQgYXMgY2xvc2UgdG8gdGhlIG9yaWdpbmFsIGRlZmluaXRpb24gYXMgcG9z c2libGUgdG8KICAqIHJlbWFpbiBjb21wYXRpYmxlLgogICovCi0jZGVmaW5lIEdDT1ZfQ09VTlRF UlMJCTUKICNkZWZpbmUgR0NPVl9EQVRBX01BR0lDCQkoKHVuc2lnbmVkIGludCkgMHg2NzYzNjQ2 MSkKICNkZWZpbmUgR0NPVl9UQUdfRlVOQ1RJT04JKCh1bnNpZ25lZCBpbnQpIDB4MDEwMDAwMDAp CiAjZGVmaW5lIEdDT1ZfVEFHX0NPVU5URVJfQkFTRQkoKHVuc2lnbmVkIGludCkgMHgwMWExMDAw MCkKQEAgLTM0LDYwICszMywxOCBAQCB0eXBlZGVmIGxvbmcgZ2Nvdl90eXBlOwogdHlwZWRlZiBs b25nIGxvbmcgZ2Nvdl90eXBlOwogI2VuZGlmCiAKLS8qKgotICogc3RydWN0IGdjb3ZfZm5faW5m byAtIHByb2ZpbGluZyBtZXRhIGRhdGEgcGVyIGZ1bmN0aW9uCi0gKiBAaWRlbnQ6IG9iamVjdCBm aWxlLXVuaXF1ZSBmdW5jdGlvbiBpZGVudGlmaWVyCi0gKiBAY2hlY2tzdW06IGZ1bmN0aW9uIGNo ZWNrc3VtCi0gKiBAbl9jdHJzOiBudW1iZXIgb2YgdmFsdWVzIHBlciBjb3VudGVyIHR5cGUgYmVs b25naW5nIHRvIHRoaXMgZnVuY3Rpb24KLSAqCi0gKiBUaGlzIGRhdGEgaXMgZ2VuZXJhdGVkIGJ5 IGdjYyBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGRvZXNuJ3QgY2hhbmdlCi0gKiBhdCBydW4tdGlt ZS4KLSAqLwotc3RydWN0IGdjb3ZfZm5faW5mbyB7Ci0JdW5zaWduZWQgaW50IGlkZW50OwotCXVu c2lnbmVkIGludCBjaGVja3N1bTsKLQl1bnNpZ25lZCBpbnQgbl9jdHJzWzBdOwotfTsKLQotLyoq Ci0gKiBzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyAtIHByb2ZpbGluZyBkYXRhIHBlciBjb3VudGVyIHR5 cGUKLSAqIEBudW06IG51bWJlciBvZiBjb3VudGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCi0gKiBA dmFsdWVzOiBhcnJheSBvZiBjb3VudGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCi0gKiBAbWVyZ2U6 IG1lcmdlIGZ1bmN0aW9uIGZvciBjb3VudGVyIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHVudXNlZCkK LSAqCi0gKiBUaGlzIGRhdGEgaXMgZ2VuZXJhdGVkIGJ5IGdjYyBkdXJpbmcgY29tcGlsYXRpb24g YW5kIGRvZXNuJ3QgY2hhbmdlCi0gKiBhdCBydW4tdGltZSB3aXRoIHRoZSBleGNlcHRpb24gb2Yg dGhlIHZhbHVlcyBhcnJheS4KLSAqLwotc3RydWN0IGdjb3ZfY3RyX2luZm8gewotCXVuc2lnbmVk IGludAludW07Ci0JZ2Nvdl90eXBlCSp2YWx1ZXM7Ci0Jdm9pZAkJKCptZXJnZSkoZ2Nvdl90eXBl ICosIHVuc2lnbmVkIGludCk7Ci19OworLyogT3BhcXVlIGdjb3ZfaW5mby4gVGhlIGdjb3Ygc3Ry dWN0dXJlcyBjYW4gY2hhbmdlIGFzIGZvciBleGFtcGxlIGluIGdjYyA0Ljcgc28KKyAqIHdlIGNh bm5vdCB1c2UgZnVsbCBkZWZpbml0aW9uIGhlcmUgYW5kIHRoZXkgbmVlZCB0byBiZSBwbGFjZWQg aW4gZ2NjIHNwZWNpZmljCisgKiBpbXBsZW1lbnRhdGlvbiBvZiBnY292LiBUaGlzIGFsc28gbWVh bnMgbm8gZGlyZWN0IGFjY2VzcyB0byB0aGUgbWVtYmVycyBpbgorICogZ2VuZXJpYyBjb2RlIGFu ZCB1c2FnZSBvZiB0aGUgaW50ZXJmYWNlIGJlbG93LiovCitzdHJ1Y3QgZ2Nvdl9pbmZvOwogCi0v KioKLSAqIHN0cnVjdCBnY292X2luZm8gLSBwcm9maWxpbmcgZGF0YSBwZXIgb2JqZWN0IGZpbGUK LSAqIEB2ZXJzaW9uOiBnY292IHZlcnNpb24gbWFnaWMgaW5kaWNhdGluZyB0aGUgZ2NjIHZlcnNp b24gdXNlZCBmb3IgY29tcGlsYXRpb24KLSAqIEBuZXh0OiBsaXN0IGhlYWQgZm9yIGEgc2luZ2x5 LWxpbmtlZCBsaXN0Ci0gKiBAc3RhbXA6IHRpbWUgc3RhbXAKLSAqIEBmaWxlbmFtZTogbmFtZSBv ZiB0aGUgYXNzb2NpYXRlZCBnY292IGRhdGEgZmlsZQotICogQG5fZnVuY3Rpb25zOiBudW1iZXIg b2YgaW5zdHJ1bWVudGVkIGZ1bmN0aW9ucwotICogQGZ1bmN0aW9uczogZnVuY3Rpb24gZGF0YQot ICogQGN0cl9tYXNrOiBtYXNrIHNwZWNpZnlpbmcgd2hpY2ggY291bnRlciB0eXBlcyBhcmUgYWN0 aXZlCi0gKiBAY291bnRzOiBjb3VudGVyIGRhdGEgcGVyIGNvdW50ZXIgdHlwZQotICoKLSAqIFRo aXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24n dCBjaGFuZ2UKLSAqIGF0IHJ1bi10aW1lIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgbmV4dCBw b2ludGVyLgotICovCi1zdHJ1Y3QgZ2Nvdl9pbmZvIHsKLQl1bnNpZ25lZCBpbnQJCQl2ZXJzaW9u OwotCXN0cnVjdCBnY292X2luZm8JCSpuZXh0OwotCXVuc2lnbmVkIGludAkJCXN0YW1wOwotCWNv bnN0IGNoYXIJCQkqZmlsZW5hbWU7Ci0JdW5zaWduZWQgaW50CQkJbl9mdW5jdGlvbnM7Ci0JY29u c3Qgc3RydWN0IGdjb3ZfZm5faW5mbwkqZnVuY3Rpb25zOwotCXVuc2lnbmVkIGludAkJCWN0cl9t YXNrOwotCXN0cnVjdCBnY292X2N0cl9pbmZvCQljb3VudHNbMF07Ci19OworLyogSW50ZXJmYWNl IHRvIGFjY2VzcyBnY292X2luZm8gZGF0YSAgKi8KK2NvbnN0IGNoYXIgKmdjb3ZfaW5mb19maWxl bmFtZShzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKTsKK3Vuc2lnbmVkIGludCBnY292X2luZm9fdmVy c2lvbihzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKTsKK3N0cnVjdCBnY292X2luZm8gKmdjb3ZfaW5m b19uZXh0KHN0cnVjdCBnY292X2luZm8gKmluZm8pOwordm9pZCBnY292X2luZm9fbGluayhzdHJ1 Y3QgZ2Nvdl9pbmZvICppbmZvKTsKK3ZvaWQgZ2Nvdl9pbmZvX3VubGluayhzdHJ1Y3QgZ2Nvdl9p bmZvICpwcmV2LCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKTsKIAogLyogQmFzZSBpbnRlcmZhY2Uu ICovCiBlbnVtIGdjb3ZfYWN0aW9uIHsKZGlmZiAtLWdpdCBhL2tlcm5lbC9tb2R1bGUuYyBiL2tl cm5lbC9tb2R1bGUuYwppbmRleCBlYWIwODI3Li5hMjE0NjNjIDEwMDY0NAotLS0gYS9rZXJuZWwv bW9kdWxlLmMKKysrIGIva2VybmVsL21vZHVsZS5jCkBAIC0yNzQzLDcgKzI3NDMsNyBAQCBzdGF0 aWMgdm9pZCBmaW5kX21vZHVsZV9zZWN0aW9ucyhzdHJ1Y3QgbW9kdWxlICptb2QsIHN0cnVjdCBs b2FkX2luZm8gKmluZm8pCiAJbW9kLT51bnVzZWRfZ3BsX2NyY3MgPSBzZWN0aW9uX2FkZHIoaW5m bywgIl9fa2NyY3RhYl91bnVzZWRfZ3BsIik7CiAjZW5kaWYKICNpZmRlZiBDT05GSUdfQ09OU1RS VUNUT1JTCi0JbW9kLT5jdG9ycyA9IHNlY3Rpb25fb2JqcyhpbmZvLCAiLmN0b3JzIiwKKwltb2Qt PmN0b3JzID0gc2VjdGlvbl9vYmpzKGluZm8sIENPTkZJR19DT05TVFJVQ1RPUlNfTkFNRSwKIAkJ CQkgIHNpemVvZigqbW9kLT5jdG9ycyksICZtb2QtPm51bV9jdG9ycyk7CiAjZW5kaWYKIApkaWZm IC0tZ2l0IGEvbW0vTWFrZWZpbGUgYi9tbS9NYWtlZmlsZQppbmRleCAzYTQ2Mjg3Li5iZTEzMDVi IDEwMDY0NAotLS0gYS9tbS9NYWtlZmlsZQorKysgYi9tbS9NYWtlZmlsZQpAQCAtMSw3ICsxLDgg QEAKICMKICMgTWFrZWZpbGUgZm9yIHRoZSBsaW51eCBtZW1vcnkgbWFuYWdlci4KICMKLQoKK0dD T1ZfUFJPRklMRSA6PSBuCiBtbXUteQkJCTo9IG5vbW11Lm8KIG1tdS0kKENPTkZJR19NTVUpCTo9 IGZyZW1hcC5vIGhpZ2htZW0ubyBtYWR2aXNlLm8gbWVtb3J5Lm8gbWluY29yZS5vIFwKIAkJCSAg IG1sb2NrLm8gbW1hcC5vIG1wcm90ZWN0Lm8gbXJlbWFwLm8gbXN5bmMubyBybWFwLm8gXAoKIAot LSAKMS43LjkuNQoK ------=_20140714162943000000_87027 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline ------------------------------------------------------------------------------ Want fast and easy access to all the code in your enterprise? Index and search up to 200,000 lines of code with a free copy of Black Duck® Code Sight™ - the same software that powers the world's largest code search on Ohloh, the Black Duck Open Hub! Try it now. http://p.sf.net/sfu/bds ------=_20140714162943000000_87027 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list ------=_20140714162943000000_87027--