From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-qv1-f54.google.com ([209.85.219.54]) by ewsd; Thu Jul 30 17:48:49 EDT 2020 Received: by mail-qv1-f54.google.com with SMTP id w2so1158864qvh.12 for <9front@9front.org>; Thu, 30 Jul 2020 14:48:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=ipKPw6RtzIiJSu2N/Rctg7p2mPmtrHByGJuuTIWjHls=; b=UKIpIsmTSI3HQ2kiB3xCHaCWbxYDqcpDjR07A44Jtae4feHWiC+vBB9qLEj0bGaod6 9PlNm8+oaGGta3ZUNZyYq4sAX37dfU0XANl3vj8Y19YZ39zxIXPVStRBmswhuqyXguuL 5aH/Nafl4V8tbwhWRXl7gf46n8QXsZUIydIeTlyITGSy1WBm19/Sq8lrpFxPUHqzoqeU +hb4In5bYdVIiEXUwwFKcEy8dzGWkVet1CxyAiVSkW7dpdTgyxVC9OT4e1J3/khenSze gvCpzPJ9vcorpLX29RKVmpS3Jcyp0nx1JxMwja1/yjqVq1TkMKy9RrOU+vxDPr66N6YY E3/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=ipKPw6RtzIiJSu2N/Rctg7p2mPmtrHByGJuuTIWjHls=; b=FGi+YCkaEndpPRmnmH7VALb92bgLN2uzpPzB167ExtAbTsndA0WXEvbqBIW16sY3UB y1zOQ3mitiJM9q/MlA7QajtLmKylAcZE3GGZAqZFji72j3WoZAaijvTrXiMGLWg6IWmc T4cwCUU/dCmnUALhb4CrqnybgS/q91DBA91HHdYm2nElOGmuN1mybZBlKPiKlnadSsAg zXifIt/N4ma8sOTbuvOHnGV/eNfkv+NHQ4p/Mo0KxygjYFcE8lYZPMereJiXCV2oI/5p wVAbGwsNgJgc0Zn3rYeSlSDXqgkr+pC7sIZMHpTwLD1i2etAPJ/MqCpCc/8wzBeb2ikT ruFw== X-Gm-Message-State: AOAM532BPFazYE+pj39kqTrs+SgwMTzcyOY9ptUdlA72H1qNaxSZ0Io3 5/UV28NYgsZsqqRCJqm91FkdPEZNdiwT5DaRXfq24ZWc X-Google-Smtp-Source: ABdhPJx7W856Iq2ywy1cqXShQVJ7Qdwpw4fti6OrvFFs/LvF0R44uUltbIMT42PIem/2BdykjWLP3rHRhYF/AsyXaG0= X-Received: by 2002:ad4:4e6e:: with SMTP id ec14mr1149986qvb.79.1596145725578; Thu, 30 Jul 2020 14:48:45 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Eli Cohen Date: Thu, 30 Jul 2020 14:48:34 -0700 Message-ID: Subject: Re: CDC ACM nusb/serial driver To: 9front@9front.org Content-Type: multipart/mixed; boundary="000000000000fbb9d905abafa2e4" List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: stateless lifecycle out-scaling manager --000000000000fbb9d905abafa2e4 Content-Type: text/plain; charset="UTF-8" I already noticed a few tiny changes. these flags should be set to 1 or 0, not the bit value --000000000000fbb9d905abafa2e4 Content-Type: text/x-patch; charset="US-ASCII"; name="serial.patch" Content-Disposition: attachment; filename="serial.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kd9bxjin0 ZGlmZiAtciAyM2JjMWQwZTJkZDIgc3lzL3NyYy9jbWQvbnVzYi9zZXJpYWwvY2RjLmMKLS0tIC9k ZXYvbnVsbAlUaHUgSmFuIDAxIDAwOjAwOjAwIDE5NzAgKzAwMDAKKysrIGIvc3lzL3NyYy9jbWQv bnVzYi9zZXJpYWwvY2RjLmMJVGh1IEp1bCAzMCAyMTowNjoyOSAyMDIwIC0wNzAwCkBAIC0wLDAg KzEsMzAxIEBACisjaW5jbHVkZSA8dS5oPgorI2luY2x1ZGUgPGxpYmMuaD4KKyNpbmNsdWRlIDx0 aHJlYWQuaD4KKyNpbmNsdWRlIDxmY2FsbC5oPgorI2luY2x1ZGUgPDlwLmg+CisjaW5jbHVkZSAi dXNiLmgiCisjaW5jbHVkZSAic2VyaWFsLmgiCisKK2VudW0geworCUt5b2NlcmEJCT0gMHgwNDgy LAorCUFISzMwMDFWCT0gMHgwMjAzLAorfTsKKworZW51bSB7CisJU2NBQ00JPSAyLAorCUFUCQk9 IDEsCisJTm9uZQk9IDAsCisJTGluZUNvZGluZwk9IDB4MjAsCisJU2V0QnJlYWsJPSAweDIzLAor CUNvbnRyb2xTdGF0ZSA9IDB4MjIsCit9OworCitlbnVtIHsKKwlDbGFzc0NEQ0RhdGEgPSAweDBh LAorCVN1YmNsYXNzRGF0YSA9IDAsCit9OworCitlbnVtIHsKKwlTdWJDRENDTQk9IDEsCisJU3Vi Q0RDQUNNCT0gMiwKKwlTdWJDRENVbmlvbgk9IDYsCit9OworCit0eXBlZGVmIHN0cnVjdCByYXdf ZGVzYyB7CisJdWNoYXIgYkxlbmd0aDsKKwl1Y2hhciBiRGVzY3JpcHRvclR5cGU7CisJdWNoYXIg YkRlc2NyaXB0b3JTdWJ0eXBlOworCXVjaGFyIGJieXRlc1sxXTsKK30gcmF3X2Rlc2M7CisKK3R5 cGVkZWYgc3RydWN0IGNtX2Rlc2MgeworCXVjaGFyIGJMZW5ndGg7CisJdWNoYXIgYkRlc2NyaXB0 b3JUeXBlOworCXVjaGFyIGJEZXNjcmlwdG9yU3VidHlwZTsKKwl1Y2hhciBibUNhcGFiaWxpdGll czsKKwl1Y2hhciBiRGF0YUludGVyZmFjZTsKK30gY21fZGVzYzsKKworZW51bSB7CisJQ01Eb2Vz Q00JPSAxLAorCUNNT3ZlckRhdGEJPSAyLAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgYWNtX2Rlc2Mg eworCXVjaGFyIGJMZW5ndGg7CisJdWNoYXIgYkRlc2NyaXB0b3JUeXBlOworCXVjaGFyIGJEZXNj cmlwdG9yU3VidHlwZTsKKwl1Y2hhciBibUNhcGFiaWxpdGllczsKK30gYWNtX2Rlc2M7CisKK2Vu dW0geworCUFDTUhhc0ZlYXR1cmUJPSAxLAorCUFDTUhhc0xpbmUJCT0gMiwKKwlBQ01IYXNCcmVh awkJPSA0LAorCUFDTUhhc05ldHdvcmsJPSA4LAorfTsKKwordHlwZWRlZiBzdHJ1Y3QgdW5pb25f ZGVzYyB7CisJdWNoYXIgYkxlbmd0aDsKKwl1Y2hhciBiRGVzY3JpcHRvclR5cGU7CisJdWNoYXIg YkRlc2NyaXB0b3JTdWJ0eXBlOworCXVjaGFyIGJNYXN0ZXJJbnRlcmZhY2U7CisJdWNoYXIgYlNs YXZlSW50ZXJmYWNlWzFdOworfSB1bmlvbl9kZXNjOworCit0eXBlZGVmIHN0cnVjdCBjZGNfbm90 aWZ5IHsKKwl1Y2hhciBibVJlcXVlc3RUeXBlOworCXVjaGFyIGJOb3RpZmljYXRpb247CisJdXNo b3J0IHdWYWx1ZTsKKwl1c2hvcnQgd0luZGV4OworCXVzaG9ydCB3TGVuZ3RoOworCXVjaGFyIGRh dGFbMTZdOworfSBjZGNfbm90aWZ5OworCitlbnVtIHsKKwlOb3RpZmljYXRpb24gPSAweGExLAor CVNlcmlhbFN0YXRlID0gMHgyMCwKK307CisKK2VudW0geworCURjZFN0YXR1cwk9IDB4MDEsCisJ RHNyU3RhdHVzCT0gMHgwMiwKKwlSaW5nU3RhdHVzCT0gMHgwOCwKK307CisKK3N0YXRpYyBpbnQK K2NkY3NldHBhcmFtKFNlcmlhbHBvcnQgKnApCit7CisJaW50IHJlczsKKwl1Y2hhciB2YWxzWzdd OworCisJUFVUNCh2YWxzLCBwLT5iYXVkKTsKKworCXZhbHNbNF0gPSAwOworCWlmKHAtPnN0b3Ag PT0gMSkKKwkJdmFsc1s0XSA9IDA7CisJaWYocC0+c3RvcCA9PSAxNSkKKwkJdmFsc1s0XSA9IDE7 CisJaWYocC0+c3RvcCA9PSAyKQorCQl2YWxzWzRdID0gMjsKKworCXZhbHNbNV0gPSBwLT5wYXJp dHk7CisKKwl2YWxzWzZdID0gcC0+Yml0czsKKworCXJlcyA9IHVzYmNtZChwLT5zLT5kZXYsIFJo MmQgfCBSY2xhc3MgfCBSaWZhY2UsIExpbmVDb2RpbmcsIDAsIDAsIHZhbHMsIDcpOworCisJcmV0 dXJuIHJlczsKK30KKwordm9pZAorZ2V0Y2FwcyhTZXJpYWxwb3J0ICpwKQoreworCWludCBpLCBq OworCURlc2MgKmRlc2M7CisJSWZhY2UgKmlmYWNlOworCXJhd19kZXNjIGRkZXNjOworCWNtX2Rl c2MgZGNtOworCWFjbV9kZXNjIGRhY207CisJdW5pb25fZGVzYyBkdW5pb247CisJaW50IGN1cl9p ZmM7CisKKwlmb3IgKGkgPSAwOyBpIDwgTmlmYWNlOyBpKyspIHsKKwkJaWZhY2UgPSBwLT5zLT5k ZXYtPnVzYi0+Y29uZlswXS0+aWZhY2VbaV07CisJCWlmIChpZmFjZSA9PSBuaWwpCisJCQljb250 aW51ZTsKKworCQljdXJfaWZjID0gaWZhY2UtPmlkOworCQlpZiAoY3VyX2lmYyAhPSBwLT5jdGxf aWZjICYmIENsYXNzKGlmYWNlLT5jc3ApID09IENsYXNzQ0RDRGF0YSAmJiBTdWJjbGFzcyhpZmFj ZS0+Y3NwKSA9PSBTdWJjbGFzc0RhdGEgJiYgcC0+ZGF0YV9pZmMgPT0gLTEpCisJCQlwLT5kYXRh X2lmYyA9IGN1cl9pZmM7CisKKwkJaWYgKGN1cl9pZmMgPT0gcC0+Y3RsX2lmYykKKwkJCWZvciAo aiA9IDA7IGogPCBOZGRlc2M7IGorKykgeworCQkJCWRlc2MgPSBwLT5zLT5kZXYtPnVzYi0+ZGRl c2Nbal07CisJCQkJaWYgKGRlc2MgPT0gbmlsKQorCQkJCQljb250aW51ZTsKKworCQkJCWRkZXNj ID0gKHJhd19kZXNjKWRlc2MtPmRhdGE7CisJCQkJaWYgKGRkZXNjLmJEZXNjcmlwdG9yVHlwZSA9 PSBEZnVuY3Rpb24pIHsKKwkJCQkJc3dpdGNoIChkZGVzYy5iRGVzY3JpcHRvclN1YnR5cGUpIHsK KwkJCQkJY2FzZSBTdWJDRENDTToKKwkJCQkJCWRjbSA9IChjbV9kZXNjKWRkZXNjOworCQkJCQkJ cC0+ZGF0YV9pZmMgPSBkY20uYkRhdGFJbnRlcmZhY2U7CisJCQkJCQlicmVhazsKKwkJCQkJY2Fz ZSBTdWJDRENBQ006CisJCQkJCQlkYWNtID0gKGFjbV9kZXNjKWRkZXNjOworCQkJCQkJcC0+aGFz YnJlYWsgPSBkYWNtLmJtQ2FwYWJpbGl0aWVzICYgQUNNSGFzQnJlYWs/IDE6IDA7CisJCQkJCQli cmVhazsKKwkJCQkJY2FzZSBTdWJDRENVbmlvbjoKKwkJCQkJCWR1bmlvbiA9ICh1bmlvbl9kZXNj KWRkZXNjOworCQkJCQkJcC0+ZGF0YV9pZmMgPSBkdW5pb24uYlNsYXZlSW50ZXJmYWNlWzBdOwor CQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJfQorfQorCit2b2lkCitzdGF0dXNy ZWFkZXIodm9pZCAqdSkKK3sKKwlTZXJpYWxwb3J0ICpwID0gdTsKKwl1Y2hhciBidWZbc2l6ZW9m KGNkY19ub3RpZnkpXTsKKwljZGNfbm90aWZ5ICpub3RpZnk7CisKKwlub3RpZnkgPSAoY2RjX25v dGlmeSopYnVmOworCXRocmVhZHNldG5hbWUoInN0YXR1c3JlYWRlcnByb2MiKTsKKworCXdoaWxl KHJlYWQocC0+ZXBpbnRyLT5kZmQsIGJ1Ziwgc2l6ZW9mKGNkY19ub3RpZnkpKSA+IDApIHsKKwkJ aWYgKG5vdGlmeS0+Ym1SZXF1ZXN0VHlwZSA9PSBOb3RpZmljYXRpb24gJiYgbm90aWZ5LT5iTm90 aWZpY2F0aW9uID09IFNlcmlhbFN0YXRlICYmIG5vdGlmeS0+d0xlbmd0aCA9PSAyKSB7CisJCQlw LT5kY2QgPSBub3RpZnktPmRhdGFbMF0gJiBEY2RTdGF0dXM/IDE6IDA7CisJCQlwLT5kc3IgPSBu b3RpZnktPmRhdGFbMF0gJiBEc3JTdGF0dXM/IDE6IDA7CisJCQlwLT5yaW5nID0gbm90aWZ5LT5k YXRhWzBdICYgUmluZ1N0YXR1cz8gMTogMDsKKwkJfSBlbHNlIHsKKwkJCWZwcmludCgyLCAic2Vy aWFsOiB1bmtub3duIGludHIgbWVzc2FnZTogcmVxdHlwZTolMDJ4IG5vdGlmeTolMDJ4IGxlbjol ZCBzdGF0ZTolMDJ4XG4iLCBub3RpZnktPmJtUmVxdWVzdFR5cGUsIG5vdGlmeS0+Yk5vdGlmaWNh dGlvbiwgbm90aWZ5LT53TGVuZ3RoLCBub3RpZnktPmRhdGFbMF0pOworCQl9CisJfQorCisJZnBy aW50KDIsICJzZXJpYWw6IHN0YXR1c3JlYWRlciBleGl0aW5nOiAlclxuIik7CisJY2xvc2VkZXYo cC0+cy0+ZGV2KTsKK30KKworc3RhdGljIGludAorY2RjaW5pdChTZXJpYWxwb3J0ICpwKQorewor CXAtPmJhdWQgPSAxMTUyMDA7CisJcC0+Yml0cyA9IDg7CisJcC0+cGFyaXR5ID0gMDsKKwlwLT5z dG9wID0gMTsKKwljZGNzZXRwYXJhbShwKTsKKworCWluY3JlZihwLT5zLT5kZXYpOworCXByb2Nj cmVhdGUoc3RhdHVzcmVhZGVyLCBwLCA4KjEwMjQpOworCisJcmV0dXJuIDA7Cit9CisKK3N0YXRp YyBpbnQKK2NkY3NldGJyZWFrKFNlcmlhbHBvcnQgKnAsIGludCB2YWwpCit7CisJaWYocC0+aGFz YnJlYWsgPT0gMCkKKwkJcmV0dXJuIDA7CisKKwlyZXR1cm4gdXNiY21kKHAtPnMtPmRldiwgUmgy ZCB8IFJjbGFzcyB8IFJpZmFjZSwgU2V0QnJlYWssICh2YWwgIT0gMD8gMHhmZmZmOiAweDAwMDAp LCAwLCBuaWwsIDApOworfQorCitzdGF0aWMgaW50CitjZGNzZW5kbGluZXMoU2VyaWFscG9ydCAq cCkKK3sKKwlpZihwLT5ydHMpCisJCXAtPmN0bHN0YXRlIHw9IEN0bFJUUzsKKwllbHNlCisJCXAt PmN0bHN0YXRlICY9IH5DdGxSVFM7CisJaWYocC0+ZHRyKQorCQlwLT5jdGxzdGF0ZSB8PSBDdGxE VFI7CisJZWxzZQorCQlwLT5jdGxzdGF0ZSAmPSB+Q3RsRFRSOworCisJcmV0dXJuIHVzYmNtZChw LT5zLT5kZXYsIFJoMmQgfCBSY2xhc3MgfCBSaWZhY2UsIENvbnRyb2xTdGF0ZSwgcC0+Y3Rsc3Rh dGUsIDAsIG5pbCwgMCk7Cit9CisKK3N0YXRpYyBpbnQKK2NkY2NsZWFycGlwZXMoU2VyaWFscG9y dCAqcCkKK3sKKwlpZih1bnN0YWxsKHAtPnMtPmRldiwgcC0+ZXBvdXQsIEVvdXQpIDwgMCkKKwkJ ZHByaW50KDIsICJzZXJpYWw6IHVuc3RhbGwgZXBvdXQ6ICVyXG4iKTsKKwlpZih1bnN0YWxsKHAt PnMtPmRldiwgcC0+ZXBpbiwgRWluKSA8IDApCisJCWRwcmludCgyLCAic2VyaWFsOiB1bnN0YWxs IGVwaW46ICVyXG4iKTsKKwlpZih1bnN0YWxsKHAtPnMtPmRldiwgcC0+ZXBpbnRyLCBFaW4pIDwg MCkKKwkJZHByaW50KDIsICJzZXJpYWw6IHVuc3RhbGwgZXBpbnRyOiAlclxuIik7CisKKwlyZXR1 cm4gMDsKK30KKworc3RhdGljIGludAorY2Rjd2FpdDRkYXRhKFNlcmlhbHBvcnQgKnAsIHVjaGFy ICpkYXRhLCBpbnQgY291bnQpCit7CisJaW50IG47CisKKwlxdW5sb2NrKHAtPnMpOworCXdoaWxl ICgobiA9IHJlYWQocC0+ZXBpbi0+ZGZkLCBkYXRhLCBjb3VudCkpID09IDApCisJCTsKKwlxbG9j ayhwLT5zKTsKKworCXJldHVybiBuOworfQorCitzdGF0aWMgU2VyaWFsb3BzIGNkY29wcyA9IHsK KwkuaW5pdAkJPSBjZGNpbml0LAorCS5zZXRwYXJhbQk9IGNkY3NldHBhcmFtLAorCS5zZXRicmVh awk9IGNkY3NldGJyZWFrLAorCS5zZW5kbGluZXMJPSBjZGNzZW5kbGluZXMsCisJLmNsZWFycGlw ZXMJPSBjZGNjbGVhcnBpcGVzLAorCS53YWl0NGRhdGEJPSBjZGN3YWl0NGRhdGEsCit9OworCitp bnQKK2NkY3Byb2JlKFNlcmlhbCAqc2VyKQoreworCWludCBpLCBpZmNzOworCVVzYmRldiAqdWQg PSBzZXItPmRldi0+dXNiOworCUlmYWNlICppZmFjZTsKKwl1bG9uZyBjc3A7CisKKwlpZmNzID0g MDsKKwlpZiAodWQtPnZpZCA9PSBLeW9jZXJhIHx8IHVkLT5kaWQgPT0gQUhLMzAwMVYpCisJCWlm Y3MrKzsKKwllbHNlIGZvciAoaSA9IDA7IGkgPCBOaWZhY2U7IGkrKykgeworCQlpZmFjZSA9IHVk LT5jb25mWzBdLT5pZmFjZVtpXTsKKwkJaWYgKGlmYWNlID09IG5pbCkKKwkJCWNvbnRpbnVlOwor CisJCWNzcCA9IGlmYWNlLT5jc3A7CisJCWlmIChDbGFzcyhjc3ApID09IENsY29tbXMgJiYgU3Vi Y2xhc3MoY3NwKSA9PSBTY0FDTSAmJiAoUHJvdG8oY3NwKSA9PSBBVCB8fCBQcm90byhjc3ApID09 IE5vbmUpKSB7CisJCQlzZXItPnBbaWZjc10uY3RsX2lmYyA9IGk7CisJCQlzZXItPnBbaWZjc10u cyA9IHNlcjsKKwkJCWdldGNhcHMoJnNlci0+cFtpZmNzXSk7CisJCQlpZmNzKys7CisJCX0KKwl9 CisKKwlpZiAoaWZjcyA9PSAwKQorCQlyZXR1cm4gLTE7CisKKwlzZXItPm5pZmNzID0gaWZjczsK KwlzZXItPmlzYWNtID0gMTsKKwlzZXItPm91dGhkcnN6ID0gMDsKKwlzZXItPmhhc2VwaW50ciA9 IDE7CisJc2VyLT5TZXJpYWxvcHMgPSBjZGNvcHM7CisJcmV0dXJuIDA7Cit9CmRpZmYgLXIgMjNi YzFkMGUyZGQyIHN5cy9zcmMvY21kL251c2Ivc2VyaWFsL21rZmlsZQotLS0gYS9zeXMvc3JjL2Nt ZC9udXNiL3NlcmlhbC9ta2ZpbGUJVHVlIEp1biAwOSAxMjoyMzoyNCAyMDIwIC0wNzAwCisrKyBi L3N5cy9zcmMvY21kL251c2Ivc2VyaWFsL21rZmlsZQlUaHUgSnVsIDMwIDIxOjA2OjI5IDIwMjAg LTA3MDAKQEAgLTEsNyArMSw3IEBACiA8LyRvYmp0eXBlL21rZmlsZQogCiBUQVJHPXNlcmlhbAot T0ZJTEVTPWZ0ZGkuJE8gc2VyaWFsLiRPIHByb2xpZmljLiRPIHVjb25zLiRPIHNpbGFicy4kTyBj aDM0MC4kTworT0ZJTEVTPWZ0ZGkuJE8gc2VyaWFsLiRPIHByb2xpZmljLiRPIHVjb25zLiRPIHNp bGFicy4kTyBjaDM0MC4kTyBjZGMuJE8KIEhGSUxFUz1cCiAJLi4vbGliL3VzYi5oXAogCXNlcmlh bC5oXApkaWZmIC1yIDIzYmMxZDBlMmRkMiBzeXMvc3JjL2NtZC9udXNiL3NlcmlhbC9zZXJpYWwu YwotLS0gYS9zeXMvc3JjL2NtZC9udXNiL3NlcmlhbC9zZXJpYWwuYwlUdWUgSnVuIDA5IDEyOjIz OjI0IDIwMjAgLTA3MDAKKysrIGIvc3lzL3NyYy9jbWQvbnVzYi9zZXJpYWwvc2VyaWFsLmMJVGh1 IEp1bCAzMCAyMTowNjoyOSAyMDIwIC0wNzAwCkBAIC02MjQsMjMgKzYyNCw0NiBAQAogCiAJZXBp bnRyID0gZXBpbiA9IGVwb3V0ID0gLTE7CiAKLQkvKgotCSAqIGludGVyZmMgMCBtZWFucyBzdGFy dCBmcm9tIHRoZSBzdGFydCB3aGljaCBpcyBlcXVpdiB0bwotCSAqIGl0ZXJhdGUgdGhyb3VnaCBl bmRwb2ludHMgcHJvYmFibHksIGNvdWxkIGJlIGRvbmUgYmV0dGVyCi0JICovCi0JZXBzID0gc2Vy LT5kZXYtPnVzYi0+Y29uZlswXS0+aWZhY2VbaWZjXS0+ZXA7CisJaWYoc2VyLT5pc2FjbSl7CisJ CWVwcyA9IHNlci0+ZGV2LT51c2ItPmNvbmZbMF0tPmlmYWNlW3Nlci0+cFtpZmNdLmN0bF9pZmNd LT5lcDsKIAotCWZvcihpID0gMDsgaSA8IE5lcDsgaSsrKXsKLQkJaWYoKGVwID0gZXBzW2ldKSA9 PSBuaWwpCi0JCQljb250aW51ZTsKLQkJaWYoc2VyLT5oYXNlcGludHIgJiYgZXAtPnR5cGUgPT0g RWludHIgJiYKLQkJICAgIGVwLT5kaXIgPT0gRWluICYmIGVwaW50ciA9PSAtMSkKLQkJCWVwaW50 ciA9IGVwLT5pZDsKLQkJaWYoZXAtPnR5cGUgPT0gRWJ1bGspewotCQkJaWYoKGVwLT5kaXIgPT0g RWluIHx8IGVwLT5kaXIgPT0gRWJvdGgpICYmIGVwaW4gPT0gLTEpCi0JCQkJZXBpbiA9IGVwLT5p ZDsKLQkJCWlmKChlcC0+ZGlyID09IEVvdXQgfHwgZXAtPmRpciA9PSBFYm90aCkgJiYgZXBvdXQg PT0gLTEpCi0JCQkJZXBvdXQgPSBlcC0+aWQ7CisJCWZvcihpID0gMDsgaSA8IE5lcDsgaSsrKXsK KwkJCWlmKChlcCA9IGVwc1tpXSkgPT0gbmlsKQorCQkJCWNvbnRpbnVlOworCQkJaWYoZXAtPnR5 cGUgPT0gRWludHIgJiYgZXAtPmRpciA9PSBFaW4gJiYgZXBpbnRyID09IC0xKQorCQkJCWVwaW50 ciA9IGVwLT5pZDsKKwkJfQorCisJCWVwcyA9IHNlci0+ZGV2LT51c2ItPmNvbmZbMF0tPmlmYWNl W3Nlci0+cFtpZmNdLmRhdGFfaWZjXS0+ZXA7CisJCWZvcihpID0gMDsgaSA8IE5lcDsgaSsrKXsK KwkJCWlmKChlcCA9IGVwc1tpXSkgPT0gbmlsKQorCQkJCWNvbnRpbnVlOworCQkJaWYoZXAtPnR5 cGUgPT0gRWJ1bGspeworCQkJCWlmKChlcC0+ZGlyID09IEVpbiB8fCBlcC0+ZGlyID09IEVib3Ro KSAmJiBlcGluID09IC0xKQorCQkJCQllcGluID0gZXAtPmlkOworCQkJCWlmKChlcC0+ZGlyID09 IEVvdXQgfHwgZXAtPmRpciA9PSBFYm90aCkgJiYgZXBvdXQgPT0gLTEpCisJCQkJCWVwb3V0ID0g ZXAtPmlkOworCQkJfQorCQl9CisJfSBlbHNlIHsKKwkJLyoKKwkJICogaW50ZXJmYyAwIG1lYW5z IHN0YXJ0IGZyb20gdGhlIHN0YXJ0IHdoaWNoIGlzIGVxdWl2IHRvCisJCSAqIGl0ZXJhdGUgdGhy b3VnaCBlbmRwb2ludHMgcHJvYmFibHksIGNvdWxkIGJlIGRvbmUgYmV0dGVyCisJCSAqLworCQll cHMgPSBzZXItPmRldi0+dXNiLT5jb25mWzBdLT5pZmFjZVtpZmNdLT5lcDsKKworCQlmb3IoaSA9 IDA7IGkgPCBOZXA7IGkrKyl7CisJCQlpZigoZXAgPSBlcHNbaV0pID09IG5pbCkKKwkJCQljb250 aW51ZTsKKwkJCWlmKHNlci0+aGFzZXBpbnRyICYmIGVwLT50eXBlID09IEVpbnRyICYmCisJCQkg ICAgZXAtPmRpciA9PSBFaW4gJiYgZXBpbnRyID09IC0xKQorCQkJCWVwaW50ciA9IGVwLT5pZDsK KwkJCWlmKGVwLT50eXBlID09IEVidWxrKXsKKwkJCQlpZigoZXAtPmRpciA9PSBFaW4gfHwgZXAt PmRpciA9PSBFYm90aCkgJiYgZXBpbiA9PSAtMSkKKwkJCQkJZXBpbiA9IGVwLT5pZDsKKwkJCQlp ZigoZXAtPmRpciA9PSBFb3V0IHx8IGVwLT5kaXIgPT0gRWJvdGgpICYmIGVwb3V0ID09IC0xKQor CQkJCQllcG91dCA9IGVwLT5pZDsKKwkJCX0KIAkJfQogCX0KIAlkcHJpbnQoMiwgInNlcmlhbFsl ZF06IGVwIGlkczogaW4gJWQgb3V0ICVkIGludHIgJWRcbiIsIGlmYywgZXBpbiwgZXBvdXQsIGVw aW50cik7CkBAIC03MTQsNiArNzM3LDcgQEAKIGV4dGVybiBpbnQgc2xwcm9iZShTZXJpYWwgKnNl cik7CiBleHRlcm4gaW50IGNocHJvYmUoU2VyaWFsICpzZXIpOwogZXh0ZXJuIGludCB1Y29uc3By b2JlKFNlcmlhbCAqc2VyKTsKK2V4dGVybiBpbnQgY2RjcHJvYmUoU2VyaWFsICpzZXIpOwogCiB2 b2lkCiB0aHJlYWRtYWluKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCkBAIC03NTAsNyArNzc0LDgg QEAKIAkmJiBmdHByb2JlKHNlcikKIAkmJiBzbHByb2JlKHNlcikKIAkmJiBwbHByb2JlKHNlcikK LQkmJiBjaHByb2JlKHNlcikpCisJJiYgY2hwcm9iZShzZXIpCisJJiYgY2RjcHJvYmUoc2VyKSkK IAkJc3lzZmF0YWwoIm5vIHNlcmlhbCBkZXZpY2VzIGZvdW5kIik7CiAKIAlmb3IoaSA9IDA7IGkg PCBzZXItPm5pZmNzOyBpKyspewpkaWZmIC1yIDIzYmMxZDBlMmRkMiBzeXMvc3JjL2NtZC9udXNi L3NlcmlhbC9zZXJpYWwuaAotLS0gYS9zeXMvc3JjL2NtZC9udXNiL3NlcmlhbC9zZXJpYWwuaAlU dWUgSnVuIDA5IDEyOjIzOjI0IDIwMjAgLTA3MDAKKysrIGIvc3lzL3NyYy9jbWQvbnVzYi9zZXJp YWwvc2VyaWFsLmgJVGh1IEp1bCAzMCAyMTowNjoyOSAyMDIwIC0wNzAwCkBAIC02MCw2ICs2MCwx MCBAQAogCiAJaW50CWludGVyZmM7CS8qIGludGVyZmMgb24gdGhlIGRldmljZSBmb3IgZnRkaSAq LwogCisJaW50IGhhc2JyZWFrOwkvKiBDREMgQUNNIG1heSBub3QgaGF2ZSBicmVhayAqLworCWlu dCBjdGxfaWZjOwkvKiBlcGludHIgaWZhY2UgZm9yIENEQyBBQ00gKi8KKwlpbnQgZGF0YV9pZmM7 CS8qIGVwaW4vb3V0IGlmYWNlIGZvciBDREMgQUNNICovCisKIAlDaGFubmVsICp3NGRhdGE7CiAJ Q2hhbm5lbCAqZ290ZGF0YTsKIAlpbnQJbmRhdGE7CkBAIC04MSw2ICs4NSw3IEBACiAKIAlpbnQJ anRhZzsJCS8qIGluZGV4IG9mIGp0YWcgaW50ZXJmYWNlLCAtMSBub25lICovCiAJaW50CW5pZmNz OwkJLyogIyBvZiBzZXJpYWwgaW50ZXJmYWNlcywgaW5jbHVkaW5nIEpUQUcgKi8KKwlpbnQgaXNh Y207IAkJLyogQ0RDIEFDTSBpbnRlcmZhY2VzIGhhbmRsZWQgZGlmZmVyZW50bHkgKi8KIAlTZXJp YWxwb3J0IHBbTWF4aWZjXTsKIAlpbnQJbWF4cnRyYW5zOwogCWludAltYXh3dHJhbnM7Cg== --000000000000fbb9d905abafa2e4--