From owner-freebsd-wireless@FreeBSD.ORG Mon Mar 19 05:35:11 2012 Return-Path: Delivered-To: freebsd-wireless@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 84669106564A for ; Mon, 19 Mar 2012 05:35:11 +0000 (UTC) (envelope-from adrian.chadd@gmail.com) Received: from mail-pz0-f44.google.com (mail-pz0-f44.google.com [209.85.210.44]) by mx1.freebsd.org (Postfix) with ESMTP id 122698FC14 for ; Mon, 19 Mar 2012 05:35:10 +0000 (UTC) Received: by dakl33 with SMTP id l33so11629756dak.17 for ; Sun, 18 Mar 2012 22:35:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:cc:content-type; bh=+2UP5QeK4zngSojV5RQd4SS8IRNe9YyBryVjmgFrPXU=; b=MYfew7h110bQMikWKFLEJ0PqHlgqJs/tuCWZEOiq8UKa6KB2m7zWOn9NDOEYKr05SM KgMcmpHwjMKLKM4zjmM3vyW9cMCCUW7eXpyhMZAKsbDQcj9zawKp7OiSKV6N80H45vY4 EH2XPtBZbikVffa5tkh3oAEEGJExSGYh3UO90ZTOSZBNj995osxhGpyPYwZvZZiUiv10 rYxEn6w/fGmQ3PNPZwrUNS1X1T+nh6xjvsEBC7KCw982hmLfD86zVRn0ZyOytKLD4V01 Qe0uNMxZ3THJZY1DVOPlvwBQe3BvCvI9Lo4JwvJD+hx3x3AWQ+TGRxDdW3ddZZT7z3Qw XFLA== MIME-Version: 1.0 Received: by 10.68.130.6 with SMTP id oa6mr36510279pbb.96.1332135310687; Sun, 18 Mar 2012 22:35:10 -0700 (PDT) Sender: adrian.chadd@gmail.com Received: by 10.143.33.5 with HTTP; Sun, 18 Mar 2012 22:35:10 -0700 (PDT) In-Reply-To: <4F5C0302.8090403@unsane.co.uk> References: <4F59DD98.8080905@unsane.co.uk> <4F5AA149.8000904@unsane.co.uk> <4F5BDF3C.8070605@unsane.co.uk> <4F5C0302.8090403@unsane.co.uk> Date: Sun, 18 Mar 2012 22:35:10 -0700 X-Google-Sender-Auth: cTIRMeL0srHz320fAeR2Fpl5XWM Message-ID: From: Adrian Chadd To: Vincent Hoffman Content-Type: multipart/mixed; boundary=e89a8ffbaecbfc7ee204bb91ebe8 Cc: freebsd-wireless@freebsd.org Subject: Re: ath0 timeout was "Re: (more) bugs fixed in -HEAD, AP mode is now mostly (again) stable!" X-BeenThere: freebsd-wireless@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Discussions of 802.11 stack, tools device driver development." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 19 Mar 2012 05:35:11 -0000 --e89a8ffbaecbfc7ee204bb91ebe8 Content-Type: text/plain; charset=ISO-8859-1 Hi, Please try this patch: Adrian --e89a8ffbaecbfc7ee204bb91ebe8 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_gzz30muo0 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== --e89a8ffbaecbfc7ee204bb91ebe8--