From mboxrd@z Thu Jan 1 00:00:00 1970 From: Shirish Pargaonkar Subject: [linux-cifs-client][patch] utilize lookup intents to open in lookup Date: Tue, 31 Mar 2009 11:57:26 -0500 Message-ID: <4a4634330903310957j25bbefcibb28e09a3eaf0c10@mail.gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016e644c76cf2ff4b04666d17da Cc: Steve French , Trond Myklebust , viro@zeniv.linux.org.uk To: "linux-cifs-client@lists.samba.org" , linux-fsdevel Return-path: Received: from an-out-0708.google.com ([209.85.132.249]:3275 "EHLO an-out-0708.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753172AbZCaQ52 (ORCPT ); Tue, 31 Mar 2009 12:57:28 -0400 Received: by an-out-0708.google.com with SMTP id d14so2035188and.1 for ; Tue, 31 Mar 2009 09:57:26 -0700 (PDT) Sender: linux-fsdevel-owner@vger.kernel.org List-ID: --0016e644c76cf2ff4b04666d17da Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, Patch to expolint lookup intents in cifs lookup during open, thus reducing network traffick and speedier opens Have also converted a semphore to mutex as per Jeff Layton's comments. Trong, Al, your feedback is really appreciated. Regards, Shirish --0016e644c76cf2ff4b04666d17da Content-Type: application/octet-stream; name="li.4.patch" Content-Disposition: attachment; filename="li.4.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_fsytwmfp0 ZGlmZiAtLWdpdCBhL2ZzL2NpZnMvY2lmc2dsb2IuaCBiL2ZzL2NpZnMvY2lmc2dsb2IuaAppbmRl eCA5ZmJmNGRmLi45YTgzNjhmIDEwMDY0NAotLS0gYS9mcy9jaWZzL2NpZnNnbG9iLmgKKysrIGIv ZnMvY2lmcy9jaWZzZ2xvYi5oCkBAIC0zNTAsNyArMzUwLDcgQEAgc3RydWN0IGNpZnNGaWxlSW5m byB7CiAJYm9vbCBpbnZhbGlkSGFuZGxlOjE7CS8qIGZpbGUgY2xvc2VkIHZpYSBzZXNzaW9uIGFi ZW5kICovCiAJYm9vbCBtZXNzYWdlTW9kZToxOwkvKiBmb3IgcGlwZXM6IG1lc3NhZ2UgdnMgYnl0 ZSBtb2RlICovCiAJYXRvbWljX3Qgd3J0UGVuZGluZzsgICAvKiBoYW5kbGUgaW4gdXNlIC0gZGVm ZXIgY2xvc2UgKi8KLQlzdHJ1Y3Qgc2VtYXBob3JlIGZoX3NlbTsgLyogcHJldmVudHMgcmVvcGVu IHJhY2UgYWZ0ZXIgZGVhZCBzZXMqLworCXN0cnVjdCBtdXRleCBmaF9tdXRleDsgLyogcHJldmVu dHMgcmVvcGVuIHJhY2UgYWZ0ZXIgZGVhZCBzZXMqLwogCXN0cnVjdCBjaWZzX3NlYXJjaF9pbmZv IHNyY2hfaW5mOwogfTsKIApkaWZmIC0tZ2l0IGEvZnMvY2lmcy9kaXIuYyBiL2ZzL2NpZnMvZGly LmMKaW5kZXggZjliNmY2OC4uM2NjYjkwMCAxMDA2NDQKLS0tIGEvZnMvY2lmcy9kaXIuYworKysg Yi9mcy9jaWZzL2Rpci5jCkBAIC0xMjksMTIgKzEyOSw2NyBAQCBjaWZzX2JwX3JlbmFtZV9yZXRy eToKIAlyZXR1cm4gZnVsbF9wYXRoOwogfQogCitzdGF0aWMgdm9pZAorY2lmc19maWxsX2ZpbGVp bmZvKHN0cnVjdCBpbm9kZSAqbmV3aW5vZGUsIF9fdTE2IGZpbGVIYW5kbGUsCisJCQlzdHJ1Y3Qg Y2lmc1Rjb25JbmZvICp0Y29uLCBib29sIHdyaXRlX29ubHkpCit7CisJaW50IG9wbG9jayA9IDA7 CisJc3RydWN0IGNpZnNGaWxlSW5mbyAqcENpZnNGaWxlOworCXN0cnVjdCBjaWZzSW5vZGVJbmZv ICpwQ2lmc0lub2RlOworCisJY0VSUk9SKDEsICgiY2lmc19maWxsX2ZpbGVpbmZvIGVudGVyXG4i KSk7CisKKwlwQ2lmc0ZpbGUgPSBremFsbG9jKHNpemVvZihzdHJ1Y3QgY2lmc0ZpbGVJbmZvKSwg R0ZQX0tFUk5FTCk7CisKKwlpZiAocENpZnNGaWxlID09IE5VTEwpCisJCXJldHVybjsKKworCWlm IChvcGxvY2tFbmFibGVkKQorCQlvcGxvY2sgPSBSRVFfT1BMT0NLOworCisJcENpZnNGaWxlLT5u ZXRmaWQgPSBmaWxlSGFuZGxlOworCXBDaWZzRmlsZS0+cGlkID0gY3VycmVudC0+dGdpZDsKKwlw Q2lmc0ZpbGUtPnBJbm9kZSA9IG5ld2lub2RlOworCXBDaWZzRmlsZS0+aW52YWxpZEhhbmRsZSA9 IGZhbHNlOworCXBDaWZzRmlsZS0+Y2xvc2VQZW5kICAgICA9IGZhbHNlOworCW11dGV4X2luaXQo JnBDaWZzRmlsZS0+ZmhfbXV0ZXgpOworCW11dGV4X2luaXQoJnBDaWZzRmlsZS0+bG9ja19tdXRl eCk7CisJSU5JVF9MSVNUX0hFQUQoJnBDaWZzRmlsZS0+bGxpc3QpOworCWF0b21pY19zZXQoJnBD aWZzRmlsZS0+d3J0UGVuZGluZywgMCk7CisKKwkvKiBzZXQgdGhlIGZvbGxvd2luZyBpbiBvcGVu IG5vdworCQkJcENpZnNGaWxlLT5wZmlsZSA9IGZpbGU7ICovCisJd3JpdGVfbG9jaygmR2xvYmFs U01CU2VzbG9jayk7CisJbGlzdF9hZGQoJnBDaWZzRmlsZS0+dGxpc3QsICZ0Y29uLT5vcGVuRmls ZUxpc3QpOworCXBDaWZzSW5vZGUgPSBDSUZTX0kobmV3aW5vZGUpOworCWlmIChwQ2lmc0lub2Rl KSB7CisJCS8qIGlmIHJlYWRhYmxlIGZpbGUgaW5zdGFuY2UgcHV0IGZpcnN0IGluIGxpc3QqLwor CQlpZiAod3JpdGVfb25seSkgeworCQkJbGlzdF9hZGRfdGFpbCgmcENpZnNGaWxlLT5mbGlzdCwK KwkJCQkgICAgICAmcENpZnNJbm9kZS0+b3BlbkZpbGVMaXN0KTsKKwkJfSBlbHNlIHsKKwkJCWxp c3RfYWRkKCZwQ2lmc0ZpbGUtPmZsaXN0LAorCQkJCSAmcENpZnNJbm9kZS0+b3BlbkZpbGVMaXN0 KTsKKwkJfQorCQlpZiAoKG9wbG9jayAmIDB4RikgPT0gT1BMT0NLX0VYQ0xVU0lWRSkgeworCQkJ cENpZnNJbm9kZS0+Y2xpZW50Q2FuQ2FjaGVBbGwgPSB0cnVlOworCQkJcENpZnNJbm9kZS0+Y2xp ZW50Q2FuQ2FjaGVSZWFkID0gdHJ1ZTsKKwkJCWNGWUkoMSwgKCJFeGNsdXNpdmUgT3Bsb2NrIGlu b2RlICVwIiwKKwkJCQluZXdpbm9kZSkpOworCQl9IGVsc2UgaWYgKChvcGxvY2sgJiAweEYpID09 IE9QTE9DS19SRUFEKQorCQkJcENpZnNJbm9kZS0+Y2xpZW50Q2FuQ2FjaGVSZWFkID0gdHJ1ZTsK Kwl9CisJd3JpdGVfdW5sb2NrKCZHbG9iYWxTTUJTZXNsb2NrKTsKKwljRVJST1IoMSwgKCJjaWZz X2ZpbGxfZmlsZWluZm8gZXhpdFxuIikpOworfQorCiBpbnQgY2lmc19wb3NpeF9vcGVuKGNoYXIg KmZ1bGxfcGF0aCwgc3RydWN0IGlub2RlICoqcGlub2RlLAogCQkgICAgc3RydWN0IHN1cGVyX2Js b2NrICpzYiwgaW50IG1vZGUsIGludCBvZmxhZ3MsCiAJCSAgICBpbnQgKnBvcGxvY2ssIF9fdTE2 ICpwbmV0ZmlkLCBpbnQgeGlkKQogewogCWludCByYzsKIAlfX3UzMiBvcGxvY2s7CisJYm9vbCB3 cml0ZV9vbmx5ID0gZmFsc2U7CiAJRklMRV9VTklYX0JBU0lDX0lORk8gKnByZXNwX2RhdGE7CiAJ X191MzIgcG9zaXhfZmxhZ3MgPSAwOwogCXN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IgPSBD SUZTX1NCKHNiKTsKQEAgLTE3Miw2ICsyMjcsOCBAQCBpbnQgY2lmc19wb3NpeF9vcGVuKGNoYXIg KmZ1bGxfcGF0aCwgc3RydWN0IGlub2RlICoqcGlub2RlLAogCWlmIChvZmxhZ3MgJiBPX0RJUkVD VCkKIAkJcG9zaXhfZmxhZ3MgfD0gU01CX09fRElSRUNUOwogCisJaWYgKCEob2ZsYWdzICYgRk1P REVfUkVBRCkpCisJCXdyaXRlX29ubHkgPSB0cnVlOwogCiAJcmMgPSBDSUZTUE9TSVhDcmVhdGUo eGlkLCBjaWZzX3NiLT50Y29uLCBwb3NpeF9mbGFncywgbW9kZSwKIAkJCXBuZXRmaWQsIHByZXNw X2RhdGEsICZvcGxvY2ssIGZ1bGxfcGF0aCwKQEAgLTE5OCw2ICsyNTUsOCBAQCBpbnQgY2lmc19w b3NpeF9vcGVuKGNoYXIgKmZ1bGxfcGF0aCwgc3RydWN0IGlub2RlICoqcGlub2RlLAogCiAJcG9z aXhfZmlsbF9pbl9pbm9kZSgqcGlub2RlLCBwcmVzcF9kYXRhLCAxKTsKIAorCWNpZnNfZmlsbF9m aWxlaW5mbygqcGlub2RlLCAqcG5ldGZpZCwgY2lmc19zYi0+dGNvbiwgd3JpdGVfb25seSk7CisK IHBvc2l4X29wZW5fcmV0OgogCWtmcmVlKHByZXNwX2RhdGEpOwogCXJldHVybiByYzsKQEAgLTIz OSw3ICsyOTgsNiBAQCBjaWZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZGVu dHJ5ICpkaXJlbnRyeSwgaW50IG1vZGUsCiAJY2hhciAqZnVsbF9wYXRoID0gTlVMTDsKIAlGSUxF X0FMTF9JTkZPICpidWYgPSBOVUxMOwogCXN0cnVjdCBpbm9kZSAqbmV3aW5vZGUgPSBOVUxMOwot CXN0cnVjdCBjaWZzSW5vZGVJbmZvICpwQ2lmc0lub2RlOwogCWludCBkaXNwb3NpdGlvbiA9IEZJ TEVfT1ZFUldSSVRFX0lGOwogCWJvb2wgd3JpdGVfb25seSA9IGZhbHNlOwogCkBAIC00MTAsNDQg KzQ2OCw4IEBAIGNpZnNfY3JlYXRlX3NldF9kZW50cnk6CiAJCS8qIG1rbm9kIGNhc2UgLSBkbyBu b3QgbGVhdmUgZmlsZSBvcGVuICovCiAJCUNJRlNTTUJDbG9zZSh4aWQsIHRjb24sIGZpbGVIYW5k bGUpOwogCX0gZWxzZSBpZiAobmV3aW5vZGUpIHsKLQkJc3RydWN0IGNpZnNGaWxlSW5mbyAqcENp ZnNGaWxlID0KLQkJCWt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBjaWZzRmlsZUluZm8pLCBHRlBfS0VS TkVMKTsKLQotCQlpZiAocENpZnNGaWxlID09IE5VTEwpCi0JCQlnb3RvIGNpZnNfY3JlYXRlX291 dDsKLQkJcENpZnNGaWxlLT5uZXRmaWQgPSBmaWxlSGFuZGxlOwotCQlwQ2lmc0ZpbGUtPnBpZCA9 IGN1cnJlbnQtPnRnaWQ7Ci0JCXBDaWZzRmlsZS0+cElub2RlID0gbmV3aW5vZGU7Ci0JCXBDaWZz RmlsZS0+aW52YWxpZEhhbmRsZSA9IGZhbHNlOwotCQlwQ2lmc0ZpbGUtPmNsb3NlUGVuZCAgICAg PSBmYWxzZTsKLQkJaW5pdF9NVVRFWCgmcENpZnNGaWxlLT5maF9zZW0pOwotCQltdXRleF9pbml0 KCZwQ2lmc0ZpbGUtPmxvY2tfbXV0ZXgpOwotCQlJTklUX0xJU1RfSEVBRCgmcENpZnNGaWxlLT5s bGlzdCk7Ci0JCWF0b21pY19zZXQoJnBDaWZzRmlsZS0+d3J0UGVuZGluZywgMCk7Ci0KLQkJLyog c2V0IHRoZSBmb2xsb3dpbmcgaW4gb3BlbiBub3cKLQkJCQlwQ2lmc0ZpbGUtPnBmaWxlID0gZmls ZTsgKi8KLQkJd3JpdGVfbG9jaygmR2xvYmFsU01CU2VzbG9jayk7Ci0JCWxpc3RfYWRkKCZwQ2lm c0ZpbGUtPnRsaXN0LCAmdGNvbi0+b3BlbkZpbGVMaXN0KTsKLQkJcENpZnNJbm9kZSA9IENJRlNf SShuZXdpbm9kZSk7Ci0JCWlmIChwQ2lmc0lub2RlKSB7Ci0JCQkvKiBpZiByZWFkYWJsZSBmaWxl IGluc3RhbmNlIHB1dCBmaXJzdCBpbiBsaXN0Ki8KLQkJCWlmICh3cml0ZV9vbmx5KSB7Ci0JCQkJ bGlzdF9hZGRfdGFpbCgmcENpZnNGaWxlLT5mbGlzdCwKLQkJCQkJICAgICAgJnBDaWZzSW5vZGUt Pm9wZW5GaWxlTGlzdCk7Ci0JCQl9IGVsc2UgewotCQkJCWxpc3RfYWRkKCZwQ2lmc0ZpbGUtPmZs aXN0LAotCQkJCQkgJnBDaWZzSW5vZGUtPm9wZW5GaWxlTGlzdCk7Ci0JCQl9Ci0JCQlpZiAoKG9w bG9jayAmIDB4RikgPT0gT1BMT0NLX0VYQ0xVU0lWRSkgewotCQkJCXBDaWZzSW5vZGUtPmNsaWVu dENhbkNhY2hlQWxsID0gdHJ1ZTsKLQkJCQlwQ2lmc0lub2RlLT5jbGllbnRDYW5DYWNoZVJlYWQg PSB0cnVlOwotCQkJCWNGWUkoMSwgKCJFeGNsdXNpdmUgT3Bsb2NrIGlub2RlICVwIiwKLQkJCQkJ bmV3aW5vZGUpKTsKLQkJCX0gZWxzZSBpZiAoKG9wbG9jayAmIDB4RikgPT0gT1BMT0NLX1JFQUQp Ci0JCQkJcENpZnNJbm9kZS0+Y2xpZW50Q2FuQ2FjaGVSZWFkID0gdHJ1ZTsKLQkJfQotCQl3cml0 ZV91bmxvY2soJkdsb2JhbFNNQlNlc2xvY2spOworCQkJY2lmc19maWxsX2ZpbGVpbmZvKG5ld2lu b2RlLCBmaWxlSGFuZGxlLAorCQkJCQljaWZzX3NiLT50Y29uLCB3cml0ZV9vbmx5KTsKIAl9CiBj aWZzX2NyZWF0ZV9vdXQ6CiAJa2ZyZWUoYnVmKTsKQEAgLTU4MCwxNyArNjAyLDIxIEBAIGludCBj aWZzX21rbm9kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5LCBp bnQgbW9kZSwKIAlyZXR1cm4gcmM7CiB9CiAKLQogc3RydWN0IGRlbnRyeSAqCiBjaWZzX2xvb2t1 cChzdHJ1Y3QgaW5vZGUgKnBhcmVudF9kaXJfaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5 LAogCSAgICBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKIHsKIAlpbnQgeGlkOwogCWludCByYyA9IDA7 IC8qIHRvIGdldCBhcm91bmQgc3B1cmlvdXMgZ2NjIHdhcm5pbmcsIHNldCB0byB6ZXJvIGhlcmUg Ki8KKwlpbnQgb3Bsb2NrID0gMDsKKwlpbnQgbW9kZTsKKwlfX3UxNiBmaWxlSGFuZGxlID0gMDsK Kwlib29sIHBvc2l4X29wZW4gPSBmYWxzZTsKIAlzdHJ1Y3QgY2lmc19zYl9pbmZvICpjaWZzX3Ni OwogCXN0cnVjdCBjaWZzVGNvbkluZm8gKnBUY29uOwogCXN0cnVjdCBpbm9kZSAqbmV3SW5vZGUg PSBOVUxMOwogCWNoYXIgKmZ1bGxfcGF0aCA9IE5VTEw7CisJc3RydWN0IGZpbGUgKmZpbHA7CiAK IAl4aWQgPSBHZXRYaWQoKTsKIApAQCAtNjMyLDEyICs2NTgsMjcgQEAgY2lmc19sb29rdXAoc3Ry dWN0IGlub2RlICpwYXJlbnRfZGlyX2lub2RlLCBzdHJ1Y3QgZGVudHJ5ICpkaXJlbnRyeSwKIAl9 CiAJY0ZZSSgxLCAoIkZ1bGwgcGF0aDogJXMgaW5vZGUgPSAweCVwIiwgZnVsbF9wYXRoLCBkaXJl bnRyeS0+ZF9pbm9kZSkpOwogCi0JaWYgKHBUY29uLT51bml4X2V4dCkKLQkJcmMgPSBjaWZzX2dl dF9pbm9kZV9pbmZvX3VuaXgoJm5ld0lub2RlLCBmdWxsX3BhdGgsCi0JCQkJCSAgICAgIHBhcmVu dF9kaXJfaW5vZGUtPmlfc2IsIHhpZCk7Ci0JZWxzZQorCWlmIChwVGNvbi0+dW5peF9leHQpIHsK KwkJaWYgKCEobmQtPmZsYWdzICYgKExPT0tVUF9QQVJFTlQgfCBMT09LVVBfRElSRUNUT1JZKSkg JiYKKwkJCQkobmQtPmZsYWdzICYgTE9PS1VQX09QRU4pKSB7CisJCQlpZiAoISgobmQtPmludGVu dC5vcGVuLmZsYWdzICYgT19DUkVBVCkgJiYKKwkJCQkJKG5kLT5pbnRlbnQub3Blbi5mbGFncyAm IE9fRVhDTCkpKSB7CisJCQkJbW9kZSA9IG5kLT5pbnRlbnQub3Blbi5jcmVhdGVfbW9kZSAmCisJ CQkJCQl+Y3VycmVudC0+ZnMtPnVtYXNrOworCQkJCXJjID0gY2lmc19wb3NpeF9vcGVuKGZ1bGxf cGF0aCwgJm5ld0lub2RlLAorCQkJCQlwYXJlbnRfZGlyX2lub2RlLT5pX3NiLCBtb2RlLAorCQkJ CQluZC0+aW50ZW50Lm9wZW4uZmxhZ3MsICZvcGxvY2ssCisJCQkJCSZmaWxlSGFuZGxlLCB4aWQp OworCQkJCWlmICgocmMgIT0gLUVJTlZBTCkgJiYgKHJjICE9IC1FT1BOT1RTVVBQKSkKKwkJCQkJ cG9zaXhfb3BlbiA9IHRydWU7CisJCQl9CisJCX0KKwkJaWYgKCFwb3NpeF9vcGVuKQorCQkJcmMg PSBjaWZzX2dldF9pbm9kZV9pbmZvX3VuaXgoJm5ld0lub2RlLCBmdWxsX3BhdGgsCisJCQkJCQlw YXJlbnRfZGlyX2lub2RlLT5pX3NiLCB4aWQpOworCX0gZWxzZQogCQlyYyA9IGNpZnNfZ2V0X2lu b2RlX2luZm8oJm5ld0lub2RlLCBmdWxsX3BhdGgsIE5VTEwsCi0JCQkJCSBwYXJlbnRfZGlyX2lu b2RlLT5pX3NiLCB4aWQsIE5VTEwpOworCQkJCXBhcmVudF9kaXJfaW5vZGUtPmlfc2IsIHhpZCwg TlVMTCk7CiAKIAlpZiAoKHJjID09IDApICYmIChuZXdJbm9kZSAhPSBOVUxMKSkgewogCQlpZiAo cFRjb24tPm5vY2FzZSkKQEAgLTY0NSw3ICs2ODYsOCBAQCBjaWZzX2xvb2t1cChzdHJ1Y3QgaW5v ZGUgKnBhcmVudF9kaXJfaW5vZGUsIHN0cnVjdCBkZW50cnkgKmRpcmVudHJ5LAogCQllbHNlCiAJ CQlkaXJlbnRyeS0+ZF9vcCA9ICZjaWZzX2RlbnRyeV9vcHM7CiAJCWRfYWRkKGRpcmVudHJ5LCBu ZXdJbm9kZSk7Ci0KKwkJaWYgKHBvc2l4X29wZW4pCisJCQlmaWxwID0gbG9va3VwX2luc3RhbnRp YXRlX2ZpbHAobmQsIGRpcmVudHJ5LCBOVUxMKTsKIAkJLyogc2luY2UgcGF0aHMgYXJlIG5vdCBs b29rZWQgdXAgYnkgY29tcG9uZW50IC0gdGhlIHBhcmVudAogCQkgICBkaXJlY3RvcmllcyBhcmUg cHJlc3VtZWQgdG8gYmUgZ29vZCBoZXJlICovCiAJCXJlbmV3X3BhcmVudGFsX3RpbWVzdGFtcHMo ZGlyZW50cnkpOwpkaWZmIC0tZ2l0IGEvZnMvY2lmcy9maWxlLmMgYi9mcy9jaWZzL2ZpbGUuYwpp bmRleCA4MTc0N2FjLi5jM2Y1MWRlIDEwMDY0NAotLS0gYS9mcy9jaWZzL2ZpbGUuYworKysgYi9m cy9jaWZzL2ZpbGUuYwpAQCAtNDYsNyArNDYsNyBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBjaWZz RmlsZUluZm8gKmNpZnNfaW5pdF9wcml2YXRlKAogCW1lbXNldChwcml2YXRlX2RhdGEsIDAsIHNp emVvZihzdHJ1Y3QgY2lmc0ZpbGVJbmZvKSk7CiAJcHJpdmF0ZV9kYXRhLT5uZXRmaWQgPSBuZXRm aWQ7CiAJcHJpdmF0ZV9kYXRhLT5waWQgPSBjdXJyZW50LT50Z2lkOwotCWluaXRfTVVURVgoJnBy aXZhdGVfZGF0YS0+Zmhfc2VtKTsKKwltdXRleF9pbml0KCZwcml2YXRlX2RhdGEtPmZoX211dGV4 KTsKIAltdXRleF9pbml0KCZwcml2YXRlX2RhdGEtPmxvY2tfbXV0ZXgpOwogCUlOSVRfTElTVF9I RUFEKCZwcml2YXRlX2RhdGEtPmxsaXN0KTsKIAlwcml2YXRlX2RhdGEtPnBmaWxlID0gZmlsZTsg LyogbmVlZGVkIGZvciB3cml0ZXBhZ2UgKi8KQEAgLTI4NCwzNSArMjg0LDM0IEBAIGludCBjaWZz X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUpCiAJY2lmc19zYiA9 IENJRlNfU0IoaW5vZGUtPmlfc2IpOwogCXRjb24gPSBjaWZzX3NiLT50Y29uOwogCi0JaWYgKGZp bGUtPmZfZmxhZ3MgJiBPX0NSRUFUKSB7Ci0JCS8qIHNlYXJjaCBpbm9kZSBmb3IgdGhpcyBmaWxl IGFuZCBmaWxsIGluIGZpbGUtPnByaXZhdGVfZGF0YSAqLwotCQlwQ2lmc0lub2RlID0gQ0lGU19J KGZpbGUtPmZfcGF0aC5kZW50cnktPmRfaW5vZGUpOwotCQlyZWFkX2xvY2soJkdsb2JhbFNNQlNl c2xvY2spOwotCQlsaXN0X2Zvcl9lYWNoKHRtcCwgJnBDaWZzSW5vZGUtPm9wZW5GaWxlTGlzdCkg ewotCQkJcENpZnNGaWxlID0gbGlzdF9lbnRyeSh0bXAsIHN0cnVjdCBjaWZzRmlsZUluZm8sCi0J CQkJCSAgICAgICBmbGlzdCk7Ci0JCQlpZiAoKHBDaWZzRmlsZS0+cGZpbGUgPT0gTlVMTCkgJiYK LQkJCSAgICAocENpZnNGaWxlLT5waWQgPT0gY3VycmVudC0+dGdpZCkpIHsKLQkJCQkvKiBtb2Rl IHNldCBpbiBjaWZzX2NyZWF0ZSAqLwotCi0JCQkJLyogbmVlZGVkIGZvciB3cml0ZXBhZ2UgKi8K LQkJCQlwQ2lmc0ZpbGUtPnBmaWxlID0gZmlsZTsKLQotCQkJCWZpbGUtPnByaXZhdGVfZGF0YSA9 IHBDaWZzRmlsZTsKLQkJCQlicmVhazsKLQkJCX0KLQkJfQotCQlyZWFkX3VubG9jaygmR2xvYmFs U01CU2VzbG9jayk7Ci0JCWlmIChmaWxlLT5wcml2YXRlX2RhdGEgIT0gTlVMTCkgewotCQkJcmMg PSAwOwotCQkJRnJlZVhpZCh4aWQpOwotCQkJcmV0dXJuIHJjOwotCQl9IGVsc2UgewotCQkJaWYg KGZpbGUtPmZfZmxhZ3MgJiBPX0VYQ0wpCi0JCQkJY0VSUk9SKDEsICgiY291bGQgbm90IGZpbmQg ZmlsZSBpbnN0YW5jZSBmb3IgIgotCQkJCQkgICAibmV3IGZpbGUgJXAiLCBmaWxlKSk7CisJLyog c2VhcmNoIGlub2RlIGZvciB0aGlzIGZpbGUgYW5kIGZpbGwgaW4gZmlsZS0+cHJpdmF0ZV9kYXRh ICovCisJcENpZnNJbm9kZSA9IENJRlNfSShmaWxlLT5mX3BhdGguZGVudHJ5LT5kX2lub2RlKTsK KwlyZWFkX2xvY2soJkdsb2JhbFNNQlNlc2xvY2spOworCWxpc3RfZm9yX2VhY2godG1wLCAmcENp ZnNJbm9kZS0+b3BlbkZpbGVMaXN0KSB7CisJCXBDaWZzRmlsZSA9IGxpc3RfZW50cnkodG1wLCBz dHJ1Y3QgY2lmc0ZpbGVJbmZvLAorCQkJCSAgICAgICBmbGlzdCk7CisJCWlmICgocENpZnNGaWxl LT5wZmlsZSA9PSBOVUxMKSAmJgorCQkgICAgKHBDaWZzRmlsZS0+cGlkID09IGN1cnJlbnQtPnRn aWQpKSB7CisJCQkvKiBtb2RlIHNldCBpbiBjaWZzX2NyZWF0ZSAqLworCisJCQkvKiBuZWVkZWQg Zm9yIHdyaXRlcGFnZSAqLworCQkJcENpZnNGaWxlLT5wZmlsZSA9IGZpbGU7CisKKwkJCWZpbGUt PnByaXZhdGVfZGF0YSA9IHBDaWZzRmlsZTsKKwkJCWJyZWFrOwogCQl9CiAJfQorCXJlYWRfdW5s b2NrKCZHbG9iYWxTTUJTZXNsb2NrKTsKKworCWlmIChmaWxlLT5wcml2YXRlX2RhdGEgIT0gTlVM TCkgeworCQlyYyA9IDA7CisJCUZyZWVYaWQoeGlkKTsKKwkJcmV0dXJuIHJjOworCX0gZWxzZSB7 CisJCWlmICgoZmlsZS0+Zl9mbGFncyAmIE9fQ1JFQVQpICYmIChmaWxlLT5mX2ZsYWdzICYgT19F WENMKSkKKwkJCWNFUlJPUigxLCAoImNvdWxkIG5vdCBmaW5kIGZpbGUgaW5zdGFuY2UgZm9yICIK KwkJCQkgICAibmV3IGZpbGUgJXAiLCBmaWxlKSk7CisJfQogCiAJZnVsbF9wYXRoID0gYnVpbGRf cGF0aF9mcm9tX2RlbnRyeShmaWxlLT5mX3BhdGguZGVudHJ5KTsKIAlpZiAoZnVsbF9wYXRoID09 IE5VTEwpIHsKQEAgLTUwMCw5ICs0OTksOSBAQCBzdGF0aWMgaW50IGNpZnNfcmVvcGVuX2ZpbGUo c3RydWN0IGZpbGUgKmZpbGUsIGJvb2wgY2FuX2ZsdXNoKQogCQlyZXR1cm4gLUVCQURGOwogCiAJ eGlkID0gR2V0WGlkKCk7Ci0JZG93bigmcENpZnNGaWxlLT5maF9zZW0pOworCW11dGV4X3VubG9j aygmcENpZnNGaWxlLT5maF9tdXRleCk7CiAJaWYgKCFwQ2lmc0ZpbGUtPmludmFsaWRIYW5kbGUp IHsKLQkJdXAoJnBDaWZzRmlsZS0+Zmhfc2VtKTsKKwkJbXV0ZXhfbG9jaygmcENpZnNGaWxlLT5m aF9tdXRleCk7CiAJCUZyZWVYaWQoeGlkKTsKIAkJcmV0dXJuIDA7CiAJfQpAQCAtNTMzLDcgKzUz Miw3IEBAIHN0YXRpYyBpbnQgY2lmc19yZW9wZW5fZmlsZShzdHJ1Y3QgZmlsZSAqZmlsZSwgYm9v bCBjYW5fZmx1c2gpCiAJaWYgKGZ1bGxfcGF0aCA9PSBOVUxMKSB7CiAJCXJjID0gLUVOT01FTTsK IHJlb3Blbl9lcnJvcl9leGl0OgotCQl1cCgmcENpZnNGaWxlLT5maF9zZW0pOworCQltdXRleF9s b2NrKCZwQ2lmc0ZpbGUtPmZoX211dGV4KTsKIAkJRnJlZVhpZCh4aWQpOwogCQlyZXR1cm4gcmM7 CiAJfQpAQCAtNTc1LDE0ICs1NzQsMTQgQEAgcmVvcGVuX2Vycm9yX2V4aXQ6CiAJCQkgY2lmc19z Yi0+bG9jYWxfbmxzLCBjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmCiAJCQkJQ0lGU19NT1VOVF9N QVBfU1BFQ0lBTF9DSFIpOwogCWlmIChyYykgewotCQl1cCgmcENpZnNGaWxlLT5maF9zZW0pOwor CQltdXRleF9sb2NrKCZwQ2lmc0ZpbGUtPmZoX211dGV4KTsKIAkJY0ZZSSgxLCAoImNpZnNfb3Bl biByZXR1cm5lZCAweCV4IiwgcmMpKTsKIAkJY0ZZSSgxLCAoIm9wbG9jazogJWQiLCBvcGxvY2sp KTsKIAl9IGVsc2UgewogcmVvcGVuX3N1Y2Nlc3M6CiAJCXBDaWZzRmlsZS0+bmV0ZmlkID0gbmV0 ZmlkOwogCQlwQ2lmc0ZpbGUtPmludmFsaWRIYW5kbGUgPSBmYWxzZTsKLQkJdXAoJnBDaWZzRmls ZS0+Zmhfc2VtKTsKKwkJbXV0ZXhfbG9jaygmcENpZnNGaWxlLT5maF9tdXRleCk7CiAJCXBDaWZz SW5vZGUgPSBDSUZTX0koaW5vZGUpOwogCQlpZiAocENpZnNJbm9kZSkgewogCQkJaWYgKGNhbl9m bHVzaCkgewo= --0016e644c76cf2ff4b04666d17da--