From owner-freebsd-fs@FreeBSD.ORG Mon Apr 2 00:54:24 2012 Return-Path: Delivered-To: freebsd-fs@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 4225D106566B; Mon, 2 Apr 2012 00:54:24 +0000 (UTC) (envelope-from rmacklem@uoguelph.ca) Received: from esa-annu.mail.uoguelph.ca (esa-annu.mail.uoguelph.ca [131.104.91.36]) by mx1.freebsd.org (Postfix) with ESMTP id 8D7848FC1D; Mon, 2 Apr 2012 00:54:23 +0000 (UTC) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Ap8EACn4eE+DaFvO/2dsb2JhbABDhVSwLoQPghAjBFJEGQIEVQaIHK0liROQBIEYBI5ohnmQL4MD X-IronPort-AV: E=Sophos;i="4.75,354,1330923600"; d="scan'208";a="163247868" Received: from erie.cs.uoguelph.ca (HELO zcs3.mail.uoguelph.ca) ([131.104.91.206]) by esa-annu-pri.mail.uoguelph.ca with ESMTP; 01 Apr 2012 20:54:17 -0400 Received: from zcs3.mail.uoguelph.ca (localhost.localdomain [127.0.0.1]) by zcs3.mail.uoguelph.ca (Postfix) with ESMTP id 199DDB3FCC; Sun, 1 Apr 2012 20:54:17 -0400 (EDT) Date: Sun, 1 Apr 2012 20:54:17 -0400 (EDT) From: Rick Macklem To: FS List Message-ID: <1184428460.2076443.1333328057090.JavaMail.root@erie.cs.uoguelph.ca> In-Reply-To: <302424888.2076325.1333327897003.JavaMail.root@erie.cs.uoguelph.ca> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_2076442_2065523745.1333328057088" X-Originating-IP: [172.17.91.202] X-Mailer: Zimbra 6.0.10_GA_2692 (ZimbraWebClient - FF3.0 (Win)/6.0.10_GA_2692) Cc: alc@freebsd.org, Joel Ray Holveck , David Wolfskill Subject: RFC: which patch is preferred for fix to PR#165923 X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Apr 2012 00:54:24 -0000 ------=_Part_2076442_2065523745.1333328057088 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit First, a little background w.r.t. an offlist discussion of PR# 165923. A critical part of the problem reported is the credentials used to to the Write RPCs in the NFS client's VOP_PUTPAGES(). Currently the code simply uses the credentials of the thread that called VOP_PUTPAGES(), which is often incorrect, especially when the caller is "root" and the NFS server is doing "root squashing" (ie mapping root->nobody or similar). Although there is no correct answer w.r.t. what credentials should be used, there seemed to be rough consensus that the credentials of the process that did the mmap() call would be best. (If there are multiple writers, you could use either the 1st or most recent mmap(), but since all writers had write permissions at open(), I don't think it matters much which you use, but others can comment on this.) However, there seems to be some disagreement as to how a patch to use the mmap() credentials should be done. putpages-a.patch - This one captures the credentials during the mmap() call by using the property that only mmap() calls vnode_pager_alloc() with "prot != 0" and references them in a new field in vm_object_t. putpages-b.patch - This one adds a new VOP_PUTPAGES_NOTIFY() call, which is done by mmap(). For all file systems except NFS clients, it is a null op. For the NFS clients, they reference the credentials in a new field of the NFS specific part of the vnode. - I don't have a patch for the third one, but I believe Joel was proposing something similar to putpages-a.patch, except that the credentials are passed as an extra argument to VOP_PUTPAGES(), instead of the NFS client's VOP_PUTPAGES() looking in the vnode's vm_object_t for the cred. I've attached the first 2, in case anyone wants to look at them. Here's my take on the advantages/disadvantages of each patch: Advantages Disadvantages patch-a simple, doesn't require VOP changes and, therefore, can be MFC'd easily saves a largely NFS specific item in vm_object_t depends on the fact that only mmap() calls vnode_pager_alloc() with prot != 0 patch-b basically has the advantages/disadvantages of patch1 reversed, although it is pretty simple, too patch3 although it sounds cleaner to pass "cred" as an extra argument to VOP_PUTPAGES(), that makes it iffy (I'll let Joel discuss this) to MFC Sorry this was so long winded, but I figured it needed some explanation. I am hoping others have opinions w.r.t. which patch is more appropriate and that it comes to a rough consensus, so I'll know which one to prepare for a commit to head (and possible MFC). Hopefully Joel and Kostik will post, explaining their preferences. (Alternately, if they give me permission, I can re-post their previous offlist comments.) Thanks in advance for any comments on this, rick ------=_Part_2076442_2065523745.1333328057088 Content-Type: text/x-patch; name=putpages-a.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=putpages-a.patch LS0tIHZtL3Zub2RlX3BhZ2VyLmMuc2F2CTIwMTItMDMtMTMgMjA6MjM6MDMuMDAwMDAwMDAwIC0w NDAwCisrKyB2bS92bm9kZV9wYWdlci5jCTIwMTItMDMtMTUgMDk6NDE6MDIuMDAwMDAwMDAwIC0w NDAwCkBAIC02Miw2ICs2Miw3IEBAIF9fRkJTRElEKCIkRnJlZUJTRDogcHJvamVjdHMvbmZzdjQu MS1jbGkKICNpbmNsdWRlIDxzeXMvYnVmLmg+CiAjaW5jbHVkZSA8c3lzL3ZtbWV0ZXIuaD4KICNp bmNsdWRlIDxzeXMvbGltaXRzLmg+CisjaW5jbHVkZSA8c3lzL21tYW4uaD4KICNpbmNsdWRlIDxz eXMvY29uZi5oPgogI2luY2x1ZGUgPHN5cy9zZl9idWYuaD4KIApAQCAtMjIzLDYgKzIyNCwxMCBA QCByZXRyeToKIAogCQlvYmplY3QtPnVuX3BhZ2VyLnZucC52bnBfc2l6ZSA9IHNpemU7CiAJCW9i amVjdC0+dW5fcGFnZXIudm5wLndyaXRlbWFwcGluZ3MgPSAwOworCQlpZiAoKHByb3QgJiBQUk9U X1dSSVRFKSAhPSAwKQorCQkJb2JqZWN0LT51bl9wYWdlci52bnAuY3JlZCA9IGNyaG9sZChjcmVk KTsKKwkJZWxzZQorCQkJb2JqZWN0LT51bl9wYWdlci52bnAuY3JlZCA9IE5VTEw7CiAKIAkJb2Jq ZWN0LT5oYW5kbGUgPSBoYW5kbGU7CiAJCVZJX0xPQ0sodnApOwpAQCAtMjM4LDYgKzI0Myw5IEBA IHJldHJ5OgogCQlWSV9VTkxPQ0sodnApOwogCX0gZWxzZSB7CiAJCW9iamVjdC0+cmVmX2NvdW50 Kys7CisJCWlmIChvYmplY3QtPnVuX3BhZ2VyLnZucC5jcmVkID09IE5VTEwgJiYKKwkJICAgIChw cm90ICYgUFJPVF9XUklURSkgIT0gMCkKKwkJCW9iamVjdC0+dW5fcGFnZXIudm5wLmNyZWQgPSBj cmhvbGQoY3JlZCk7CiAJCVZNX09CSkVDVF9VTkxPQ0sob2JqZWN0KTsKIAl9CiAJdnJlZih2cCk7 CkBAIC0yNTMsNiArMjYxLDcgQEAgdm5vZGVfcGFnZXJfZGVhbGxvYyhvYmplY3QpCiB7CiAJc3Ry dWN0IHZub2RlICp2cDsKIAlpbnQgcmVmczsKKwlzdHJ1Y3QgdWNyZWQgKmNyZWQ7CiAKIAl2cCA9 IG9iamVjdC0+aGFuZGxlOwogCWlmICh2cCA9PSBOVUxMKQpAQCAtMjY0LDYgKzI3Myw4IEBAIHZu b2RlX3BhZ2VyX2RlYWxsb2Mob2JqZWN0KQogCiAJb2JqZWN0LT5oYW5kbGUgPSBOVUxMOwogCW9i amVjdC0+dHlwZSA9IE9CSlRfREVBRDsKKwljcmVkID0gb2JqZWN0LT51bl9wYWdlci52bnAuY3Jl ZDsKKwlvYmplY3QtPnVuX3BhZ2VyLnZucC5jcmVkID0gTlVMTDsKIAlpZiAob2JqZWN0LT5mbGFn cyAmIE9CSl9ESVNDT05ORUNUV05UKSB7CiAJCXZtX29iamVjdF9jbGVhcl9mbGFnKG9iamVjdCwg T0JKX0RJU0NPTk5FQ1RXTlQpOwogCQl3YWtldXAob2JqZWN0KTsKQEAgLTI3Niw2ICsyODcsOCBA QCB2bm9kZV9wYWdlcl9kZWFsbG9jKG9iamVjdCkKIAl2cC0+dl9vYmplY3QgPSBOVUxMOwogCXZw LT52X3ZmbGFnICY9IH5WVl9URVhUOwogCVZNX09CSkVDVF9VTkxPQ0sob2JqZWN0KTsKKwlpZiAo Y3JlZCAhPSBOVUxMKQorCQljcmZyZWUoY3JlZCk7CiAJd2hpbGUgKHJlZnMtLSA+IDApCiAJCXZ1 bnJlZih2cCk7CiAJVk1fT0JKRUNUX0xPQ0sob2JqZWN0KTsKLS0tIHZtL3ZtX29iamVjdC5oLnNh dgkyMDEyLTAzLTEzIDIwOjIxOjI2LjAwMDAwMDAwMCAtMDQwMAorKysgdm0vdm1fb2JqZWN0LmgJ MjAxMi0wMy0xMyAyMDoyNzowNC4wMDAwMDAwMDAgLTA0MDAKQEAgLTEwOSwxMCArMTA5LDEyIEBA IHN0cnVjdCB2bV9vYmplY3QgewogCQkgKiBWTm9kZSBwYWdlcgogCQkgKgogCQkgKgl2bnBfc2l6 ZSAtIGN1cnJlbnQgc2l6ZSBvZiBmaWxlCisJCSAqCWNyZWQgLSBjcmVkZW50aWFscyBmb3IgTkZT IEkvTwogCQkgKi8KIAkJc3RydWN0IHsKIAkJCW9mZl90IHZucF9zaXplOwogCQkJdm1fb29mZnNl dF90IHdyaXRlbWFwcGluZ3M7CisJCQlzdHJ1Y3QgdWNyZWQgKmNyZWQ7CiAJCX0gdm5wOwogCiAJ CS8qCi0tLSBuZnNjbGllbnQvbmZzX2Jpby5jLnNhdgkyMDEyLTAzLTEzIDIwOjUzOjIwLjAwMDAw MDAwMCAtMDQwMAorKysgbmZzY2xpZW50L25mc19iaW8uYwkyMDEyLTAzLTE1IDA5OjU4OjEzLjAw MDAwMDAwMCAtMDQwMApAQCAtMjcxLDExICsyNzEsMTEgQEAgbmZzX3B1dHBhZ2VzKHN0cnVjdCB2 b3BfcHV0cGFnZXNfYXJncyAqYQogCXN0cnVjdCBuZnNtb3VudCAqbm1wOwogCXN0cnVjdCBuZnNu b2RlICpucDsKIAl2bV9wYWdlX3QgKnBhZ2VzOworCXZtX29iamVjdF90IG9iamVjdDsKIAogCXZw ID0gYXAtPmFfdnA7CiAJbnAgPSBWVE9ORlModnApOwogCXRkID0gY3VydGhyZWFkOwkJCQkvKiBY WFggKi8KLQljcmVkID0gY3VydGhyZWFkLT50ZF91Y3JlZDsJCS8qIFhYWCAqLwogCW5tcCA9IFZG U1RPTkZTKHZwLT52X21vdW50KTsKIAlwYWdlcyA9IGFwLT5hX207CiAJY291bnQgPSBhcC0+YV9j b3VudDsKQEAgLTI4Myw2ICsyODMsMTkgQEAgbmZzX3B1dHBhZ2VzKHN0cnVjdCB2b3BfcHV0cGFn ZXNfYXJncyAqYQogCW5wYWdlcyA9IGJ0b2MoY291bnQpOwogCW9mZnNldCA9IElEWF9UT19PRkYo cGFnZXNbMF0tPnBpbmRleCk7CiAJCisJaWYgKChvYmplY3QgPSB2cC0+dl9vYmplY3QpID09IE5V TEwpIHsKKwkJbmZzX3ByaW50ZigibmZzX3B1dHBhZ2VzOiBjYWxsZWQgd2l0aCBub24tbWVyZ2Vk IGNhY2hlIHZub2RlPz9cbiIpOworCQlyZXR1cm4gKFZNX1BBR0VSX0VSUk9SKTsKKwl9CisJLyoK KwkgKiBJIGRvbid0IHRoaW5rIGFjcXVpcmluZyBhIHJlZmVyZW5jZSBjb3VudCBvbiBjcmVkIGlz IHJlcXVpcmVkIGhlcmUsCisJICogYnV0IGRvIGl0IGFueWhvdywganVzdCBpbiBjYXNlLgorCSAq LworCWlmIChvYmplY3QtPnVuX3BhZ2VyLnZucC5jcmVkICE9IE5VTEwpCisJCWNyZWQgPSBjcmhv bGQob2JqZWN0LT51bl9wYWdlci52bnAuY3JlZCk7CisJZWxzZQorCQljcmVkID0gY3Job2xkKGN1 cnRocmVhZC0+dGRfdWNyZWQpOwkvKiBYWFggKi8KKwogCW10eF9sb2NrKCZubXAtPm5tX210eCk7 CiAJaWYgKChubXAtPm5tX2ZsYWcgJiBORlNNTlRfTkZTVjMpICE9IDAgJiYKIAkgICAgKG5tcC0+ bm1fc3RhdGUgJiBORlNTVEFfR09URlNJTkZPKSA9PSAwKSB7CkBAIC0zMzksNiArMzUyLDcgQEAg bmZzX3B1dHBhZ2VzKHN0cnVjdCB2b3BfcHV0cGFnZXNfYXJncyAqYQogCSAgICBpb21vZGUgPSBO RlNWM1dSSVRFX0ZJTEVTWU5DOwogCiAJZXJyb3IgPSAobm1wLT5ubV9ycGNvcHMtPm5yX3dyaXRl cnBjKSh2cCwgJnVpbywgY3JlZCwgJmlvbW9kZSwgJm11c3RfY29tbWl0KTsKKwljcmZyZWUoY3Jl ZCk7CiAKIAlwbWFwX3FyZW1vdmUoa3ZhLCBucGFnZXMpOwogCXJlbHBidWYoYnAsICZuZnNfcGJ1 Zl9mcmVlY250KTsKLS0tIGZzL25mc2NsaWVudC9uZnNfY2xiaW8uYy5zYXYJMjAxMi0wMy0xMyAy MDozMjo0OC4wMDAwMDAwMDAgLTA0MDAKKysrIGZzL25mc2NsaWVudC9uZnNfY2xiaW8uYwkyMDEy LTAzLTE1IDA5OjU4OjQzLjAwMDAwMDAwMCAtMDQwMApAQCAtMjc2LDExICsyNzYsMTEgQEAgbmNs X3B1dHBhZ2VzKHN0cnVjdCB2b3BfcHV0cGFnZXNfYXJncyAqYQogCXN0cnVjdCBuZnNtb3VudCAq bm1wOwogCXN0cnVjdCBuZnNub2RlICpucDsKIAl2bV9wYWdlX3QgKnBhZ2VzOworCXZtX29iamVj dF90IG9iamVjdDsKIAogCXZwID0gYXAtPmFfdnA7CiAJbnAgPSBWVE9ORlModnApOwogCXRkID0g Y3VydGhyZWFkOwkJCQkvKiBYWFggKi8KLQljcmVkID0gY3VydGhyZWFkLT50ZF91Y3JlZDsJCS8q IFhYWCAqLwogCW5tcCA9IFZGU1RPTkZTKHZwLT52X21vdW50KTsKIAlwYWdlcyA9IGFwLT5hX207 CiAJY291bnQgPSBhcC0+YV9jb3VudDsKQEAgLTI4OCw2ICsyODgsMTkgQEAgbmNsX3B1dHBhZ2Vz KHN0cnVjdCB2b3BfcHV0cGFnZXNfYXJncyAqYQogCW5wYWdlcyA9IGJ0b2MoY291bnQpOwogCW9m ZnNldCA9IElEWF9UT19PRkYocGFnZXNbMF0tPnBpbmRleCk7CiAJCisJaWYgKChvYmplY3QgPSB2 cC0+dl9vYmplY3QpID09IE5VTEwpIHsKKwkJbmNsX3ByaW50ZigibmZzX3B1dHBhZ2VzOiBjYWxs ZWQgd2l0aCBub24tbWVyZ2VkIGNhY2hlIHZub2RlPz9cbiIpOworCQlyZXR1cm4gKFZNX1BBR0VS X0VSUk9SKTsKKwl9CisJLyoKKwkgKiBJIGRvbid0IHRoaW5rIGFjcXVpcmluZyBhIHJlZmVyZW5j ZSBjb3VudCBvbiBjcmVkIGlzIHJlcXVpcmVkIGhlcmUsCisJICogYnV0IGRvIGl0IGFueWhvdywg anVzdCBpbiBjYXNlLgorCSAqLworCWlmIChvYmplY3QtPnVuX3BhZ2VyLnZucC5jcmVkICE9IE5V TEwpCisJCWNyZWQgPSBjcmhvbGQob2JqZWN0LT51bl9wYWdlci52bnAuY3JlZCk7CisJZWxzZQor CQljcmVkID0gY3Job2xkKGN1cnRocmVhZC0+dGRfdWNyZWQpOwkvKiBYWFggKi8KKwogCW10eF9s b2NrKCZubXAtPm5tX210eCk7CiAJaWYgKChubXAtPm5tX2ZsYWcgJiBORlNNTlRfTkZTVjMpICE9 IDAgJiYKIAkgICAgKG5tcC0+bm1fc3RhdGUgJiBORlNTVEFfR09URlNJTkZPKSA9PSAwKSB7CkBA IC0zNDQsNiArMzU3LDcgQEAgbmNsX3B1dHBhZ2VzKHN0cnVjdCB2b3BfcHV0cGFnZXNfYXJncyAq YQogCSAgICBpb21vZGUgPSBORlNXUklURV9GSUxFU1lOQzsKIAogCWVycm9yID0gbmNsX3dyaXRl cnBjKHZwLCAmdWlvLCBjcmVkLCAmaW9tb2RlLCAmbXVzdF9jb21taXQsIDApOworCWNyZnJlZShj cmVkKTsKIAogCXBtYXBfcXJlbW92ZShrdmEsIG5wYWdlcyk7CiAJcmVscGJ1ZihicCwgJm5jbF9w YnVmX2ZyZWVjbnQpOwo= ------=_Part_2076442_2065523745.1333328057088 Content-Type: text/x-patch; name=putpages-b.patch Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=putpages-b.patch LS0tIG5mc2NsaWVudC9uZnNfdm5vcHMuYy5zYXYJMjAxMi0wMy0yMiAyMDowMTowNy4wMDAwMDAw MDAgLTA0MDAKKysrIG5mc2NsaWVudC9uZnNfdm5vcHMuYwkyMDEyLTAzLTIyIDIwOjM0OjQxLjAw MDAwMDAwMCAtMDQwMApAQCAtNTMsNiArNTMsNyBAQCBfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv c3lzL25mc2NsaWVudC9uCiAjaW5jbHVkZSA8c3lzL2phaWwuaD4KICNpbmNsdWRlIDxzeXMvbWFs bG9jLmg+CiAjaW5jbHVkZSA8c3lzL21idWYuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgogI2lu Y2x1ZGUgPHN5cy9uYW1laS5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KICNpbmNsdWRlIDxz eXMvdm5vZGUuaD4KQEAgLTE0Nyw2ICsxNDgsNyBAQCBzdGF0aWMgdm9wX3JlYWRsaW5rX3QJbmZz X3JlYWRsaW5rOwogc3RhdGljIHZvcF9wcmludF90CW5mc19wcmludDsKIHN0YXRpYyB2b3BfYWR2 bG9ja190CW5mc19hZHZsb2NrOwogc3RhdGljIHZvcF9hZHZsb2NrYXN5bmNfdCBuZnNfYWR2bG9j a2FzeW5jOworc3RhdGljIHZvcF9tbWFwX25vdGlmeV90IG5mc19tbWFwX25vdGlmeTsKIAogLyoK ICAqIEdsb2JhbCB2ZnMgZGF0YSBzdHJ1Y3R1cmVzIGZvciBuZnMKQEAgLTE4MCw2ICsxODIsNyBA QCBzdHJ1Y3Qgdm9wX3ZlY3RvciBuZnNfdm5vZGVvcHMgPSB7CiAJLnZvcF9zdHJhdGVneSA9CQlu ZnNfc3RyYXRlZ3ksCiAJLnZvcF9zeW1saW5rID0JCW5mc19zeW1saW5rLAogCS52b3Bfd3JpdGUg PQkJbmZzX3dyaXRlLAorCS52b3BfbW1hcF9ub3RpZnkgPQluZnNfbW1hcF9ub3RpZnksCiB9Owog CiBzdHJ1Y3Qgdm9wX3ZlY3RvciBuZnNfZmlmb29wcyA9IHsKQEAgLTM1MjUsMyArMzUyOCwxNCBA QCBzdHJ1Y3QgYnVmX29wcyBidWZfb3BzX25mcyA9IHsKIAkuYm9wX3N5bmMJPQlidWZzeW5jLAog CS5ib3BfYmRmbHVzaAk9CWJ1ZmJkZmx1c2gsCiB9OworCitzdGF0aWMgaW50CituZnNfbW1hcF9u b3RpZnkoc3RydWN0IHZvcF9tbWFwX25vdGlmeV9hcmdzICphcCkKK3sKKwlzdHJ1Y3QgbmZzbm9k ZSAqbnAgPSBWVE9ORlMoYXAtPmFfdnApOworCisJaWYgKG5wLT5uX3BwY3JlZCA9PSBOVUxMICYm IChhcC0+YV9wcm90ICYgUFJPVF9XUklURSkgIT0gMCkKKwkJbnAtPm5fcHBjcmVkID0gY3Job2xk KGFwLT5hX2NyZWQpOworCXJldHVybiAoMCk7Cit9CisKLS0tIG5mc2NsaWVudC9uZnNub2RlLmgu c2F2CTIwMTItMDMtMjIgMjA6MDU6MDcuMDAwMDAwMDAwIC0wNDAwCisrKyBuZnNjbGllbnQvbmZz bm9kZS5oCTIwMTItMDMtMjIgMjA6MDY6MDAuMDAwMDAwMDAwIC0wNDAwCkBAIC0xMjgsNiArMTI4 LDcgQEAgc3RydWN0IG5mc25vZGUgewogCXVpbnQzMl90CQluX25hbWVsZW47CiAJaW50CQkJbl9k aXJlY3Rpb19vcGVuczsKIAlpbnQgICAgICAgICAgICAgICAgICAgICBuX2RpcmVjdGlvX2FzeW5j d3I7CisJc3RydWN0IHVjcmVkCQkqbl9wcGNyZWQ7CS8qIENyZWQuIGZvciBwdXRwYWdlcyAqLwog fTsKIAogI2RlZmluZSBuX2F0aW0JCW5fdW4xLm5mX2F0aW0KLS0tIG5mc2NsaWVudC9uZnNfbm9k ZS5jLnNhdgkyMDEyLTAzLTIyIDIwOjA2OjA5LjAwMDAwMDAwMCAtMDQwMAorKysgbmZzY2xpZW50 L25mc19ub2RlLmMJMjAxMi0wMy0yMiAyMDowNzowNC4wMDAwMDAwMDAgLTA0MDAKQEAgLTIwOCw2 ICsyMDgsNyBAQCBuZnNfaW5hY3RpdmUoc3RydWN0IHZvcF9pbmFjdGl2ZV9hcmdzICphCiAJc3Ry dWN0IG5mc25vZGUgKm5wOwogCXN0cnVjdCBzaWxseXJlbmFtZSAqc3A7CiAJc3RydWN0IHRocmVh ZCAqdGQgPSBjdXJ0aHJlYWQ7CS8qIFhYWCAqLworCXN0cnVjdCB1Y3JlZCAqY3JlZDsKIAogCW5w ID0gVlRPTkZTKGFwLT5hX3ZwKTsKIAltdHhfbG9jaygmbnAtPm5fbXR4KTsKQEAgLTIyOSw3ICsy MzAsMTEgQEAgbmZzX2luYWN0aXZlKHN0cnVjdCB2b3BfaW5hY3RpdmVfYXJncyAqYQogCQltdHhf bG9jaygmbnAtPm5fbXR4KTsKIAl9CiAJbnAtPm5fZmxhZyAmPSBOTU9ESUZJRUQ7CisJY3JlZCA9 IG5wLT5uX3BwY3JlZDsKKwlucC0+bl9wcGNyZWQgPSBOVUxMOwogCW10eF91bmxvY2soJm5wLT5u X210eCk7CisJaWYgKGNyZWQgIT0gTlVMTCkKKwkJY3JmcmVlKGNyZWQpOwogCXJldHVybiAoMCk7 CiB9CiAKQEAgLTI3MCw2ICsyNzUsOCBAQCBuZnNfcmVjbGFpbShzdHJ1Y3Qgdm9wX3JlY2xhaW1f YXJncyAqYXApCiAJCQlmcmVlKChjYWRkcl90KWRwMiwgTV9ORlNESVJPRkYpOwogCQl9CiAJfQor CWlmIChucC0+bl9wcGNyZWQgIT0gTlVMTCkKKwkJY3JmcmVlKG5wLT5uX3BwY3JlZCk7CiAJaWYg KG5wLT5uX2Zoc2l6ZSA+IE5GU19TTUFMTEZIKSB7CiAJCWZyZWUoKGNhZGRyX3QpbnAtPm5fZmhw LCBNX05GU0JJR0ZIKTsKIAl9Ci0tLSBuZnNjbGllbnQvbmZzX2Jpby5jLnNhdgkyMDEyLTAzLTIy IDIwOjExOjA0LjAwMDAwMDAwMCAtMDQwMAorKysgbmZzY2xpZW50L25mc19iaW8uYwkyMDEyLTAz LTIyIDIwOjQwOjEzLjAwMDAwMDAwMCAtMDQwMApAQCAtMjk5LDYgKzI5OSw5IEBAIG5mc19wdXRw YWdlcyhzdHJ1Y3Qgdm9wX3B1dHBhZ2VzX2FyZ3MgKmEKIAkJbXR4X2xvY2soJm5wLT5uX210eCk7 CiAJfQogCisJLyogU2V0IHRoZSBjcmVkIHRvIG5fcHBjcmVkIGZvciB0aGUgd3JpdGUgcnBjcy4g Ki8KKwlpZiAobnAtPm5fcHBjcmVkICE9IE5VTEwpCisJCWNyZWQgPSBucC0+bl9wcGNyZWQ7CiAJ Zm9yIChpID0gMDsgaSA8IG5wYWdlczsgaSsrKQogCQlydHZhbHNbaV0gPSBWTV9QQUdFUl9FUlJP UjsKIAotLS0ga2Vybi92bm9kZV9pZi5zcmMuc2F2CTIwMTItMDMtMjIgMTA6MTg6MDAuMDAwMDAw MDAwIC0wNDAwCisrKyBrZXJuL3Zub2RlX2lmLnNyYwkyMDEyLTAzLTIyIDEwOjM4OjU0LjAwMDAw MDAwMCAtMDQwMApAQCAtNjYwLDYgKzY2MCwxNiBAQCB2b3BfdW5wX2RldGFjaCB7CiAJSU4gc3Ry dWN0IHZub2RlICp2cDsKIH07CiAKKyUlIG1tYXBfbm90aWZ5CXZwCUwgTCBMCisKK3ZvcF9tbWFw X25vdGlmeSB7CisJSU4gc3RydWN0IHZub2RlICp2cDsKKwlJTiB2bV9vZmZzZXRfdCBmb2ZmOwor CUlOIGludCBmbGFnczsKKwlJTiB2bV9wcm90X3QgcHJvdDsKKwlJTiBzdHJ1Y3QgdWNyZWQgKmNy ZWQ7Cit9OworCiAjIFRoZSBWT1BzIGJlbG93IGFyZSBzcGFyZXMgYXQgdGhlIGVuZCBvZiB0aGUg dGFibGUgdG8gYWxsb3cgbmV3IFZPUHMgdG8gYmUKICMgYWRkZWQgaW4gc3RhYmxlIGJyYW5jaGVz IHdpdGhvdXQgYnJlYWtpbmcgdGhlIEtCSS4gIE5ldyBWT1BzIGluIEhFQUQgc2hvdWxkCiAjIGJl IGFkZGVkIGFib3ZlIHRoZXNlIHNwYXJlcy4gIFdoZW4gbWVyZ2luZyBhIG5ldyBWT1AgdG8gYSBz dGFibGUgYnJhbmNoLAotLS0ga2Vybi92ZnNfZGVmYXVsdC5jLnNhdgkyMDEyLTAzLTIyIDEwOjQy OjA4LjAwMDAwMDAwMCAtMDQwMAorKysga2Vybi92ZnNfZGVmYXVsdC5jCTIwMTItMDMtMjIgMTA6 NDY6NDEuMDAwMDAwMDAwIC0wNDAwCkBAIC0xMjYsNiArMTI2LDcgQEAgc3RydWN0IHZvcF92ZWN0 b3IgZGVmYXVsdF92bm9kZW9wcyA9IHsKIAkudm9wX3VucF9iaW5kID0JCXZvcF9zdGR1bnBfYmlu ZCwKIAkudm9wX3VucF9jb25uZWN0ID0Jdm9wX3N0ZHVucF9jb25uZWN0LAogCS52b3BfdW5wX2Rl dGFjaCA9CXZvcF9zdGR1bnBfZGV0YWNoLAorCS52b3BfbW1hcF9ub3RpZnkgPQlWT1BfTlVMTCwK IH07CiAKIC8qCi0tLSBmcy9uZnNjbGllbnQvbmZzX2Nsdm5vcHMuYy5zYXYJMjAxMi0wMy0yMiAx OTo0NToyMi4wMDAwMDAwMDAgLTA0MDAKKysrIGZzL25mc2NsaWVudC9uZnNfY2x2bm9wcy5jCTIw MTItMDMtMjIgMjA6MzU6MTEuMDAwMDAwMDAwIC0wNDAwCkBAIC00Nyw2ICs0Nyw3IEBAIF9fRkJT RElEKCIkRnJlZUJTRDogaGVhZC9zeXMvZnMvbmZzY2xpZW4KICNpbmNsdWRlIDxzeXMvc3lzdG0u aD4KICNpbmNsdWRlIDxzeXMvcmVzb3VyY2V2YXIuaD4KICNpbmNsdWRlIDxzeXMvcHJvYy5oPgor I2luY2x1ZGUgPHN5cy9tbWFuLmg+CiAjaW5jbHVkZSA8c3lzL21vdW50Lmg+CiAjaW5jbHVkZSA8 c3lzL2Jpby5oPgogI2luY2x1ZGUgPHN5cy9idWYuaD4KQEAgLTE1MCw2ICsxNTEsNyBAQCBzdGF0 aWMgdm9wX2FkdmxvY2tfdAluZnNfYWR2bG9jazsKIHN0YXRpYyB2b3BfYWR2bG9ja2FzeW5jX3Qg bmZzX2FkdmxvY2thc3luYzsKIHN0YXRpYyB2b3BfZ2V0YWNsX3QgbmZzX2dldGFjbDsKIHN0YXRp YyB2b3Bfc2V0YWNsX3QgbmZzX3NldGFjbDsKK3N0YXRpYyB2b3BfbW1hcF9ub3RpZnlfdCBuZnNf bW1hcF9ub3RpZnk7CiAKIC8qCiAgKiBHbG9iYWwgdmZzIGRhdGEgc3RydWN0dXJlcyBmb3IgbmZz CkBAIC0xODcsNiArMTg5LDcgQEAgc3RydWN0IHZvcF92ZWN0b3IgbmV3bmZzX3Zub2Rlb3BzID0g ewogCS52b3Bfd3JpdGUgPQkJbmNsX3dyaXRlLAogCS52b3BfZ2V0YWNsID0JCW5mc19nZXRhY2ws CiAJLnZvcF9zZXRhY2wgPQkJbmZzX3NldGFjbCwKKwkudm9wX21tYXBfbm90aWZ5ID0JbmZzX21t YXBfbm90aWZ5LAogfTsKIAogc3RydWN0IHZvcF92ZWN0b3IgbmV3bmZzX2ZpZm9vcHMgPSB7CkBA IC0zNDc0LDMgKzM0NzcsMTMgQEAgbmZzX3BhdGhjb25mKHN0cnVjdCB2b3BfcGF0aGNvbmZfYXJn cyAqYQogCXJldHVybiAoZXJyb3IpOwogfQogCitzdGF0aWMgaW50CituZnNfbW1hcF9ub3RpZnko c3RydWN0IHZvcF9tbWFwX25vdGlmeV9hcmdzICphcCkKK3sKKwlzdHJ1Y3QgbmZzbm9kZSAqbnAg PSBWVE9ORlMoYXAtPmFfdnApOworCisJaWYgKG5wLT5uX3BwY3JlZCA9PSBOVUxMICYmIChhcC0+ YV9wcm90ICYgUFJPVF9XUklURSkgIT0gMCkKKwkJbnAtPm5fcHBjcmVkID0gY3Job2xkKGFwLT5h X2NyZWQpOworCXJldHVybiAoMCk7Cit9CisKLS0tIGZzL25mc2NsaWVudC9uZnNub2RlLmguc2F2 CTIwMTItMDMtMjIgMTk6NTI6MzEuMDAwMDAwMDAwIC0wNDAwCisrKyBmcy9uZnNjbGllbnQvbmZz bm9kZS5oCTIwMTItMDMtMjIgMTk6NTM6NTYuMDAwMDAwMDAwIC0wNDAwCkBAIC0xMjMsNiArMTIz LDcgQEAgc3RydWN0IG5mc25vZGUgewogCWludCAgICAgICAgICAgICAgICAgICAgIG5fZGlyZWN0 aW9fYXN5bmN3cjsKIAl1X2ludDY0X3QJCSBuX2NoYW5nZTsJLyogb2xkIENoYW5nZSBhdHRyaWJ1 dGUgKi8KIAlzdHJ1Y3QgbmZzdjRub2RlCSpuX3Y0OwkJLyogZXh0cmEgVjQgc3R1ZmYgKi8KKwlz dHJ1Y3QgdWNyZWQJCSpuX3BwY3JlZDsJLyogQ3JlZC4gZm9yIHB1dHBhZ2VzICovCiB9OwogCiAj ZGVmaW5lCW5fYXRpbQkJbl91bjEubmZfYXRpbQotLS0gZnMvbmZzY2xpZW50L25mc19jbG5vZGUu Yy5zYXYJMjAxMi0wMy0yMiAxOTo1NDo0NC4wMDAwMDAwMDAgLTA0MDAKKysrIGZzL25mc2NsaWVu dC9uZnNfY2xub2RlLmMJMjAxMi0wMy0yMiAyMDowMDoyOC4wMDAwMDAwMDAgLTA0MDAKQEAgLTIx MCw2ICsyMTAsNyBAQCBuY2xfaW5hY3RpdmUoc3RydWN0IHZvcF9pbmFjdGl2ZV9hcmdzICphCiAJ c3RydWN0IG5mc25vZGUgKm5wOwogCXN0cnVjdCBzaWxseXJlbmFtZSAqc3A7CiAJc3RydWN0IHZu b2RlICp2cCA9IGFwLT5hX3ZwOworCXN0cnVjdCB1Y3JlZCAqY3JlZDsKIAogCW5wID0gVlRPTkZT KHZwKTsKIApAQCAtMjQzLDcgKzI0NCwxMSBAQCBuY2xfaW5hY3RpdmUoc3RydWN0IHZvcF9pbmFj dGl2ZV9hcmdzICphCiAJCW10eF9sb2NrKCZucC0+bl9tdHgpOwogCX0KIAlucC0+bl9mbGFnICY9 IE5NT0RJRklFRDsKKwljcmVkID0gbnAtPm5fcHBjcmVkOworCW5wLT5uX3BwY3JlZCA9IE5VTEw7 CiAJbXR4X3VubG9jaygmbnAtPm5fbXR4KTsKKwlpZiAoY3JlZCAhPSBOVUxMKQorCQljcmZyZWUo Y3JlZCk7CiAJcmV0dXJuICgwKTsKIH0KIApAQCAtMzAwLDYgKzMwNSw4IEBAIG5jbF9yZWNsYWlt KHN0cnVjdCB2b3BfcmVjbGFpbV9hcmdzICphcCkKIAkJCUZSRUUoKGNhZGRyX3QpZHAyLCBNX05G U0RJUk9GRik7CiAJCX0KIAl9CisJaWYgKG5wLT5uX3BwY3JlZCAhPSBOVUxMKQorCQljcmZyZWUo bnAtPm5fcHBjcmVkKTsKIAlGUkVFKChjYWRkcl90KW5wLT5uX2ZocCwgTV9ORlNGSCk7CiAJaWYg KG5wLT5uX3Y0ICE9IE5VTEwpCiAJCUZSRUUoKGNhZGRyX3QpbnAtPm5fdjQsIE1fTkZTVjROT0RF KTsKLS0tIGZzL25mc2NsaWVudC9uZnNfY2xiaW8uYy5zYXYJMjAxMi0wMy0yMiAyMDowNzo1Ni4w MDAwMDAwMDAgLTA0MDAKKysrIGZzL25mc2NsaWVudC9uZnNfY2xiaW8uYwkyMDEyLTAzLTIyIDIw OjEwOjQ3LjAwMDAwMDAwMCAtMDQwMApAQCAtMzA0LDYgKzMwNCw5IEBAIG5jbF9wdXRwYWdlcyhz dHJ1Y3Qgdm9wX3B1dHBhZ2VzX2FyZ3MgKmEKIAkJbXR4X2xvY2soJm5wLT5uX210eCk7CiAJfQog CisJLyogU2V0IHRoZSBjcmVkIHRvIG5fcHBjcmVkIGZvciB0aGUgd3JpdGUgcnBjcy4gKi8KKwlp ZiAobnAtPm5fcHBjcmVkICE9IE5VTEwpCisJCWNyZWQgPSBucC0+bl9wcGNyZWQ7CiAJZm9yIChp ID0gMDsgaSA8IG5wYWdlczsgaSsrKQogCQlydHZhbHNbaV0gPSBWTV9QQUdFUl9FUlJPUjsKIAot LS0gdm0vdm1fbW1hcC5jLnNhdgkyMDEyLTAzLTIyIDEwOjMzOjIyLjAwMDAwMDAwMCAtMDQwMAor Kysgdm0vdm1fbW1hcC5jCTIwMTItMDMtMjIgMTA6MzY6MzUuMDAwMDAwMDAwIC0wNDAwCkBAIC0x Mjg5LDYgKzEyODksOCBAQCB2bV9tbWFwX3Zub2RlKHN0cnVjdCB0aHJlYWQgKnRkLCB2bV9zaXpl CiAJfQogCWlmICgoZXJyb3IgPSBWT1BfR0VUQVRUUih2cCwgJnZhLCBjcmVkKSkpCiAJCWdvdG8g ZG9uZTsKKwlpZiAoKGVycm9yID0gVk9QX01NQVBfTk9USUZZKHZwLCBmb2ZmLCBmbGFncywgcHJv dCwgY3JlZCkpICE9IDApCisJCWdvdG8gZG9uZTsKICNpZmRlZiBNQUMKIAllcnJvciA9IG1hY192 bm9kZV9jaGVja19tbWFwKGNyZWQsIHZwLCBwcm90LCBmbGFncyk7CiAJaWYgKGVycm9yICE9IDAp Ci0tLSBzeXMvdm5vZGUuaC5zYXYJMjAxMi0wMy0yMiAxMTowMDo0OS4wMDAwMDAwMDAgLTA0MDAK KysrIHN5cy92bm9kZS5oCTIwMTItMDMtMjIgMTE6MDE6MjUuMDAwMDAwMDAwIC0wNDAwCkBAIC00 Myw2ICs0Myw4IEBACiAjaW5jbHVkZSA8c3lzL2FjbC5oPgogI2luY2x1ZGUgPHN5cy9rdHIuaD4K IAorI2luY2x1ZGUgPHZtL3ZtLmg+CisKIC8qCiAgKiBUaGUgdm5vZGUgaXMgdGhlIGZvY3VzIG9m IGFsbCBmaWxlIGFjdGl2aXR5IGluIFVOSVguICBUaGVyZSBpcyBhCiAgKiB1bmlxdWUgdm5vZGUg YWxsb2NhdGVkIGZvciBlYWNoIGFjdGl2ZSBmaWxlLCBlYWNoIGN1cnJlbnQgZGlyZWN0b3J5LAo= ------=_Part_2076442_2065523745.1333328057088--