From mboxrd@z Thu Jan 1 00:00:00 1970 From: Cong Wang Subject: Re: Soft lockup in tc_classify Date: Mon, 12 Dec 2016 14:51:06 -0800 Message-ID: References: <7394f89e-e8a5-5fb2-ee04-63bf1c4ef6e7@mellanox.com> <584EA60B.80803@iogearbox.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c05d26ca26ac005437df17b Cc: Daniel Borkmann , Shahar Klein , Linux Netdev List , Roi Dayan , David Miller , Jiri Pirko , John Fastabend , Hadar Hen Zion To: Or Gerlitz Return-path: Received: from mail-io0-f182.google.com ([209.85.223.182]:35471 "EHLO mail-io0-f182.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752621AbcLLWv2 (ORCPT ); Mon, 12 Dec 2016 17:51:28 -0500 Received: by mail-io0-f182.google.com with SMTP id h30so197653840iod.2 for ; Mon, 12 Dec 2016 14:51:28 -0800 (PST) In-Reply-To: Sender: netdev-owner@vger.kernel.org List-ID: --94eb2c05d26ca26ac005437df17b Content-Type: text/plain; charset=UTF-8 On Mon, Dec 12, 2016 at 1:18 PM, Or Gerlitz wrote: > On Mon, Dec 12, 2016 at 3:28 PM, Daniel Borkmann wrote: > >> Note that there's still the RCU fix missing for the deletion race that >> Cong will still send out, but you say that the only thing you do is to >> add a single rule, but no other operation in involved during that test? > > What's missing to have the deletion race fixed? making a patch or > testing to a patch which was sent? If you think it would help for this problem, here is my patch rebased on the latest net-next. Again, I don't see how it could help this case yet, especially I don't see how we could have a loop in this singly linked list. --94eb2c05d26ca26ac005437df17b Content-Type: text/plain; charset=US-ASCII; name="tc-filter-destroy.diff" Content-Disposition: attachment; filename="tc-filter-destroy.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iwmo9po90 Y29tbWl0IGY2YmVjZGExZTEyZmQ4ZWY3NGU5MDFmZTM5YWRiNDU1OGNlNmM4ZjkKQXV0aG9yOiBD b25nIFdhbmcgPHhpeW91Lndhbmdjb25nQGdtYWlsLmNvbT4KRGF0ZTogICBXZWQgTm92IDIzIDE0 OjU4OjAxIDIwMTYgLTA4MDAKCiAgICBuZXRfc2NoZWQ6IG1vdmUgdGhlIGVtcHR5IHRwIGNoZWNr IGZyb20gLT5kZXN0cm95KCkgdG8gLT5kZWxldGUoKQogICAgCiAgICBSb2kgcmVwb3J0ZWQgd2Ug Y291bGQgaGF2ZSBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIGluIC0+Y2xhc3NpZnkoKSBwYXRoCiAg ICB3ZSBkZXJlZmVyZW5jZSB0cC0+cm9vdCBhbmQgbWVhbndoaWxlIGEgcGFyYWxsZWwgLT5kZXN0 cm95KCkgbWFrZXMgaXQKICAgIGEgTlVMTC4KICAgIAogICAgVGhpcyBpcyBwb3NzaWJsZSBiZWNh dXNlIC0+ZGVzdHJveSgpIGNvdWxkIGJlIGNhbGxlZCB3aGVuIGRlbGV0aW5nCiAgICBhIGZpbHRl ciB0byBjaGVjayBpZiB3ZSBhcmUgdGhlIGxhc3Qgb25lIGluIHRwLCB0aGlzIHRwIGlzIHN0aWxs CiAgICBsaW5rZWQgYW5kIHZpc2libGUgYXQgdGhhdCB0aW1lLgogICAgCiAgICBUaGUgcm9vdCBj YXVzZSBvZiB0aGlzIHByb2JsZW0gaXMgdGhlIHNlbWFudGljIG9mIC0+ZGVzdHJveSgpLCBpdAog ICAgZG9lcyB0d28gdGhpbmdzIChmb3Igbm9uLWZvcmNlIGNhc2UpOgogICAgCiAgICAxKSBjaGVj ayBpZiB0cCBpcyBlbXB0eQogICAgMikgaWYgdHAgaXMgZW1wdHkgd2UgY291bGQgcmVhbGx5IGRl c3Ryb3kgaXQKICAgIAogICAgYW5kIGl0cyBjYWxsZXIsIGlmIGNhcmVzLCBuZWVkcyB0byBjaGVj ayBpdHMgcmV0dXJuIHZhbHVlIHRvIHNlZSBpZgogICAgaXQgaXMgcmVhbGx5IGRlc3Ryb3llZC4g VGhlcmVmb3JlIHdlIGNhbid0IHVubGluayB0cCB1bmxlc3Mgd2Uga25vdwogICAgaXQgaXMgZW1w dHkuCiAgICAKICAgIEFzIHN1Z2dlc3RlZCBieSBEYW5pZWwsIHdlIGNvdWxkIGFjdHVhbGx5IG1v dmUgdGhlIHRlc3QgbG9naWMgdG8gLT5kZWxldGUoKQogICAgc28gdGhhdCB3ZSBjYW4gc2FmZWx5 IHVubGluayB0cCBhZnRlciAtPmRlbGV0ZSgpIHRlbGxzIHVzIHRoZSBsYXN0IG9uZSBpcwogICAg anVzdCBkZWxldGVkIGFuZCBiZWZvcmUgLT5kZXN0cm95KCkuCiAgICAKICAgIFdoYXQncyBtb3Jl LCBldmVuIHdlIHVubGluayBpdCBiZWZvcmUgLT5kZXN0cm95KCksIGl0IGNvdWxkIHN0aWxsIGhh dmUKICAgIHJlYWRlcnMgc2luY2Ugd2UgZG9uJ3Qgd2FpdCBmb3IgYSBncmFjZSBwZXJpb2QgaGVy ZSwgd2Ugc2hvdWxkIG5vdCBtb2RpZnkKICAgIHRwLT5yb290IGluIC0+ZGVzdHJveSgpIGVpdGhl ci4KICAgIAogICAgRml4ZXM6IDFlMDUyYmU2OWQwNCAoIm5ldF9zY2hlZDogZGVzdHJveSBwcm90 byB0cCB3aGVuIGFsbCBmaWx0ZXJzIGFyZSBnb25lIikKICAgIFJlcG9ydGVkLWJ5OiBSb2kgRGF5 YW4gPHJvaWRAbWVsbGFub3guY29tPgogICAgQ2M6IERhbmllbCBCb3JrbWFubiA8ZGFuaWVsQGlv Z2VhcmJveC5uZXQ+CiAgICBDYzogSm9obiBGYXN0YWJlbmQgPGpvaG4uZmFzdGFiZW5kQGdtYWls LmNvbT4KICAgIFNpZ25lZC1vZmYtYnk6IENvbmcgV2FuZyA8eGl5b3Uud2FuZ2NvbmdAZ21haWwu Y29tPgoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3NjaF9nZW5lcmljLmggYi9pbmNsdWRlL25l dC9zY2hfZ2VuZXJpYy5oCmluZGV4IDQ5OGY4MWIuLmI1ZWRhM2YgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbmV0L3NjaF9nZW5lcmljLmgKKysrIGIvaW5jbHVkZS9uZXQvc2NoX2dlbmVyaWMuaApAQCAt MjAzLDE0ICsyMDMsMTQgQEAgc3RydWN0IHRjZl9wcm90b19vcHMgewogCQkJCQkgICAgY29uc3Qg c3RydWN0IHRjZl9wcm90byAqLAogCQkJCQkgICAgc3RydWN0IHRjZl9yZXN1bHQgKik7CiAJaW50 CQkJKCppbml0KShzdHJ1Y3QgdGNmX3Byb3RvKik7Ci0JYm9vbAkJCSgqZGVzdHJveSkoc3RydWN0 IHRjZl9wcm90byosIGJvb2wpOworCXZvaWQJCQkoKmRlc3Ryb3kpKHN0cnVjdCB0Y2ZfcHJvdG8q KTsKIAogCXVuc2lnbmVkIGxvbmcJCSgqZ2V0KShzdHJ1Y3QgdGNmX3Byb3RvKiwgdTMyIGhhbmRs ZSk7CiAJaW50CQkJKCpjaGFuZ2UpKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKiwK IAkJCQkJc3RydWN0IHRjZl9wcm90byosIHVuc2lnbmVkIGxvbmcsCiAJCQkJCXUzMiBoYW5kbGUs IHN0cnVjdCBubGF0dHIgKiosCiAJCQkJCXVuc2lnbmVkIGxvbmcgKiwgYm9vbCk7Ci0JaW50CQkJ KCpkZWxldGUpKHN0cnVjdCB0Y2ZfcHJvdG8qLCB1bnNpZ25lZCBsb25nKTsKKwlpbnQJCQkoKmRl bGV0ZSkoc3RydWN0IHRjZl9wcm90byosIHVuc2lnbmVkIGxvbmcsIGJvb2wqKTsKIAl2b2lkCQkJ KCp3YWxrKShzdHJ1Y3QgdGNmX3Byb3RvKiwgc3RydWN0IHRjZl93YWxrZXIgKmFyZyk7CiAKIAkv KiBydG5ldGxpbmsgc3BlY2lmaWMgKi8KQEAgLTQwNSw3ICs0MDUsNyBAQCBzdHJ1Y3QgUWRpc2Mg KnFkaXNjX2NyZWF0ZV9kZmx0KHN0cnVjdCBuZXRkZXZfcXVldWUgKmRldl9xdWV1ZSwKIAkJCQlj b25zdCBzdHJ1Y3QgUWRpc2Nfb3BzICpvcHMsIHUzMiBwYXJlbnRpZCk7CiB2b2lkIF9fcWRpc2Nf Y2FsY3VsYXRlX3BrdF9sZW4oc3RydWN0IHNrX2J1ZmYgKnNrYiwKIAkJCSAgICAgICBjb25zdCBz dHJ1Y3QgcWRpc2Nfc2l6ZV90YWJsZSAqc3RhYik7Ci1ib29sIHRjZl9kZXN0cm95KHN0cnVjdCB0 Y2ZfcHJvdG8gKnRwLCBib29sIGZvcmNlKTsKK3ZvaWQgdGNmX2Rlc3Ryb3koc3RydWN0IHRjZl9w cm90byAqdHApOwogdm9pZCB0Y2ZfZGVzdHJveV9jaGFpbihzdHJ1Y3QgdGNmX3Byb3RvIF9fcmN1 ICoqZmwpOwogaW50IHNrYl9kb19yZWRpcmVjdChzdHJ1Y3Qgc2tfYnVmZiAqKTsKIApkaWZmIC0t Z2l0IGEvbmV0L3NjaGVkL2Nsc19hcGkuYyBiL25ldC9zY2hlZC9jbHNfYXBpLmMKaW5kZXggM2Zi YmE3OS4uZjkxNzllMCAxMDA2NDQKLS0tIGEvbmV0L3NjaGVkL2Nsc19hcGkuYworKysgYi9uZXQv c2NoZWQvY2xzX2FwaS5jCkBAIC0zMjEsNyArMzIxLDcgQEAgc3RhdGljIGludCB0Y19jdGxfdGZp bHRlcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm4pCiAKIAkJCXRmaWx0 ZXJfbm90aWZ5KG5ldCwgc2tiLCBuLCB0cCwgZmgsCiAJCQkJICAgICAgIFJUTV9ERUxURklMVEVS LCBmYWxzZSk7Ci0JCQl0Y2ZfZGVzdHJveSh0cCwgdHJ1ZSk7CisJCQl0Y2ZfZGVzdHJveSh0cCk7 CiAJCQllcnIgPSAwOwogCQkJZ290byBlcnJvdXQ7CiAJCX0KQEAgLTMzMSwyNSArMzMxLDI5IEBA IHN0YXRpYyBpbnQgdGNfY3RsX3RmaWx0ZXIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5s bXNnaGRyICpuKQogCQkgICAgIShuLT5ubG1zZ19mbGFncyAmIE5MTV9GX0NSRUFURSkpCiAJCQln b3RvIGVycm91dDsKIAl9IGVsc2UgeworCQlib29sIGxhc3Q7CisKIAkJc3dpdGNoIChuLT5ubG1z Z190eXBlKSB7CiAJCWNhc2UgUlRNX05FV1RGSUxURVI6CiAJCQllcnIgPSAtRUVYSVNUOwogCQkJ aWYgKG4tPm5sbXNnX2ZsYWdzICYgTkxNX0ZfRVhDTCkgewogCQkJCWlmICh0cF9jcmVhdGVkKQot CQkJCQl0Y2ZfZGVzdHJveSh0cCwgdHJ1ZSk7CisJCQkJCXRjZl9kZXN0cm95KHRwKTsKIAkJCQln b3RvIGVycm91dDsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFJUTV9ERUxURklMVEVSOgotCQkJ ZXJyID0gdHAtPm9wcy0+ZGVsZXRlKHRwLCBmaCk7CisJCQllcnIgPSB0cC0+b3BzLT5kZWxldGUo dHAsIGZoLCAmbGFzdCk7CiAJCQlpZiAoZXJyID09IDApIHsKLQkJCQlzdHJ1Y3QgdGNmX3Byb3Rv ICpuZXh0ID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+bmV4dCk7Ci0KIAkJCQl0ZmlsdGVyX25vdGlm eShuZXQsIHNrYiwgbiwgdHAsCiAJCQkJCSAgICAgICB0LT50Y21faGFuZGxlLAogCQkJCQkgICAg ICAgUlRNX0RFTFRGSUxURVIsIGZhbHNlKTsKLQkJCQlpZiAodGNmX2Rlc3Ryb3kodHAsIGZhbHNl KSkKKwkJCQlpZiAobGFzdCkgeworCQkJCQlzdHJ1Y3QgdGNmX3Byb3RvICpuZXh0ID0gcnRubF9k ZXJlZmVyZW5jZSh0cC0+bmV4dCk7CisKIAkJCQkJUkNVX0lOSVRfUE9JTlRFUigqYmFjaywgbmV4 dCk7CisJCQkJCXRjZl9kZXN0cm95KHRwKTsKKwkJCQl9CiAJCQl9CiAJCQlnb3RvIGVycm91dDsK IAkJY2FzZSBSVE1fR0VUVEZJTFRFUjoKQEAgLTM3Miw3ICszNzYsNyBAQCBzdGF0aWMgaW50IHRj X2N0bF90ZmlsdGVyKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbikKIAkJ dGZpbHRlcl9ub3RpZnkobmV0LCBza2IsIG4sIHRwLCBmaCwgUlRNX05FV1RGSUxURVIsIGZhbHNl KTsKIAl9IGVsc2UgewogCQlpZiAodHBfY3JlYXRlZCkKLQkJCXRjZl9kZXN0cm95KHRwLCB0cnVl KTsKKwkJCXRjZl9kZXN0cm95KHRwKTsKIAl9CiAKIGVycm91dDoKZGlmZiAtLWdpdCBhL25ldC9z Y2hlZC9jbHNfYmFzaWMuYyBiL25ldC9zY2hlZC9jbHNfYmFzaWMuYwppbmRleCA1ODc3ZjYwLi44 ZDgyMmU1IDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvY2xzX2Jhc2ljLmMKKysrIGIvbmV0L3NjaGVk L2Nsc19iYXNpYy5jCkBAIC05MywzMCArOTMsMjggQEAgc3RhdGljIHZvaWQgYmFzaWNfZGVsZXRl X2ZpbHRlcihzdHJ1Y3QgcmN1X2hlYWQgKmhlYWQpCiAJa2ZyZWUoZik7CiB9CiAKLXN0YXRpYyBi b29sIGJhc2ljX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgZm9yY2UpCitzdGF0 aWMgdm9pZCBiYXNpY19kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKQogewogCXN0cnVjdCBi YXNpY19oZWFkICpoZWFkID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0IGJh c2ljX2ZpbHRlciAqZiwgKm47CiAKLQlpZiAoIWZvcmNlICYmICFsaXN0X2VtcHR5KCZoZWFkLT5m bGlzdCkpCi0JCXJldHVybiBmYWxzZTsKLQogCWxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShmLCBu LCAmaGVhZC0+Zmxpc3QsIGxpbmspIHsKIAkJbGlzdF9kZWxfcmN1KCZmLT5saW5rKTsKIAkJdGNm X3VuYmluZF9maWx0ZXIodHAsICZmLT5yZXMpOwogCQljYWxsX3JjdSgmZi0+cmN1LCBiYXNpY19k ZWxldGVfZmlsdGVyKTsKIAl9CiAJa2ZyZWVfcmN1KGhlYWQsIHJjdSk7Ci0JcmV0dXJuIHRydWU7 CiB9CiAKLXN0YXRpYyBpbnQgYmFzaWNfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNp Z25lZCBsb25nIGFyZykKK3N0YXRpYyBpbnQgYmFzaWNfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8g KnRwLCB1bnNpZ25lZCBsb25nIGFyZywgYm9vbCAqbGFzdCkKIHsKKwlzdHJ1Y3QgYmFzaWNfaGVh ZCAqaGVhZCA9IHJ0bmxfZGVyZWZlcmVuY2UodHAtPnJvb3QpOwogCXN0cnVjdCBiYXNpY19maWx0 ZXIgKmYgPSAoc3RydWN0IGJhc2ljX2ZpbHRlciAqKSBhcmc7CiAKIAlsaXN0X2RlbF9yY3UoJmYt PmxpbmspOwogCXRjZl91bmJpbmRfZmlsdGVyKHRwLCAmZi0+cmVzKTsKIAljYWxsX3JjdSgmZi0+ cmN1LCBiYXNpY19kZWxldGVfZmlsdGVyKTsKKwkqbGFzdCA9IGxpc3RfZW1wdHkoJmhlYWQtPmZs aXN0KTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19icGYuYyBi L25ldC9zY2hlZC9jbHNfYnBmLmMKaW5kZXggYWRjNzc2MC4uNTVjOTk2MSAxMDA2NDQKLS0tIGEv bmV0L3NjaGVkL2Nsc19icGYuYworKysgYi9uZXQvc2NoZWQvY2xzX2JwZi5jCkBAIC0yNjgsMjUg KzI2OCwyNCBAQCBzdGF0aWMgdm9pZCBfX2Nsc19icGZfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8g KnRwLCBzdHJ1Y3QgY2xzX2JwZl9wcm9nICpwcm9nKQogCWNhbGxfcmN1KCZwcm9nLT5yY3UsIGNs c19icGZfZGVsZXRlX3Byb2dfcmN1KTsKIH0KIAotc3RhdGljIGludCBjbHNfYnBmX2RlbGV0ZShz dHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcpCitzdGF0aWMgaW50IGNsc19i cGZfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGFyZywgYm9vbCAq bGFzdCkKIHsKKwlzdHJ1Y3QgY2xzX2JwZl9oZWFkICpoZWFkID0gcnRubF9kZXJlZmVyZW5jZSh0 cC0+cm9vdCk7CisKIAlfX2Nsc19icGZfZGVsZXRlKHRwLCAoc3RydWN0IGNsc19icGZfcHJvZyAq KSBhcmcpOworCSpsYXN0ID0gbGlzdF9lbXB0eSgmaGVhZC0+cGxpc3QpOwogCXJldHVybiAwOwog fQogCi1zdGF0aWMgYm9vbCBjbHNfYnBmX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJv b2wgZm9yY2UpCitzdGF0aWMgdm9pZCBjbHNfYnBmX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAq dHApCiB7CiAJc3RydWN0IGNsc19icGZfaGVhZCAqaGVhZCA9IHJ0bmxfZGVyZWZlcmVuY2UodHAt PnJvb3QpOwogCXN0cnVjdCBjbHNfYnBmX3Byb2cgKnByb2csICp0bXA7CiAKLQlpZiAoIWZvcmNl ICYmICFsaXN0X2VtcHR5KCZoZWFkLT5wbGlzdCkpCi0JCXJldHVybiBmYWxzZTsKLQogCWxpc3Rf Zm9yX2VhY2hfZW50cnlfc2FmZShwcm9nLCB0bXAsICZoZWFkLT5wbGlzdCwgbGluaykKIAkJX19j bHNfYnBmX2RlbGV0ZSh0cCwgcHJvZyk7CiAKIAlrZnJlZV9yY3UoaGVhZCwgcmN1KTsKLQlyZXR1 cm4gdHJ1ZTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGxvbmcgY2xzX2JwZl9nZXQoc3RydWN0IHRj Zl9wcm90byAqdHAsIHUzMiBoYW5kbGUpCmRpZmYgLS1naXQgYS9uZXQvc2NoZWQvY2xzX2Nncm91 cC5jIGIvbmV0L3NjaGVkL2Nsc19jZ3JvdXAuYwppbmRleCBjMWYyMDA3Li41MWM4MjJkIDEwMDY0 NAotLS0gYS9uZXQvc2NoZWQvY2xzX2Nncm91cC5jCisrKyBiL25ldC9zY2hlZC9jbHNfY2dyb3Vw LmMKQEAgLTEzMSwyMCArMTMxLDE2IEBAIHN0YXRpYyBpbnQgY2xzX2Nncm91cF9jaGFuZ2Uoc3Ry dWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2tfYnVmZiAqaW5fc2tiLAogCXJldHVybiBlcnI7CiB9CiAK LXN0YXRpYyBib29sIGNsc19jZ3JvdXBfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9v bCBmb3JjZSkKK3N0YXRpYyB2b2lkIGNsc19jZ3JvdXBfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3Rv ICp0cCkKIHsKIAlzdHJ1Y3QgY2xzX2Nncm91cF9oZWFkICpoZWFkID0gcnRubF9kZXJlZmVyZW5j ZSh0cC0+cm9vdCk7CiAKLQlpZiAoIWZvcmNlKQotCQlyZXR1cm4gZmFsc2U7CiAJLyogSGVhZCBj YW4gc3RpbGwgYmUgTlVMTCBkdWUgdG8gY2xzX2Nncm91cF9pbml0KCkuICovCiAJaWYgKGhlYWQp CiAJCWNhbGxfcmN1KCZoZWFkLT5yY3UsIGNsc19jZ3JvdXBfZGVzdHJveV9yY3UpOwotCi0JcmV0 dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbnQgY2xzX2Nncm91cF9kZWxldGUoc3RydWN0IHRjZl9w cm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnKQorc3RhdGljIGludCBjbHNfY2dyb3VwX2RlbGV0 ZShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcsIGJvb2wgKmxhc3QpCiB7 CiAJcmV0dXJuIC1FT1BOT1RTVVBQOwogfQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19mbG93 LmMgYi9uZXQvc2NoZWQvY2xzX2Zsb3cuYwppbmRleCA2NTc1YWJhLi5lYTJiZTc1IDEwMDY0NAot LS0gYS9uZXQvc2NoZWQvY2xzX2Zsb3cuYworKysgYi9uZXQvc2NoZWQvY2xzX2Zsb3cuYwpAQCAt NTYzLDEyICs1NjMsMTQgQEAgc3RhdGljIGludCBmbG93X2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQs IHN0cnVjdCBza19idWZmICppbl9za2IsCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBm bG93X2RlbGV0ZShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcpCitzdGF0 aWMgaW50IGZsb3dfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGFy ZywgYm9vbCAqbGFzdCkKIHsKKwlzdHJ1Y3QgZmxvd19oZWFkICpoZWFkID0gcnRubF9kZXJlZmVy ZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0IGZsb3dfZmlsdGVyICpmID0gKHN0cnVjdCBmbG93X2Zp bHRlciAqKWFyZzsKIAogCWxpc3RfZGVsX3JjdSgmZi0+bGlzdCk7CiAJY2FsbF9yY3UoJmYtPnJj dSwgZmxvd19kZXN0cm95X2ZpbHRlcik7CisJKmxhc3QgPSBsaXN0X2VtcHR5KCZoZWFkLT5maWx0 ZXJzKTsKIAlyZXR1cm4gMDsKIH0KIApAQCAtNTg0LDIwICs1ODYsMTYgQEAgc3RhdGljIGludCBm bG93X2luaXQoc3RydWN0IHRjZl9wcm90byAqdHApCiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBi b29sIGZsb3dfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBmb3JjZSkKK3N0YXRp YyB2b2lkIGZsb3dfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCkKIHsKIAlzdHJ1Y3QgZmxv d19oZWFkICpoZWFkID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0IGZsb3df ZmlsdGVyICpmLCAqbmV4dDsKIAotCWlmICghZm9yY2UgJiYgIWxpc3RfZW1wdHkoJmhlYWQtPmZp bHRlcnMpKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAlsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUoZiwg bmV4dCwgJmhlYWQtPmZpbHRlcnMsIGxpc3QpIHsKIAkJbGlzdF9kZWxfcmN1KCZmLT5saXN0KTsK IAkJY2FsbF9yY3UoJmYtPnJjdSwgZmxvd19kZXN0cm95X2ZpbHRlcik7CiAJfQogCWtmcmVlX3Jj dShoZWFkLCByY3UpOwotCXJldHVybiB0cnVlOwogfQogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBm bG93X2dldChzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdTMyIGhhbmRsZSkKZGlmZiAtLWdpdCBhL25l dC9zY2hlZC9jbHNfZmxvd2VyLmMgYi9uZXQvc2NoZWQvY2xzX2Zsb3dlci5jCmluZGV4IGUwNDBj NTEuLjMyODkzOGIgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfZmxvd2VyLmMKKysrIGIvbmV0 L3NjaGVkL2Nsc19mbG93ZXIuYwpAQCAtMzEyLDIxICszMTIsMTYgQEAgc3RhdGljIHZvaWQgZmxf ZGVzdHJveV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpCiAJc2NoZWR1bGVfd29yaygmaGVhZC0+ d29yayk7CiB9CiAKLXN0YXRpYyBib29sIGZsX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAs IGJvb2wgZm9yY2UpCitzdGF0aWMgdm9pZCBmbF9kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRw KQogewogCXN0cnVjdCBjbHNfZmxfaGVhZCAqaGVhZCA9IHJ0bmxfZGVyZWZlcmVuY2UodHAtPnJv b3QpOwogCXN0cnVjdCBjbHNfZmxfZmlsdGVyICpmLCAqbmV4dDsKIAotCWlmICghZm9yY2UgJiYg IWxpc3RfZW1wdHkoJmhlYWQtPmZpbHRlcnMpKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAlsaXN0X2Zv cl9lYWNoX2VudHJ5X3NhZmUoZiwgbmV4dCwgJmhlYWQtPmZpbHRlcnMsIGxpc3QpCiAJCV9fZmxf ZGVsZXRlKHRwLCBmKTsKIAogCV9fbW9kdWxlX2dldChUSElTX01PRFVMRSk7CiAJY2FsbF9yY3Uo JmhlYWQtPnJjdSwgZmxfZGVzdHJveV9yY3UpOwotCi0JcmV0dXJuIHRydWU7CiB9CiAKIHN0YXRp YyB1bnNpZ25lZCBsb25nIGZsX2dldChzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdTMyIGhhbmRsZSkK QEAgLTg3Nyw3ICs4NzIsNyBAQCBzdGF0aWMgaW50IGZsX2NoYW5nZShzdHJ1Y3QgbmV0ICpuZXQs IHN0cnVjdCBza19idWZmICppbl9za2IsCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGludCBm bF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnKQorc3RhdGlj IGludCBmbF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnLCBi b29sICpsYXN0KQogewogCXN0cnVjdCBjbHNfZmxfaGVhZCAqaGVhZCA9IHJ0bmxfZGVyZWZlcmVu Y2UodHAtPnJvb3QpOwogCXN0cnVjdCBjbHNfZmxfZmlsdGVyICpmID0gKHN0cnVjdCBjbHNfZmxf ZmlsdGVyICopIGFyZzsKQEAgLTg4Niw2ICs4ODEsNyBAQCBzdGF0aWMgaW50IGZsX2RlbGV0ZShz dHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCXJoYXNodGFibGVfcmVt b3ZlX2Zhc3QoJmhlYWQtPmh0LCAmZi0+aHRfbm9kZSwKIAkJCQkgICAgICAgaGVhZC0+aHRfcGFy YW1zKTsKIAlfX2ZsX2RlbGV0ZSh0cCwgZik7CisJKmxhc3QgPSBsaXN0X2VtcHR5KCZoZWFkLT5m aWx0ZXJzKTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19mdy5j IGIvbmV0L3NjaGVkL2Nsc19mdy5jCmluZGV4IDlkYzYzZDUuLmJjOGNlYjcgMTAwNjQ0Ci0tLSBh L25ldC9zY2hlZC9jbHNfZncuYworKysgYi9uZXQvc2NoZWQvY2xzX2Z3LmMKQEAgLTEyNywyMCAr MTI3LDE0IEBAIHN0YXRpYyB2b2lkIGZ3X2RlbGV0ZV9maWx0ZXIoc3RydWN0IHJjdV9oZWFkICpo ZWFkKQogCWtmcmVlKGYpOwogfQogCi1zdGF0aWMgYm9vbCBmd19kZXN0cm95KHN0cnVjdCB0Y2Zf cHJvdG8gKnRwLCBib29sIGZvcmNlKQorc3RhdGljIHZvaWQgZndfZGVzdHJveShzdHJ1Y3QgdGNm X3Byb3RvICp0cCkKIHsKIAlzdHJ1Y3QgZndfaGVhZCAqaGVhZCA9IHJ0bmxfZGVyZWZlcmVuY2Uo dHAtPnJvb3QpOwogCXN0cnVjdCBmd19maWx0ZXIgKmY7CiAJaW50IGg7CiAKIAlpZiAoaGVhZCA9 PSBOVUxMKQotCQlyZXR1cm4gdHJ1ZTsKLQotCWlmICghZm9yY2UpIHsKLQkJZm9yIChoID0gMDsg aCA8IEhUU0laRTsgaCsrKQotCQkJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihoZWFkLT5odFtoXSkp Ci0JCQkJcmV0dXJuIGZhbHNlOwotCX0KKwkJcmV0dXJuOwogCiAJZm9yIChoID0gMDsgaCA8IEhU U0laRTsgaCsrKSB7CiAJCXdoaWxlICgoZiA9IHJ0bmxfZGVyZWZlcmVuY2UoaGVhZC0+aHRbaF0p KSAhPSBOVUxMKSB7CkBAIC0xNTAsMTcgKzE0NCwxNyBAQCBzdGF0aWMgYm9vbCBmd19kZXN0cm95 KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIGZvcmNlKQogCQkJY2FsbF9yY3UoJmYtPnJjdSwg ZndfZGVsZXRlX2ZpbHRlcik7CiAJCX0KIAl9Ci0JUkNVX0lOSVRfUE9JTlRFUih0cC0+cm9vdCwg TlVMTCk7CiAJa2ZyZWVfcmN1KGhlYWQsIHJjdSk7Ci0JcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRp YyBpbnQgZndfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGFyZykK K3N0YXRpYyBpbnQgZndfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25n IGFyZywgYm9vbCAqbGFzdCkKIHsKIAlzdHJ1Y3QgZndfaGVhZCAqaGVhZCA9IHJ0bmxfZGVyZWZl cmVuY2UodHAtPnJvb3QpOwogCXN0cnVjdCBmd19maWx0ZXIgKmYgPSAoc3RydWN0IGZ3X2ZpbHRl ciAqKWFyZzsKIAlzdHJ1Y3QgZndfZmlsdGVyIF9fcmN1ICoqZnA7CiAJc3RydWN0IGZ3X2ZpbHRl ciAqcGZwOworCWludCByZXQgPSAtRUlOVkFMOworCWludCBoOwogCiAJaWYgKGhlYWQgPT0gTlVM TCB8fCBmID09IE5VTEwpCiAJCWdvdG8gb3V0OwpAQCAtMTczLDExICsxNjcsMjEgQEAgc3RhdGlj IGludCBmd19kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnKQog CQkJUkNVX0lOSVRfUE9JTlRFUigqZnAsIHJ0bmxfZGVyZWZlcmVuY2UoZi0+bmV4dCkpOwogCQkJ dGNmX3VuYmluZF9maWx0ZXIodHAsICZmLT5yZXMpOwogCQkJY2FsbF9yY3UoJmYtPnJjdSwgZndf ZGVsZXRlX2ZpbHRlcik7Ci0JCQlyZXR1cm4gMDsKKwkJCXJldCA9IDA7CisJCQlicmVhazsKIAkJ fQogCX0KKworCSpsYXN0ID0gdHJ1ZTsKKwlmb3IgKGggPSAwOyBoIDwgSFRTSVpFOyBoKyspIHsK KwkJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihoZWFkLT5odFtoXSkpIHsKKwkJCSpsYXN0ID0gZmFs c2U7CisJCQlicmVhazsKKwkJfQorCX0KKwogb3V0OgotCXJldHVybiAtRUlOVkFMOworCXJldHVy biByZXQ7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbmxhX3BvbGljeSBmd19wb2xpY3lbVENB X0ZXX01BWCArIDFdID0gewpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19tYXRjaGFsbC5jIGIv bmV0L3NjaGVkL2Nsc19tYXRjaGFsbC5jCmluZGV4IGY5MzU0MjkuLjdkNTQ4MDUgMTAwNjQ0Ci0t LSBhL25ldC9zY2hlZC9jbHNfbWF0Y2hhbGwuYworKysgYi9uZXQvc2NoZWQvY2xzX21hdGNoYWxs LmMKQEAgLTk5LDE1ICs5OSwxMiBAQCBzdGF0aWMgdm9pZCBtYWxsX2Rlc3Ryb3lfaHdfZmlsdGVy KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLAogCQkJCQkgICAgICZvZmZsb2FkKTsKIH0KIAotc3RhdGlj IGJvb2wgbWFsbF9kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIGZvcmNlKQorc3Rh dGljIHZvaWQgbWFsbF9kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwKQogewogCXN0cnVjdCBj bHNfbWFsbF9oZWFkICpoZWFkID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0 IG5ldF9kZXZpY2UgKmRldiA9IHRwLT5xLT5kZXZfcXVldWUtPmRldjsKIAlzdHJ1Y3QgY2xzX21h bGxfZmlsdGVyICpmID0gaGVhZC0+ZmlsdGVyOwogCi0JaWYgKCFmb3JjZSAmJiBmKQotCQlyZXR1 cm4gZmFsc2U7Ci0KIAlpZiAoZikgewogCQlpZiAodGNfc2hvdWxkX29mZmxvYWQoZGV2LCB0cCwg Zi0+ZmxhZ3MpKQogCQkJbWFsbF9kZXN0cm95X2h3X2ZpbHRlcih0cCwgZiwgKHVuc2lnbmVkIGxv bmcpIGYpOwpAQCAtMTE1LDcgKzExMiw2IEBAIHN0YXRpYyBib29sIG1hbGxfZGVzdHJveShzdHJ1 Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBmb3JjZSkKIAkJY2FsbF9yY3UoJmYtPnJjdSwgbWFsbF9k ZXN0cm95X2ZpbHRlcik7CiAJfQogCWtmcmVlX3JjdShoZWFkLCByY3UpOwotCXJldHVybiB0cnVl OwogfQogCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBtYWxsX2dldChzdHJ1Y3QgdGNmX3Byb3RvICp0 cCwgdTMyIGhhbmRsZSkKQEAgLTIyNCw3ICsyMjAsNyBAQCBzdGF0aWMgaW50IG1hbGxfY2hhbmdl KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKmluX3NrYiwKIAlyZXR1cm4gZXJyOwog fQogCi1zdGF0aWMgaW50IG1hbGxfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25l ZCBsb25nIGFyZykKK3N0YXRpYyBpbnQgbWFsbF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAs IHVuc2lnbmVkIGxvbmcgYXJnLCBib29sICpsYXN0KQogewogCXN0cnVjdCBjbHNfbWFsbF9oZWFk ICpoZWFkID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0IGNsc19tYWxsX2Zp bHRlciAqZiA9IChzdHJ1Y3QgY2xzX21hbGxfZmlsdGVyICopIGFyZzsKQEAgLTIzNiw2ICsyMzIs NyBAQCBzdGF0aWMgaW50IG1hbGxfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25l ZCBsb25nIGFyZykKIAlSQ1VfSU5JVF9QT0lOVEVSKGhlYWQtPmZpbHRlciwgTlVMTCk7CiAJdGNm X3VuYmluZF9maWx0ZXIodHAsICZmLT5yZXMpOwogCWNhbGxfcmN1KCZmLT5yY3UsIG1hbGxfZGVz dHJveV9maWx0ZXIpOworCSpsYXN0ID0gdHJ1ZTsKIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0 IGEvbmV0L3NjaGVkL2Nsc19yb3V0ZS5jIGIvbmV0L3NjaGVkL2Nsc19yb3V0ZS5jCmluZGV4IDQ1 NWZjOGYuLjFhMzhlNDEgMTAwNjQ0Ci0tLSBhL25ldC9zY2hlZC9jbHNfcm91dGUuYworKysgYi9u ZXQvc2NoZWQvY2xzX3JvdXRlLmMKQEAgLTI3NiwyMCArMjc2LDEzIEBAIHN0YXRpYyB2b2lkIHJv dXRlNF9kZWxldGVfZmlsdGVyKHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKIAlrZnJlZShmKTsKIH0K IAotc3RhdGljIGJvb2wgcm91dGU0X2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wg Zm9yY2UpCitzdGF0aWMgdm9pZCByb3V0ZTRfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCkK IHsKIAlzdHJ1Y3Qgcm91dGU0X2hlYWQgKmhlYWQgPSBydG5sX2RlcmVmZXJlbmNlKHRwLT5yb290 KTsKIAlpbnQgaDEsIGgyOwogCiAJaWYgKGhlYWQgPT0gTlVMTCkKLQkJcmV0dXJuIHRydWU7Ci0K LQlpZiAoIWZvcmNlKSB7Ci0JCWZvciAoaDEgPSAwOyBoMSA8PSAyNTY7IGgxKyspIHsKLQkJCWlm IChyY3VfYWNjZXNzX3BvaW50ZXIoaGVhZC0+dGFibGVbaDFdKSkKLQkJCQlyZXR1cm4gZmFsc2U7 Ci0JCX0KLQl9CisJCXJldHVybjsKIAogCWZvciAoaDEgPSAwOyBoMSA8PSAyNTY7IGgxKyspIHsK IAkJc3RydWN0IHJvdXRlNF9idWNrZXQgKmI7CkBAIC0zMTIsMTIgKzMwNSwxMCBAQCBzdGF0aWMg Ym9vbCByb3V0ZTRfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9vbCBmb3JjZSkKIAkJ CWtmcmVlX3JjdShiLCByY3UpOwogCQl9CiAJfQotCVJDVV9JTklUX1BPSU5URVIodHAtPnJvb3Qs IE5VTEwpOwogCWtmcmVlX3JjdShoZWFkLCByY3UpOwotCXJldHVybiB0cnVlOwogfQogCi1zdGF0 aWMgaW50IHJvdXRlNF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcg YXJnKQorc3RhdGljIGludCByb3V0ZTRfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNp Z25lZCBsb25nIGFyZywgYm9vbCAqbGFzdCkKIHsKIAlzdHJ1Y3Qgcm91dGU0X2hlYWQgKmhlYWQg PSBydG5sX2RlcmVmZXJlbmNlKHRwLT5yb290KTsKIAlzdHJ1Y3Qgcm91dGU0X2ZpbHRlciAqZiA9 IChzdHJ1Y3Qgcm91dGU0X2ZpbHRlciAqKWFyZzsKQEAgLTMyNSw3ICszMTYsNyBAQCBzdGF0aWMg aW50IHJvdXRlNF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJn KQogCXN0cnVjdCByb3V0ZTRfZmlsdGVyICpuZjsKIAlzdHJ1Y3Qgcm91dGU0X2J1Y2tldCAqYjsK IAl1bnNpZ25lZCBpbnQgaCA9IDA7Ci0JaW50IGk7CisJaW50IGksIGgxOwogCiAJaWYgKCFoZWFk IHx8ICFmKQogCQlyZXR1cm4gLUVJTlZBTDsKQEAgLTM1NiwxNiArMzQ3LDI1IEBAIHN0YXRpYyBp bnQgcm91dGU0X2RlbGV0ZShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcp CiAKIAkJCQlydCA9IHJ0bmxfZGVyZWZlcmVuY2UoYi0+aHRbaV0pOwogCQkJCWlmIChydCkKLQkJ CQkJcmV0dXJuIDA7CisJCQkJCWdvdG8gb3V0OwogCQkJfQogCiAJCQkvKiBPSywgc2Vzc2lvbiBo YXMgbm8gZmxvd3MgKi8KIAkJCVJDVV9JTklUX1BPSU5URVIoaGVhZC0+dGFibGVbdG9faGFzaCho KV0sIE5VTEwpOwogCQkJa2ZyZWVfcmN1KGIsIHJjdSk7CisJCQlicmVhazsKKwkJfQorCX0KIAot CQkJcmV0dXJuIDA7CitvdXQ6CisJKmxhc3QgPSB0cnVlOworCWZvciAoaDEgPSAwOyBoMSA8PSAy NTY7IGgxKyspIHsKKwkJaWYgKHJjdV9hY2Nlc3NfcG9pbnRlcihoZWFkLT50YWJsZVtoMV0pKSB7 CisJCQkqbGFzdCA9IGZhbHNlOworCQkJYnJlYWs7CiAJCX0KIAl9CisKIAlyZXR1cm4gMDsKIH0K IApkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL2Nsc19yc3ZwLmggYi9uZXQvc2NoZWQvY2xzX3JzdnAu aAppbmRleCAzMjI0MzhmLi4xYWFmZjEwIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvY2xzX3JzdnAu aAorKysgYi9uZXQvc2NoZWQvY2xzX3JzdnAuaApAQCAtMzAyLDIyICszMDIsMTMgQEAgc3RhdGlj IHZvaWQgcnN2cF9kZWxldGVfZmlsdGVyKHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBzdHJ1Y3QgcnN2 cF9maWx0ZXIgKmYpCiAJY2FsbF9yY3UoJmYtPnJjdSwgcnN2cF9kZWxldGVfZmlsdGVyX3JjdSk7 CiB9CiAKLXN0YXRpYyBib29sIHJzdnBfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgYm9v bCBmb3JjZSkKK3N0YXRpYyB2b2lkIHJzdnBfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCkK IHsKIAlzdHJ1Y3QgcnN2cF9oZWFkICpkYXRhID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+cm9vdCk7 CiAJaW50IGgxLCBoMjsKIAogCWlmIChkYXRhID09IE5VTEwpCi0JCXJldHVybiB0cnVlOwotCi0J aWYgKCFmb3JjZSkgewotCQlmb3IgKGgxID0gMDsgaDEgPCAyNTY7IGgxKyspIHsKLQkJCWlmIChy Y3VfYWNjZXNzX3BvaW50ZXIoZGF0YS0+aHRbaDFdKSkKLQkJCQlyZXR1cm4gZmFsc2U7Ci0JCX0K LQl9Ci0KLQlSQ1VfSU5JVF9QT0lOVEVSKHRwLT5yb290LCBOVUxMKTsKKwkJcmV0dXJuOwogCiAJ Zm9yIChoMSA9IDA7IGgxIDwgMjU2OyBoMSsrKSB7CiAJCXN0cnVjdCByc3ZwX3Nlc3Npb24gKnM7 CkBAIC0zMzcsMTAgKzMyOCw5IEBAIHN0YXRpYyBib29sIHJzdnBfZGVzdHJveShzdHJ1Y3QgdGNm X3Byb3RvICp0cCwgYm9vbCBmb3JjZSkKIAkJfQogCX0KIAlrZnJlZV9yY3UoZGF0YSwgcmN1KTsK LQlyZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGludCByc3ZwX2RlbGV0ZShzdHJ1Y3QgdGNmX3By b3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcpCitzdGF0aWMgaW50IHJzdnBfZGVsZXRlKHN0cnVj dCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGFyZywgYm9vbCAqbGFzdCkKIHsKIAlzdHJ1 Y3QgcnN2cF9oZWFkICpoZWFkID0gcnRubF9kZXJlZmVyZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0 IHJzdnBfZmlsdGVyICpuZnAsICpmID0gKHN0cnVjdCByc3ZwX2ZpbHRlciAqKWFyZzsKQEAgLTM0 OCw3ICszMzgsNyBAQCBzdGF0aWMgaW50IHJzdnBfZGVsZXRlKHN0cnVjdCB0Y2ZfcHJvdG8gKnRw LCB1bnNpZ25lZCBsb25nIGFyZykKIAl1bnNpZ25lZCBpbnQgaCA9IGYtPmhhbmRsZTsKIAlzdHJ1 Y3QgcnN2cF9zZXNzaW9uIF9fcmN1ICoqc3A7CiAJc3RydWN0IHJzdnBfc2Vzc2lvbiAqbnNwLCAq cyA9IGYtPnNlc3M7Ci0JaW50IGk7CisJaW50IGksIGgxOwogCiAJZnAgPSAmcy0+aHRbKGggPj4g OCkgJiAweEZGXTsKIAlmb3IgKG5mcCA9IHJ0bmxfZGVyZWZlcmVuY2UoKmZwKTsgbmZwOwpAQCAt MzYxLDcgKzM1MSw3IEBAIHN0YXRpYyBpbnQgcnN2cF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAq dHAsIHVuc2lnbmVkIGxvbmcgYXJnKQogCiAJCQlmb3IgKGkgPSAwOyBpIDw9IDE2OyBpKyspCiAJ CQkJaWYgKHMtPmh0W2ldKQotCQkJCQlyZXR1cm4gMDsKKwkJCQkJZ290byBvdXQ7CiAKIAkJCS8q IE9LLCBzZXNzaW9uIGhhcyBubyBmbG93cyAqLwogCQkJc3AgPSAmaGVhZC0+aHRbaCAmIDB4RkZd OwpAQCAtMzcwLDEzICszNjAsMjMgQEAgc3RhdGljIGludCByc3ZwX2RlbGV0ZShzdHJ1Y3QgdGNm X3Byb3RvICp0cCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJCQkJaWYgKG5zcCA9PSBzKSB7CiAJCQkJ CVJDVV9JTklUX1BPSU5URVIoKnNwLCBzLT5uZXh0KTsKIAkJCQkJa2ZyZWVfcmN1KHMsIHJjdSk7 Ci0JCQkJCXJldHVybiAwOworCQkJCQlnb3RvIG91dDsKIAkJCQl9CiAJCQl9CiAKLQkJCXJldHVy biAwOworCQkJYnJlYWs7CiAJCX0KIAl9CisKK291dDoKKwkqbGFzdCA9IHRydWU7CisJZm9yICho MSA9IDA7IGgxIDwgMjU2OyBoMSsrKSB7CisJCWlmIChyY3VfYWNjZXNzX3BvaW50ZXIoaGVhZC0+ aHRbaDFdKSkgeworCQkJKmxhc3QgPSBmYWxzZTsKKwkJCWJyZWFrOworCQl9CisJfQorCiAJcmV0 dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdGNpbmRleC5jIGIvbmV0L3Nj aGVkL2Nsc190Y2luZGV4LmMKaW5kZXggMDc1MTI0NS4uOTE0OWEwMyAxMDA2NDQKLS0tIGEvbmV0 L3NjaGVkL2Nsc190Y2luZGV4LmMKKysrIGIvbmV0L3NjaGVkL2Nsc190Y2luZGV4LmMKQEAgLTE1 MCw3ICsxNTAsNyBAQCBzdGF0aWMgdm9pZCB0Y2luZGV4X2Rlc3Ryb3lfZmV4dHMoc3RydWN0IHJj dV9oZWFkICpoZWFkKQogCWtmcmVlKGYpOwogfQogCi1zdGF0aWMgaW50IHRjaW5kZXhfZGVsZXRl KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGFyZykKK3N0YXRpYyBpbnQgdGNp bmRleF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnLCBib29s ICpsYXN0KQogewogCXN0cnVjdCB0Y2luZGV4X2RhdGEgKnAgPSBydG5sX2RlcmVmZXJlbmNlKHRw LT5yb290KTsKIAlzdHJ1Y3QgdGNpbmRleF9maWx0ZXJfcmVzdWx0ICpyID0gKHN0cnVjdCB0Y2lu ZGV4X2ZpbHRlcl9yZXN1bHQgKikgYXJnOwpAQCAtMTg2LDYgKzE4Niw4IEBAIHN0YXRpYyBpbnQg dGNpbmRleF9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnKQog CQljYWxsX3JjdSgmZi0+cmN1LCB0Y2luZGV4X2Rlc3Ryb3lfZmV4dHMpOwogCWVsc2UKIAkJY2Fs bF9yY3UoJnItPnJjdSwgdGNpbmRleF9kZXN0cm95X3JleHRzKTsKKworCSpsYXN0ID0gZmFsc2U7 CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE5Myw3ICsxOTUsOSBAQCBzdGF0aWMgaW50IHRjaW5kZXhf ZGVzdHJveV9lbGVtZW50KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLAogCQkJCSAgIHVuc2lnbmVkIGxv bmcgYXJnLAogCQkJCSAgIHN0cnVjdCB0Y2Zfd2Fsa2VyICp3YWxrZXIpCiB7Ci0JcmV0dXJuIHRj aW5kZXhfZGVsZXRlKHRwLCBhcmcpOworCWJvb2wgbGFzdDsKKworCXJldHVybiB0Y2luZGV4X2Rl bGV0ZSh0cCwgYXJnLCAmbGFzdCk7CiB9CiAKIHN0YXRpYyB2b2lkIF9fdGNpbmRleF9kZXN0cm95 KHN0cnVjdCByY3VfaGVhZCAqaGVhZCkKQEAgLTUyOSwxNCArNTMzLDExIEBAIHN0YXRpYyB2b2lk IHRjaW5kZXhfd2FsayhzdHJ1Y3QgdGNmX3Byb3RvICp0cCwgc3RydWN0IHRjZl93YWxrZXIgKndh bGtlcikKIAl9CiB9CiAKLXN0YXRpYyBib29sIHRjaW5kZXhfZGVzdHJveShzdHJ1Y3QgdGNmX3By b3RvICp0cCwgYm9vbCBmb3JjZSkKK3N0YXRpYyB2b2lkIHRjaW5kZXhfZGVzdHJveShzdHJ1Y3Qg dGNmX3Byb3RvICp0cCkKIHsKIAlzdHJ1Y3QgdGNpbmRleF9kYXRhICpwID0gcnRubF9kZXJlZmVy ZW5jZSh0cC0+cm9vdCk7CiAJc3RydWN0IHRjZl93YWxrZXIgd2Fsa2VyOwogCi0JaWYgKCFmb3Jj ZSkKLQkJcmV0dXJuIGZhbHNlOwotCiAJcHJfZGVidWcoInRjaW5kZXhfZGVzdHJveSh0cCAlcCks cCAlcFxuIiwgdHAsIHApOwogCXdhbGtlci5jb3VudCA9IDA7CiAJd2Fsa2VyLnNraXAgPSAwOwpA QCAtNTQ0LDcgKzU0NSw2IEBAIHN0YXRpYyBib29sIHRjaW5kZXhfZGVzdHJveShzdHJ1Y3QgdGNm X3Byb3RvICp0cCwgYm9vbCBmb3JjZSkKIAl0Y2luZGV4X3dhbGsodHAsICZ3YWxrZXIpOwogCiAJ Y2FsbF9yY3UoJnAtPnJjdSwgX190Y2luZGV4X2Rlc3Ryb3kpOwotCXJldHVybiB0cnVlOwogfQog CiAKZGlmZiAtLWdpdCBhL25ldC9zY2hlZC9jbHNfdTMyLmMgYi9uZXQvc2NoZWQvY2xzX3UzMi5j CmluZGV4IGFlODNjM2FlLi43ODc1NzNiIDEwMDY0NAotLS0gYS9uZXQvc2NoZWQvY2xzX3UzMi5j CisrKyBiL25ldC9zY2hlZC9jbHNfdTMyLmMKQEAgLTU4MiwzNyArNTgyLDEzIEBAIHN0YXRpYyBi b29sIGh0X2VtcHR5KHN0cnVjdCB0Y191X2hub2RlICpodCkKIAlyZXR1cm4gdHJ1ZTsKIH0KIAot c3RhdGljIGJvb2wgdTMyX2Rlc3Ryb3koc3RydWN0IHRjZl9wcm90byAqdHAsIGJvb2wgZm9yY2Up CitzdGF0aWMgdm9pZCB1MzJfZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCkKIHsKIAlzdHJ1 Y3QgdGNfdV9jb21tb24gKnRwX2MgPSB0cC0+ZGF0YTsKIAlzdHJ1Y3QgdGNfdV9obm9kZSAqcm9v dF9odCA9IHJ0bmxfZGVyZWZlcmVuY2UodHAtPnJvb3QpOwogCiAJV0FSTl9PTihyb290X2h0ID09 IE5VTEwpOwogCi0JaWYgKCFmb3JjZSkgewotCQlpZiAocm9vdF9odCkgewotCQkJaWYgKHJvb3Rf aHQtPnJlZmNudCA+IDEpCi0JCQkJcmV0dXJuIGZhbHNlOwotCQkJaWYgKHJvb3RfaHQtPnJlZmNu dCA9PSAxKSB7Ci0JCQkJaWYgKCFodF9lbXB0eShyb290X2h0KSkKLQkJCQkJcmV0dXJuIGZhbHNl OwotCQkJfQotCQl9Ci0KLQkJaWYgKHRwX2MtPnJlZmNudCA+IDEpCi0JCQlyZXR1cm4gZmFsc2U7 Ci0KLQkJaWYgKHRwX2MtPnJlZmNudCA9PSAxKSB7Ci0JCQlzdHJ1Y3QgdGNfdV9obm9kZSAqaHQ7 Ci0KLQkJCWZvciAoaHQgPSBydG5sX2RlcmVmZXJlbmNlKHRwX2MtPmhsaXN0KTsKLQkJCSAgICAg aHQ7Ci0JCQkgICAgIGh0ID0gcnRubF9kZXJlZmVyZW5jZShodC0+bmV4dCkpCi0JCQkJaWYgKCFo dF9lbXB0eShodCkpCi0JCQkJCXJldHVybiBmYWxzZTsKLQkJfQotCX0KLQogCWlmIChyb290X2h0 ICYmIC0tcm9vdF9odC0+cmVmY250ID09IDApCiAJCXUzMl9kZXN0cm95X2hub2RlKHRwLCByb290 X2h0KTsKIApAQCAtNjM3LDIwICs2MTMsMjIgQEAgc3RhdGljIGJvb2wgdTMyX2Rlc3Ryb3koc3Ry dWN0IHRjZl9wcm90byAqdHAsIGJvb2wgZm9yY2UpCiAJfQogCiAJdHAtPmRhdGEgPSBOVUxMOwot CXJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgaW50IHUzMl9kZWxldGUoc3RydWN0IHRjZl9wcm90 byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnKQorc3RhdGljIGludCB1MzJfZGVsZXRlKHN0cnVjdCB0 Y2ZfcHJvdG8gKnRwLCB1bnNpZ25lZCBsb25nIGFyZywgYm9vbCAqbGFzdCkKIHsKIAlzdHJ1Y3Qg dGNfdV9obm9kZSAqaHQgPSAoc3RydWN0IHRjX3VfaG5vZGUgKilhcmc7CiAJc3RydWN0IHRjX3Vf aG5vZGUgKnJvb3RfaHQgPSBydG5sX2RlcmVmZXJlbmNlKHRwLT5yb290KTsKKwlzdHJ1Y3QgdGNf dV9jb21tb24gKnRwX2MgPSB0cC0+ZGF0YTsKKwlpbnQgcmV0ID0gMDsKIAogCWlmIChodCA9PSBO VUxMKQotCQlyZXR1cm4gMDsKKwkJZ290byBvdXQ7CiAKIAlpZiAoVENfVTMyX0tFWShodC0+aGFu ZGxlKSkgewogCQl1MzJfcmVtb3ZlX2h3X2tub2RlKHRwLCBodC0+aGFuZGxlKTsKLQkJcmV0dXJu IHUzMl9kZWxldGVfa2V5KHRwLCAoc3RydWN0IHRjX3Vfa25vZGUgKilodCk7CisJCXJldCA9IHUz Ml9kZWxldGVfa2V5KHRwLCAoc3RydWN0IHRjX3Vfa25vZGUgKilodCk7CisJCWdvdG8gb3V0Owog CX0KIAogCWlmIChyb290X2h0ID09IGh0KQpAQCAtNjYzLDcgKzY0MSw0MCBAQCBzdGF0aWMgaW50 IHUzMl9kZWxldGUoc3RydWN0IHRjZl9wcm90byAqdHAsIHVuc2lnbmVkIGxvbmcgYXJnKQogCQly ZXR1cm4gLUVCVVNZOwogCX0KIAotCXJldHVybiAwOworb3V0OgorCSpsYXN0ID0gdHJ1ZTsKKwlp ZiAocm9vdF9odCkgeworCQlpZiAocm9vdF9odC0+cmVmY250ID4gMSkgeworCQkJKmxhc3QgPSBm YWxzZTsKKwkJCWdvdG8gcmV0OworCQl9CisJCWlmIChyb290X2h0LT5yZWZjbnQgPT0gMSkgewor CQkJaWYgKCFodF9lbXB0eShyb290X2h0KSkgeworCQkJCSpsYXN0ID0gZmFsc2U7CisJCQkJZ290 byByZXQ7CisJCQl9CisJCX0KKwl9CisKKwlpZiAodHBfYy0+cmVmY250ID4gMSkgeworCQkqbGFz dCA9IGZhbHNlOworCQlnb3RvIHJldDsKKwl9CisKKwlpZiAodHBfYy0+cmVmY250ID09IDEpIHsK KwkJc3RydWN0IHRjX3VfaG5vZGUgKmh0OworCisJCWZvciAoaHQgPSBydG5sX2RlcmVmZXJlbmNl KHRwX2MtPmhsaXN0KTsKKwkJICAgICBodDsKKwkJICAgICBodCA9IHJ0bmxfZGVyZWZlcmVuY2Uo aHQtPm5leHQpKQorCQkJaWYgKCFodF9lbXB0eShodCkpIHsKKwkJCQkqbGFzdCA9IGZhbHNlOwor CQkJCWJyZWFrOworCQkJfQorCX0KKworcmV0OgorCXJldHVybiByZXQ7CiB9CiAKICNkZWZpbmUg TlJfVTMyX05PREUgKDE8PDEyKQpkaWZmIC0tZ2l0IGEvbmV0L3NjaGVkL3NjaF9hcGkuYyBiL25l dC9zY2hlZC9zY2hfYXBpLmMKaW5kZXggZDdiOTM0Mi4uMjAyOTNlZSAxMDA2NDQKLS0tIGEvbmV0 L3NjaGVkL3NjaF9hcGkuYworKysgYi9uZXQvc2NoZWQvc2NoX2FwaS5jCkBAIC0xODk5LDE1ICsx ODk5LDExIEBAIGludCB0Y19jbGFzc2lmeShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1 Y3QgdGNmX3Byb3RvICp0cCwKIH0KIEVYUE9SVF9TWU1CT0wodGNfY2xhc3NpZnkpOwogCi1ib29s IHRjZl9kZXN0cm95KHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLCBib29sIGZvcmNlKQordm9pZCB0Y2Zf ZGVzdHJveShzdHJ1Y3QgdGNmX3Byb3RvICp0cCkKIHsKLQlpZiAodHAtPm9wcy0+ZGVzdHJveSh0 cCwgZm9yY2UpKSB7Ci0JCW1vZHVsZV9wdXQodHAtPm9wcy0+b3duZXIpOwotCQlrZnJlZV9yY3Uo dHAsIHJjdSk7Ci0JCXJldHVybiB0cnVlOwotCX0KLQotCXJldHVybiBmYWxzZTsKKwl0cC0+b3Bz LT5kZXN0cm95KHRwKTsKKwltb2R1bGVfcHV0KHRwLT5vcHMtPm93bmVyKTsKKwlrZnJlZV9yY3Uo dHAsIHJjdSk7CiB9CiAKIHZvaWQgdGNmX2Rlc3Ryb3lfY2hhaW4oc3RydWN0IHRjZl9wcm90byBf X3JjdSAqKmZsKQpAQCAtMTkxNiw3ICsxOTEyLDcgQEAgdm9pZCB0Y2ZfZGVzdHJveV9jaGFpbihz dHJ1Y3QgdGNmX3Byb3RvIF9fcmN1ICoqZmwpCiAKIAl3aGlsZSAoKHRwID0gcnRubF9kZXJlZmVy ZW5jZSgqZmwpKSAhPSBOVUxMKSB7CiAJCVJDVV9JTklUX1BPSU5URVIoKmZsLCB0cC0+bmV4dCk7 Ci0JCXRjZl9kZXN0cm95KHRwLCB0cnVlKTsKKwkJdGNmX2Rlc3Ryb3kodHApOwogCX0KIH0KIEVY UE9SVF9TWU1CT0wodGNmX2Rlc3Ryb3lfY2hhaW4pOwo= --94eb2c05d26ca26ac005437df17b--