Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Mar 2012 05:30:18 GMT
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@FreeBSD.org
Subject:   Re: kern/166190: [ath] TX hangs and frames stuck in TX queue
Message-ID:  <201203190530.q2J5UI0x085928@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/166190; it has been noted by GNATS.

From: Adrian Chadd <adrian@freebsd.org>
To: bug-followup@freebsd.org, Vincent Hoffman <vince@unsane.co.uk>
Cc: freebsd-wireless@freebsd.org
Subject: Re: kern/166190: [ath] TX hangs and frames stuck in TX queue
Date: Sun, 18 Mar 2012 22:27:43 -0700

 --047d7b33c9fe4e3ed604bb91d101
 Content-Type: text/plain; charset=ISO-8859-1
 
 Hi Vincent,
 
 Please try this patch and let me know how it behaves.
 
 Thanks,
 
 
 
 Adrian
 
 --047d7b33c9fe4e3ed604bb91d101
 Content-Type: text/x-patch; charset=US-ASCII; name="kern-166190-baw.diff"
 Content-Disposition: attachment; filename="kern-166190-baw.diff"
 Content-Transfer-Encoding: base64
 X-Attachment-Id: f_gzz2qutw0
 
 SW5kZXg6IHN5cy9kZXYvYXRoL2lmX2F0aF9kZWJ1Zy5jCj09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHN5cy9kZXYv
 YXRoL2lmX2F0aF9kZWJ1Zy5jCShyZXZpc2lvbiAyMzMwODkpCisrKyBzeXMvZGV2L2F0aC9pZl9h
 dGhfZGVidWcuYwkod29ya2luZyBjb3B5KQpAQCAtMTM1LDE5ICsxMzUsMjMgQEAKIAlwcmludGYo
 IlEldVslM3VdIiwgcW51bSwgaXgpOwogCXdoaWxlIChiZiAhPSBOVUxMKSB7CiAJCWZvciAoaSA9
 IDAsIGRzID0gYmYtPmJmX2Rlc2M7IGkgPCBiZi0+YmZfbnNlZzsgaSsrLCBkcysrKSB7Ci0JCQlw
 cmludGYoIiAoRFMuVjolcCBEUy5QOiVwKSBMOiUwOHggRDolMDh4IEY6JTA0eCVzXG4iCi0JCQkg
 ICAgICAgIiAgICAgICAgVFhGOiAlMDR4IFNlcTogJWQgc3d0cnk6ICVkIEFEREJBVz86ICVkIERP
 QkFXPzogJWRcbiIKLQkJCSAgICAgICAiICAgICAgICAlMDh4ICUwOHggJTA4eCAlMDh4ICUwOHgg
 JTA4eFxuIiwKKwkJCXByaW50ZigiIChEUy5WOiVwIERTLlA6JXApIEw6JTA4eCBEOiUwOHggRjol
 MDR4JXNcbiIsCiAJCQkgICAgZHMsIChjb25zdCBzdHJ1Y3QgYXRoX2Rlc2MgKiliZi0+YmZfZGFk
 ZHIgKyBpLAogCQkJICAgIGRzLT5kc19saW5rLCBkcy0+ZHNfZGF0YSwgYmYtPmJmX3R4ZmxhZ3Ms
 Ci0JCQkgICAgIWRvbmUgPyAiIiA6ICh0cy0+dHNfc3RhdHVzID09IDApID8gIiAqIiA6ICIgISIs
 CisJCQkgICAgIWRvbmUgPyAiIiA6ICh0cy0+dHNfc3RhdHVzID09IDApID8gIiAqIiA6ICIgISIp
 OworCQkJcHJpbnRmKCIgICAgICAgIFRYRjogJTA0eCBTZXE6ICVkIHN3dHJ5OiAlZCBBRERCQVc/
 OiAlZCBET0JBVz86ICVkXG4iLAogCQkJICAgIGJmLT5iZl9zdGF0ZS5iZnNfZmxhZ3MsCiAJCQkg
 ICAgYmYtPmJmX3N0YXRlLmJmc19zZXFubywKIAkJCSAgICBiZi0+YmZfc3RhdGUuYmZzX3JldHJp
 ZXMsCiAJCQkgICAgYmYtPmJmX3N0YXRlLmJmc19hZGRlZGJhdywKLQkJCSAgICBiZi0+YmZfc3Rh
 dGUuYmZzX2RvYmF3LAorCQkJICAgIGJmLT5iZl9zdGF0ZS5iZnNfZG9iYXcpOworCQkJcHJpbnRm
 KCIgICAgICAgIFNFUU5PX0FTU0lHTkVEOiAlZCwgTkVFRF9TRVFOTzogJWRcbiIsCisJCQkgICAg
 YmYtPmJmX3N0YXRlLmJmc19zZXFub19hc3NpZ25lZCwKKwkJCSAgICBiZi0+YmZfc3RhdGUuYmZz
 X25lZWRfc2Vxbm8pOworCQkJcHJpbnRmKCIgICAgICAgICUwOHggJTA4eCAlMDh4ICUwOHggJTA4
 eCAlMDh4XG4iLAogCQkJICAgIGRzLT5kc19jdGwwLCBkcy0+ZHNfY3RsMSwKLQkJCSAgICBkcy0+
 ZHNfaHdbMF0sIGRzLT5kc19od1sxXSwgZHMtPmRzX2h3WzJdLCBkcy0+ZHNfaHdbM10pOworCQkJ
 ICAgIGRzLT5kc19od1swXSwgZHMtPmRzX2h3WzFdLAorCQkJICAgIGRzLT5kc19od1syXSwgZHMt
 PmRzX2h3WzNdKTsKIAkJCWlmIChhaC0+YWhfbWFnaWMgPT0gMHgyMDA2NTQxNikgewogCQkJCXBy
 aW50ZigiICAgICAgICAlMDh4ICUwOHggJTA4eCAlMDh4ICUwOHggJTA4eCAlMDh4ICUwOHhcbiIs
 CiAJCQkJICAgIGRzLT5kc19od1s0XSwgZHMtPmRzX2h3WzVdLCBkcy0+ZHNfaHdbNl0sCkluZGV4
 OiBzeXMvZGV2L2F0aC9pZl9hdGh2YXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBzeXMvZGV2L2F0aC9pZl9h
 dGh2YXIuaAkocmV2aXNpb24gMjMzMDg5KQorKysgc3lzL2Rldi9hdGgvaWZfYXRodmFyLmgJKHdv
 cmtpbmcgY29weSkKQEAgLTIxNSw2ICsyMTUsOCBAQAogCQlpbnQgYmZzX2lzbXJyOjE7CS8qIGRv
 IG11bHRpLXJhdGUgVFggcmV0cnkgKi8KIAkJaW50IGJmc19kb3Byb3Q6MTsJLyogZG8gUlRTL0NU
 UyBiYXNlZCBwcm90ZWN0aW9uICovCiAJCWludCBiZnNfZG9yYXRlbG9va3VwOjE7CS8qIGRvIHJh
 dGUgbG9va3VwIGJlZm9yZSBlYWNoIFRYICovCisJCWludCBiZnNfbmVlZF9zZXFubzoxOwkvKiBu
 ZWVkIHRvIGFzc2lnbiBhIHNlcW5vIGZvciBhZ2dyZWdhdGlvbiAqLworCQlpbnQgYmZzX3NlcW5v
 X2Fzc2lnbmVkOjE7CS8qIHNlcW5vIGhhcyBiZWVuIGFzc2lnbmVkICovCiAJCWludCBiZnNfbmZs
 OwkJLyogbmV4dCBmcmFnbWVudCBsZW5ndGggKi8KIAogCQkvKgpJbmRleDogc3lzL2Rldi9hdGgv
 aWZfYXRoX3R4X2h0LmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3lzL2Rldi9hdGgvaWZfYXRoX3R4X2h0LmMJ
 KHJldmlzaW9uIDIzMzA4OSkKKysrIHN5cy9kZXYvYXRoL2lmX2F0aF90eF9odC5jCSh3b3JraW5n
 IGNvcHkpCkBAIC02NDQsNyArNjQ0LDcgQEAKIGF0aF90eF9mb3JtX2FnZ3Ioc3RydWN0IGF0aF9z
 b2Z0YyAqc2MsIHN0cnVjdCBhdGhfbm9kZSAqYW4sIHN0cnVjdCBhdGhfdGlkICp0aWQsCiAgICAg
 YXRoX2J1ZmhlYWQgKmJmX3EpCiB7Ci0JLy9zdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pID0gJmFu
 LT5hbl9ub2RlOworCXN0cnVjdCBpZWVlODAyMTFfbm9kZSAqbmkgPSAmYW4tPmFuX25vZGU7CiAJ
 c3RydWN0IGF0aF9idWYgKmJmLCAqYmZfZmlyc3QgPSBOVUxMLCAqYmZfcHJldiA9IE5VTEw7CiAJ
 aW50IG5mcmFtZXMgPSAwOwogCXVpbnQxNl90IGFnZ3JfbGltaXQgPSAwLCBhbCA9IDAsIGJwYWQg
 PSAwLCBhbF9kZWx0YSwgaF9iYXc7CkBAIC02NTIsNiArNjUyLDcgQEAKIAlpbnQgc3RhdHVzID0g
 QVRIX0FHR1JfRE9ORTsKIAlpbnQgcHJldl9mcmFtZXMgPSAwOwkvKiBYWFggZm9yIEFSNTQxNiBi
 dXJzdCwgbm90IGRvbmUgaGVyZSAqLwogCWludCBwcmV2X2FsID0gMDsJLyogWFhYIGFsc28gZm9y
 IEFSNTQxNiBidXJzdCAqLworCWludCBzZXFubzsKIAogCUFUSF9UWFFfTE9DS19BU1NFUlQoc2Mt
 PnNjX2FjMnFbdGlkLT5hY10pOwogCkBAIC03MDcsMTYgKzcwOCw2IEBACiAJCSAqLwogCiAJCS8q
 Ci0JCSAqIElmIHRoZSBwYWNrZXQgaGFzIGEgc2VxdWVuY2UgbnVtYmVyLCBkbyBub3QKLQkJICog
 c3RlcCBvdXRzaWRlIG9mIHRoZSBibG9jay1hY2sgd2luZG93LgotCQkgKi8KLQkJaWYgKCEgQkFX
 X1dJVEhJTih0YXAtPnR4YV9zdGFydCwgdGFwLT50eGFfd25kLAotCQkgICAgU0VRTk8oYmYtPmJm
 X3N0YXRlLmJmc19zZXFubykpKSB7Ci0JCSAgICBzdGF0dXMgPSBBVEhfQUdHUl9CQVdfQ0xPU0VE
 OwotCQkgICAgYnJlYWs7Ci0JCX0KLQotCQkvKgogCQkgKiBYWFggVE9ETzogQVI1NDE2IGhhcyBh
 biA4SyBhZ2dyZWdhdGlvbiBzaXplIGxpbWl0CiAJCSAqIHdoZW4gUlRTIGlzIGVuYWJsZWQsIGFu
 ZCBSVFMgaXMgcmVxdWlyZWQgZm9yIGR1YWwtc3RyZWFtCiAJCSAqIHJhdGVzLgpAQCAtNzQ0LDYg
 KzczNSw1OCBAQAogCQl9CiAKIAkJLyoKKwkJICogVE9ETzogSWYgaXQncyBfYmVmb3JlXyB0aGUg
 QkFXIGxlZnQgZWRnZSwgY29tcGxhaW4gdmVyeSBsb3VkbHkuCisJCSAqIFRoaXMgbWVhbnMgc29t
 ZXRoaW5nIChlbHNlKSBoYXMgc2xpZCB0aGUgbGVmdCBlZGdlIGFsb25nCisJCSAqIGJlZm9yZSB3
 ZSBnb3QgYSBjaGFuY2UgdG8gYmUgVFhlZC4KKwkJICovCisKKwkJLyoKKwkJICogQ2hlY2sgaWYg
 d2UgaGF2ZSBzcGFjZSBpbiB0aGUgQkFXIGZvciB0aGlzIGZyYW1lIGJlZm9yZQorCQkgKiB3ZSBh
 ZGQgaXQuCisJCSAqCisJCSAqIHNlZSBhdGhfdHhfeG1pdF9hZ2dyKCkgZm9yIG1vcmUgaW5mby4K
 KwkJICovCisJCWlmIChiZi0+YmZfc3RhdGUuYmZzX2RvYmF3KSB7CisJCQlpZiAoISBCQVdfV0lU
 SElOKHRhcC0+dHhhX3N0YXJ0LCB0YXAtPnR4YV93bmQsCisJCQkgICAgbmktPm5pX3R4c2Vxc1ti
 Zi0+YmZfc3RhdGUuYmZzX3RpZF0pKSB7CisJCQkJc3RhdHVzID0gQVRIX0FHR1JfQkFXX0NMT1NF
 RDsKKwkJCQlicmVhazsKKwkJCX0KKwkJCS8qIFhYWCBjaGVjayBmb3IgYmZzX25lZWRfc2Vxbm8/
 ICovCisJCQlpZiAoISBiZi0+YmZfc3RhdGUuYmZzX3NlcW5vX2Fzc2lnbmVkKSB7CisJCQkJc2Vx
 bm8gPSBhdGhfdHhfdGlkX3NlcW5vX2Fzc2lnbihzYywgbmksIGJmLCBiZi0+YmZfbSk7CisJCQkJ
 aWYgKHNlcW5vIDwgMCkgeworCQkJCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsCisJCQkJCSAg
 ICAiJXM6IGJmPSVwLCBodWgsIHNlcW5vPS0xP1xuIiwKKwkJCQkJICAgIF9fZnVuY19fLAorCQkJ
 CQkgICAgYmYpOworCQkJCQkvKiBYWFggd2hhdCBjYW4gd2UgZXZlbiBkbyBoZXJlPyAqLworCQkJ
 CX0KKwkJCQkvKiBGbHVzaCBzZXFubyB1cGRhdGUgdG8gUkFNICovCisJCQkJLyoKKwkJCQkgKiBY
 WFggVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIHRoZSBkbWFzZXR1cAorCQkJCSAqIFhYWCBpcyBk
 b25lIGVhcmx5IHJhdGhlciB0aGFuIGF0IGRpc3BhdGNoCisJCQkJICogWFhYIHRpbWUuIEV3LCB3
 ZSBzaG91bGQgZml4IHRoaXMhCisJCQkJICovCisJCQkJYnVzX2RtYW1hcF9zeW5jKHNjLT5zY19k
 bWF0LCBiZi0+YmZfZG1hbWFwLAorCQkJCSAgICBCVVNfRE1BU1lOQ19QUkVXUklURSk7CisJCQl9
 CisJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgcGFja2V0IGhhcyBhIHNlcXVlbmNlIG51bWJlciwg
 ZG8gbm90CisJCSAqIHN0ZXAgb3V0c2lkZSBvZiB0aGUgYmxvY2stYWNrIHdpbmRvdy4KKwkJICov
 CisJCWlmICghIEJBV19XSVRISU4odGFwLT50eGFfc3RhcnQsIHRhcC0+dHhhX3duZCwKKwkJICAg
 IFNFUU5PKGJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm8pKSkgeworCQkJZGV2aWNlX3ByaW50ZihzYy0+
 c2NfZGV2LAorCQkJICAgICIlczogYmY9JXAsIHNlcW5vPSVkLCBvdXRzaWRlPyFcbiIsCisJCQkg
 ICAgX19mdW5jX18sIGJmLCBTRVFOTyhiZi0+YmZfc3RhdGUuYmZzX3NlcW5vKSk7CisJCQlzdGF0
 dXMgPSBBVEhfQUdHUl9CQVdfQ0xPU0VEOworCQkJYnJlYWs7CisJCX0KKworCQkvKgogCQkgKiB0
 aGlzIHBhY2tldCBpcyBwYXJ0IG9mIGFuIGFnZ3JlZ2F0ZS4KIAkJICovCiAJCUFUSF9UWFFfUkVN
 T1ZFKHRpZCwgYmYsIGJmX2xpc3QpOwpJbmRleDogc3lzL2Rldi9hdGgvaWZfYXRoX3R4LmMKPT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PT09PQotLS0gc3lzL2Rldi9hdGgvaWZfYXRoX3R4LmMJKHJldmlzaW9uIDIzMzA4OSkKKysr
 IHN5cy9kZXYvYXRoL2lmX2F0aF90eC5jCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksOCArMTA5LDYg
 QEAKICAgICBpbnQgdGlkKTsKIHN0YXRpYyBpbnQgYXRoX3R4X2FtcGR1X3J1bm5pbmcoc3RydWN0
 IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBhdGhfbm9kZSAqYW4sCiAgICAgaW50IHRpZCk7Ci1zdGF0
 aWMgaWVlZTgwMjExX3NlcSBhdGhfdHhfdGlkX3NlcW5vX2Fzc2lnbihzdHJ1Y3QgYXRoX3NvZnRj
 ICpzYywKLSAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYs
 IHN0cnVjdCBtYnVmICptMCk7CiBzdGF0aWMgaW50IGF0aF90eF9hY3Rpb25fZnJhbWVfb3ZlcnJp
 ZGVfcXVldWUoc3RydWN0IGF0aF9zb2Z0YyAqc2MsCiAgICAgc3RydWN0IGllZWU4MDIxMV9ub2Rl
 ICpuaSwgc3RydWN0IG1idWYgKm0wLCBpbnQgKnRpZCk7CiAKQEAgLTEzNzYsNyArMTM3NCw3IEBA
 CiAJaW50IGlzbWNhc3Q7CiAJY29uc3Qgc3RydWN0IGllZWU4MDIxMV9mcmFtZSAqd2g7CiAJaW50
 IGlzX2FtcGR1LCBpc19hbXBkdV90eCwgaXNfYW1wZHVfcGVuZGluZzsKLQlpZWVlODAyMTFfc2Vx
 IHNlcW5vOworCS8vaWVlZTgwMjExX3NlcSBzZXFubzsKIAl1aW50OF90IHR5cGUsIHN1YnR5cGU7
 CiAKIAkvKgpAQCAtMTQyOCw4ICsxNDI2LDkgQEAKIAlpc19hbXBkdV9wZW5kaW5nID0gYXRoX3R4
 X2FtcGR1X3BlbmRpbmcoc2MsIEFUSF9OT0RFKG5pKSwgdGlkKTsKIAlpc19hbXBkdSA9IGlzX2Ft
 cGR1X3R4IHwgaXNfYW1wZHVfcGVuZGluZzsKIAotCURQUklOVEYoc2MsIEFUSF9ERUJVR19TV19U
 WCwgIiVzOiB0aWQ9JWQsIGFjPSVkLCBpc19hbXBkdT0lZFxuIiwKLQkgICAgX19mdW5jX18sIHRp
 ZCwgcHJpLCBpc19hbXBkdSk7CisJRFBSSU5URihzYywgQVRIX0RFQlVHX1NXX1RYLAorCSAgICAi
 JXM6IGJmPSVwLCB0aWQ9JWQsIGFjPSVkLCBpc19hbXBkdT0lZFxuIiwKKwkgICAgX19mdW5jX18s
 IGJmLCB0aWQsIHByaSwgaXNfYW1wZHUpOwogCiAJLyogTXVsdGljYXN0IGZyYW1lcyBnbyBvbnRv
 IHRoZSBzb2Z0d2FyZSBtdWx0aWNhc3QgcXVldWUgKi8KIAlpZiAoaXNtY2FzdCkKQEAgLTE0NDcs
 NiArMTQ0Niw5IEBACiAJLyogRG8gdGhlIGdlbmVyaWMgZnJhbWUgc2V0dXAgKi8KIAkvKiBYWFgg
 c2hvdWxkIGp1c3QgYnplcm8gdGhlIGJmX3N0YXRlPyAqLwogCWJmLT5iZl9zdGF0ZS5iZnNfZG9i
 YXcgPSAwOworCWJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm9fYXNzaWduZWQgPSAwOworCWJmLT5iZl9z
 dGF0ZS5iZnNfbmVlZF9zZXFubyA9IDA7CisJYmYtPmJmX3N0YXRlLmJmc19zZXFubyA9IC0xOwkv
 KiBYWFggZGVidWdnaW5nICovCiAKIAkvKiBBLU1QRFUgVFg/IE1hbnVhbGx5IHNldCBzZXF1ZW5j
 ZSBudW1iZXIgKi8KIAkvKiBEb24ndCBkbyBpdCB3aGlsc3QgcGVuZGluZzsgdGhlIG5ldDgwMjEx
 IGxheWVyIHN0aWxsIGFzc2lnbnMgdGhlbSAqLwpAQCAtMTQ1OSwxOSArMTQ2MSwyNyBAQAogCQkg
 KiBkb24ndCBnZXQgYSBzZXF1ZW5jZSBudW1iZXIgZnJvbSB0aGUgY3VycmVudAogCQkgKiBUSUQg
 YW5kIHRodXMgbWVzcyB3aXRoIHRoZSBCQVcuCiAJCSAqLwotCQlzZXFubyA9IGF0aF90eF90aWRf
 c2Vxbm9fYXNzaWduKHNjLCBuaSwgYmYsIG0wKTsKKwkJLy9zZXFubyA9IGF0aF90eF90aWRfc2Vx
 bm9fYXNzaWduKHNjLCBuaSwgYmYsIG0wKTsKIAkJaWYgKElFRUU4MDIxMV9RT1NfSEFTX1NFUSh3
 aCkgJiYKIAkJICAgIHN1YnR5cGUgIT0gSUVFRTgwMjExX0ZDMF9TVUJUWVBFX1FPU19OVUxMKSB7
 CiAJCQliZi0+YmZfc3RhdGUuYmZzX2RvYmF3ID0gMTsKKwkJCWJmLT5iZl9zdGF0ZS5iZnNfbmVl
 ZF9zZXFubyA9IDE7CiAJCX0KIAkJQVRIX1RYUV9VTkxPQ0sodHhxKTsKKwl9IGVsc2UgeworCQkv
 KiBObyBBTVBEVSBUWCwgd2UndmUgYmVlbiBhc3NpZ25lZCBhIHNlcXVlbmNlIG51bWJlci4gKi8K
 KwkJaWYgKElFRUU4MDIxMV9RT1NfSEFTX1NFUSh3aCkpIHsKKwkJCWJmLT5iZl9zdGF0ZS5iZnNf
 c2Vxbm9fYXNzaWduZWQgPSAxOworCQkJYmYtPmJmX3N0YXRlLmJmc19zZXFubyA9CisJCQkgICAg
 TV9TRVFOT19HRVQobTApIDw8IElFRUU4MDIxMV9TRVFfU0VRX1NISUZUOworCQl9CiAJfQogCiAJ
 LyoKIAkgKiBJZiBuZWVkZWQsIHRoZSBzZXF1ZW5jZSBudW1iZXIgaGFzIGJlZW4gYXNzaWduZWQu
 CiAJICogU3F1aXJyZWwgaXQgYXdheSBzb21ld2hlcmUgZWFzeSB0byBnZXQgdG8uCiAJICovCi0J
 YmYtPmJmX3N0YXRlLmJmc19zZXFubyA9IE1fU0VRTk9fR0VUKG0wKSA8PCBJRUVFODAyMTFfU0VR
 X1NFUV9TSElGVDsKKwkvL2JmLT5iZl9zdGF0ZS5iZnNfc2Vxbm8gPSBNX1NFUU5PX0dFVChtMCkg
 PDwgSUVFRTgwMjExX1NFUV9TRVFfU0hJRlQ7CiAKIAkvKiBJcyBhbXBkdSBwZW5kaW5nPyBmZXRj
 aCB0aGUgc2Vxbm8gYW5kIHByaW50IGl0IG91dCAqLwogCWlmIChpc19hbXBkdV9wZW5kaW5nKQpA
 QCAtMTQ4OCw2ICsxNDk4LDEwIEBACiAJLyogQXQgdGhpcyBwb2ludCBtMCBjb3VsZCBoYXZlIGNo
 YW5nZWQhICovCiAJbTAgPSBiZi0+YmZfbTsKIAorCURQUklOVEYoc2MsIEFUSF9ERUJVR19TV19U
 WCwKKwkgICAgIiVzOiBET05FOiBiZj0lcCwgdGlkPSVkLCBhYz0lZCwgaXNfYW1wZHU9JWQsIGRv
 YmF3PSVkLCBzZXFubz0lZFxuIiwKKwkgICAgX19mdW5jX18sIGJmLCB0aWQsIHByaSwgaXNfYW1w
 ZHUsIGJmLT5iZl9zdGF0ZS5iZnNfZG9iYXcsIE1fU0VRTk9fR0VUKG0wKSk7CisKICNpZiAxCiAJ
 LyoKIAkgKiBJZiBpdCdzIGEgbXVsdGljYXN0IGZyYW1lLCBkbyBhIGRpcmVjdC1kaXNwYXRjaCB0
 byB0aGUKQEAgLTE1MDYsNiArMTUyMCw4IEBACiAJICogcmVhY2hlZC4pCiAJICovCiAJaWYgKHR4
 cSA9PSAmYXZwLT5hdl9tY2FzdHEpIHsKKwkJRFBSSU5URihzYywgQVRIX0RFQlVHX1NXX1RYX0NU
 UkwsCisJCSAgICAiJXM6IGJmPSVwOiBtY2FzdHE6IFRYJ2luZ1xuIiwgX19mdW5jX18sIGJmKTsK
 IAkJQVRIX1RYUV9MT0NLKHR4cSk7CiAJCWF0aF90eF94bWl0X25vcm1hbChzYywgdHhxLCBiZik7
 CiAJCUFUSF9UWFFfVU5MT0NLKHR4cSk7CkBAIC0xNTE4LDYgKzE1MzQsOCBAQAogCQlBVEhfVFhR
 X1VOTE9DSyh0eHEpOwogCX0gZWxzZSB7CiAJCS8qIGFkZCB0byBzb2Z0d2FyZSBxdWV1ZSAqLwor
 CQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfU1dfVFhfQ1RSTCwKKwkJICAgICIlczogYmY9JXA6IHN3
 cTogVFgnaW5nXG4iLCBfX2Z1bmNfXywgYmYpOwogCQlhdGhfdHhfc3dxKHNjLCBuaSwgdHhxLCBi
 Zik7CiAJfQogI2Vsc2UKQEAgLTE5NjYsMjYgKzE5ODQsNTEgQEAKIAlpZiAoYmYtPmJmX3N0YXRl
 LmJmc19pc3JldHJpZWQpCiAJCXJldHVybjsKIAorCS8qCisJICogSWYgdGhpcyBvY2N1cnMgd2Un
 cmUgaW4gYSBsb3Qgb2YgdHJvdWJsZS4gIFdlIHNob3VsZCB0cnkgdG8KKwkgKiByZWNvdmVyIGZy
 b20gdGhpcyB3aXRob3V0IHRoZSBzZXNzaW9uIGhhbmdpbmc/CisJICovCisJaWYgKCEgYmYtPmJm
 X3N0YXRlLmJmc19zZXFub19hc3NpZ25lZCkgeworCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYs
 CisJCSAgICAiJXM6IGJmPSVwLCBzZXFub19hc3NpZ25lZCBpcyAwPyFcbiIsIF9fZnVuY19fLCBi
 Zik7CisJCXJldHVybjsKKwl9CisKIAl0YXAgPSBhdGhfdHhfZ2V0X3R4X3RpZChhbiwgdGlkLT50
 aWQpOwogCiAJaWYgKGJmLT5iZl9zdGF0ZS5iZnNfYWRkZWRiYXcpCiAJCWRldmljZV9wcmludGYo
 c2MtPnNjX2RldiwKLQkJICAgICIlczogcmUtYWRkZWQ/IHRpZD0lZCwgc2Vxbm8gJWQ7IHdpbmRv
 dyAlZDolZDsgIgorCQkgICAgIiVzOiByZS1hZGRlZD8gYmY9JXAsIHRpZD0lZCwgc2Vxbm8gJWQ7
 IHdpbmRvdyAlZDolZDsgIgogCQkgICAgImJhdyBoZWFkPSVkIHRhaWw9JWRcbiIsCi0JCSAgICBf
 X2Z1bmNfXywgdGlkLT50aWQsIFNFUU5PKGJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm8pLAorCQkgICAg
 X19mdW5jX18sIGJmLCB0aWQtPnRpZCwgU0VRTk8oYmYtPmJmX3N0YXRlLmJmc19zZXFubyksCiAJ
 CSAgICB0YXAtPnR4YV9zdGFydCwgdGFwLT50eGFfd25kLCB0aWQtPmJhd19oZWFkLAogCQkgICAg
 dGlkLT5iYXdfdGFpbCk7CiAKIAkvKgorCSAqIFZlcmlmeSB0aGF0IHRoZSBnaXZlbiBzZXF1ZW5j
 ZSBudW1iZXIgaXMgbm90IG91dHNpZGUgb2YgdGhlCisJICogQkFXLiAgQ29tcGxhaW4gbG91ZGx5
 IGlmIHRoYXQncyB0aGUgY2FzZS4KKwkgKi8KKwlpZiAoISBCQVdfV0lUSElOKHRhcC0+dHhhX3N0
 YXJ0LCB0YXAtPnR4YV93bmQsCisJICAgIFNFUU5PKGJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm8pKSkg
 eworCQlkZXZpY2VfcHJpbnRmKHNjLT5zY19kZXYsCisJCSAgICAiJXM6IGJmPSVwOiBvdXRzaWRl
 IG9mIEJBVz8/IHRpZD0lZCwgc2Vxbm8gJWQ7IHdpbmRvdyAlZDolZDsgIgorCQkgICAgImJhdyBo
 ZWFkPSVkIHRhaWw9JWRcbiIsCisJCSAgICBfX2Z1bmNfXywgYmYsIHRpZC0+dGlkLCBTRVFOTyhi
 Zi0+YmZfc3RhdGUuYmZzX3NlcW5vKSwKKwkJICAgIHRhcC0+dHhhX3N0YXJ0LCB0YXAtPnR4YV93
 bmQsIHRpZC0+YmF3X2hlYWQsCisJCSAgICB0aWQtPmJhd190YWlsKTsKKworCX0KKworCS8qCiAJ
 ICogbmktPm5pX3R4c2Vxc1tdIGlzIHRoZSBjdXJyZW50bHkgYWxsb2NhdGVkIHNlcW5vLgogCSAq
 IHRoZSB0eGEgc3RhdGUgY29udGFpbnMgdGhlIGN1cnJlbnQgYmF3IHN0YXJ0LgogCSAqLwogCWlu
 ZGV4ICA9IEFUSF9CQV9JTkRFWCh0YXAtPnR4YV9zdGFydCwgU0VRTk8oYmYtPmJmX3N0YXRlLmJm
 c19zZXFubykpOwogCWNpbmRleCA9ICh0aWQtPmJhd19oZWFkICsgaW5kZXgpICYgKEFUSF9USURf
 TUFYX0JVRlMgLSAxKTsKIAlEUFJJTlRGKHNjLCBBVEhfREVCVUdfU1dfVFhfQkFXLAotCSAgICAi
 JXM6IHRpZD0lZCwgc2Vxbm8gJWQ7IHdpbmRvdyAlZDolZDsgaW5kZXg9JWQgY2luZGV4PSVkICIK
 KwkgICAgIiVzOiBiZj0lcCwgdGlkPSVkLCBzZXFubyAlZDsgd2luZG93ICVkOiVkOyBpbmRleD0l
 ZCBjaW5kZXg9JWQgIgogCSAgICAiYmF3IGhlYWQ9JWQgdGFpbD0lZFxuIiwKLQkgICAgX19mdW5j
 X18sIHRpZC0+dGlkLCBTRVFOTyhiZi0+YmZfc3RhdGUuYmZzX3NlcW5vKSwKKwkgICAgX19mdW5j
 X18sIGJmLCB0aWQtPnRpZCwgU0VRTk8oYmYtPmJmX3N0YXRlLmJmc19zZXFubyksCiAJICAgIHRh
 cC0+dHhhX3N0YXJ0LCB0YXAtPnR4YV93bmQsIGluZGV4LCBjaW5kZXgsIHRpZC0+YmF3X2hlYWQs
 CiAJICAgIHRpZC0+YmF3X3RhaWwpOwogCkBAIC0yMDg4LDkgKzIxMzEsOSBAQAogCWNpbmRleCA9
 ICh0aWQtPmJhd19oZWFkICsgaW5kZXgpICYgKEFUSF9USURfTUFYX0JVRlMgLSAxKTsKIAogCURQ
 UklOVEYoc2MsIEFUSF9ERUJVR19TV19UWF9CQVcsCi0JICAgICIlczogdGlkPSVkLCBiYXc9JWQ6
 JWQsIHNlcW5vPSVkLCBpbmRleD0lZCwgY2luZGV4PSVkLCAiCisJICAgICIlczogYmY9JXA6IHRp
 ZD0lZCwgYmF3PSVkOiVkLCBzZXFubz0lZCwgaW5kZXg9JWQsIGNpbmRleD0lZCwgIgogCSAgICAi
 YmF3IGhlYWQ9JWQsIHRhaWw9JWRcbiIsCi0JICAgIF9fZnVuY19fLCB0aWQtPnRpZCwgdGFwLT50
 eGFfc3RhcnQsIHRhcC0+dHhhX3duZCwgc2Vxbm8sIGluZGV4LAorCSAgICBfX2Z1bmNfXywgYmYs
 IHRpZC0+dGlkLCB0YXAtPnR4YV9zdGFydCwgdGFwLT50eGFfd25kLCBzZXFubywgaW5kZXgsCiAJ
 ICAgIGNpbmRleCwgdGlkLT5iYXdfaGVhZCwgdGlkLT5iYXdfdGFpbCk7CiAKIAkvKgpAQCAtMjE3
 MSwxMSArMjIxNCw0MiBAQAogfQogCiAvKgorICogUmV0dXJuIHdoZXRoZXIgYSBzZXF1ZW5jZSBu
 dW1iZXIgaXMgYWN0dWFsbHkgcmVxdWlyZWQuCisgKgorICogQSBzZXF1ZW5jZSBudW1iZXIgbXVz
 dCBvbmx5IGJlIGFsbG9jYXRlZCBhdCB0aGUgdGltZSB0aGF0IGEgZnJhbWUKKyAqIGlzIGNvbnNp
 ZGVyZWQgZm9yIGFkZGl0aW9uIHRvIHRoZSBCQVcvYWdncmVnYXRlIGFuZCBiZWluZyBUWGVkLgor
 ICogVGhlIHNlcXVlbmNlIG51bWJlciBtdXN0IG5vdCBiZSBhbGxvY2F0ZWQgYmVmb3JlIHRoZSBm
 cmFtZQorICogaXMgYWRkZWQgdG8gdGhlIEJBVyAocHJvdGVjdGVkIGJ5IHRoZSBzYW1lIGxvY2sg
 aW5zdGFuY2UpCisgKiBvdGhlcndpc2UgYSB0aGUgbXVsdGktZW50cmFudCBUWCBwYXRoIG1heSBy
 ZXN1bHQgaW4gYSBsYXRlciBzZXFubworICogYmVpbmcgYWRkZWQgdG8gdGhlIEJBVyBmaXJzdC4g
 IFRoZSBzdWJzZXF1ZW50IGFkZGl0aW9uIG9mIHRoZQorICogZWFybGllciBzZXFubyB3b3VsZCB0
 aGVuIG5vdCBnbyBpbnRvIHRoZSBCQVcgYXMgaXQncyBub3cgb3V0c2lkZQorICogb2Ygc2FpZCBC
 QVcuCisgKgorICogVGhpcyByb3V0aW5lIGlzIHVzZWQgYnkgYXRoX3R4X3N0YXJ0KCkgdG8gbWFy
 ayB3aGV0aGVyIHRoZSBmcmFtZQorICogc2hvdWxkIGdldCBhIHNlcXVlbmNlIG51bWJlciBiZWZv
 cmUgYWRkaW5nIGl0IHRvIHRoZSBCQVcuCisgKgorICogVGhlbiB0aGUgYWN0dWFsIGFnZ3JlZ2F0
 ZSBUWCByb3V0aW5lcyB3aWxsIGNoZWNrIHdoZXRoZXIgdGhpcworICogZmxhZyBpcyBzZXQgYW5k
 IGlmIHRoZSBmcmFtZSBuZWVkcyB0byBnbyBpbnRvIHRoZSBCQVcsIGl0J2xsCisgKiBoYXZlIGEg
 c2VxdWVuY2UgbnVtYmVyIGFsbG9jYXRlZCBmb3IgaXQuCisgKi8KKyNpZiAwCitzdGF0aWMgaW50
 CithdGhfdHhfc2Vxbm9fcmVxdWlyZWQoc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBpZWVl
 ODAyMTFfbm9kZSAqbmksCisgICAgc3RydWN0IGF0aF9idWYgKmJmLCBzdHJ1Y3QgbWJ1ZiAqbTAp
 Cit7Cit9CisjZW5kaWYKKworLyoKICAqIEFzc2lnbiBhIHNlcXVlbmNlIG51bWJlciBtYW51YWxs
 eSB0byB0aGUgZ2l2ZW4gZnJhbWUuCiAgKgogICogVGhpcyBzaG91bGQgb25seSBiZSBjYWxsZWQg
 Zm9yIEEtTVBEVSBUWCBmcmFtZXMuCisgKgorICogSWYgdGhpcyBpcyBjYWxsZWQgYWZ0ZXIgdGhl
 IGluaXRpYWwgZnJhbWUgc2V0dXAsIG1ha2Ugc3VyZSB5b3UndmUgZmx1c2hlZAorICogdGhlIERN
 QSBtYXAgb3IgeW91J2xsIHJpc2sgc2VuZGluZyBzdGFsZSBkYXRhIHRvIHRoZSBOSUMuICBUaGlz
 IHJvdXRpbmUKKyAqIHVwZGF0ZXMgdGhlIGFjdHVhbCBmcmFtZSBjb250ZW50cyB3aXRoIHRoZSBy
 ZWxldmFudCBzZXFuby4KICAqLwotc3RhdGljIGllZWU4MDIxMV9zZXEKK2ludAogYXRoX3R4X3Rp
 ZF9zZXFub19hc3NpZ24oc3RydWN0IGF0aF9zb2Z0YyAqc2MsIHN0cnVjdCBpZWVlODAyMTFfbm9k
 ZSAqbmksCiAgICAgc3RydWN0IGF0aF9idWYgKmJmLCBzdHJ1Y3QgbWJ1ZiAqbTApCiB7CkBAIC0y
 MTg4LDkgKzIyNjIsMjMgQEAKIAl3aCA9IG10b2QobTAsIHN0cnVjdCBpZWVlODAyMTFfZnJhbWUg
 Kik7CiAJcHJpID0gTV9XTUVfR0VUQUMobTApOwkJCS8qIGhvbm9yIGNsYXNzaWZpY2F0aW9uICov
 CiAJdGlkID0gV01FX0FDX1RPX1RJRChwcmkpOwotCURQUklOVEYoc2MsIEFUSF9ERUJVR19TV19U
 WCwgIiVzOiBwcmk9JWQsIHRpZD0lZCwgcW9zIGhhcyBzZXE9JWRcbiIsCi0JICAgIF9fZnVuY19f
 LCBwcmksIHRpZCwgSUVFRTgwMjExX1FPU19IQVNfU0VRKHdoKSk7CisJRFBSSU5URihzYywgQVRI
 X0RFQlVHX1NXX1RYLAorCSAgICAiJXM6IGJmPSVwLCBwcmk9JWQsIHRpZD0lZCwgcW9zIGhhcyBz
 ZXE9JWRcbiIsCisJICAgIF9fZnVuY19fLCBiZiwgcHJpLCB0aWQsIElFRUU4MDIxMV9RT1NfSEFT
 X1NFUSh3aCkpOwogCisJaWYgKCEgYmYtPmJmX3N0YXRlLmJmc19uZWVkX3NlcW5vKSB7CisJCWRl
 dmljZV9wcmludGYoc2MtPnNjX2RldiwgIiVzOiBiZj0lcDogbmVlZF9zZXFubyBub3Qgc2V0PyFc
 biIsCisJCSAgICBfX2Z1bmNfXywgYmYpOworCQlyZXR1cm4gLTE7CisJfQorCS8qIFhYWCBjaGVj
 ayBmb3IgYmZzX25lZWRfc2Vxbm8/ICovCisJaWYgKGJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm9fYXNz
 aWduZWQpIHsKKwkJZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2LAorCQkgICAgIiVzOiBiZj0lcDog
 c2Vxbm8gYWxyZWFkeSBhc3NpZ25lZCAoJWQpPyFcbiIsCisJCSAgICBfX2Z1bmNfXywgYmYsIFNF
 UU5PKGJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm8pKTsKKwkJcmV0dXJuIGJmLT5iZl9zdGF0ZS5iZnNf
 c2Vxbm8gPj4gSUVFRTgwMjExX1NFUV9TRVFfU0hJRlQ7CisJfQorCiAJLyogWFhYIElzIGl0IGEg
 Y29udHJvbCBmcmFtZT8gSWdub3JlICovCiAKIAkvKiBEb2VzIHRoZSBwYWNrZXQgcmVxdWlyZSBh
 IHNlcXVlbmNlIG51bWJlcj8gKi8KQEAgLTIyMTcsOSArMjMwNSwxNCBAQAogCX0KIAkqKHVpbnQx
 Nl90ICopJndoLT5pX3NlcVswXSA9IGh0b2xlMTYoc2Vxbm8gPDwgSUVFRTgwMjExX1NFUV9TRVFf
 U0hJRlQpOwogCU1fU0VRTk9fU0VUKG0wLCBzZXFubyk7CisJYmYtPmJmX3N0YXRlLmJmc19zZXFu
 byA9IHNlcW5vIDw8IElFRUU4MDIxMV9TRVFfU0VRX1NISUZUOworCWJmLT5iZl9zdGF0ZS5iZnNf
 c2Vxbm9fYXNzaWduZWQgPSAxOwogCiAJLyogUmV0dXJuIHNvIGNhbGxlciBjYW4gZG8gc29tZXRo
 aW5nIHdpdGggaXQgaWYgbmVlZGVkICovCi0JRFBSSU5URihzYywgQVRIX0RFQlVHX1NXX1RYLCAi
 JXM6ICAtPiBzZXFubz0lZFxuIiwgX19mdW5jX18sIHNlcW5vKTsKKwlEUFJJTlRGKHNjLCBBVEhf
 REVCVUdfU1dfVFgsICIlczogYmY9JXA6ICAtPiBzZXFubz0lZFxuIiwKKwkgICAgX19mdW5jX18s
 CisJICAgIGJmLAorCSAgICBzZXFubyk7CiAJcmV0dXJuIHNlcW5vOwogfQogCkBAIC0yMjMxLDkg
 KzIzMjQsMTEgQEAKIHN0YXRpYyB2b2lkCiBhdGhfdHhfeG1pdF9hZ2dyKHN0cnVjdCBhdGhfc29m
 dGMgKnNjLCBzdHJ1Y3QgYXRoX25vZGUgKmFuLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpCiB7CisJc3Ry
 dWN0IGllZWU4MDIxMV9ub2RlICpuaSA9ICZhbi0+YW5fbm9kZTsKIAlzdHJ1Y3QgYXRoX3RpZCAq
 dGlkID0gJmFuLT5hbl90aWRbYmYtPmJmX3N0YXRlLmJmc190aWRdOwogCXN0cnVjdCBhdGhfdHhx
 ICp0eHEgPSBiZi0+YmZfc3RhdGUuYmZzX3R4cTsKIAlzdHJ1Y3QgaWVlZTgwMjExX3R4X2FtcGR1
 ICp0YXA7CisJaW50IHNlcW5vOwogCiAJQVRIX1RYUV9MT0NLX0FTU0VSVCh0eHEpOwogCkBAIC0y
 MjQ1LDEwICsyMzQwLDYzIEBACiAJCXJldHVybjsKIAl9CiAKKwkvKgorCSAqIFRPRE86IElmIGl0
 J3MgX2JlZm9yZV8gdGhlIEJBVyBsZWZ0IGVkZ2UsIGNvbXBsYWluIHZlcnkgbG91ZGx5LgorCSAq
 IFRoaXMgbWVhbnMgc29tZXRoaW5nIChlbHNlKSBoYXMgc2xpZCB0aGUgbGVmdCBlZGdlIGFsb25n
 CisJICogYmVmb3JlIHdlIGdvdCBhIGNoYW5jZSB0byBiZSBUWGVkLgorCSAqLworCisJLyoKKwkg
 KiBJcyB0aGVyZSBzcGFjZSBpbiB0aGlzIEJBVyBmb3IgYW5vdGhlciBmcmFtZT8KKwkgKiBJZiBu
 b3QsIGRvbid0IGJvdGhlciB0cnlpbmcgdG8gc2NoZWR1bGUgaXQ7IGp1c3QKKwkgKiB0aHJvdyBp
 dCBiYWNrIG9uIHRoZSBxdWV1ZS4KKwkgKgorCSAqIElmIHdlIGFsbG9jYXRlIHRoZSBzZXF1ZW5j
 ZSBudW1iZXIgYmVmb3JlIHdlIGFkZAorCSAqIGl0IHRvIHRoZSBCQVcsIHdlIHJpc2sgcmFjaW5n
 IHdpdGggYW5vdGhlciBUWAorCSAqIHRocmVhZCB0aGF0IGdldHMgaW4gYSBmcmFtZSBpbnRvIHRo
 ZSBCQVcgd2l0aAorCSAqIHNlcW5vIGdyZWF0ZXIgdGhhbiBvdXJzLiAgV2UnZCB0aGVuIGZhaWwg
 dGhlCisJICogYmVsb3cgY2hlY2sgYW5kIHRocm93IHRoZSBmcmFtZSBvbiB0aGUgdGFpbCBvZgor
 CSAqIHRoZSBxdWV1ZS4gIFRoZSBzZW5kZXIgd291bGQgdGhlbiBoYXZlIGEgaG9sZS4KKwkgKgor
 CSAqIFhYWCBhZ2Fpbiwgd2UncmUgcHJvdGVjdGluZyBuaS0+bmlfdHhzZXFzW3RpZF0KKwkgKiBi
 ZWhpbmQgdGhpcyBoYXJkd2FyZSBUWFEgbG9jaywgbGlrZSB0aGUgcmVzdCBvZgorCSAqIHRoZSBU
 SURzIHRoYXQgbWFwIHRvIGl0LiAgVWdoLgorCSAqLworCWlmIChiZi0+YmZfc3RhdGUuYmZzX2Rv
 YmF3KSB7CisJCWlmICghIEJBV19XSVRISU4odGFwLT50eGFfc3RhcnQsIHRhcC0+dHhhX3duZCwK
 KwkJICAgIG5pLT5uaV90eHNlcXNbYmYtPmJmX3N0YXRlLmJmc190aWRdKSkgeworCQkJQVRIX1RY
 UV9JTlNFUlRfVEFJTCh0aWQsIGJmLCBiZl9saXN0KTsKKwkJCWF0aF90eF90aWRfc2NoZWQoc2Ms
 IHRpZCk7CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKCEgYmYtPmJmX3N0YXRlLmJmc19zZXFub19h
 c3NpZ25lZCkgeworCQkJc2Vxbm8gPSBhdGhfdHhfdGlkX3NlcW5vX2Fzc2lnbihzYywgbmksIGJm
 LCBiZi0+YmZfbSk7CisJCQlpZiAoc2Vxbm8gPCAwKSB7CisJCQkJZGV2aWNlX3ByaW50ZihzYy0+
 c2NfZGV2LAorCQkJCSAgICAiJXM6IGJmPSVwLCBodWgsIHNlcW5vPS0xP1xuIiwKKwkJCQkgICAg
 X19mdW5jX18sCisJCQkJICAgIGJmKTsKKwkJCQkvKiBYWFggd2hhdCBjYW4gd2UgZXZlbiBkbyBo
 ZXJlPyAqLworCQkJfQorCQkJLyogRmx1c2ggc2Vxbm8gdXBkYXRlIHRvIFJBTSAqLworCQkJLyoK
 KwkJCSAqIFhYWCBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgdGhlIGRtYXNldHVwCisJCQkgKiBY
 WFggaXMgZG9uZSBlYXJseSByYXRoZXIgdGhhbiBhdCBkaXNwYXRjaAorCQkJICogWFhYIHRpbWUu
 IEV3LCB3ZSBzaG91bGQgZml4IHRoaXMhCisJCQkgKi8KKwkJCWJ1c19kbWFtYXBfc3luYyhzYy0+
 c2NfZG1hdCwgYmYtPmJmX2RtYW1hcCwKKwkJCSAgICBCVVNfRE1BU1lOQ19QUkVXUklURSk7CisJ
 CX0KKwl9CisKIAkvKiBvdXRzaWRlIGJhdz8gcXVldWUgKi8KIAlpZiAoYmYtPmJmX3N0YXRlLmJm
 c19kb2JhdyAmJgogCSAgICAoISBCQVdfV0lUSElOKHRhcC0+dHhhX3N0YXJ0LCB0YXAtPnR4YV93
 bmQsCiAJICAgIFNFUU5PKGJmLT5iZl9zdGF0ZS5iZnNfc2Vxbm8pKSkpIHsKKwkJZGV2aWNlX3By
 aW50ZihzYy0+c2NfZGV2LAorCQkgICAgIiVzOiBiZj0lcCwgc2hvdWxkbid0IGJlIG91dHNpZGUg
 QkFXIG5vdz8hXG4iLAorCQkgICAgX19mdW5jX18sCisJCSAgICBiZik7CiAJCUFUSF9UWFFfSU5T
 RVJUX1RBSUwodGlkLCBiZiwgYmZfbGlzdCk7CiAJCWF0aF90eF90aWRfc2NoZWQoc2MsIHRpZCk7
 CiAJCXJldHVybjsKQEAgLTIzMDMsOCArMjQ1MSw4IEBACiAJdGlkID0gYXRoX3R4X2dldHRpZChz
 YywgbTApOwogCWF0aWQgPSAmYW4tPmFuX3RpZFt0aWRdOwogCi0JRFBSSU5URihzYywgQVRIX0RF
 QlVHX1NXX1RYLCAiJXM6IGJmPSVwLCBwcmk9JWQsIHRpZD0lZCwgcW9zPSVkXG4iLAotCSAgICBf
 X2Z1bmNfXywgYmYsIHByaSwgdGlkLCBJRUVFODAyMTFfUU9TX0hBU19TRVEod2gpKTsKKwlEUFJJ
 TlRGKHNjLCBBVEhfREVCVUdfU1dfVFgsICIlczogYmY9JXAsIHByaT0lZCwgdGlkPSVkLCBxb3M9
 JWQsIHNlcW5vPSVkXG4iLAorCSAgICBfX2Z1bmNfXywgYmYsIHByaSwgdGlkLCBJRUVFODAyMTFf
 UU9TX0hBU19TRVEod2gpLCBTRVFOTyhiZi0+YmZfc3RhdGUuYmZzX3NlcW5vKSk7CiAKIAkvKiBT
 ZXQgbG9jYWwgcGFja2V0IHN0YXRlLCB1c2VkIHRvIHF1ZXVlIHBhY2tldHMgdG8gaGFyZHdhcmUg
 Ki8KIAliZi0+YmZfc3RhdGUuYmZzX3RpZCA9IHRpZDsKQEAgLTIzMjAsMzQgKzI0NjgsMzQgQEAK
 IAlBVEhfVFhRX0xPQ0sodHhxKTsKIAlpZiAoYXRpZC0+cGF1c2VkKSB7CiAJCS8qIFRJRCBpcyBw
 YXVzZWQsIHF1ZXVlICovCi0JCURQUklOVEYoc2MsIEFUSF9ERUJVR19TV19UWCwgIiVzOiBwYXVz
 ZWRcbiIsIF9fZnVuY19fKTsKKwkJRFBSSU5URihzYywgQVRIX0RFQlVHX1NXX1RYLCAiJXM6IGJm
 PSVwOiBwYXVzZWRcbiIsIF9fZnVuY19fLCBiZik7CiAJCUFUSF9UWFFfSU5TRVJUX1RBSUwoYXRp
 ZCwgYmYsIGJmX2xpc3QpOwogCX0gZWxzZSBpZiAoYXRoX3R4X2FtcGR1X3BlbmRpbmcoc2MsIGFu
 LCB0aWQpKSB7CiAJCS8qIEFNUERVIHBlbmRpbmc7IHF1ZXVlICovCi0JCURQUklOVEYoc2MsIEFU
 SF9ERUJVR19TV19UWCwgIiVzOiBwZW5kaW5nXG4iLCBfX2Z1bmNfXyk7CisJCURQUklOVEYoc2Ms
 IEFUSF9ERUJVR19TV19UWCwgIiVzOiBiZj0lcDogcGVuZGluZ1xuIiwgX19mdW5jX18sIGJmKTsK
 IAkJQVRIX1RYUV9JTlNFUlRfVEFJTChhdGlkLCBiZiwgYmZfbGlzdCk7CiAJCS8qIFhYWCBzY2hl
 ZD8gKi8KIAl9IGVsc2UgaWYgKGF0aF90eF9hbXBkdV9ydW5uaW5nKHNjLCBhbiwgdGlkKSkgewog
 CQkvKiBBTVBEVSBydW5uaW5nLCBhdHRlbXB0IGRpcmVjdCBkaXNwYXRjaCBpZiBwb3NzaWJsZSAq
 LwogCQlpZiAodHhxLT5heHFfZGVwdGggPCBzYy0+c2NfaHdxX2xpbWl0KSB7CisJCQlEUFJJTlRG
 KHNjLCBBVEhfREVCVUdfU1dfVFgsCisJCQkgICAgIiVzOiBiZj0lcDogeG1pdF9hZ2dyXG4iLAor
 CQkJICAgIF9fZnVuY19fLCBiZik7CiAJCQlhdGhfdHhfeG1pdF9hZ2dyKHNjLCBhbiwgYmYpOwot
 CQkJRFBSSU5URihzYywgQVRIX0RFQlVHX1NXX1RYLAotCQkJICAgICIlczogeG1pdF9hZ2dyXG4i
 LAotCQkJICAgIF9fZnVuY19fKTsKIAkJfSBlbHNlIHsKIAkJCURQUklOVEYoc2MsIEFUSF9ERUJV
 R19TV19UWCwKLQkJCSAgICAiJXM6IGFtcGR1OyBzd3EnaW5nXG4iLAotCQkJICAgIF9fZnVuY19f
 KTsKKwkJCSAgICAiJXM6IGJmPSVwOiBhbXBkdTsgc3dxJ2luZ1xuIiwKKwkJCSAgICBfX2Z1bmNf
 XywgYmYpOwogCQkJQVRIX1RYUV9JTlNFUlRfVEFJTChhdGlkLCBiZiwgYmZfbGlzdCk7CiAJCQlh
 dGhfdHhfdGlkX3NjaGVkKHNjLCBhdGlkKTsKIAkJfQogCX0gZWxzZSBpZiAodHhxLT5heHFfZGVw
 dGggPCBzYy0+c2NfaHdxX2xpbWl0KSB7CiAJCS8qIEFNUERVIG5vdCBydW5uaW5nLCBhdHRlbXB0
 IGRpcmVjdCBkaXNwYXRjaCAqLwotCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfU1dfVFgsICIlczog
 eG1pdF9ub3JtYWxcbiIsIF9fZnVuY19fKTsKKwkJRFBSSU5URihzYywgQVRIX0RFQlVHX1NXX1RY
 LCAiJXM6IGJmPSVwOiB4bWl0X25vcm1hbFxuIiwgX19mdW5jX18sIGJmKTsKIAkJYXRoX3R4X3ht
 aXRfbm9ybWFsKHNjLCB0eHEsIGJmKTsKIAl9IGVsc2UgewogCQkvKiBCdXN5OyBxdWV1ZSAqLwot
 CQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfU1dfVFgsICIlczogc3dxJ2luZ1xuIiwgX19mdW5jX18p
 OworCQlEUFJJTlRGKHNjLCBBVEhfREVCVUdfU1dfVFgsICIlczogYmY9JXA6IHN3cSdpbmdcbiIs
 IF9fZnVuY19fLCBiZik7CiAJCUFUSF9UWFFfSU5TRVJUX1RBSUwoYXRpZCwgYmYsIGJmX2xpc3Qp
 OwogCQlhdGhfdHhfdGlkX3NjaGVkKHNjLCBhdGlkKTsKIAl9CkBAIC0yNDc4LDExICsyNjI2LDEx
 IEBACiAKIAkJaWYgKHQgPT0gMCkgewogCQkJZGV2aWNlX3ByaW50ZihzYy0+c2NfZGV2LAotCQkJ
 ICAgICIlczogbm9kZSAlcDogdGlkICVkOiB0eHFfZGVwdGg9JWQsICIKKwkJCSAgICAiJXM6IG5v
 ZGUgJXA6IGJmPSVwOiB0aWQgJWQ6IHR4cV9kZXB0aD0lZCwgIgogCQkJICAgICJ0eHFfYWdncl9k
 ZXB0aD0lZCwgc2NoZWQ9JWQsIHBhdXNlZD0lZCwgIgogCQkJICAgICJod3FfZGVwdGg9JWQsIGlu
 Y29tcD0lZCwgYmF3X2hlYWQ9JWQsICIKIAkJCSAgICAiYmF3X3RhaWw9JWQgdHhhX3N0YXJ0PSVk
 LCBuaV90eHNlcXM9JWRcbiIsCi0JCQkgICAgIF9fZnVuY19fLCBuaSwgdGlkLT50aWQsIHR4cS0+
 YXhxX2RlcHRoLAorCQkJICAgICBfX2Z1bmNfXywgbmksIGJmLCB0aWQtPnRpZCwgdHhxLT5heHFf
 ZGVwdGgsCiAJCQkgICAgIHR4cS0+YXhxX2FnZ3JfZGVwdGgsIHRpZC0+c2NoZWQsIHRpZC0+cGF1
 c2VkLAogCQkJICAgICB0aWQtPmh3cV9kZXB0aCwgdGlkLT5pbmNvbXAsIHRpZC0+YmF3X2hlYWQs
 CiAJCQkgICAgIHRpZC0+YmF3X3RhaWwsIHRhcCA9PSBOVUxMID8gLTEgOiB0YXAtPnR4YV9zdGFy
 dCwKQEAgLTI0OTMsNyArMjY0MSw3IEBACiAJCQkgICAgbXRvZChiZi0+YmZfbSwgY29uc3QgdWlu
 dDhfdCAqKSwKIAkJCSAgICBiZi0+YmZfbS0+bV9sZW4sIDAsIC0xKTsKIAotCQkJdCA9IDE7CisJ
 CQkvL3QgPSAxOwogCQl9CiAKIApJbmRleDogc3lzL2Rldi9hdGgvaWZfYXRoX3R4LmgKPT09PT09
 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
 PT09PQotLS0gc3lzL2Rldi9hdGgvaWZfYXRoX3R4LmgJKHJldmlzaW9uIDIzMzA4OSkKKysrIHN5
 cy9kZXYvYXRoL2lmX2F0aF90eC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDggQEAK
 ICAgICBzdHJ1Y3QgYXRoX3RpZCAqdGlkLCBzdHJ1Y3QgYXRoX2J1ZiAqYmYpOwogZXh0ZXJuIHN0
 cnVjdCBpZWVlODAyMTFfdHhfYW1wZHUgKiBhdGhfdHhfZ2V0X3R4X3RpZChzdHJ1Y3QgYXRoX25v
 ZGUgKmFuLAogICAgIGludCB0aWQpOworZXh0ZXJuIGludCBhdGhfdHhfdGlkX3NlcW5vX2Fzc2ln
 bihzdHJ1Y3QgYXRoX3NvZnRjICpzYywKKyAgICBzdHJ1Y3QgaWVlZTgwMjExX25vZGUgKm5pLCBz
 dHJ1Y3QgYXRoX2J1ZiAqYmYsIHN0cnVjdCBtYnVmICptMCk7CiAKIC8qIFRYIGFkZGJhIGhhbmRs
 aW5nICovCiBleHRlcm4JaW50IGF0aF9hZGRiYV9yZXF1ZXN0KHN0cnVjdCBpZWVlODAyMTFfbm9k
 ZSAqbmksCg==
 --047d7b33c9fe4e3ed604bb91d101--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203190530.q2J5UI0x085928>