From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ob0-x231.google.com (mail-ob0-x231.google.com [IPv6:2607:f8b0:4003:c01::231]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id 8921F21F2A2 for ; Sat, 2 May 2015 01:07:24 -0700 (PDT) Received: by obbkp3 with SMTP id kp3so23224529obb.3 for ; Sat, 02 May 2015 01:07:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=SiQWn0G1G6/xc6+jo+T+BHwydHKcZfrJy6Ge7wv1zpc=; b=mXc8yz40DbZoy5EThDBUXm9Q6z9vUH20vxP3Zea5ba+sQgre7VfPLSD/OQJTy/K+Tb YKMnHWQ/5xqOBTy99JVmzR1Bh9cKEk8nkEZRkmSMJR7CvEEH2RLz04Ore4ZbZioIIhV5 d9G1SPOHiVBwTvqYGh/u9D6va8z1TetdpRGaPLOs1zzzv/OtgaFrbdZ+yVNY3mHgCz1B mL4N058yyibodG/m21b0bSi/GA2RfAHUy5TBt20pXxoHHtCI1QdJjNe1nSAw2hlh9087 zVxMLCL6k1QXHG+lXD3qcqZtB1vqSgN5ic0Q4qB1o18aB7nKGZ4T7vofUFcKPe/NcjyQ s2Bg== MIME-Version: 1.0 X-Received: by 10.60.178.33 with SMTP id cv1mr10671004oec.11.1430554043498; Sat, 02 May 2015 01:07:23 -0700 (PDT) Received: by 10.202.71.139 with HTTP; Sat, 2 May 2015 01:07:23 -0700 (PDT) Date: Sat, 2 May 2015 01:07:23 -0700 Message-ID: From: Dave Taht To: cake@lists.bufferbloat.net Content-Type: multipart/mixed; boundary=089e01182252987074051514d12e Subject: [Cake] iproute2 patches for sfq fix and fq_pie X-BeenThere: cake@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Cake - FQ_codel the next generation List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 May 2015 08:07:53 -0000 --089e01182252987074051514d12e Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable merging from iproute2 head is also needed --=20 Dave T=C3=A4ht Open Networking needs **Open Source Hardware** https://plus.google.com/u/0/+EricRaymond/posts/JqxCe2pFr67 --089e01182252987074051514d12e Content-Type: text/x-patch; charset=US-ASCII; name="0018-Remove-sfq_codel.patch" Content-Disposition: attachment; filename="0018-Remove-sfq_codel.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i96qxnbu0 RnJvbSAxZDA1OGVmZTIxZWZlNGQzM2YxNDBhODJmMWFmZWY3MDkxZjc5ODBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIFRhaHQgPGRhdmUudGFodEBidWZmZXJibG9hdC5uZXQ+ CkRhdGU6IFNhdCwgMiBNYXkgMjAxNSAwMDowOTowMiAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMTgv MTldIFJlbW92ZSBzZnFfY29kZWwKCldlIGRvbid0IGhhdmUgdGhhdCBjb2RlIGZvciBsaW51eCBh cyB5ZXQuCi0tLQogdGMvTWFrZWZpbGUgfCAxIC0KIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9u KC0pCgpkaWZmIC0tZ2l0IGEvdGMvTWFrZWZpbGUgYi90Yy9NYWtlZmlsZQppbmRleCBlNTAzYzhh Li45ZDcyYjg4IDEwMDY0NAotLS0gYS90Yy9NYWtlZmlsZQorKysgYi90Yy9NYWtlZmlsZQpAQCAt NjEsNyArNjEsNiBAQCBUQ01PRFVMRVMgKz0gcV9jb2RlbC5vCiBUQ01PRFVMRVMgKz0gcV9mcV9j b2RlbC5vCiBUQ01PRFVMRVMgKz0gcV9uZnFfY29kZWwubwogVENNT0RVTEVTICs9IHFfZWZxX2Nv ZGVsLm8KLVRDTU9EVUxFUyArPSBxX3NmcV9jb2RlbC5vCiBUQ01PRFVMRVMgKz0gcV9wZnFfY29k ZWwubwogVENNT0RVTEVTICs9IHFfbnMyX2NvZGVsLm8KIFRDTU9EVUxFUyArPSBxX25zNF9jb2Rl bC5vCi0tIAoyLjEuNAoK --089e01182252987074051514d12e Content-Type: text/x-patch; charset=US-ASCII; name="0019-iproute2-add-fq_pie-support.patch" Content-Disposition: attachment; filename="0019-iproute2-add-fq_pie-support.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i96qxndg1 RnJvbSA1OWNmNDI2MzE5ZjVmZWIxOTNmNDk4NDQwMGJiMmZlOWY5NjQwODYxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZlIFRhaHQgPGRhdmUudGFodEBidWZmZXJibG9hdC5uZXQ+ CkRhdGU6IFNhdCwgMiBNYXkgMjAxNSAwMTowNToyMCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggMTkv MTldIGlwcm91dGUyOiBhZGQgZnFfcGllIHN1cHBvcnQKCi0tLQogaW5jbHVkZS9saW51eC9wa3Rf c2NoZWQuaCB8ICA0NiArKysrKysKIHRjL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgIDEgKwog dGMvcV9mcV9waWUuYyAgICAgICAgICAgICB8IDM5OCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrCiAzIGZpbGVzIGNoYW5nZWQsIDQ0NSBpbnNlcnRpb25zKCsp CiBjcmVhdGUgbW9kZSAxMDA2NDQgdGMvcV9mcV9waWUuYwoKZGlmZiAtLWdpdCBhL2luY2x1ZGUv bGludXgvcGt0X3NjaGVkLmggYi9pbmNsdWRlL2xpbnV4L3BrdF9zY2hlZC5oCmluZGV4IGExZDdi NjcuLjU4MmYxOWEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGt0X3NjaGVkLmgKKysrIGIv aW5jbHVkZS9saW51eC9wa3Rfc2NoZWQuaApAQCAtODIxLDYgKzgyMSw1MiBAQCBzdHJ1Y3QgdGNf aGhmX3hzdGF0cyB7CiAJX191MzIJaGhfY3VyX2NvdW50OyAgIC8qIG51bWJlciBvZiBjdXJyZW50 IGhlYXZ5LWhpdHRlcnMgKi8KIH07CiAKKy8qIEZRX1BJRSAqLworZW51bSB7CisJVENBX0ZRX1BJ RV9VTlNQRUMsCisJVENBX0ZRX1BJRV9UQVJHRVQsCisJVENBX0ZRX1BJRV9UVVBEQVRFLAorCVRD QV9GUV9QSUVfQUxQSEEsCisJVENBX0ZRX1BJRV9CRVRBLAorCVRDQV9GUV9QSUVfRUNOLAorCVRD QV9GUV9QSUVfQllURU1PREUsCisJVENBX0ZRX1BJRV9QTElNSVQsCQkvKiBsaW1pdCBvZiB0b3Rh bCBudW1iZXIgb2YgcGFja2V0cyBpbiBxdWV1ZSAqLworCVRDQV9GUV9QSUVfRkxPV19QTElNSVQs CQkvKiBsaW1pdCBvZiBwYWNrZXRzIHBlciBmbG93ICovCisJVENBX0ZRX1BJRV9RVUFOVFVNLAkJ LyogUlIgcXVhbnR1bSAqLworCVRDQV9GUV9QSUVfSU5JVElBTF9RVUFOVFVNLAkvKiBSUiBxdWFu dHVtIGZvciBuZXcgZmxvdyAqLworCVRDQV9GUV9QSUVfUkFURV9FTkFCTEUsCQkvKiBlbmFibGUv ZGlzYWJsZSByYXRlIGxpbWl0aW5nICovCisJVENBX0ZRX1BJRV9GTE9XX0RFRkFVTFRfUkFURSwJ Lyogb2Jzb2xldGUsIGRvIG5vdCB1c2UgKi8KKwlUQ0FfRlFfUElFX0ZMT1dfTUFYX1JBVEUsCS8q IHBlciBmbG93IG1heCByYXRlICovCisJVENBX0ZRX1BJRV9CVUNLRVRTX0xPRywJCS8qIGxvZzIo bnVtYmVyIG9mIGJ1Y2tldHMpICovCisJVENBX0ZRX1BJRV9GTE9XX1JFRklMTF9ERUxBWSwJLyog ZmxvdyBjcmVkaXQgcmVmaWxsIGRlbGF5IGluIHVzZWMgKi8KKwlfX1RDQV9GUV9QSUVfTUFYCit9 OworCisjZGVmaW5lIFRDQV9GUV9QSUVfTUFYCShfX1RDQV9GUV9QSUVfTUFYIC0gMSkKKworc3Ry dWN0IHRjX2ZxX3BpZV9xZF9zdGF0cyB7CisJX191MzIJcHJvYjsgICAgICAgICAgICAgLyogY3Vy cmVudCBwcm9iYWJpbGl0eSAqLworCV9fdTMyCWRlbGF5OyAgICAgICAgICAgIC8qIGN1cnJlbnQg ZGVsYXkgaW4gbXMgKi8KKwlfX3UzMglhdmdfZHFfcmF0ZTsgICAgICAvKiBjdXJyZW50IGF2ZXJh Z2UgZHFfcmF0ZSBpbiBiaXRzL3BpZV90aW1lICovCisJX191MzIJcGFja2V0c19pbjsgICAgICAg LyogdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgZW5xdWV1ZWQgKi8KKwlfX3UzMglkcm9wcGVkOyAg ICAgICAgICAvKiBwYWNrZXRzIGRyb3BwZWQgZHVlIHRvIHBpZV9hY3Rpb24gKi8KKwlfX3UzMglv dmVybGltaXQ7ICAgICAgICAvKiBkcm9wcGVkIGR1ZSB0byBsYWNrIG9mIHNwYWNlIGluIHF1ZXVl ICovCisJX191MzIJbWF4cTsgICAgICAgICAgICAgLyogbWF4aW11bSBxdWV1ZSBzaXplICovCisJ X191MzIJZWNuX21hcms7ICAgICAgICAgLyogcGFja2V0cyBtYXJrZWQgd2l0aCBlY24qLworCV9f dTY0CWdjX2Zsb3dzOworCV9fdTY0CWhpZ2hwcmlvX3BhY2tldHM7CisJX191NjQJdGNwX3JldHJh bnM7CisJX191NjQJdGhyb3R0bGVkOworCV9fdTY0CWZsb3dzX3BsaW1pdDsKKwlfX3U2NAlwa3Rz X3Rvb19sb25nOworCV9fdTY0CWFsbG9jYXRpb25fZXJyb3JzOworCV9fczY0CXRpbWVfbmV4dF9k ZWxheWVkX2Zsb3c7CisJX191MzIJZmxvd3M7CisJX191MzIJaW5hY3RpdmVfZmxvd3M7CisJX191 MzIJdGhyb3R0bGVkX2Zsb3dzOworCV9fdTMyCXBhZDsKK307CisKIC8qIFBJRSAqLwogZW51bSB7 CiAJVENBX1BJRV9VTlNQRUMsCmRpZmYgLS1naXQgYS90Yy9NYWtlZmlsZSBiL3RjL01ha2VmaWxl CmluZGV4IDY5YjgzYzcuLjQ1YWY4OWMgMTAwNjQ0Ci0tLSBhL3RjL01ha2VmaWxlCisrKyBiL3Rj L01ha2VmaWxlCkBAIC02Niw2ICs2Niw3IEBAIFRDTU9EVUxFUyArPSBxX3BmcV9jb2RlbC5vCiBU Q01PRFVMRVMgKz0gcV9uczJfY29kZWwubwogVENNT0RVTEVTICs9IHFfbnM0X2NvZGVsLm8KIFRD TU9EVUxFUyArPSBxX2ZxLm8KK1RDTU9EVUxFUyArPSBxX2ZxX3BpZS5vCiBUQ01PRFVMRVMgKz0g cV9waWUubwogVENNT0RVTEVTICs9IHFfY2FrZS5vCiBUQ01PRFVMRVMgKz0gcV9jYWtlMC5vCmRp ZmYgLS1naXQgYS90Yy9xX2ZxX3BpZS5jIGIvdGMvcV9mcV9waWUuYwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi42NDdiZTU5Ci0tLSAvZGV2L251bGwKKysrIGIvdGMvcV9mcV9w aWUuYwpAQCAtMCwwICsxLDM5OCBAQAorLyoKKyAqIEZhaXIgUXVldWUgUGllCisgKgorICogIENv cHlyaWdodCAoQykgMjAxNCBIaXJvbm9yaSBPa2FubyA8aG9rYW5vQGNpc2NvLmNvbT4KKyAqCisg KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0 IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0 aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyLAorICogICAgd2l0aG91dCBtb2RpZmljYXRpb24uCisgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIFRoZSBuYW1lcyBvZiB0aGUg YXV0aG9ycyBtYXkgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisg KiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCBwcm92aWRlZCB0aGF0IHRo aXMgbm90aWNlIGlzIHJldGFpbmVkIGluIGZ1bGwsIHRoaXMKKyAqIHNvZnR3YXJlIG1heSBiZSBk aXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsCisgKiBQdWJsaWMg TGljZW5zZSAoIkdQTCIpIHZlcnNpb24gMiwgaW4gd2hpY2ggY2FzZSB0aGUgcHJvdmlzaW9ucyBv ZiB0aGUKKyAqIEdQTCBhcHBseSBJTlNURUFEIE9GIHRob3NlIGdpdmVuIGFib3ZlLgorICoKKyAq IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD T05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJS QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxB UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU CisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ UkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5U IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwg T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg T04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorICogREFNQUdF LgorICoKKyAqLworCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNp bmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXNsb2cuaD4KKyNpbmNsdWRlIDxmY250bC5o PgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaW5j bHVkZSA8YXJwYS9pbmV0Lmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkYm9v bC5oPgorCisjaW5jbHVkZSAidXRpbHMuaCIKKyNpbmNsdWRlICJ0Y191dGlsLmgiCisKKyNkZWZp bmUgQUxQSEFfTUFYIDMyCisjZGVmaW5lIEFMUEhBX01JTiAwCisjZGVmaW5lIEJFVEFfTUFYIDMy CisjZGVmaW5lIEJFVEFfTUlOIDAKKworc3RhdGljIHZvaWQgZXhwbGFpbih2b2lkKQoreworCWZw cmludGYoc3RkZXJyLCAiVXNhZ2U6IC4uLiBwaWUgWyBsaW1pdCBQQUNLRVRTIF1bIHRhcmdldCBU SU1FIHVzXVxuIik7CisJZnByaW50ZihzdGRlcnIsICIgICAgICAgICAgICAgIFsgdHVwZGF0ZSBU SU1FIHVzXVsgYWxwaGEgQUxQSEEgXSIpOworCWZwcmludGYoc3RkZXJyLCAiW2JldGEgQkVUQSBd W2J5dGVtb2RlIHwgbm9ieXRlbW9kZV1bZWNuIHwgbm9lY24gXVxuIik7CisKKwlmcHJpbnRmKHN0 ZGVyciwgIlVzYWdlOiAuLi4gZnEgWyBsaW1pdCBQQUNLRVRTIF0gWyBmbG93X2xpbWl0IFBBQ0tF VFMgXVxuIik7CisJZnByaW50ZihzdGRlcnIsICIgICAgICAgICAgICAgIFsgcXVhbnR1bSBCWVRF UyBdIFsgaW5pdGlhbF9xdWFudHVtIEJZVEVTIF1cbiIpOworCWZwcmludGYoc3RkZXJyLCAiICAg ICAgICAgICAgICBbIG1heHJhdGUgUkFURSAgXSBbIGJ1Y2tldHMgTlVNQkVSIF1cbiIpOworCWZw cmludGYoc3RkZXJyLCAiICAgICAgICAgICAgICBbIFtub11wYWNpbmcgXVxuIik7Cit9CisKK3N0 YXRpYyB1bnNpZ25lZCBpbnQgaWxvZzIodW5zaWduZWQgaW50IHZhbCkKK3sKKwl1bnNpZ25lZCBp bnQgcmVzID0gMDsKKworCXZhbC0tOworCXdoaWxlICh2YWwpIHsKKwkJcmVzKys7CisJCXZhbCA+ Pj0gMTsKKwl9CisJcmV0dXJuIHJlczsKK30KKworc3RhdGljIGludCBmcV9waWVfcGFyc2Vfb3B0 KHN0cnVjdCBxZGlzY191dGlsICpxdSwgaW50IGFyZ2MsIGNoYXIgKiphcmd2LAorCQkJc3RydWN0 IG5sbXNnaGRyICpuKQoreworCXVuc2lnbmVkIGludCBsaW1pdCAgID0gMDsKKwl1bnNpZ25lZCBp bnQgdGFyZ2V0ICA9IDA7CisJdW5zaWduZWQgaW50IHR1cGRhdGUgPSAwOworCXVuc2lnbmVkIGlu dCBhbHBoYSAgID0gMDsKKwl1bnNpZ25lZCBpbnQgYmV0YSAgICA9IDA7CisJaW50IGVjbiA9IC0x OworCWludCBieXRlbW9kZSA9IC0xOworCXVuc2lnbmVkIGludCBwbGltaXQ7CisJdW5zaWduZWQg aW50IGZsb3dfcGxpbWl0OworCXVuc2lnbmVkIGludCBxdWFudHVtOworCXVuc2lnbmVkIGludCBp bml0aWFsX3F1YW50dW07CisJdW5zaWduZWQgaW50IGJ1Y2tldHMgPSAwOworCXVuc2lnbmVkIGlu dCBtYXhyYXRlOworCXVuc2lnbmVkIGludCBkZWZyYXRlOworCWJvb2wgc2V0X3BsaW1pdCA9IGZh bHNlOworCWJvb2wgc2V0X2Zsb3dfcGxpbWl0ID0gZmFsc2U7CisJYm9vbCBzZXRfcXVhbnR1bSA9 IGZhbHNlOworCWJvb2wgc2V0X2luaXRpYWxfcXVhbnR1bSA9IGZhbHNlOworCWJvb2wgc2V0X21h eHJhdGUgPSBmYWxzZTsKKwlib29sIHNldF9kZWZyYXRlID0gZmFsc2U7CisJaW50IHBhY2luZyA9 IC0xOworCXN0cnVjdCBydGF0dHIgKnRhaWw7CisKKwl3aGlsZSAoYXJnYyA+IDApIHsKKwkJaWYg KHN0cmNtcCgqYXJndiwgImxpbWl0IikgPT0gMCkgeworCQkJTkVYVF9BUkcoKTsKKwkJCWlmIChn ZXRfdW5zaWduZWQoJnBsaW1pdCwgKmFyZ3YsIDApKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJ bGxlZ2FsIFwibGltaXRcIlxuIik7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJc2V0X3BsaW1p dCA9IHRydWU7CisJCX0gZWxzZSBpZiAoc3RyY21wKCphcmd2LCAidGFyZ2V0IikgPT0gMCkgewor CQkJTkVYVF9BUkcoKTsKKwkJCWlmIChnZXRfdGltZSgmdGFyZ2V0LCAqYXJndikpIHsKKwkJCQlm cHJpbnRmKHN0ZGVyciwgIklsbGVnYWwgXCJ0YXJnZXRcIlxuIik7CisJCQkJcmV0dXJuIC0xOwor CQkJfQorCQl9IGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgInR1cGRhdGUiKSA9PSAwKSB7CisJCQlO RVhUX0FSRygpOworCQkJaWYgKGdldF90aW1lKCZ0dXBkYXRlLCAqYXJndikpIHsKKwkJCQlmcHJp bnRmKHN0ZGVyciwgIklsbGVnYWwgXCJ0dXBkYXRlXCJcbiIpOworCQkJCXJldHVybiAtMTsKKwkJ CX0KKwkJfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJhbHBoYSIpID09IDApIHsKKwkJCU5FWFRf QVJHKCk7CisJCQlpZiAoZ2V0X3Vuc2lnbmVkKCZhbHBoYSwgKmFyZ3YsIDApIHx8CisJCQkgICAg KGFscGhhID4gQUxQSEFfTUFYKSB8fCAoYWxwaGEgPCBBTFBIQV9NSU4pKSB7CisJCQkJZnByaW50 ZihzdGRlcnIsICJJbGxlZ2FsIFwiYWxwaGFcIlxuIik7CisJCQkJcmV0dXJuIC0xOworCQkJfQor CQl9IGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImJldGEiKSA9PSAwKSB7CisJCQlORVhUX0FSRygp OworCQkJaWYgKGdldF91bnNpZ25lZCgmYmV0YSwgKmFyZ3YsIDApIHx8CisJCQkgICAgKGJldGEg PiBCRVRBX01BWCkgfHwgKGJldGEgPCBCRVRBX01JTikpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwg IklsbGVnYWwgXCJiZXRhXCJcbiIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJfSBlbHNlIGlm IChzdHJjbXAoKmFyZ3YsICJlY24iKSA9PSAwKSB7CisJCQllY24gPSAxOworCQl9IGVsc2UgaWYg KHN0cmNtcCgqYXJndiwgIm5vZWNuIikgPT0gMCkgeworCQkJZWNuID0gMDsKKwkJfSBlbHNlIGlm IChzdHJjbXAoKmFyZ3YsICJieXRlbW9kZSIpID09IDApIHsKKwkJCWJ5dGVtb2RlID0gMTsKKwkJ fSBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJub2J5dGVtb2RlIikgPT0gMCkgeworCQkJYnl0ZW1v ZGUgPSAwOworCQl9IGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgImZsb3dfbGltaXQiKSA9PSAwKSB7 CisJCQlORVhUX0FSRygpOworCQkJaWYgKGdldF91bnNpZ25lZCgmZmxvd19wbGltaXQsICphcmd2 LCAwKSkgeworCQkJCWZwcmludGYoc3RkZXJyLCAiSWxsZWdhbCBcImZsb3dfbGltaXRcIlxuIik7 CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJc2V0X2Zsb3dfcGxpbWl0ID0gdHJ1ZTsKKwkJfSBl bHNlIGlmIChzdHJjbXAoKmFyZ3YsICJidWNrZXRzIikgPT0gMCkgeworCQkJTkVYVF9BUkcoKTsK KwkJCWlmIChnZXRfdW5zaWduZWQoJmJ1Y2tldHMsICphcmd2LCAwKSkgeworCQkJCWZwcmludGYo c3RkZXJyLCAiSWxsZWdhbCBcImJ1Y2tldHNcIlxuIik7CisJCQkJcmV0dXJuIC0xOworCQkJfQor CQl9IGVsc2UgaWYgKHN0cmNtcCgqYXJndiwgIm1heHJhdGUiKSA9PSAwKSB7CisJCQlORVhUX0FS RygpOworCQkJaWYgKGdldF9yYXRlKCZtYXhyYXRlLCAqYXJndikpIHsKKwkJCQlmcHJpbnRmKHN0 ZGVyciwgIklsbGVnYWwgXCJtYXhyYXRlXCJcbiIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJ CXNldF9tYXhyYXRlID0gdHJ1ZTsKKwkJfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJkZWZyYXRl IikgPT0gMCkgeworCQkJTkVYVF9BUkcoKTsKKwkJCWlmIChnZXRfcmF0ZSgmZGVmcmF0ZSwgKmFy Z3YpKSB7CisJCQkJZnByaW50ZihzdGRlcnIsICJJbGxlZ2FsIFwiZGVmcmF0ZVwiXG4iKTsKKwkJ CQlyZXR1cm4gLTE7CisJCQl9CisJCQlzZXRfZGVmcmF0ZSA9IHRydWU7CisJCX0gZWxzZSBpZiAo c3RyY21wKCphcmd2LCAicXVhbnR1bSIpID09IDApIHsKKwkJCU5FWFRfQVJHKCk7CisJCQlpZiAo Z2V0X3Vuc2lnbmVkKCZxdWFudHVtLCAqYXJndiwgMCkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwg IklsbGVnYWwgXCJxdWFudHVtXCJcbiIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCXNldF9x dWFudHVtID0gdHJ1ZTsKKwkJfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJpbml0aWFsX3F1YW50 dW0iKSA9PSAwKSB7CisJCQlORVhUX0FSRygpOworCQkJaWYgKGdldF91bnNpZ25lZCgmaW5pdGlh bF9xdWFudHVtLCAqYXJndiwgMCkpIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwgIklsbGVnYWwgXCJp bml0aWFsX3F1YW50dW1cIlxuIik7CisJCQkJcmV0dXJuIC0xOworCQkJfQorCQkJc2V0X2luaXRp YWxfcXVhbnR1bSA9IHRydWU7CisJCX0gZWxzZSBpZiAoc3RyY21wKCphcmd2LCAicGFjaW5nIikg PT0gMCkgeworCQkJcGFjaW5nID0gMTsKKwkJfSBlbHNlIGlmIChzdHJjbXAoKmFyZ3YsICJub3Bh Y2luZyIpID09IDApIHsKKwkJCXBhY2luZyA9IDA7CisJCX0gZWxzZSBpZiAoc3RyY21wKCphcmd2 LCAiaGVscCIpID09IDApIHsKKwkJCWV4cGxhaW4oKTsKKwkJCXJldHVybiAtMTsKKwkJfSBlbHNl IHsKKwkJCWZwcmludGYoc3RkZXJyLCAiV2hhdCBpcyBcIiVzXCI/XG4iLCAqYXJndik7CisJCQll eHBsYWluKCk7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJYXJnYy0tOyBhcmd2Kys7CisJfQorCisJ dGFpbCA9IE5MTVNHX1RBSUwobik7CisJYWRkYXR0cl9sKG4sIDEwMjQsIFRDQV9PUFRJT05TLCBO VUxMLCAwKTsKKwlpZiAoYnVja2V0cykgeworCQl1bnNpZ25lZCBpbnQgbG9nID0gaWxvZzIoYnVj a2V0cyk7CisKKwkJYWRkYXR0cl9sKG4sIDEwMjQsIFRDQV9GUV9QSUVfQlVDS0VUU19MT0csCisJ CQkgICZsb2csIHNpemVvZihsb2cpKTsKKwl9CisJaWYgKHRhcmdldCkKKwkJYWRkYXR0cl9sKG4s IDEwMjQsIFRDQV9GUV9QSUVfVEFSR0VULCAmdGFyZ2V0LCBzaXplb2YodGFyZ2V0KSk7CisJaWYg KHR1cGRhdGUpCisJCWFkZGF0dHJfbChuLCAxMDI0LCBUQ0FfRlFfUElFX1RVUERBVEUsICZ0dXBk YXRlLCBzaXplb2YodHVwZGF0ZSkpOworCWlmIChhbHBoYSkKKwkJYWRkYXR0cl9sKG4sIDEwMjQs IFRDQV9GUV9QSUVfQUxQSEEsICZhbHBoYSwgc2l6ZW9mKGFscGhhKSk7CisJaWYgKGJldGEpCisJ CWFkZGF0dHJfbChuLCAxMDI0LCBUQ0FfRlFfUElFX0JFVEEsICZiZXRhLCBzaXplb2YoYmV0YSkp OworCWlmIChlY24gIT0gLTEpCisJCWFkZGF0dHJfbChuLCAxMDI0LCBUQ0FfRlFfUElFX0VDTiwg JmVjbiwgc2l6ZW9mKGVjbikpOworCWlmIChieXRlbW9kZSAhPSAtMSkKKwkJYWRkYXR0cl9sKG4s IDEwMjQsIFRDQV9GUV9QSUVfQllURU1PREUsICZieXRlbW9kZSwKKwkJCSAgc2l6ZW9mKGJ5dGVt b2RlKSk7CisJaWYgKHNldF9wbGltaXQpCisJCWFkZGF0dHJfbChuLCAxMDI0LCBUQ0FfRlFfUElF X1BMSU1JVCwKKwkJCSAgJnBsaW1pdCwgc2l6ZW9mKHBsaW1pdCkpOworCWlmIChzZXRfZmxvd19w bGltaXQpCisJCWFkZGF0dHJfbChuLCAxMDI0LCBUQ0FfRlFfUElFX0ZMT1dfUExJTUlULAorCQkJ ICAmZmxvd19wbGltaXQsIHNpemVvZihmbG93X3BsaW1pdCkpOworCWlmIChzZXRfcXVhbnR1bSkK KwkJYWRkYXR0cl9sKG4sIDEwMjQsIFRDQV9GUV9QSUVfUVVBTlRVTSwgJnF1YW50dW0sIHNpemVv ZihxdWFudHVtKSk7CisJaWYgKHNldF9pbml0aWFsX3F1YW50dW0pCisJCWFkZGF0dHJfbChuLCAx MDI0LCBUQ0FfRlFfUElFX0lOSVRJQUxfUVVBTlRVTSwKKwkJCSAgJmluaXRpYWxfcXVhbnR1bSwg c2l6ZW9mKGluaXRpYWxfcXVhbnR1bSkpOworCWlmIChwYWNpbmcgIT0gLTEpCisJCWFkZGF0dHJf bChuLCAxMDI0LCBUQ0FfRlFfUElFX1JBVEVfRU5BQkxFLAorCQkJICAmcGFjaW5nLCBzaXplb2Yo cGFjaW5nKSk7CisJaWYgKHNldF9tYXhyYXRlKQorCQlhZGRhdHRyX2wobiwgMTAyNCwgVENBX0ZR X1BJRV9GTE9XX01BWF9SQVRFLAorCQkJICAmbWF4cmF0ZSwgc2l6ZW9mKG1heHJhdGUpKTsKKwlp ZiAoc2V0X2RlZnJhdGUpCisJCWFkZGF0dHJfbChuLCAxMDI0LCBUQ0FfRlFfUElFX0ZMT1dfREVG QVVMVF9SQVRFLAorCQkJICAmZGVmcmF0ZSwgc2l6ZW9mKGRlZnJhdGUpKTsKKwl0YWlsLT5ydGFf bGVuID0gKHZvaWQgKikgTkxNU0dfVEFJTChuKSAtICh2b2lkICopIHRhaWw7CisJcmV0dXJuIDA7 Cit9CisKK3N0YXRpYyBpbnQgZnFfcGllX3ByaW50X29wdChzdHJ1Y3QgcWRpc2NfdXRpbCAqcXUs IEZJTEUgKmYsIHN0cnVjdCBydGF0dHIgKm9wdCkKK3sKKwlzdHJ1Y3QgcnRhdHRyICp0YltUQ0Ff RlFfUElFX01BWCArIDFdOworCXVuc2lnbmVkIGludCB0YXJnZXQ7CisJdW5zaWduZWQgaW50IHR1 cGRhdGU7CisJdW5zaWduZWQgaW50IGFscGhhOworCXVuc2lnbmVkIGludCBiZXRhOworCXVuc2ln bmVkIGVjbjsKKwl1bnNpZ25lZCBieXRlbW9kZTsKKwl1bnNpZ25lZCBpbnQgcGxpbWl0LCBmbG93 X3BsaW1pdDsKKwl1bnNpZ25lZCBpbnQgYnVja2V0c19sb2c7CisJaW50IHBhY2luZzsKKwl1bnNp Z25lZCBpbnQgcmF0ZSwgcXVhbnR1bTsKKwlTUFJJTlRfQlVGKGIxKTsKKworCWlmIChvcHQgPT0g TlVMTCkKKwkJcmV0dXJuIDA7CisKKwlwYXJzZV9ydGF0dHJfbmVzdGVkKHRiLCBUQ0FfRlFfUElF X01BWCwgb3B0KTsKKwlpZiAodGJbVENBX0ZRX1BJRV9UQVJHRVRdICYmCisJICAgIFJUQV9QQVlM T0FEKHRiW1RDQV9GUV9QSUVfVEFSR0VUXSkgPj0gc2l6ZW9mKF9fdTMyKSkgeworCQl0YXJnZXQg PSBydGFfZ2V0YXR0cl91MzIodGJbVENBX0ZRX1BJRV9UQVJHRVRdKTsKKwkJZnByaW50ZihmLCAi dGFyZ2V0ICVzICIsIHNwcmludF90aW1lKHRhcmdldCwgYjEpKTsKKwl9CisJaWYgKHRiW1RDQV9G UV9QSUVfVFVQREFURV0gJiYKKwkgICAgUlRBX1BBWUxPQUQodGJbVENBX0ZRX1BJRV9UVVBEQVRF XSkgPj0gc2l6ZW9mKF9fdTMyKSkgeworCQl0dXBkYXRlID0gcnRhX2dldGF0dHJfdTMyKHRiW1RD QV9GUV9QSUVfVFVQREFURV0pOworCQlmcHJpbnRmKGYsICJ0dXBkYXRlICVzICIsIHNwcmludF90 aW1lKHR1cGRhdGUsIGIxKSk7CisJfQorCWlmICh0YltUQ0FfRlFfUElFX0FMUEhBXSAmJgorCSAg ICBSVEFfUEFZTE9BRCh0YltUQ0FfRlFfUElFX0FMUEhBXSkgPj0gc2l6ZW9mKF9fdTMyKSkgewor CQlhbHBoYSA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfRlFfUElFX0FMUEhBXSk7CisJCWZwcmlu dGYoZiwgImFscGhhICV1ICIsIGFscGhhKTsKKwl9CisJaWYgKHRiW1RDQV9GUV9QSUVfQkVUQV0g JiYKKwkgICAgUlRBX1BBWUxPQUQodGJbVENBX0ZRX1BJRV9CRVRBXSkgPj0gc2l6ZW9mKF9fdTMy KSkgeworCQliZXRhID0gcnRhX2dldGF0dHJfdTMyKHRiW1RDQV9GUV9QSUVfQkVUQV0pOworCQlm cHJpbnRmKGYsICJiZXRhICV1ICIsIGJldGEpOworCX0KKworCWlmICh0YltUQ0FfRlFfUElFX0VD Tl0gJiYgUlRBX1BBWUxPQUQodGJbVENBX0ZRX1BJRV9FQ05dKSA+PSBzaXplb2YoX191MzIpKSB7 CisJCWVjbiA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfRlFfUElFX0VDTl0pOworCQlpZiAoZWNu KQorCQkJZnByaW50ZihmLCAiZWNuICIpOworCX0KKworCWlmICh0YltUQ0FfRlFfUElFX0JZVEVN T0RFXSAmJgorCSAgICBSVEFfUEFZTE9BRCh0YltUQ0FfRlFfUElFX0JZVEVNT0RFXSkgPj0gc2l6 ZW9mKF9fdTMyKSkgeworCQlieXRlbW9kZSA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfRlFfUElF X0JZVEVNT0RFXSk7CisJCWlmIChieXRlbW9kZSkKKwkJCWZwcmludGYoZiwgImJ5dGVtb2RlICIp OworCX0KKwlpZiAodGJbVENBX0ZRX1BJRV9QTElNSVRdICYmCisJICAgIFJUQV9QQVlMT0FEKHRi W1RDQV9GUV9QSUVfUExJTUlUXSkgPj0gc2l6ZW9mKF9fdTMyKSkgeworCQlwbGltaXQgPSBydGFf Z2V0YXR0cl91MzIodGJbVENBX0ZRX1BJRV9QTElNSVRdKTsKKwkJZnByaW50ZihmLCAibGltaXQg JXVwICIsIHBsaW1pdCk7CisJfQorCWlmICh0YltUQ0FfRlFfUElFX0ZMT1dfUExJTUlUXSAmJgor CSAgICBSVEFfUEFZTE9BRCh0YltUQ0FfRlFfUElFX0ZMT1dfUExJTUlUXSkgPj0gc2l6ZW9mKF9f dTMyKSkgeworCQlmbG93X3BsaW1pdCA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfRlFfUElFX0ZM T1dfUExJTUlUXSk7CisJCWZwcmludGYoZiwgImZsb3dfbGltaXQgJXVwICIsIGZsb3dfcGxpbWl0 KTsKKwl9CisJaWYgKHRiW1RDQV9GUV9QSUVfQlVDS0VUU19MT0ddICYmCisJICAgIFJUQV9QQVlM T0FEKHRiW1RDQV9GUV9QSUVfQlVDS0VUU19MT0ddKSA+PSBzaXplb2YoX191MzIpKSB7CisJCWJ1 Y2tldHNfbG9nID0gcnRhX2dldGF0dHJfdTMyKHRiW1RDQV9GUV9QSUVfQlVDS0VUU19MT0ddKTsK KwkJZnByaW50ZihmLCAiYnVja2V0cyAldSAiLCAxVSA8PCBidWNrZXRzX2xvZyk7CisJfQorCWlm ICh0YltUQ0FfRlFfUElFX1JBVEVfRU5BQkxFXSAmJgorCSAgICBSVEFfUEFZTE9BRCh0YltUQ0Ff RlFfUElFX1JBVEVfRU5BQkxFXSkgPj0gc2l6ZW9mKGludCkpIHsKKwkJcGFjaW5nID0gcnRhX2dl dGF0dHJfdTMyKHRiW1RDQV9GUV9QSUVfUkFURV9FTkFCTEVdKTsKKwkJaWYgKHBhY2luZyA9PSAw KQorCQkJZnByaW50ZihmLCAibm9wYWNpbmcgIik7CisJfQorCWlmICh0YltUQ0FfRlFfUElFX1FV QU5UVU1dICYmCisJICAgIFJUQV9QQVlMT0FEKHRiW1RDQV9GUV9QSUVfUVVBTlRVTV0pID49IHNp emVvZihfX3UzMikpIHsKKwkJcXVhbnR1bSA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfRlFfUElF X1FVQU5UVU1dKTsKKwkJZnByaW50ZihmLCAicXVhbnR1bSAldSAiLCBxdWFudHVtKTsKKwl9CisJ aWYgKHRiW1RDQV9GUV9QSUVfSU5JVElBTF9RVUFOVFVNXSAmJgorCSAgICBSVEFfUEFZTE9BRCh0 YltUQ0FfRlFfUElFX0lOSVRJQUxfUVVBTlRVTV0pID49IHNpemVvZihfX3UzMikpIHsKKwkJcXVh bnR1bSA9IHJ0YV9nZXRhdHRyX3UzMih0YltUQ0FfRlFfUElFX0lOSVRJQUxfUVVBTlRVTV0pOwor CQlmcHJpbnRmKGYsICJpbml0aWFsX3F1YW50dW0gJXUgIiwgcXVhbnR1bSk7CisJfQorCWlmICh0 YltUQ0FfRlFfUElFX0ZMT1dfTUFYX1JBVEVdICYmCisJICAgIFJUQV9QQVlMT0FEKHRiW1RDQV9G UV9QSUVfRkxPV19NQVhfUkFURV0pID49IHNpemVvZihfX3UzMikpIHsKKwkJcmF0ZSA9IHJ0YV9n ZXRhdHRyX3UzMih0YltUQ0FfRlFfUElFX0ZMT1dfTUFYX1JBVEVdKTsKKworCQlpZiAocmF0ZSAh PSB+MFUpCisJCQlmcHJpbnRmKGYsICJtYXhyYXRlICVzICIsIHNwcmludF9yYXRlKHJhdGUsIGIx KSk7CisJfQorCWlmICh0YltUQ0FfRlFfUElFX0ZMT1dfREVGQVVMVF9SQVRFXSAmJgorCSAgICBS VEFfUEFZTE9BRCh0YltUQ0FfRlFfUElFX0ZMT1dfREVGQVVMVF9SQVRFXSkgPj0gc2l6ZW9mKF9f dTMyKSkgeworCQlyYXRlID0gcnRhX2dldGF0dHJfdTMyKHRiW1RDQV9GUV9QSUVfRkxPV19ERUZB VUxUX1JBVEVdKTsKKworCQlpZiAocmF0ZSAhPSAwKQorCQkJZnByaW50ZihmLCAiZGVmcmF0ZSAl cyAiLCBzcHJpbnRfcmF0ZShyYXRlLCBiMSkpOworCX0KKworCXJldHVybiAwOworfQorCitzdGF0 aWMgaW50IGZxX3BpZV9wcmludF94c3RhdHMoc3RydWN0IHFkaXNjX3V0aWwgKnF1LCBGSUxFICpm LAorCQkJICAgc3RydWN0IHJ0YXR0ciAqeHN0YXRzKQoreworCXN0cnVjdCB0Y19mcV9waWVfcWRf c3RhdHMgKnN0OworCisJaWYgKHhzdGF0cyA9PSBOVUxMKQorCQlyZXR1cm4gMDsKKworCWlmIChS VEFfUEFZTE9BRCh4c3RhdHMpIDwgc2l6ZW9mKCpzdCkpCisJCXJldHVybiAtMTsKKworCXN0ID0g UlRBX0RBVEEoeHN0YXRzKTsKKwlmcHJpbnRmKGYsICJwcm9iICVmIGRlbGF5ICV1dXMgYXZnX2Rx X3JhdGUgJXUiLAorCQkoZG91YmxlKXN0LT5wcm9iIC8gKGRvdWJsZSkweGZmZmZmZmZmLCBzdC0+ ZGVsYXksCisJCXN0LT5hdmdfZHFfcmF0ZSk7CisJZnByaW50ZihmLCAicGt0c19pbiAldSBvdmVy bGltaXQgJXUgZHJvcHBlZCAldSBtYXhxICV1IGVjbl9tYXJrICV1IiwKKwkJc3QtPnBhY2tldHNf aW4sIHN0LT5vdmVybGltaXQsIHN0LT5kcm9wcGVkLCBzdC0+bWF4cSwKKwkJc3QtPmVjbl9tYXJr KTsKKwlmcHJpbnRmKGYsICIgICV1IGZsb3dzICgldSBpbmFjdGl2ZSwgJXUgdGhyb3R0bGVkKSIs CisJCXN0LT5mbG93cywgc3QtPmluYWN0aXZlX2Zsb3dzLCBzdC0+dGhyb3R0bGVkX2Zsb3dzKTsK KworCWlmIChzdC0+dGltZV9uZXh0X2RlbGF5ZWRfZmxvdyA+IDApCisJCWZwcmludGYoZiwgIiwg bmV4dCBwYWNrZXQgZGVsYXkgJWxsdSBucyIsIHN0LT50aW1lX25leHRfZGVsYXllZF9mbG93KTsK KworCWZwcmludGYoZiwgIlxuICAlbGx1IGdjLCAlbGx1IGhpZ2hwcmlvIiwKKwkJc3QtPmdjX2Zs b3dzLCBzdC0+aGlnaHByaW9fcGFja2V0cyk7CisKKwlpZiAoc3QtPnRjcF9yZXRyYW5zKQorCQlm cHJpbnRmKGYsICIsICVsbHUgcmV0cmFucyIsIHN0LT50Y3BfcmV0cmFucyk7CisKKwlmcHJpbnRm KGYsICIsICVsbHUgdGhyb3R0bGVkIiwgc3QtPnRocm90dGxlZCk7CisKKwlpZiAoc3QtPmZsb3dz X3BsaW1pdCkKKwkJZnByaW50ZihmLCAiLCAlbGx1IGZsb3dzX3BsaW1pdCIsIHN0LT5mbG93c19w bGltaXQpOworCisJaWYgKHN0LT5wa3RzX3Rvb19sb25nIHx8IHN0LT5hbGxvY2F0aW9uX2Vycm9y cykKKwkJZnByaW50ZihmLCAiXG4gICVsbHUgdG9vIGxvbmcgcGt0cywgJWxsdSBhbGxvYyBlcnJv cnNcbiIsCisJCQlzdC0+cGt0c190b29fbG9uZywgc3QtPmFsbG9jYXRpb25fZXJyb3JzKTsKKwor CXJldHVybiAwOworfQorCitzdHJ1Y3QgcWRpc2NfdXRpbCBmcV9waWVfcWRpc2NfdXRpbCA9IHsK KwkuaWQJCT0gImZxX3BpZSIsCisJLnBhcnNlX3FvcHQJPSBmcV9waWVfcGFyc2Vfb3B0LAorCS5w cmludF9xb3B0CT0gZnFfcGllX3ByaW50X29wdCwKKwkucHJpbnRfeHN0YXRzCT0gZnFfcGllX3By aW50X3hzdGF0cywKK307Ci0tIAoyLjEuNAoK --089e01182252987074051514d12e--