Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Apr 2012 20:54:17 -0400 (EDT)
From:      Rick Macklem <rmacklem@uoguelph.ca>
To:        FS List <freebsd-fs@freebsd.org>
Cc:        alc@freebsd.org, Joel Ray Holveck <joelh@juniper.net>, David Wolfskill <david@catwhisker.org>
Subject:   RFC: which patch is preferred for fix to PR#165923
Message-ID:  <1184428460.2076443.1333328057090.JavaMail.root@erie.cs.uoguelph.ca>
In-Reply-To: <302424888.2076325.1333327897003.JavaMail.root@erie.cs.uoguelph.ca>

next in thread | previous in thread | raw e-mail | index | archive | help
------=_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--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1184428460.2076443.1333328057090.JavaMail.root>