From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Steve French" Subject: Re: DFS patches - progress Date: Tue, 20 May 2008 15:51:34 -0500 Message-ID: <524f69650805201351t41c3622bo9588716c0b457151@mail.gmail.com> References: <524f69650805201236m2eda681ay17a1bfac10fef287@mail.gmail.com> <20080520154215.34e78558@tleilax.poochiereds.net> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_18421_33357935.1211316695016" Cc: "Igor Mammedov" , linux-cifs-client@lists.samba.org, "David Howells" , linux-fsdevel To: "Jeff Layton" Return-path: Received: from fg-out-1718.google.com ([72.14.220.155]:11583 "EHLO fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758839AbYETUvz (ORCPT ); Tue, 20 May 2008 16:51:55 -0400 Received: by fg-out-1718.google.com with SMTP id 19so2098580fgg.17 for ; Tue, 20 May 2008 13:51:35 -0700 (PDT) In-Reply-To: <20080520154215.34e78558@tleilax.poochiereds.net> Sender: linux-fsdevel-owner@vger.kernel.org List-ID: ------=_Part_18421_33357935.1211316695016 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Patch to remove the QueryPathInfo retry and finish the fs/cifs/inode.c code needed to resolve DFS paths to non-Unix/non-Samba systems. If reviews ok - will merge into cifs-2.6.git tonight. On Tue, May 20, 2008 at 2:42 PM, Jeff Layton wrote: > On Tue, 20 May 2008 14:36:44 -0500 > "Steve French" wrote: > >> I am having a little trouble configuring/debugging the dns_resolver.sh >> upcall but the DFS link to ip address (127.0.0.1) works and requests >> to DFS refs with hostnames does not trap since Dave Howell's patch >> fixes the oops in the security/keys upcall. >> >> The beginning of the /proc/mounts entry for the submount looks ugly >> though (with the escape 134s in it) >> \134\134127.0.0.1\134stevef /mnt/dfs2docs cifs >> rw,unc=\\127.0.0.1\stevef,username=stevef,nocase,posixpaths,acl,rsize=16384,wsize=57344 >> 0 0 >> > > If you replace the backslashes with forward slashes in the > vfsmount.mnt_devname, then that will look prettier. The userspace mount > helper does this for "normal" mounts. > >> Coding the same kind of cifs fake-finddata patch fix for the >> non-Unix/Linux/Samba case now. >> > > > -- > Jeff Layton > -- Thanks, Steve ------=_Part_18421_33357935.1211316695016 Content-Type: text/x-diff; name=dfs-non-unix-enable-fill_fake_data.patch Content-Transfer-Encoding: base64 X-Attachment-Id: f_fggymyl10 Content-Disposition: attachment; filename=dfs-non-unix-enable-fill_fake_data.patch ZGlmZiAtLWdpdCBhL2ZzL2NpZnMvaW5vZGUuYyBiL2ZzL2NpZnMvaW5vZGUuYwppbmRleCA0MjJk NGUyLi4xY2Y0M2UxIDEwMDY0NAotLS0gYS9mcy9jaWZzL2lub2RlLmMKKysrIGIvZnMvY2lmcy9p bm9kZS5jCkBAIC0xNjEsNiArMTYxLDEyIEBAIHN0YXRpYyB2b2lkIGNpZnNfdW5peF9pbmZvX3Rv X2lub2RlKHN0cnVjdCBpbm9kZSAqaW5vZGUsCiAJc3Bpbl91bmxvY2soJmlub2RlLT5pX2xvY2sp OwogfQogCisKKy8qCisgKglOZWVkZWQgdG8gc2V0dXAgaW5vZGUgZGF0YSBmb3IgdGhlIGRpcmVj dG9yeSB3aGljaCBpcyB0aGUKKyAqCWp1bmN0aW9uIHRvIHRoZSBuZXcgc3VibW91bnQgKGllIHRv IHNldHVwIHRoZSBmYWtlIGRpcmVjdG9yeQorICogICAgICB3aGljaCByZXByZXNlbnRzIGEgREZT IHJlZmVycmFsKQorICovCiBzdGF0aWMgdm9pZCBmaWxsX2Zha2VfZmluZGRhdGF1bml4KEZJTEVf VU5JWF9CQVNJQ19JTkZPICpwZm5kX2RhdCwKIAkJCSAgICAgICBzdHJ1Y3Qgc3VwZXJfYmxvY2sg KnNiKQogewpAQCAtMzcwLDExICszNzYsNDIgQEAgc3RhdGljIGludCBnZXRfc2Z1X21vZGUoc3Ry dWN0IGlub2RlICppbm9kZSwKICNlbmRpZgogfQogCisvKgorICoJTmVlZGVkIHRvIHNldHVwIGlu b2RlIGRhdGEgZm9yIHRoZSBkaXJlY3Rvcnkgd2hpY2ggaXMgdGhlCisgKglqdW5jdGlvbiB0byB0 aGUgbmV3IHN1Ym1vdW50IChpZSB0byBzZXR1cCB0aGUgZmFrZSBkaXJlY3RvcnkKKyAqICAgICAg d2hpY2ggcmVwcmVzZW50cyBhIERGUyByZWZlcnJhbCkKKyAqLworc3RhdGljIHZvaWQgZmlsbF9m YWtlX2ZpbmRkYXRhKEZJTEVfQUxMX0lORk8gKnBmbmRfZGF0LAorCQkJICAgICAgIHN0cnVjdCBz dXBlcl9ibG9jayAqc2IpCit7CisJbWVtc2V0KHBmbmRfZGF0LCBzaXplb2YoRklMRV9BTExfSU5G TyksIDApOworCisvKglfX2xlNjQgcGZuZF9kYXQtPkFsbG9jYXRpb25TaXplID0gY3B1X3RvX2xl NjQoMCk7CisJX19sZTY0IHBmbmRfZGF0LT5FbmRPZkZpbGUgPSBjcHVfdG9fbGU2NCgwKTsKKwlf X3U4IHBmbmRfZGF0LT5EZWxldGVQZW5kaW5nID0gMDsKKwlfX3U4IHBmbmRfZGF0YS0+RGlyZWN0 b3J5ID0gMDsKKwlfX2xlMzIgcGZuZF9kYXQtPkVBU2l6ZSA9IDA7CisJX191NjQgcGZuZF9kYXQt PkluZGV4TnVtYmVyID0gMDsKKwlfX3U2NCBwZm5kX2RhdC0+SW5kZXhOdW1iZXIxID0gMDsgICov CisJcGZuZF9kYXQtPkNyZWF0aW9uVGltZSA9CisJCWNwdV90b19sZTY0KGNpZnNfVW5peFRpbWVU b05UKENVUlJFTlRfVElNRSkpOworCXBmbmRfZGF0LT5MYXN0QWNjZXNzVGltZSA9CisJCWNwdV90 b19sZTY0KGNpZnNfVW5peFRpbWVUb05UKENVUlJFTlRfVElNRSkpOworCXBmbmRfZGF0LT5MYXN0 V3JpdGVUaW1lID0KKwkJY3B1X3RvX2xlNjQoY2lmc19Vbml4VGltZVRvTlQoQ1VSUkVOVF9USU1F KSk7CisJcGZuZF9kYXQtPkNoYW5nZVRpbWUgPQorCQljcHVfdG9fbGU2NChjaWZzX1VuaXhUaW1l VG9OVChDVVJSRU5UX1RJTUUpKTsKKwlwZm5kX2RhdC0+QXR0cmlidXRlcyA9IGNwdV90b19sZTMy KEFUVFJfRElSRUNUT1JZKTsKKwlwZm5kX2RhdC0+TnVtYmVyT2ZMaW5rcyA9IGNwdV90b19sZTMy KDIpOworfQorCiBpbnQgY2lmc19nZXRfaW5vZGVfaW5mbyhzdHJ1Y3QgaW5vZGUgKipwaW5vZGUs CiAJY29uc3QgdW5zaWduZWQgY2hhciAqZnVsbF9wYXRoLCBGSUxFX0FMTF9JTkZPICpwZmluZERh dGEsCiAJc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgaW50IHhpZCwgY29uc3QgX191MTYgKnBmaWQp CiB7CiAJaW50IHJjID0gMDsKKwlfX3UzMiBhdHRyOworCXN0cnVjdCBjaWZzSW5vZGVJbmZvICpj aWZzSW5mbzsKIAlzdHJ1Y3QgY2lmc1Rjb25JbmZvICpwVGNvbjsKIAlzdHJ1Y3QgaW5vZGUgKmlu b2RlOwogCXN0cnVjdCBjaWZzX3NiX2luZm8gKmNpZnNfc2IgPSBDSUZTX1NCKHNiKTsKQEAgLTM5 OSw3ICs0MzYsNiBAQCBpbnQgY2lmc19nZXRfaW5vZGVfaW5mbyhzdHJ1Y3QgaW5vZGUgKipwaW5v ZGUsCiAJCQlyZXR1cm4gLUVOT01FTTsKIAkJcGZpbmREYXRhID0gKEZJTEVfQUxMX0lORk8gKili dWY7CiAKLXRyeV9hZ2Fpbl9DSUZTU01CUVBhdGhJbmZvOgogCQkvKiBjb3VsZCBkbyBmaW5kIGZp cnN0IGluc3RlYWQgYnV0IHRoaXMgcmV0dXJucyBtb3JlIGluZm8gKi8KIAkJcmMgPSBDSUZTU01C UVBhdGhJbmZvKHhpZCwgcFRjb24sIGZ1bGxfcGF0aCwgcGZpbmREYXRhLAogCQkJICAgICAgMCAv KiBub3QgbGVnYWN5ICovLApAQCAtNDE3LDE3MSArNDUzLDE2NyBAQCB0cnlfYWdhaW5fQ0lGU1NN QlFQYXRoSW5mbzoKIAkJfQogCX0KIAkvKiBkdW1wX21lbSgiXG5RUGF0aEluZm8gcmV0dXJuIGRh dGEiLCZmaW5kRGF0YSwgc2l6ZW9mKGZpbmREYXRhKSk7ICovCi0JaWYgKHJjKSB7Ci0JCWlmIChy YyA9PSAtRVJFTU9URSAmJiAhaXNfZGZzX3JlZmVycmFsKSB7Ci0JCQlpc19kZnNfcmVmZXJyYWwg PSB0cnVlOwotCQkJZ290byB0cnlfYWdhaW5fQ0lGU1NNQlFQYXRoSW5mbzsKLQkJfQorCWlmIChy YyA9PSAtRVJFTU9URSkgeworCQlpc19kZnNfcmVmZXJyYWwgPSB0cnVlOworCQlmaWxsX2Zha2Vf ZmluZGRhdGEocGZpbmREYXRhLCBzYik7CisJCXJjID0gMDsKKwl9IGVsc2UgaWYgKHJjKQogCQln b3RvIGNnaWlfZXhpdDsKLQl9IGVsc2UgewotCQlzdHJ1Y3QgY2lmc0lub2RlSW5mbyAqY2lmc0lu Zm87Ci0JCV9fdTMyIGF0dHIgPSBsZTMyX3RvX2NwdShwZmluZERhdGEtPkF0dHJpYnV0ZXMpOwog Ci0JCS8qIGdldCBuZXcgaW5vZGUgKi8KKwlhdHRyID0gbGUzMl90b19jcHUocGZpbmREYXRhLT5B dHRyaWJ1dGVzKTsKKworCS8qIGdldCBuZXcgaW5vZGUgKi8KKwlpZiAoKnBpbm9kZSA9PSBOVUxM KSB7CisJCSpwaW5vZGUgPSBuZXdfaW5vZGUoc2IpOwogCQlpZiAoKnBpbm9kZSA9PSBOVUxMKSB7 Ci0JCQkqcGlub2RlID0gbmV3X2lub2RlKHNiKTsKLQkJCWlmICgqcGlub2RlID09IE5VTEwpIHsK LQkJCQlyYyA9IC1FTk9NRU07Ci0JCQkJZ290byBjZ2lpX2V4aXQ7Ci0JCQl9Ci0JCQkvKiBJcyBh biBpX2lubyBvZiB6ZXJvIGxlZ2FsPyBDYW4gd2UgdXNlIHRoYXQgdG8gY2hlY2sKLQkJCSAgIGlm IHRoZSBzZXJ2ZXIgc3VwcG9ydHMgcmV0dXJuaW5nIGlub2RlIG51bWJlcnM/ICBBcmUKLQkJCSAg IHRoZXJlIG90aGVyIHNhbml0eSBjaGVja3Mgd2UgY2FuIHVzZSB0byBlbnN1cmUgdGhhdAotCQkJ ICAgdGhlIHNlcnZlciBpcyByZWFsbHkgZmlsbGluZyBpbiB0aGF0IGZpZWxkPyAqLworCQkJcmMg PSAtRU5PTUVNOworCQkJZ290byBjZ2lpX2V4aXQ7CisJCX0KKwkJLyogSXMgYW4gaV9pbm8gb2Yg emVybyBsZWdhbD8gQ2FuIHdlIHVzZSB0aGF0IHRvIGNoZWNrCisJCSAgIGlmIHRoZSBzZXJ2ZXIg c3VwcG9ydHMgcmV0dXJuaW5nIGlub2RlIG51bWJlcnM/ICBBcmUKKwkJICAgdGhlcmUgb3RoZXIg c2FuaXR5IGNoZWNrcyB3ZSBjYW4gdXNlIHRvIGVuc3VyZSB0aGF0CisJCSAgIHRoZSBzZXJ2ZXIg aXMgcmVhbGx5IGZpbGxpbmcgaW4gdGhhdCBmaWVsZD8gKi8KIAotCQkJLyogV2UgY2FuIG5vdCB1 c2UgdGhlIEluZGV4TnVtYmVyIGZpZWxkIGJ5IGRlZmF1bHQgZnJvbQotCQkJICAgV2luZG93cyBv ciBTYW1iYSAoaW4gQUxMX0lORk8gYnVmKSBidXQgd2UgY2FuIHJlcXVlc3QKLQkJCSAgIGl0IGV4 cGxpY2l0bHkuICBJdCBtYXkgbm90IGJlIHVuaXF1ZSBwcmVzdW1hYmx5IGlmCi0JCQkgICB0aGUg c2VydmVyIGhhcyBtdWx0aXBsZSBkZXZpY2VzIG1vdW50ZWQgdW5kZXIgb25lCi0JCQkgICBzaGFy ZSAqLworCQkvKiBXZSBjYW4gbm90IHVzZSB0aGUgSW5kZXhOdW1iZXIgZmllbGQgYnkgZGVmYXVs dCBmcm9tCisJCSAgIFdpbmRvd3Mgb3IgU2FtYmEgKGluIEFMTF9JTkZPIGJ1ZikgYnV0IHdlIGNh biByZXF1ZXN0CisJCSAgIGl0IGV4cGxpY2l0bHkuICBJdCBtYXkgbm90IGJlIHVuaXF1ZSBwcmVz dW1hYmx5IGlmCisJCSAgIHRoZSBzZXJ2ZXIgaGFzIG11bHRpcGxlIGRldmljZXMgbW91bnRlZCB1 bmRlciBvbmUgc2hhcmUgKi8KIAotCQkJLyogVGhlcmUgbWF5IGJlIGhpZ2hlciBpbmZvIGxldmVs cyB0aGF0IHdvcmsgYnV0IGFyZQotCQkJICAgdGhlcmUgV2luZG93cyBzZXJ2ZXIgb3IgbmV0d29y ayBhcHBsaWFuY2VzIGZvciB3aGljaAotCQkJICAgSW5kZXhOdW1iZXIgZmllbGQgaXMgbm90IGd1 YXJhbnRlZWQgdW5pcXVlPyAqLworCQkvKiBUaGVyZSBtYXkgYmUgaGlnaGVyIGluZm8gbGV2ZWxz IHRoYXQgd29yayBidXQgYXJlCisJCSAgIHRoZXJlIFdpbmRvd3Mgc2VydmVyIG9yIG5ldHdvcmsg YXBwbGlhbmNlcyBmb3Igd2hpY2gKKwkJICAgSW5kZXhOdW1iZXIgZmllbGQgaXMgbm90IGd1YXJh bnRlZWQgdW5pcXVlPyAqLwogCi0JCQlpZiAoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZT X01PVU5UX1NFUlZFUl9JTlVNKSB7Ci0JCQkJaW50IHJjMSA9IDA7Ci0JCQkJX191NjQgaW5vZGVf bnVtOworCQlpZiAoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5UX1NFUlZFUl9J TlVNKSB7CisJCQlpbnQgcmMxID0gMDsKKwkJCV9fdTY0IGlub2RlX251bTsKIAotCQkJCXJjMSA9 IENJRlNHZXRTcnZJbm9kZU51bWJlcih4aWQsIHBUY29uLAorCQkJcmMxID0gQ0lGU0dldFNydklu b2RlTnVtYmVyKHhpZCwgcFRjb24sCiAJCQkJCWZ1bGxfcGF0aCwgJmlub2RlX251bSwKIAkJCQkJ Y2lmc19zYi0+bG9jYWxfbmxzLAogCQkJCQljaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmCiAJCQkJ CQlDSUZTX01PVU5UX01BUF9TUEVDSUFMX0NIUik7Ci0JCQkJaWYgKHJjMSkgewotCQkJCQljRllJ KDEsICgiR2V0U3J2SW5vZGVOdW0gcmMgJWQiLCByYzEpKTsKLQkJCQkJLyogQkIgRU9QTk9TVVBQ IGRpc2FibGUgU0VSVkVSX0lOVU0/ICovCi0JCQkJfSBlbHNlIC8qIGRvIHdlIG5lZWQgY2FzdCBv ciBoYXNoIHRvIGlubz8gKi8KLQkJCQkJKCpwaW5vZGUpLT5pX2lubyA9IGlub2RlX251bTsKLQkJ CX0gLyogZWxzZSBpbm8gaW5jcmVtZW50ZWQgdG8gdW5pcXVlIG51bSBpbiBuZXdfaW5vZGUqLwot CQkJaWYgKHNiLT5zX2ZsYWdzICYgTVNfTk9BVElNRSkKLQkJCQkoKnBpbm9kZSktPmlfZmxhZ3Mg fD0gU19OT0FUSU1FIHwgU19OT0NNVElNRTsKLQkJCWluc2VydF9pbm9kZV9oYXNoKCpwaW5vZGUp OwotCQl9Ci0JCWlub2RlID0gKnBpbm9kZTsKLQkJY2lmc0luZm8gPSBDSUZTX0koaW5vZGUpOwot CQljaWZzSW5mby0+Y2lmc0F0dHJzID0gYXR0cjsKLQkJY0ZZSSgxLCAoIk9sZCB0aW1lICVsZCIs IGNpZnNJbmZvLT50aW1lKSk7Ci0JCWNpZnNJbmZvLT50aW1lID0gamlmZmllczsKLQkJY0ZZSSgx LCAoIk5ldyB0aW1lICVsZCIsIGNpZnNJbmZvLT50aW1lKSk7Ci0KLQkJLyogYmxrc2l6ZSBuZWVk cyB0byBiZSBtdWx0aXBsZSBvZiB0d28uIFNvIHNhZmVyIHRvIGRlZmF1bHQgdG8KLQkJYmxrc2l6 ZSBhbmQgYmxrYml0cyBzZXQgaW4gc3VwZXJibG9jayBzbyAyKipibGtiaXRzIGFuZCBibGtzaXpl Ci0JCXdpbGwgbWF0Y2ggcmF0aGVyIHRoYW4gc2V0dGluZyB0bzoKLQkJKHBUY29uLT5zZXMtPnNl cnZlci0+bWF4QnVmIC0gTUFYX0NJRlNfSERSX1NJWkUpICYgMHhGRkZGRkUwMDsqLwotCi0JCS8q IExpbnV4IGNhbiBub3Qgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1lIHNvIGlnbm9yZSBpdCAqLwot CQlpZiAocGZpbmREYXRhLT5MYXN0QWNjZXNzVGltZSkKLQkJCWlub2RlLT5pX2F0aW1lID0gY2lm c19OVHRpbWVUb1VuaXgKLQkJCQkobGU2NF90b19jcHUocGZpbmREYXRhLT5MYXN0QWNjZXNzVGlt ZSkpOwotCQllbHNlIC8qIGRvIG5vdCBuZWVkIHRvIHVzZSBjdXJyZW50X2ZzX3RpbWUgLSB0aW1l IG5vdCBzdG9yZWQgKi8KLQkJCWlub2RlLT5pX2F0aW1lID0gQ1VSUkVOVF9USU1FOwotCQlpbm9k ZS0+aV9tdGltZSA9CisJCQlpZiAocmMxKSB7CisJCQkJY0ZZSSgxLCAoIkdldFNydklub2RlTnVt IHJjICVkIiwgcmMxKSk7CisJCQkJLyogQkIgRU9QTk9TVVBQIGRpc2FibGUgU0VSVkVSX0lOVU0/ ICovCisJCQl9IGVsc2UgLyogZG8gd2UgbmVlZCBjYXN0IG9yIGhhc2ggdG8gaW5vPyAqLworCQkJ CSgqcGlub2RlKS0+aV9pbm8gPSBpbm9kZV9udW07CisJCX0gLyogZWxzZSBpbm8gaW5jcmVtZW50 ZWQgdG8gdW5pcXVlIG51bSBpbiBuZXdfaW5vZGUqLworCQlpZiAoc2ItPnNfZmxhZ3MgJiBNU19O T0FUSU1FKQorCQkJKCpwaW5vZGUpLT5pX2ZsYWdzIHw9IFNfTk9BVElNRSB8IFNfTk9DTVRJTUU7 CisJCWluc2VydF9pbm9kZV9oYXNoKCpwaW5vZGUpOworCX0KKwlpbm9kZSA9ICpwaW5vZGU7CisJ Y2lmc0luZm8gPSBDSUZTX0koaW5vZGUpOworCWNpZnNJbmZvLT5jaWZzQXR0cnMgPSBhdHRyOwor CWNGWUkoMSwgKCJPbGQgdGltZSAlbGQiLCBjaWZzSW5mby0+dGltZSkpOworCWNpZnNJbmZvLT50 aW1lID0gamlmZmllczsKKwljRllJKDEsICgiTmV3IHRpbWUgJWxkIiwgY2lmc0luZm8tPnRpbWUp KTsKKworCS8qIGJsa3NpemUgbmVlZHMgdG8gYmUgbXVsdGlwbGUgb2YgdHdvLiBTbyBzYWZlciB0 byBkZWZhdWx0IHRvCisJYmxrc2l6ZSBhbmQgYmxrYml0cyBzZXQgaW4gc3VwZXJibG9jayBzbyAy KipibGtiaXRzIGFuZCBibGtzaXplCisJd2lsbCBtYXRjaCByYXRoZXIgdGhhbiBzZXR0aW5nIHRv OgorCShwVGNvbi0+c2VzLT5zZXJ2ZXItPm1heEJ1ZiAtIE1BWF9DSUZTX0hEUl9TSVpFKSAmIDB4 RkZGRkZFMDA7Ki8KKworCS8qIExpbnV4IGNhbiBub3Qgc3RvcmUgZmlsZSBjcmVhdGlvbiB0aW1l IHNvIGlnbm9yZSBpdCAqLworCWlmIChwZmluZERhdGEtPkxhc3RBY2Nlc3NUaW1lKQorCQlpbm9k ZS0+aV9hdGltZSA9IGNpZnNfTlR0aW1lVG9Vbml4CisJCQkobGU2NF90b19jcHUocGZpbmREYXRh LT5MYXN0QWNjZXNzVGltZSkpOworCWVsc2UgLyogZG8gbm90IG5lZWQgdG8gdXNlIGN1cnJlbnRf ZnNfdGltZSAtIHRpbWUgbm90IHN0b3JlZCAqLworCQlpbm9kZS0+aV9hdGltZSA9IENVUlJFTlRf VElNRTsKKwlpbm9kZS0+aV9tdGltZSA9CiAJCSAgICBjaWZzX05UdGltZVRvVW5peChsZTY0X3Rv X2NwdShwZmluZERhdGEtPkxhc3RXcml0ZVRpbWUpKTsKLQkJaW5vZGUtPmlfY3RpbWUgPQotCQkg ICAgY2lmc19OVHRpbWVUb1VuaXgobGU2NF90b19jcHUocGZpbmREYXRhLT5DaGFuZ2VUaW1lKSk7 Ci0JCWNGWUkoMCwgKCJBdHRyaWJ1dGVzIGNhbWUgaW4gYXMgMHgleCIsIGF0dHIpKTsKLQkJaWYg KGFkanVzdFRaICYmIChwVGNvbi0+c2VzKSAmJiAocFRjb24tPnNlcy0+c2VydmVyKSkgewotCQkJ aW5vZGUtPmlfY3RpbWUudHZfc2VjICs9IHBUY29uLT5zZXMtPnNlcnZlci0+dGltZUFkajsKLQkJ CWlub2RlLT5pX210aW1lLnR2X3NlYyArPSBwVGNvbi0+c2VzLT5zZXJ2ZXItPnRpbWVBZGo7Ci0J CX0KKwlpbm9kZS0+aV9jdGltZSA9CisJICAgIGNpZnNfTlR0aW1lVG9Vbml4KGxlNjRfdG9fY3B1 KHBmaW5kRGF0YS0+Q2hhbmdlVGltZSkpOworCWNGWUkoREJHMiwgKCJBdHRyaWJ1dGVzIGNhbWUg aW4gYXMgMHgleCIsIGF0dHIpKTsKKwlpZiAoYWRqdXN0VFogJiYgKHBUY29uLT5zZXMpICYmIChw VGNvbi0+c2VzLT5zZXJ2ZXIpKSB7CisJCWlub2RlLT5pX2N0aW1lLnR2X3NlYyArPSBwVGNvbi0+ c2VzLT5zZXJ2ZXItPnRpbWVBZGo7CisJCWlub2RlLT5pX210aW1lLnR2X3NlYyArPSBwVGNvbi0+ c2VzLT5zZXJ2ZXItPnRpbWVBZGo7CisJfQogCi0JCS8qIHNldCBkZWZhdWx0IG1vZGUuIHdpbGwg b3ZlcnJpZGUgZm9yIGRpcnMgYmVsb3cgKi8KLQkJaWYgKGF0b21pY19yZWFkKCZjaWZzSW5mby0+ aW5Vc2UpID09IDApCi0JCQkvKiBuZXcgaW5vZGUsIGNhbiBzYWZlbHkgc2V0IHRoZXNlIGZpZWxk cyAqLwotCQkJaW5vZGUtPmlfbW9kZSA9IGNpZnNfc2ItPm1udF9maWxlX21vZGU7Ci0JCWVsc2Ug Lyogc2luY2Ugd2Ugc2V0IHRoZSBpbm9kZSB0eXBlIGJlbG93IHdlIG5lZWQgdG8gbWFzayBvZmYK LQkJICAgICB0byBhdm9pZCBzdHJhbmdlIHJlc3VsdHMgaWYgdHlwZSBjaGFuZ2VzIGFuZCBib3Ro Ci0JCSAgICAgZ2V0IG9ycmVkIGluICovCi0JCQlpbm9kZS0+aV9tb2RlICY9IH5TX0lGTVQ7Ci0v KgkJaWYgKGF0dHIgJiBBVFRSX1JFUEFSU0UpICAqLwotCQkvKiBXZSBubyBsb25nZXIgaGFuZGxl IHRoZXNlIGFzIHN5bWxpbmtzIGJlY2F1c2Ugd2UgY291bGQgbm90Ci0JCSAgIGZvbGxvdyB0aGVt IGR1ZSB0byB0aGUgYWJzb2x1dGUgcGF0aCB3aXRoIGRyaXZlIGxldHRlciAqLwotCQlpZiAoYXR0 ciAmIEFUVFJfRElSRUNUT1JZKSB7Ci0JCS8qIG92ZXJyaWRlIGRlZmF1bHQgcGVybXMgc2luY2Ug d2UgZG8gbm90IGRvIGJ5dGUgcmFuZ2UgbG9ja2luZwotCQkgICBvbiBkaXJzICovCi0JCQlpbm9k ZS0+aV9tb2RlID0gY2lmc19zYi0+bW50X2Rpcl9tb2RlOwotCQkJaW5vZGUtPmlfbW9kZSB8PSBT X0lGRElSOwotCQl9IGVsc2UgaWYgKChjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmIENJRlNfTU9V TlRfVU5YX0VNVUwpICYmCi0JCQkgICAoY2lmc0luZm8tPmNpZnNBdHRycyAmIEFUVFJfU1lTVEVN KSAmJgotCQkJICAgLyogTm8gbmVlZCB0byBsZTY0IGNvbnZlcnQgc2l6ZSBvZiB6ZXJvICovCi0J CQkgICAocGZpbmREYXRhLT5FbmRPZkZpbGUgPT0gMCkpIHsKLQkJCWlub2RlLT5pX21vZGUgPSBj aWZzX3NiLT5tbnRfZmlsZV9tb2RlOwotCQkJaW5vZGUtPmlfbW9kZSB8PSBTX0lGSUZPOworCS8q IHNldCBkZWZhdWx0IG1vZGUuIHdpbGwgb3ZlcnJpZGUgZm9yIGRpcnMgYmVsb3cgKi8KKwlpZiAo YXRvbWljX3JlYWQoJmNpZnNJbmZvLT5pblVzZSkgPT0gMCkKKwkJLyogbmV3IGlub2RlLCBjYW4g c2FmZWx5IHNldCB0aGVzZSBmaWVsZHMgKi8KKwkJaW5vZGUtPmlfbW9kZSA9IGNpZnNfc2ItPm1u dF9maWxlX21vZGU7CisJZWxzZSAvKiBzaW5jZSB3ZSBzZXQgdGhlIGlub2RlIHR5cGUgYmVsb3cg d2UgbmVlZCB0byBtYXNrIG9mZgorCSAgICAgdG8gYXZvaWQgc3RyYW5nZSByZXN1bHRzIGlmIHR5 cGUgY2hhbmdlcyBhbmQgYm90aAorCSAgICAgZ2V0IG9ycmVkIGluICovCisJCWlub2RlLT5pX21v ZGUgJj0gflNfSUZNVDsKKy8qCWlmIChhdHRyICYgQVRUUl9SRVBBUlNFKSAgKi8KKwkvKiBXZSBu byBsb25nZXIgaGFuZGxlIHRoZXNlIGFzIHN5bWxpbmtzIGJlY2F1c2Ugd2UgY291bGQgbm90CisJ ICAgZm9sbG93IHRoZW0gZHVlIHRvIHRoZSBhYnNvbHV0ZSBwYXRoIHdpdGggZHJpdmUgbGV0dGVy ICovCisJaWYgKGF0dHIgJiBBVFRSX0RJUkVDVE9SWSkgeworCS8qIG92ZXJyaWRlIGRlZmF1bHQg cGVybXMgc2luY2Ugd2UgZG8gbm90IGRvIGJ5dGUgcmFuZ2UgbG9ja2luZworCSAgIG9uIGRpcnMg Ki8KKwkJaW5vZGUtPmlfbW9kZSA9IGNpZnNfc2ItPm1udF9kaXJfbW9kZTsKKwkJaW5vZGUtPmlf bW9kZSB8PSBTX0lGRElSOworCX0gZWxzZSBpZiAoKGNpZnNfc2ItPm1udF9jaWZzX2ZsYWdzICYg Q0lGU19NT1VOVF9VTlhfRU1VTCkgJiYKKwkJICAgKGNpZnNJbmZvLT5jaWZzQXR0cnMgJiBBVFRS X1NZU1RFTSkgJiYKKwkJICAgLyogTm8gbmVlZCB0byBsZTY0IGNvbnZlcnQgc2l6ZSBvZiB6ZXJv ICovCisJCSAgIChwZmluZERhdGEtPkVuZE9mRmlsZSA9PSAwKSkgeworCQlpbm9kZS0+aV9tb2Rl ID0gY2lmc19zYi0+bW50X2ZpbGVfbW9kZTsKKwkJaW5vZGUtPmlfbW9kZSB8PSBTX0lGSUZPOwog LyogQkIgRmluaXNoIGZvciBTRlUgc3R5bGUgc3ltbGlua3MgYW5kIGRldmljZXMgKi8KLQkJfSBl bHNlIGlmICgoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5UX1VOWF9FTVVMKSAm JgotCQkJICAgKGNpZnNJbmZvLT5jaWZzQXR0cnMgJiBBVFRSX1NZU1RFTSkpIHsKLQkJCWlmIChk ZWNvZGVfc2Z1X2lub2RlKGlub2RlLAotCQkJCQkgbGU2NF90b19jcHUocGZpbmREYXRhLT5FbmRP ZkZpbGUpLAotCQkJCQkgZnVsbF9wYXRoLAotCQkJCQkgY2lmc19zYiwgeGlkKSkKLQkJCQljRllJ KDEsICgiVW5yZWNvZ25pemVkIHNmdSBpbm9kZSB0eXBlIikpOwotCi0JCQljRllJKDEsICgic2Z1 IG1vZGUgMCVvIiwgaW5vZGUtPmlfbW9kZSkpOwotCQl9IGVsc2UgewotCQkJaW5vZGUtPmlfbW9k ZSB8PSBTX0lGUkVHOwotCQkJLyogdHJlYXQgdGhlIGRvcyBhdHRyaWJ1dGUgb2YgcmVhZC1vbmx5 IGFzIHJlYWQtb25seQotCQkJICAgbW9kZSBlLmcuIDU1NSAqLwotCQkJaWYgKGNpZnNJbmZvLT5j aWZzQXR0cnMgJiBBVFRSX1JFQURPTkxZKQotCQkJCWlub2RlLT5pX21vZGUgJj0gfihTX0lXVUdP KTsKLQkJCWVsc2UgaWYgKChpbm9kZS0+aV9tb2RlICYgU19JV1VHTykgPT0gMCkKLQkJCQkvKiB0 aGUgQVRUUl9SRUFET05MWSBmbGFnIG1heSBoYXZlIGJlZW4JKi8KLQkJCQkvKiBjaGFuZ2VkIG9u IHNlcnZlciAtLSBzZXQgYW55IHcgYml0cwkqLwotCQkJCS8qIGFsbG93ZWQgYnkgbW50X2ZpbGVf bW9kZQkJKi8KLQkJCQlpbm9kZS0+aV9tb2RlIHw9IChTX0lXVUdPICYKLQkJCQkJCSAgY2lmc19z Yi0+bW50X2ZpbGVfbW9kZSk7Ci0JCS8qIEJCIGFkZCBjb2RlIGhlcmUgLQotCQkgICB2YWxpZGF0 ZSBpZiBkZXZpY2Ugb3Igd2VpcmQgc2hhcmUgb3IgZGV2aWNlIHR5cGU/ICovCi0JCX0KKwl9IGVs c2UgaWYgKChjaWZzX3NiLT5tbnRfY2lmc19mbGFncyAmIENJRlNfTU9VTlRfVU5YX0VNVUwpICYm CisJCSAgIChjaWZzSW5mby0+Y2lmc0F0dHJzICYgQVRUUl9TWVNURU0pKSB7CisJCWlmIChkZWNv ZGVfc2Z1X2lub2RlKGlub2RlLCBsZTY0X3RvX2NwdShwZmluZERhdGEtPkVuZE9mRmlsZSksCisJ CQkJICAgICBmdWxsX3BhdGgsIGNpZnNfc2IsIHhpZCkpCisJCQljRllJKDEsICgiVW5yZWNvZ25p emVkIHNmdSBpbm9kZSB0eXBlIikpOwogCi0JCXNwaW5fbG9jaygmaW5vZGUtPmlfbG9jayk7Ci0J CWlmIChpc19zaXplX3NhZmVfdG9fY2hhbmdlKGNpZnNJbmZvLAotCQkJCQkgICBsZTY0X3RvX2Nw dShwZmluZERhdGEtPkVuZE9mRmlsZSkpKSB7Ci0JCQkvKiBjYW4gbm90IHNhZmVseSBzaHJpbmsg dGhlIGZpbGUgc2l6ZSBoZXJlIGlmIHRoZQotCQkJICAgY2xpZW50IGlzIHdyaXRpbmcgdG8gaXQg ZHVlIHRvIHBvdGVudGlhbCByYWNlcyAqLwotCQkJaV9zaXplX3dyaXRlKGlub2RlLCBsZTY0X3Rv X2NwdShwZmluZERhdGEtPkVuZE9mRmlsZSkpOwotCi0JCQkvKiA1MTIgYnl0ZXMgKDIqKjkpIGlz IHRoZSBmYWtlIGJsb2Nrc2l6ZSB0aGF0IG11c3QgYmUKLQkJCSAgIHVzZWQgZm9yIHRoaXMgY2Fs Y3VsYXRpb24gKi8KLQkJCWlub2RlLT5pX2Jsb2NrcyA9ICg1MTIgLSAxICsgbGU2NF90b19jcHUo Ci0JCQkJCSAgIHBmaW5kRGF0YS0+QWxsb2NhdGlvblNpemUpKSA+PiA5OwotCQl9Ci0JCXNwaW5f dW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsKKwkJY0ZZSSgxLCAoInNmdSBtb2RlIDAlbyIsIGlub2Rl LT5pX21vZGUpKTsKKwl9IGVsc2UgeworCQlpbm9kZS0+aV9tb2RlIHw9IFNfSUZSRUc7CisJCS8q IHRyZWF0IGRvcyBhdHRyaWJ1dGUgb2YgcmVhZC1vbmx5IGFzIHJlYWQtb25seSBtb2RlIGVnIDU1 NSAqLworCQlpZiAoY2lmc0luZm8tPmNpZnNBdHRycyAmIEFUVFJfUkVBRE9OTFkpCisJCQlpbm9k ZS0+aV9tb2RlICY9IH4oU19JV1VHTyk7CisJCWVsc2UgaWYgKChpbm9kZS0+aV9tb2RlICYgU19J V1VHTykgPT0gMCkKKwkJCS8qIHRoZSBBVFRSX1JFQURPTkxZIGZsYWcgbWF5IGhhdmUgYmVlbgkq LworCQkJLyogY2hhbmdlZCBvbiBzZXJ2ZXIgLS0gc2V0IGFueSB3IGJpdHMJKi8KKwkJCS8qIGFs bG93ZWQgYnkgbW50X2ZpbGVfbW9kZQkJKi8KKwkJCWlub2RlLT5pX21vZGUgfD0gKFNfSVdVR08g JiBjaWZzX3NiLT5tbnRfZmlsZV9tb2RlKTsKKwkvKiBCQiBhZGQgY29kZSB0byB2YWxpZGF0ZSBp ZiBkZXZpY2Ugb3Igd2VpcmQgc2hhcmUgb3IgZGV2aWNlIHR5cGU/ICovCisJfQorCisJc3Bpbl9s b2NrKCZpbm9kZS0+aV9sb2NrKTsKKwlpZiAoaXNfc2l6ZV9zYWZlX3RvX2NoYW5nZShjaWZzSW5m bywKKwkJCQkgICBsZTY0X3RvX2NwdShwZmluZERhdGEtPkVuZE9mRmlsZSkpKSB7CisJCS8qIGNh biBub3Qgc2FmZWx5IHNocmluayB0aGUgZmlsZSBzaXplIGhlcmUgaWYgdGhlCisJCSAgIGNsaWVu dCBpcyB3cml0aW5nIHRvIGl0IGR1ZSB0byBwb3RlbnRpYWwgcmFjZXMgKi8KKwkJaV9zaXplX3dy aXRlKGlub2RlLCBsZTY0X3RvX2NwdShwZmluZERhdGEtPkVuZE9mRmlsZSkpOworCisJCS8qIDUx MiBieXRlcyAoMioqOSkgaXMgdGhlIGZha2UgYmxvY2tzaXplIHRoYXQgbXVzdCBiZQorCQkgICB1 c2VkIGZvciB0aGlzIGNhbGN1bGF0aW9uICovCisJCWlub2RlLT5pX2Jsb2NrcyA9ICg1MTIgLSAx ICsgbGU2NF90b19jcHUoCisJCQkJICAgcGZpbmREYXRhLT5BbGxvY2F0aW9uU2l6ZSkpID4+IDk7 CisJfQorCXNwaW5fdW5sb2NrKCZpbm9kZS0+aV9sb2NrKTsKIAotCQlpbm9kZS0+aV9ubGluayA9 IGxlMzJfdG9fY3B1KHBmaW5kRGF0YS0+TnVtYmVyT2ZMaW5rcyk7CisJaW5vZGUtPmlfbmxpbmsg PSBsZTMyX3RvX2NwdShwZmluZERhdGEtPk51bWJlck9mTGlua3MpOwogCi0JCS8qIEJCIGZpbGwg aW4gdWlkIGFuZCBnaWQgaGVyZT8gd2l0aCBoZWxwIGZyb20gd2luYmluZD8KLQkJICAgb3IgcmV0 cmlldmUgZnJvbSBOVEZTIHN0cmVhbSBleHRlbmRlZCBhdHRyaWJ1dGUgKi8KKwkvKiBCQiBmaWxs IGluIHVpZCBhbmQgZ2lkIGhlcmU/IHdpdGggaGVscCBmcm9tIHdpbmJpbmQ/CisJICAgb3IgcmV0 cmlldmUgZnJvbSBOVEZTIHN0cmVhbSBleHRlbmRlZCBhdHRyaWJ1dGUgKi8KICNpZmRlZiBDT05G SUdfQ0lGU19FWFBFUklNRU5UQUwKLQkJLyogZmlsbCBpbiAwNzc3IGJpdHMgZnJvbSBBQ0wgKi8K LQkJaWYgKGNpZnNfc2ItPm1udF9jaWZzX2ZsYWdzICYgQ0lGU19NT1VOVF9DSUZTX0FDTCkgewot CQkJY0ZZSSgxLCAoIkdldHRpbmcgbW9kZSBiaXRzIGZyb20gQUNMIikpOwotCQkJYWNsX3RvX3Vp ZF9tb2RlKGlub2RlLCBmdWxsX3BhdGgsIHBmaWQpOwotCQl9CisJLyogZmlsbCBpbiAwNzc3IGJp dHMgZnJvbSBBQ0wgKi8KKwlpZiAoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5U X0NJRlNfQUNMKSB7CisJCWNGWUkoMSwgKCJHZXR0aW5nIG1vZGUgYml0cyBmcm9tIEFDTCIpKTsK KwkJYWNsX3RvX3VpZF9tb2RlKGlub2RlLCBmdWxsX3BhdGgsIHBmaWQpOworCX0KICNlbmRpZgot CQlpZiAoY2lmc19zYi0+bW50X2NpZnNfZmxhZ3MgJiBDSUZTX01PVU5UX1VOWF9FTVVMKSB7Ci0J CQkvKiBmaWxsIGluIHJlbWFpbmluZyBoaWdoIG1vZGUgYml0cyBlLmcuIFNVSUQsIFZUWCAqLwot CQkJZ2V0X3NmdV9tb2RlKGlub2RlLCBmdWxsX3BhdGgsIGNpZnNfc2IsIHhpZCk7Ci0JCX0gZWxz ZSBpZiAoYXRvbWljX3JlYWQoJmNpZnNJbmZvLT5pblVzZSkgPT0gMCkgewotCQkJaW5vZGUtPmlf dWlkID0gY2lmc19zYi0+bW50X3VpZDsKLQkJCWlub2RlLT5pX2dpZCA9IGNpZnNfc2ItPm1udF9n aWQ7Ci0JCQkvKiBzZXQgc28gd2UgZG8gbm90IGtlZXAgcmVmcmVzaGluZyB0aGVzZSBmaWVsZHMg d2l0aAotCQkJICAgYmFkIGRhdGEgYWZ0ZXIgdXNlciBoYXMgY2hhbmdlZCB0aGVtIGluIG1lbW9y eSAqLwotCQkJYXRvbWljX3NldCgmY2lmc0luZm8tPmluVXNlLCAxKTsKLQkJfQotCi0JCWNpZnNf c2V0X29wcyhpbm9kZSwgaXNfZGZzX3JlZmVycmFsKTsKKwlpZiAoY2lmc19zYi0+bW50X2NpZnNf ZmxhZ3MgJiBDSUZTX01PVU5UX1VOWF9FTVVMKSB7CisJCS8qIGZpbGwgaW4gcmVtYWluaW5nIGhp Z2ggbW9kZSBiaXRzIGUuZy4gU1VJRCwgVlRYICovCisJCWdldF9zZnVfbW9kZShpbm9kZSwgZnVs bF9wYXRoLCBjaWZzX3NiLCB4aWQpOworCX0gZWxzZSBpZiAoYXRvbWljX3JlYWQoJmNpZnNJbmZv LT5pblVzZSkgPT0gMCkgeworCQlpbm9kZS0+aV91aWQgPSBjaWZzX3NiLT5tbnRfdWlkOworCQlp bm9kZS0+aV9naWQgPSBjaWZzX3NiLT5tbnRfZ2lkOworCQkvKiBzZXQgc28gd2UgZG8gbm90IGtl ZXAgcmVmcmVzaGluZyB0aGVzZSBmaWVsZHMgd2l0aAorCQkgICBiYWQgZGF0YSBhZnRlciB1c2Vy IGhhcyBjaGFuZ2VkIHRoZW0gaW4gbWVtb3J5ICovCisJCWF0b21pY19zZXQoJmNpZnNJbmZvLT5p blVzZSwgMSk7CiAJfQorCisJY2lmc19zZXRfb3BzKGlub2RlLCBpc19kZnNfcmVmZXJyYWwpOwor CisKKworCiBjZ2lpX2V4aXQ6CiAJa2ZyZWUoYnVmKTsKIAlyZXR1cm4gcmM7CiAK ------=_Part_18421_33357935.1211316695016--