Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 6 Jun 2001 16:40:41 +0700 (ALMST)
From:      Boris Popov <bp@butya.kz>
To:        stable@freebsd.org
Cc:        fs@freebsd.org
Subject:   CFR: Fixes for nullfs in -stable
Message-ID:  <Pine.BSF.4.21.0106061624520.61571-200000@lion.butya.kz>

next in thread | raw e-mail | index | archive | help
  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@docserver.cac.washington.edu for more info.

--0-248198860-991820441=:61571
Content-Type: TEXT/PLAIN; charset=US-ASCII

	Hello,

	I've mostly merged improvements done to nullfs in the -current to
RELENG_4 branch. Operations on mmaped files were fixed before and this
patch focused on the proper vnode locking.

	Unfortunately, this code require changes in the layout of vnode
structure. It is possible to not break binary compatibility by changing
behavior of vop_sharedlock() function and using v_vnlock field as this is
done in -current. This requires changes only to nfs code by including lock
structure in the nfsnode structure (in the original code it was allocated
separately for each nfsnode). Size and layout of vnode structure left
unchanged.

	I hope this will not break any 3rd party file system because all
new fs'es should use vop_std*lock() VOPs or roll their own.

	Patch against recent RELENG_4 is attached. And if there is no
serious objections I'm plan to commit it on the next week.

--
Boris Popov
http://www.butya.kz/~bp/

--0-248198860-991820441=:61571
Content-Type: TEXT/PLAIN; charset=US-ASCII; name="nullfs4.diff"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.BSF.4.21.0106061640400.61571@lion.butya.kz>
Content-Description: 
Content-Disposition: attachment; filename="nullfs4.diff"

SW5kZXg6IGtlcm4vdmZzX2RlZmF1bHQuYw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5cy9rZXJuL3Zmc19k
ZWZhdWx0LmMsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjI4LjIuMQ0KZGlm
ZiAtdSAtcjEuMjguMi4xIHZmc19kZWZhdWx0LmMNCi0tLSBrZXJuL3Zmc19k
ZWZhdWx0LmMJMjAwMS8wNS8xOCAwOTo1ODo0MwkxLjI4LjIuMQ0KKysrIGtl
cm4vdmZzX2RlZmF1bHQuYwkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMzYw
LDE0ICszNjAsMTMgQEANCiAJICogdG8gYmUgaGFuZGxlZCBpbiBpbnRlcm1l
ZGlhdGUgbGF5ZXJzLg0KIAkgKi8NCiAJc3RydWN0IHZub2RlICp2cCA9IGFw
LT5hX3ZwOw0KKwlzdHJ1Y3QgbG9jayAqbCA9IChzdHJ1Y3QgbG9jayAqKXZw
LT52X2RhdGE7DQogCWludCB2bmZsYWdzLCBmbGFncyA9IGFwLT5hX2ZsYWdz
Ow0KIA0KLQlpZiAodnAtPnZfdm5sb2NrID09IE5VTEwpIHsNCi0JCWlmICgo
ZmxhZ3MgJiBMS19UWVBFX01BU0spID09IExLX0RSQUlOKQ0KLQkJCXJldHVy
biAoMCk7DQotCQlNQUxMT0ModnAtPnZfdm5sb2NrLCBzdHJ1Y3QgbG9jayAq
LCBzaXplb2Yoc3RydWN0IGxvY2spLA0KLQkJICAgIE1fVk5PREUsIE1fV0FJ
VE9LKTsNCi0JCWxvY2tpbml0KHZwLT52X3ZubG9jaywgUFZGUywgInZubG9j
ayIsIDAsIExLX05PUEFVU0UpOw0KKwlpZiAobCA9PSBOVUxMKSB7DQorCQlp
ZiAoYXAtPmFfZmxhZ3MgJiBMS19JTlRFUkxPQ0spDQorCQkJc2ltcGxlX3Vu
bG9jaygmYXAtPmFfdnAtPnZfaW50ZXJsb2NrKTsNCisJCXJldHVybiAwOw0K
IAl9DQogCXN3aXRjaCAoZmxhZ3MgJiBMS19UWVBFX01BU0spIHsNCiAJY2Fz
ZSBMS19EUkFJTjoNCkBAIC0zOTYsOSArMzk1LDkgQEANCiAJaWYgKGZsYWdz
ICYgTEtfSU5URVJMT0NLKQ0KIAkJdm5mbGFncyB8PSBMS19JTlRFUkxPQ0s7
DQogI2lmbmRlZglERUJVR19MT0NLUw0KLQlyZXR1cm4gKGxvY2ttZ3IodnAt
PnZfdm5sb2NrLCB2bmZsYWdzLCAmdnAtPnZfaW50ZXJsb2NrLCBhcC0+YV9w
KSk7DQorCXJldHVybiAobG9ja21ncihsLCB2bmZsYWdzLCAmdnAtPnZfaW50
ZXJsb2NrLCBhcC0+YV9wKSk7DQogI2Vsc2UNCi0JcmV0dXJuIChkZWJ1Z2xv
Y2ttZ3IodnAtPnZfdm5sb2NrLCB2bmZsYWdzLCAmdnAtPnZfaW50ZXJsb2Nr
LCBhcC0+YV9wLA0KKwlyZXR1cm4gKGRlYnVnbG9ja21ncihsLCB2bmZsYWdz
LCAmdnAtPnZfaW50ZXJsb2NrLCBhcC0+YV9wLA0KIAkgICAgInZvcF9zaGFy
ZWRsb2NrIiwgdnAtPmZpbGVuYW1lLCB2cC0+bGluZSkpOw0KICNlbmRpZg0K
IH0NCkBAIC00MzUsMTMgKzQzNCw2IEBADQogCXN0cnVjdCB2bm9kZSAqdnAg
PSBhcC0+YV92cDsNCiAJaW50IHZuZmxhZ3MsIGZsYWdzID0gYXAtPmFfZmxh
Z3M7DQogDQotCWlmICh2cC0+dl92bmxvY2sgPT0gTlVMTCkgew0KLQkJaWYg
KChmbGFncyAmIExLX1RZUEVfTUFTSykgPT0gTEtfRFJBSU4pDQotCQkJcmV0
dXJuICgwKTsNCi0JCU1BTExPQyh2cC0+dl92bmxvY2ssIHN0cnVjdCBsb2Nr
ICosIHNpemVvZihzdHJ1Y3QgbG9jayksDQotCQkgICAgTV9WTk9ERSwgTV9X
QUlUT0spOw0KLQkJbG9ja2luaXQodnAtPnZfdm5sb2NrLCBQVkZTLCAidm5s
b2NrIiwgMCwgTEtfTk9QQVVTRSk7DQotCX0NCiAJc3dpdGNoIChmbGFncyAm
IExLX1RZUEVfTUFTSykgew0KIAljYXNlIExLX0RSQUlOOg0KIAkJdm5mbGFn
cyA9IExLX0RSQUlOOw0KQEAgLTQ4NSwxMyArNDc3LDkgQEANCiB7DQogCXN0
cnVjdCB2bm9kZSAqdnAgPSBhcC0+YV92cDsNCiANCi0JaWYgKHZwLT52X3Zu
bG9jayA9PSBOVUxMKSB7DQotCQlpZiAoYXAtPmFfZmxhZ3MgJiBMS19JTlRF
UkxPQ0spDQotCQkJc2ltcGxlX3VubG9jaygmYXAtPmFfdnAtPnZfaW50ZXJs
b2NrKTsNCi0JCXJldHVybiAoMCk7DQotCX0NCi0JcmV0dXJuIChsb2NrbWdy
KHZwLT52X3ZubG9jaywgTEtfUkVMRUFTRSB8IGFwLT5hX2ZsYWdzLA0KLQkJ
JmFwLT5hX3ZwLT52X2ludGVybG9jaywgYXAtPmFfcCkpOw0KKwlpZiAoYXAt
PmFfZmxhZ3MgJiBMS19JTlRFUkxPQ0spDQorCQlzaW1wbGVfdW5sb2NrKCZ2
cC0+dl9pbnRlcmxvY2spOw0KKwlyZXR1cm4gKDApOw0KIH0NCiANCiAvKg0K
QEAgLTUwNSwxMCArNDkzLDExIEBADQogCX0gKi8gKmFwOw0KIHsNCiAJc3Ry
dWN0IHZub2RlICp2cCA9IGFwLT5hX3ZwOw0KKwlzdHJ1Y3QgbG9jayAqbCA9
IChzdHJ1Y3QgbG9jayAqKXZwLT52X2RhdGE7DQogDQotCWlmICh2cC0+dl92
bmxvY2sgPT0gTlVMTCkNCisJaWYgKGwgPT0gTlVMTCkNCiAJCXJldHVybiAo
MCk7DQotCXJldHVybiAobG9ja3N0YXR1cyh2cC0+dl92bmxvY2ssIGFwLT5h
X3ApKTsNCisJcmV0dXJuIChsb2Nrc3RhdHVzKGwsIGFwLT5hX3ApKTsNCiB9
DQogDQogaW50DQpJbmRleDoga2Vybi92ZnNfc3Vici5jDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQpSQ1MgZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL2tl
cm4vdmZzX3N1YnIuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMjQ5LjIu
OA0KZGlmZiAtdSAtcjEuMjQ5LjIuOCB2ZnNfc3Vici5jDQotLS0ga2Vybi92
ZnNfc3Vici5jCTIwMDEvMDUvMTggMDk6NTg6NDMJMS4yNDkuMi44DQorKysg
a2Vybi92ZnNfc3Vici5jCTIwMDEvMDYvMDYgMDg6NTM6NDkNCkBAIC0xNzA3
LDEwICsxNzA3LDcgQEANCiAJfQ0KIA0KIAljYWNoZV9wdXJnZSh2cCk7DQot
CWlmICh2cC0+dl92bmxvY2spIHsNCi0JCUZSRUUodnAtPnZfdm5sb2NrLCBN
X1ZOT0RFKTsNCi0JCXZwLT52X3ZubG9jayA9IE5VTEw7DQotCX0NCisJdnAt
PnZfdm5sb2NrID0gTlVMTDsNCiANCiAJaWYgKFZTSE9VTERGUkVFKHZwKSkN
CiAJCXZmcmVlKHZwKTsNCkluZGV4OiBuZnMvbmZzX25vZGUuYw0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC9ob21lL25jdnMvc3JjL3N5
cy9uZnMvbmZzX25vZGUuYyx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMzYu
Mi4xDQpkaWZmIC11IC1yMS4zNi4yLjEgbmZzX25vZGUuYw0KLS0tIG5mcy9u
ZnNfbm9kZS5jCTIwMDEvMDMvMjEgMTA6NTA6NTkJMS4zNi4yLjENCisrKyBu
ZnMvbmZzX25vZGUuYwkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMTc1LDYg
KzE3NSw3IEBADQogCWJjb3B5KChjYWRkcl90KWZocCwgKGNhZGRyX3QpbnAt
Pm5fZmhwLCBmaHNpemUpOw0KIAlucC0+bl9maHNpemUgPSBmaHNpemU7DQog
CWxvY2tpbml0KCZucC0+bl9yc2xvY2ssIFBWRlMgfCByc2ZsYWdzLCAibmZy
c2xrIiwgMCwgTEtfTk9QQVVTRSk7DQorCWxvY2tpbml0KCZucC0+bl9sb2Nr
LCBQVkZTLCAibmZzbmxrIiwgMCwgTEtfTk9QQVVTRSk7DQogCSpucHAgPSBu
cDsNCiANCiAJaWYgKG5mc19ub2RlX2hhc2hfbG9jayA8IDApDQpJbmRleDog
bmZzL25mc192bm9wcy5jDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQpSQ1Mg
ZmlsZTogL2hvbWUvbmN2cy9zcmMvc3lzL25mcy9uZnNfdm5vcHMuYyx2DQpy
ZXRyaWV2aW5nIHJldmlzaW9uIDEuMTUwLjIuMg0KZGlmZiAtdSAtcjEuMTUw
LjIuMiBuZnNfdm5vcHMuYw0KLS0tIG5mcy9uZnNfdm5vcHMuYwkyMDAxLzAz
LzAyIDE2OjQ1OjEyCTEuMTUwLjIuMg0KKysrIG5mcy9uZnNfdm5vcHMuYwky
MDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMTQ5LDYgKzE0OSw3IEBADQogCXsg
JnZvcF9nZXRwYWdlc19kZXNjLAkJKHZvcF90ICopIG5mc19nZXRwYWdlcyB9
LA0KIAl7ICZ2b3BfcHV0cGFnZXNfZGVzYywJCSh2b3BfdCAqKSBuZnNfcHV0
cGFnZXMgfSwNCiAJeyAmdm9wX2luYWN0aXZlX2Rlc2MsCQkodm9wX3QgKikg
bmZzX2luYWN0aXZlIH0sDQorCXsgJnZvcF9pc2xvY2tlZF9kZXNjLAkJKHZv
cF90ICopIHZvcF9zdGRpc2xvY2tlZCB9LA0KIAl7ICZ2b3BfbGVhc2VfZGVz
YywJCSh2b3BfdCAqKSB2b3BfbnVsbCB9LA0KIAl7ICZ2b3BfbGlua19kZXNj
LAkJKHZvcF90ICopIG5mc19saW5rIH0sDQogCXsgJnZvcF9sb2NrX2Rlc2Ms
CQkodm9wX3QgKikgdm9wX3NoYXJlZGxvY2sgfSwNCkBAIC0xNjksNiArMTcw
LDcgQEANCiAJeyAmdm9wX3NldGF0dHJfZGVzYywJCSh2b3BfdCAqKSBuZnNf
c2V0YXR0ciB9LA0KIAl7ICZ2b3Bfc3RyYXRlZ3lfZGVzYywJCSh2b3BfdCAq
KSBuZnNfc3RyYXRlZ3kgfSwNCiAJeyAmdm9wX3N5bWxpbmtfZGVzYywJCSh2
b3BfdCAqKSBuZnNfc3ltbGluayB9LA0KKwl7ICZ2b3BfdW5sb2NrX2Rlc2Ms
CQkodm9wX3QgKikgdm9wX3N0ZHVubG9jayB9LA0KIAl7ICZ2b3Bfd3JpdGVf
ZGVzYywJCSh2b3BfdCAqKSBuZnNfd3JpdGUgfSwNCiAJeyBOVUxMLCBOVUxM
IH0NCiB9Ow0KQEAgLTE4NywxMSArMTg5LDEzIEBADQogCXsgJnZvcF9mc3lu
Y19kZXNjLAkJKHZvcF90ICopIG5mc19mc3luYyB9LA0KIAl7ICZ2b3BfZ2V0
YXR0cl9kZXNjLAkJKHZvcF90ICopIG5mc19nZXRhdHRyIH0sDQogCXsgJnZv
cF9pbmFjdGl2ZV9kZXNjLAkJKHZvcF90ICopIG5mc19pbmFjdGl2ZSB9LA0K
Kwl7ICZ2b3BfaXNsb2NrZWRfZGVzYywJCSh2b3BfdCAqKSB2b3Bfc3RkaXNs
b2NrZWQgfSwNCiAJeyAmdm9wX2xvY2tfZGVzYywJCSh2b3BfdCAqKSB2b3Bf
c2hhcmVkbG9jayB9LA0KIAl7ICZ2b3BfcHJpbnRfZGVzYywJCSh2b3BfdCAq
KSBuZnNfcHJpbnQgfSwNCiAJeyAmdm9wX3JlYWRfZGVzYywJCSh2b3BfdCAq
KSBuZnNzcGVjX3JlYWQgfSwNCiAJeyAmdm9wX3JlY2xhaW1fZGVzYywJCSh2
b3BfdCAqKSBuZnNfcmVjbGFpbSB9LA0KIAl7ICZ2b3Bfc2V0YXR0cl9kZXNj
LAkJKHZvcF90ICopIG5mc19zZXRhdHRyIH0sDQorCXsgJnZvcF91bmxvY2tf
ZGVzYywJCSh2b3BfdCAqKSB2b3Bfc3RkdW5sb2NrIH0sDQogCXsgJnZvcF93
cml0ZV9kZXNjLAkJKHZvcF90ICopIG5mc3NwZWNfd3JpdGUgfSwNCiAJeyBO
VUxMLCBOVUxMIH0NCiB9Ow0KQEAgLTIwNywxMSArMjExLDEzIEBADQogCXsg
JnZvcF9mc3luY19kZXNjLAkJKHZvcF90ICopIG5mc19mc3luYyB9LA0KIAl7
ICZ2b3BfZ2V0YXR0cl9kZXNjLAkJKHZvcF90ICopIG5mc19nZXRhdHRyIH0s
DQogCXsgJnZvcF9pbmFjdGl2ZV9kZXNjLAkJKHZvcF90ICopIG5mc19pbmFj
dGl2ZSB9LA0KKwl7ICZ2b3BfaXNsb2NrZWRfZGVzYywJCSh2b3BfdCAqKSB2
b3Bfc3RkaXNsb2NrZWQgfSwNCiAJeyAmdm9wX2xvY2tfZGVzYywJCSh2b3Bf
dCAqKSB2b3Bfc2hhcmVkbG9jayB9LA0KIAl7ICZ2b3BfcHJpbnRfZGVzYywJ
CSh2b3BfdCAqKSBuZnNfcHJpbnQgfSwNCiAJeyAmdm9wX3JlYWRfZGVzYywJ
CSh2b3BfdCAqKSBuZnNmaWZvX3JlYWQgfSwNCiAJeyAmdm9wX3JlY2xhaW1f
ZGVzYywJCSh2b3BfdCAqKSBuZnNfcmVjbGFpbSB9LA0KIAl7ICZ2b3Bfc2V0
YXR0cl9kZXNjLAkJKHZvcF90ICopIG5mc19zZXRhdHRyIH0sDQorCXsgJnZv
cF91bmxvY2tfZGVzYywJCSh2b3BfdCAqKSB2b3Bfc3RkdW5sb2NrIH0sDQog
CXsgJnZvcF93cml0ZV9kZXNjLAkJKHZvcF90ICopIG5mc2ZpZm9fd3JpdGUg
fSwNCiAJeyBOVUxMLCBOVUxMIH0NCiB9Ow0KSW5kZXg6IG5mcy9uZnNub2Rl
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9u
Y3ZzL3NyYy9zeXMvbmZzL25mc25vZGUuaCx2DQpyZXRyaWV2aW5nIHJldmlz
aW9uIDEuMzINCmRpZmYgLXUgLXIxLjMyIG5mc25vZGUuaA0KLS0tIG5mcy9u
ZnNub2RlLmgJMTk5OS8xMi8yOSAwNDo1NDo1NQkxLjMyDQorKysgbmZzL25m
c25vZGUuaAkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtODYsNiArODYsNyBA
QA0KICAqICAgICBiZSB3ZWxsIGFsaWduZWQgYW5kLCB0aGVyZWZvcmUsIHRp
Z2h0bHkgcGFja2VkLg0KICAqLw0KIHN0cnVjdCBuZnNub2RlIHsNCisJc3Ry
dWN0IGxvY2sJCW5fbG9jazsNCiAJTElTVF9FTlRSWShuZnNub2RlKQluX2hh
c2g7CQkvKiBIYXNoIGNoYWluICovDQogCUNJUkNMRVFfRU5UUlkobmZzbm9k
ZSkJbl90aW1lcjsJLyogTnFuZnMgdGltZXIgY2hhaW4gKi8NCiAJdV9xdWFk
X3QJCW5fc2l6ZTsJCS8qIEN1cnJlbnQgc2l6ZSBvZiBmaWxlICovDQpJbmRl
eDogbWlzY2ZzL251bGxmcy9udWxsLmgNCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvbWlzY2ZzL251bGxm
cy9BdHRpYy9udWxsLmgsdg0KcmV0cmlldmluZyByZXZpc2lvbiAxLjExLjIu
Mg0KZGlmZiAtdSAtcjEuMTEuMi4yIG51bGwuaA0KLS0tIG1pc2Nmcy9udWxs
ZnMvbnVsbC5oCTIwMDAvMTAvMjUgMDQ6MjY6MzAJMS4xMS4yLjINCisrKyBt
aXNjZnMvbnVsbGZzL251bGwuaAkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAt
NTIsNiArNTIsOCBAQA0KICAqIEEgY2FjaGUgb2Ygdm5vZGUgcmVmZXJlbmNl
cw0KICAqLw0KIHN0cnVjdCBudWxsX25vZGUgew0KKwlzdHJ1Y3QgbG9jawkJ
bnVsbF9sb2NrOwkvKiBMb2NrIGZvciB0aGlzIHZub2RlLiBNQkYgKi8NCisJ
c3RydWN0IGxvY2sJCSpudWxsX3ZubG9jazsJLyogbG9jayBvZiBsb3dlciB2
bm9kZSBpbiB0aGUgc3RhY2sgKi8NCiAJTElTVF9FTlRSWShudWxsX25vZGUp
CW51bGxfaGFzaDsJLyogSGFzaCBsaXN0ICovDQogCXN0cnVjdCB2bm9kZQkg
ICAgICAgICpudWxsX2xvd2VydnA7CS8qIFZSRUZlZCBvbmNlICovDQogCXN0
cnVjdCB2bm9kZQkJKm51bGxfdm5vZGU7CS8qIEJhY2sgcG9pbnRlciAqLw0K
SW5kZXg6IG1pc2Nmcy9udWxsZnMvbnVsbF9zdWJyLmMNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvbWlz
Y2ZzL251bGxmcy9BdHRpYy9udWxsX3N1YnIuYyx2DQpyZXRyaWV2aW5nIHJl
dmlzaW9uIDEuMjEuMi4zDQpkaWZmIC11IC1yMS4yMS4yLjMgbnVsbF9zdWJy
LmMNCi0tLSBtaXNjZnMvbnVsbGZzL251bGxfc3Vici5jCTIwMDEvMDUvMzAg
MDk6NDc6MDIJMS4yMS4yLjMNCisrKyBtaXNjZnMvbnVsbGZzL251bGxfc3Vi
ci5jCTIwMDEvMDYvMDYgMDg6NTM6NDkNCkBAIC0xMzAsMTAgKzEzMCwxMSBA
QA0KIAkJCSAqIHN0dWZmLCBidXQgd2UgZG9uJ3Qgd2FudCB0byBsb2NrDQog
CQkJICogdGhlIGxvd2VyIG5vZGUuDQogCQkJICovDQotCQkJaWYgKHZnZXQo
dnAsIDAsIHApKSB7DQorCQkJaWYgKHZnZXQodnAsIExLX0VYQ0xVU0lWRSB8
IExLX0NBTlJFQ1VSU0UsIHApKSB7DQogCQkJCXByaW50ZiAoIm51bGxfbm9k
ZV9maW5kOiB2Z2V0IGZhaWxlZC5cbiIpOw0KIAkJCQlnb3RvIGxvb3A7DQot
CQkJfTsNCisJCQl9DQorCQkJVk9QX1VOTE9DSyhsb3dlcnZwLCAwLCBwKTsN
CiAJCQlyZXR1cm4gKHZwKTsNCiAJCX0NCiAJfQ0KQEAgLTE3Niw2ICsxNzcs
NyBAQA0KIAl2cCA9ICp2cHA7DQogDQogCXZwLT52X3R5cGUgPSBsb3dlcnZw
LT52X3R5cGU7DQorCWxvY2tpbml0KCZ4cC0+bnVsbF9sb2NrLCBQSU5PRCwg
Im51bGxub2RlIiwgMCwgTEtfQ0FOUkVDVVJTRSk7DQogCXhwLT5udWxsX3Zu
b2RlID0gdnA7DQogCXZwLT52X2RhdGEgPSB4cDsNCiAJeHAtPm51bGxfbG93
ZXJ2cCA9IGxvd2VydnA7DQpAQCAtMTkyLDkgKzE5NCwyNCBAQA0KIAkJdnJl
bGUodnApOw0KIAkJKnZwcCA9IG90aGVydnA7DQogCQlyZXR1cm4gMDsNCi0J
fTsNCi0JVlJFRihsb3dlcnZwKTsgICAvKiBFeHRyYSBWUkVGIHdpbGwgYmUg
dnJlbGUnZCBpbiBudWxsX25vZGVfY3JlYXRlICovDQorCX0NCisNCisJLyoN
CisJICogRnJvbSBOZXRCU0Q6DQorCSAqIE5vdyBsb2NrIHRoZSBuZXcgbm9k
ZS4gV2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHdlIHdlcmUgcGFzc2VkDQor
CSAqIGEgbG9ja2VkIHZub2RlLiBJZiB0aGUgbG93ZXIgbm9kZSBpcyBleHBv
cnRpbmcgYSBzdHJ1Y3QgbG9jaw0KKwkgKiAodl92bmxvY2sgIT0gTlVMTCkg
dGhlbiB3ZSBqdXN0IHNldCB0aGUgdXBwZXIgdl92bmxvY2sgdG8gdGhlDQor
CSAqIGxvd2VyIG9uZSwgYW5kIGJvdGggYXJlIG5vdyBsb2NrZWQuIElmIHRo
ZSBsb3dlciBub2RlIGlzIGV4cG9ydGluZw0KKwkgKiBOVUxMLCB0aGVuIHdl
IGNvcHkgdGhhdCB1cCBhbmQgbWFudWFsbHkgbG9jayB0aGUgbmV3IHZub2Rl
Lg0KKwkgKi8NCisNCiAJbG9ja21ncigmbnVsbF9oYXNobG9jaywgTEtfRVhD
TFVTSVZFLCBOVUxMLCBwKTsNCisJdnAtPnZfdm5sb2NrID0gbG93ZXJ2cC0+
dl92bmxvY2s7DQorCWVycm9yID0gVk9QX0xPQ0sodnAsIExLX0VYQ0xVU0lW
RSB8IExLX1RISVNMQVlFUiwgcCk7DQorCWlmIChlcnJvcikNCisJCXBhbmlj
KCJudWxsX25vZGVfYWxsb2M6IGNhbid0IGxvY2sgbmV3IHZub2RlXG4iKTsN
CisNCisJVlJFRihsb3dlcnZwKTsNCiAJaGQgPSBOVUxMX05IQVNIKGxvd2Vy
dnApOw0KIAlMSVNUX0lOU0VSVF9IRUFEKGhkLCB4cCwgbnVsbF9oYXNoKTsN
CiAJbG9ja21ncigmbnVsbF9oYXNobG9jaywgTEtfUkVMRUFTRSwgTlVMTCwg
cCk7DQpAQCAtMjIxLDEwICsyMzgsMTAgQEANCiAJCSAqIG51bGxfbm9kZV9m
aW5kIGhhcyB0YWtlbiBhbm90aGVyIHJlZmVyZW5jZQ0KIAkJICogdG8gdGhl
IGFsaWFzIHZub2RlLg0KIAkJICovDQorCQl2cmVsZShsb3dlcnZwKTsNCiAj
aWZkZWYgTlVMTEZTX0RFQlVHDQogCQl2cHJpbnQoIm51bGxfbm9kZV9jcmVh
dGU6IGV4aXN0cyIsIGFsaWFzdnApOw0KICNlbmRpZg0KLQkJLyogVlJFRihh
bGlhc3ZwKTsgLS0tIGRvbmUgaW4gbnVsbF9ub2RlX2ZpbmQgKi8NCiAJfSBl
bHNlIHsNCiAJCWludCBlcnJvcjsNCiANCkBAIC0yNDQsOCArMjYxLDYgQEAN
CiAJCSAqIGFsaWFzdnAgaXMgYWxyZWFkeSBWUkVGJ2QgYnkgZ2V0bmV3dm5v
ZGUoKQ0KIAkJICovDQogCX0NCi0NCi0JdnJlbGUobG93ZXJ2cCk7DQogDQog
I2lmZGVmIERJQUdOT1NUSUMNCiAJaWYgKGxvd2VydnAtPnZfdXNlY291bnQg
PCAxKSB7DQpJbmRleDogbWlzY2ZzL251bGxmcy9udWxsX3Zub3BzLmMNCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3Ny
Yy9zeXMvbWlzY2ZzL251bGxmcy9BdHRpYy9udWxsX3Zub3BzLmMsdg0KcmV0
cmlldmluZyByZXZpc2lvbiAxLjM4LjIuNA0KZGlmZiAtdSAtcjEuMzguMi40
IG51bGxfdm5vcHMuYw0KLS0tIG1pc2Nmcy9udWxsZnMvbnVsbF92bm9wcy5j
CTIwMDEvMDUvMzAgMDk6NDc6MDIJMS4zOC4yLjQNCisrKyBtaXNjZnMvbnVs
bGZzL251bGxfdm5vcHMuYwkyMDAxLzA2LzA2IDA4OjUzOjQ5DQpAQCAtMTk1
LDYgKzE5NSw3IEBADQogc3RhdGljIGludAludWxsX2dldGF0dHIoc3RydWN0
IHZvcF9nZXRhdHRyX2FyZ3MgKmFwKTsNCiBzdGF0aWMgaW50CW51bGxfZ2V0
dm9iamVjdChzdHJ1Y3Qgdm9wX2dldHZvYmplY3RfYXJncyAqYXApOw0KIHN0
YXRpYyBpbnQJbnVsbF9pbmFjdGl2ZShzdHJ1Y3Qgdm9wX2luYWN0aXZlX2Fy
Z3MgKmFwKTsNCitzdGF0aWMgaW50CW51bGxfaXNsb2NrZWQoc3RydWN0IHZv
cF9pc2xvY2tlZF9hcmdzICphcCk7DQogc3RhdGljIGludAludWxsX2xvY2so
c3RydWN0IHZvcF9sb2NrX2FyZ3MgKmFwKTsNCiBzdGF0aWMgaW50CW51bGxf
bG9va3VwKHN0cnVjdCB2b3BfbG9va3VwX2FyZ3MgKmFwKTsNCiBzdGF0aWMg
aW50CW51bGxfb3BlbihzdHJ1Y3Qgdm9wX29wZW5fYXJncyAqYXApOw0KQEAg
LTM1OSw0NCArMzYwLDQzIEBADQogCX0gKi8gKmFwOw0KIHsNCiAJc3RydWN0
IGNvbXBvbmVudG5hbWUgKmNucCA9IGFwLT5hX2NucDsNCisJc3RydWN0IHZu
b2RlICpkdnAgPSBhcC0+YV9kdnA7DQogCXN0cnVjdCBwcm9jICpwID0gY25w
LT5jbl9wcm9jOw0KIAlpbnQgZmxhZ3MgPSBjbnAtPmNuX2ZsYWdzOw0KLQlz
dHJ1Y3Qgdm9wX2xvY2tfYXJncyBsb2NrYXJnczsNCi0Jc3RydWN0IHZvcF91
bmxvY2tfYXJncyB1bmxvY2thcmdzOw0KLQlzdHJ1Y3Qgdm5vZGUgKmR2cCwg
KnZwOw0KKwlzdHJ1Y3Qgdm5vZGUgKnZwLCAqbGR2cCwgKmx2cDsNCiAJaW50
IGVycm9yOw0KIA0KLQlpZiAoKGZsYWdzICYgSVNMQVNUQ04pICYmIChhcC0+
YV9kdnAtPnZfbW91bnQtPm1udF9mbGFnICYgTU5UX1JET05MWSkgJiYNCisJ
aWYgKChmbGFncyAmIElTTEFTVENOKSAmJiAoZHZwLT52X21vdW50LT5tbnRf
ZmxhZyAmIE1OVF9SRE9OTFkpICYmDQogCSAgICAoY25wLT5jbl9uYW1laW9w
ID09IERFTEVURSB8fCBjbnAtPmNuX25hbWVpb3AgPT0gUkVOQU1FKSkNCiAJ
CXJldHVybiAoRVJPRlMpOw0KLQllcnJvciA9IG51bGxfYnlwYXNzKChzdHJ1
Y3Qgdm9wX2dlbmVyaWNfYXJncyAqKWFwKTsNCisJLyoNCisJICogQWx0aG91
Z2ggaXQgaXMgcG9zc2libGUgdG8gY2FsbCBudWxsX2J5cGFzcygpLCB3ZSds
bCBkbw0KKwkgKiBhIGRpcmVjdCBjYWxsIHRvIHJlZHVjZSBvdmVyaGVhZA0K
KwkgKi8NCisJbGR2cCA9IE5VTExWUFRPTE9XRVJWUChkdnApOw0KKwl2cCA9
IGx2cCA9IE5VTEw7DQorCWVycm9yID0gVk9QX0xPT0tVUChsZHZwLCAmbHZw
LCBjbnApOw0KIAlpZiAoZXJyb3IgPT0gRUpVU1RSRVRVUk4gJiYgKGZsYWdz
ICYgSVNMQVNUQ04pICYmDQotCSAgICAoYXAtPmFfZHZwLT52X21vdW50LT5t
bnRfZmxhZyAmIE1OVF9SRE9OTFkpICYmDQorCSAgICAoZHZwLT52X21vdW50
LT5tbnRfZmxhZyAmIE1OVF9SRE9OTFkpICYmDQogCSAgICAoY25wLT5jbl9u
YW1laW9wID09IENSRUFURSB8fCBjbnAtPmNuX25hbWVpb3AgPT0gUkVOQU1F
KSkNCiAJCWVycm9yID0gRVJPRlM7DQorDQogCS8qDQotCSAqIFdlIG11c3Qg
ZG8gdGhlIHNhbWUgbG9ja2luZyBhbmQgdW5sb2NraW5nIGF0IHRoaXMgbGF5
ZXIgYXMgDQotCSAqIGlzIGRvbmUgaW4gdGhlIGxheWVycyBiZWxvdyB1cy4g
V2UgY291bGQgZmlndXJlIHRoaXMgb3V0IA0KLQkgKiBiYXNlZCBvbiB0aGUg
ZXJyb3IgcmV0dXJuIGFuZCB0aGUgTEFTVENOLCBMT0NLUEFSRU5ULCBhbmQN
Ci0JICogTE9DS0xFQUYgZmxhZ3MuIEhvd2V2ZXIsIGl0IGlzIG1vcmUgZXhw
aWRpZW50IHRvIGp1c3QgZmluZCANCi0JICogb3V0IHRoZSBzdGF0ZSBvZiB0
aGUgbG93ZXIgbGV2ZWwgdm5vZGVzIGFuZCBzZXQgb3VycyB0byB0aGUNCi0J
ICogc2FtZSBzdGF0ZS4NCisJICogUmVseSBvbmx5IG9uIHRoZSBQRElSVU5M
T0NLIGZsYWcgd2hpY2ggc2hvdWxkIGJlIGNhcmVmdWxseQ0KKwkgKiB0cmFj
a2VkIGJ5IHVuZGVybHlpbmcgZmlsZXN5c3RlbS4NCiAJICovDQotCWR2cCA9
IGFwLT5hX2R2cDsNCi0JdnAgPSAqYXAtPmFfdnBwOw0KLQlpZiAoZHZwID09
IHZwKQ0KLQkJcmV0dXJuIChlcnJvcik7DQotCWlmICghVk9QX0lTTE9DS0VE
KGR2cCwgTlVMTCkpIHsNCi0JCXVubG9ja2FyZ3MuYV92cCA9IGR2cDsNCi0J
CXVubG9ja2FyZ3MuYV9mbGFncyA9IDA7DQotCQl1bmxvY2thcmdzLmFfcCA9
IHA7DQotCQl2b3Bfbm91bmxvY2soJnVubG9ja2FyZ3MpOw0KLQl9DQotCWlm
ICh2cCAhPSBOVUxMVlAgJiYgVk9QX0lTTE9DS0VEKHZwLCBOVUxMKSkgew0K
LQkJbG9ja2FyZ3MuYV92cCA9IHZwOw0KLQkJbG9ja2FyZ3MuYV9mbGFncyA9
IExLX1NIQVJFRDsNCi0JCWxvY2thcmdzLmFfcCA9IHA7DQotCQl2b3Bfbm9s
b2NrKCZsb2NrYXJncyk7DQorCWlmIChjbnAtPmNuX2ZsYWdzICYgUERJUlVO
TE9DSykNCisJCVZPUF9VTkxPQ0soZHZwLCBMS19USElTTEFZRVIsIHApOw0K
KwlpZiAoKGVycm9yID09IDAgfHwgZXJyb3IgPT0gRUpVU1RSRVRVUk4pICYm
IGx2cCAhPSBOVUxMKSB7DQorCQlpZiAobGR2cCA9PSBsdnApIHsNCisJCQkq
YXAtPmFfdnBwID0gZHZwOw0KKwkJCVZSRUYoZHZwKTsNCisJCQl2cmVsZShs
dnApOw0KKwkJfSBlbHNlIHsNCisJCQllcnJvciA9IG51bGxfbm9kZV9jcmVh
dGUoZHZwLT52X21vdW50LCBsdnAsICZ2cCk7DQorCQkJaWYgKGVycm9yID09
IDApDQorCQkJCSphcC0+YV92cHAgPSB2cDsNCisJCX0NCiAJfQ0KIAlyZXR1
cm4gKGVycm9yKTsNCiB9DQpAQCAtNDY0LDYgKzQ2NCw4IEBADQogDQogCWlm
ICgoZXJyb3IgPSBudWxsX2J5cGFzcygoc3RydWN0IHZvcF9nZW5lcmljX2Fy
Z3MgKilhcCkpICE9IDApDQogCQlyZXR1cm4gKGVycm9yKTsNCisNCisJYXAt
PmFfdmFwLT52YV9mc2lkID0gYXAtPmFfdnAtPnZfbW91bnQtPm1udF9zdGF0
LmZfZnNpZC52YWxbMF07DQogCXJldHVybiAoMCk7DQogfQ0KIA0KQEAgLTU3
NSwxMiArNTc3LDY0IEBADQogCQlzdHJ1Y3QgcHJvYyAqYV9wOw0KIAl9ICov
ICphcDsNCiB7DQorCXN0cnVjdCB2bm9kZSAqdnAgPSBhcC0+YV92cDsNCisJ
aW50IGZsYWdzID0gYXAtPmFfZmxhZ3M7DQorCXN0cnVjdCBwcm9jICpwID0g
YXAtPmFfcDsNCisJc3RydWN0IG51bGxfbm9kZSAqbnAgPSBWVE9OVUxMKHZw
KTsNCisJc3RydWN0IHZub2RlICpsdnA7DQorCWludCBlcnJvcjsNCiANCi0J
dm9wX25vbG9jayhhcCk7DQotCWlmICgoYXAtPmFfZmxhZ3MgJiBMS19UWVBF
X01BU0spID09IExLX0RSQUlOKQ0KLQkJcmV0dXJuICgwKTsNCi0JYXAtPmFf
ZmxhZ3MgJj0gfkxLX0lOVEVSTE9DSzsNCi0JcmV0dXJuIChudWxsX2J5cGFz
cygoc3RydWN0IHZvcF9nZW5lcmljX2FyZ3MgKilhcCkpOw0KKwlpZiAoZmxh
Z3MgJiBMS19USElTTEFZRVIpIHsNCisJCWlmICh2cC0+dl92bmxvY2sgIT0g
TlVMTCkNCisJCQlyZXR1cm4gMDsJLyogbG9jayBpcyBzaGFyZWQgYWNyb3Nz
IGxheWVycyAqLw0KKwkJZXJyb3IgPSBsb2NrbWdyKCZucC0+bnVsbF9sb2Nr
LCBmbGFncyAmIH5MS19USElTTEFZRVIsDQorCQkgICAgJnZwLT52X2ludGVy
bG9jaywgcCk7DQorCQlyZXR1cm4gKGVycm9yKTsNCisJfQ0KKw0KKwlpZiAo
dnAtPnZfdm5sb2NrICE9IE5VTEwpIHsNCisJCS8qDQorCQkgKiBUaGUgbG93
ZXIgbGV2ZWwgaGFzIGV4cG9ydGVkIGEgc3RydWN0IGxvY2sgdG8gdXMuIFVz
ZQ0KKwkJICogaXQgc28gdGhhdCBhbGwgdm5vZGVzIGluIHRoZSBzdGFjayBs
b2NrIGFuZCB1bmxvY2sNCisJCSAqIHNpbXVsdGFuZW91c2x5LiBOb3RlOiB3
ZSBkb24ndCBEUkFJTiB0aGUgbG9jayBhcyBEUkFJTg0KKwkJICogZGVjb21t
aXNzaW9ucyB0aGUgbG9jayAtIGp1c3QgYmVjYXVzZSBvdXIgdm5vZGUgaXMN
CisJCSAqIGdvaW5nIGF3YXkgZG9lc24ndCBtZWFuIHRoZSBzdHJ1Y3QgbG9j
ayBiZWxvdyB1cyBpcy4NCisJCSAqIExLX0VYQ0xVU0lWRSBpcyBmaW5lLg0K
KwkJICovDQorCQlpZiAoKGZsYWdzICYgTEtfVFlQRV9NQVNLKSA9PSBMS19E
UkFJTikgew0KKwkJCU5VTExGU0RFQlVHKCJudWxsX2xvY2s6IGF2b2lkaW5n
IExLX0RSQUlOXG4iKTsNCisJCQlyZXR1cm4obG9ja21ncih2cC0+dl92bmxv
Y2ssDQorCQkJCShmbGFncyAmIH5MS19UWVBFX01BU0spIHwgTEtfRVhDTFVT
SVZFLA0KKwkJCQkmdnAtPnZfaW50ZXJsb2NrLCBwKSk7DQorCQl9DQorCQly
ZXR1cm4obG9ja21ncih2cC0+dl92bmxvY2ssIGZsYWdzLCAmdnAtPnZfaW50
ZXJsb2NrLCBwKSk7DQorCX0NCisJLyoNCisJICogVG8gcHJldmVudCByYWNl
IGNvbmRpdGlvbnMgaW52b2x2aW5nIGRvaW5nIGEgbG9va3VwDQorCSAqIG9u
ICIuLiIsIHdlIGhhdmUgdG8gbG9jayB0aGUgbG93ZXIgbm9kZSwgdGhlbiBs
b2NrIG91cg0KKwkgKiBub2RlLiBNb3N0IG9mIHRoZSB0aW1lIGl0IHdvbid0
IG1hdHRlciB0aGF0IHdlIGxvY2sgb3VyDQorCSAqIG5vZGUgKGFzIGFueSBs
b2NraW5nIHdvdWxkIG5lZWQgdGhlIGxvd2VyIG9uZSBsb2NrZWQNCisJICog
Zmlyc3QpLiBCdXQgd2UgY2FuIExLX0RSQUlOIHRoZSB1cHBlciBsb2NrIGFz
IGEgc3RlcA0KKwkgKiB0b3dhcmRzIGRlY29taXNzaW9uaW5nIGl0Lg0KKwkg
Ki8NCisJbHZwID0gTlVMTFZQVE9MT1dFUlZQKHZwKTsNCisJaWYgKGx2cCA9
PSBOVUxMKQ0KKwkJcmV0dXJuIChsb2NrbWdyKCZucC0+bnVsbF9sb2NrLCBm
bGFncywgJnZwLT52X2ludGVybG9jaywgcCkpOw0KKwlpZiAoZmxhZ3MgJiBM
S19JTlRFUkxPQ0spIHsNCisJCVZJX1VOTE9DSyh2cCk7DQorCQlmbGFncyAm
PSB+TEtfSU5URVJMT0NLOw0KKwl9DQorCWlmICgoZmxhZ3MgJiBMS19UWVBF
X01BU0spID09IExLX0RSQUlOKSB7DQorCQllcnJvciA9IFZPUF9MT0NLKGx2
cCwNCisJCQkoZmxhZ3MgJiB+TEtfVFlQRV9NQVNLKSB8IExLX0VYQ0xVU0lW
RSwgcCk7DQorCX0gZWxzZQ0KKwkJZXJyb3IgPSBWT1BfTE9DSyhsdnAsIGZs
YWdzLCBwKTsNCisJaWYgKGVycm9yKQ0KKwkJcmV0dXJuIChlcnJvcik7DQor
CWVycm9yID0gbG9ja21ncigmbnAtPm51bGxfbG9jaywgZmxhZ3MsICZ2cC0+
dl9pbnRlcmxvY2ssIHApOw0KKwlpZiAoZXJyb3IpDQorCQlWT1BfVU5MT0NL
KGx2cCwgMCwgcCk7DQorCXJldHVybiAoZXJyb3IpOw0KIH0NCiANCiAvKg0K
QEAgLTU5NiwxMiArNjUwLDU2IEBADQogCQlzdHJ1Y3QgcHJvYyAqYV9wOw0K
IAl9ICovICphcDsNCiB7DQotCXZvcF9ub3VubG9jayhhcCk7DQotCWFwLT5h
X2ZsYWdzICY9IH5MS19JTlRFUkxPQ0s7DQotCXJldHVybiAobnVsbF9ieXBh
c3MoKHN0cnVjdCB2b3BfZ2VuZXJpY19hcmdzICopYXApKTsNCisJc3RydWN0
IHZub2RlICp2cCA9IGFwLT5hX3ZwOw0KKwlpbnQgZmxhZ3MgPSBhcC0+YV9m
bGFnczsNCisJc3RydWN0IHByb2MgKnAgPSBhcC0+YV9wOw0KKwlzdHJ1Y3Qg
bnVsbF9ub2RlICpucCA9IFZUT05VTEwodnApOw0KKwlzdHJ1Y3Qgdm5vZGUg
Kmx2cDsNCisNCisJaWYgKHZwLT52X3ZubG9jayAhPSBOVUxMKSB7DQorCQlp
ZiAoZmxhZ3MgJiBMS19USElTTEFZRVIpDQorCQkJcmV0dXJuIDA7CS8qIHRo
ZSBsb2NrIGlzIHNoYXJlZCBhY3Jvc3MgbGF5ZXJzICovDQorCQlmbGFncyAm
PSB+TEtfVEhJU0xBWUVSOw0KKwkJcmV0dXJuIChsb2NrbWdyKHZwLT52X3Zu
bG9jaywgZmxhZ3MgfCBMS19SRUxFQVNFLA0KKwkJCSZ2cC0+dl9pbnRlcmxv
Y2ssIHApKTsNCisJfQ0KKwlsdnAgPSBOVUxMVlBUT0xPV0VSVlAodnApOw0K
KwlpZiAobHZwID09IE5VTEwpDQorCQlyZXR1cm4gKGxvY2ttZ3IoJm5wLT5u
dWxsX2xvY2ssIGZsYWdzIHwgTEtfUkVMRUFTRSwgJnZwLT52X2ludGVybG9j
aywgcCkpOw0KKwlpZiAoKGZsYWdzICYgTEtfVEhJU0xBWUVSKSA9PSAwKSB7
DQorCQlpZiAoZmxhZ3MgJiBMS19JTlRFUkxPQ0spIHsNCisJCQlWSV9VTkxP
Q0sodnApOw0KKwkJCWZsYWdzICY9IH5MS19JTlRFUkxPQ0s7DQorCQl9DQor
CQlWT1BfVU5MT0NLKGx2cCwgZmxhZ3MsIHApOw0KKwl9IGVsc2UNCisJCWZs
YWdzICY9IH5MS19USElTTEFZRVI7DQorCWFwLT5hX2ZsYWdzID0gZmxhZ3M7
DQorCXJldHVybiAobG9ja21ncigmbnAtPm51bGxfbG9jaywgZmxhZ3MgfCBM
S19SRUxFQVNFLCAmdnAtPnZfaW50ZXJsb2NrLCBwKSk7DQogfQ0KIA0KIHN0
YXRpYyBpbnQNCitudWxsX2lzbG9ja2VkKGFwKQ0KKwlzdHJ1Y3Qgdm9wX2lz
bG9ja2VkX2FyZ3MgLyogew0KKwkJc3RydWN0IHZub2RlICphX3ZwOw0KKwkJ
c3RydWN0IHByb2MgKmFfcDsNCisJfSAqLyAqYXA7DQorew0KKwlzdHJ1Y3Qg
dm5vZGUgKnZwID0gYXAtPmFfdnA7DQorCXN0cnVjdCBwcm9jICpwID0gYXAt
PmFfcDsNCisNCisJaWYgKHZwLT52X3ZubG9jayAhPSBOVUxMKQ0KKwkJcmV0
dXJuIChsb2Nrc3RhdHVzKHZwLT52X3ZubG9jaywgcCkpOw0KKwlyZXR1cm4g
KGxvY2tzdGF0dXMoJlZUT05VTEwodnApLT5udWxsX2xvY2ssIHApKTsNCit9
DQorDQorDQorLyoNCisgKiBUaGVyZSBpcyBubyB3YXkgdG8gdGVsbCB0aGF0
IHNvbWVvbmUgaXNzdWVkIHJlbW92ZS9ybWRpciBvcGVyYXRpb24NCisgKiBv
biB0aGUgdW5kZXJseWluZyBmaWxlc3lzdGVtLiBGb3Igbm93IHdlIGp1c3Qg
aGF2ZSB0byByZWxlYXNlIGxvd2V2cnANCisgKiBhcyBzb29uIGFzIHBvc3Np
YmxlLg0KKyAqLw0KK3N0YXRpYyBpbnQNCiBudWxsX2luYWN0aXZlKGFwKQ0K
IAlzdHJ1Y3Qgdm9wX2luYWN0aXZlX2FyZ3MgLyogew0KIAkJc3RydWN0IHZu
b2RlICphX3ZwOw0KQEAgLTYwOSwyNyArNzA3LDM0IEBADQogCX0gKi8gKmFw
Ow0KIHsNCiAJc3RydWN0IHZub2RlICp2cCA9IGFwLT5hX3ZwOw0KKwlzdHJ1
Y3QgcHJvYyAqcCA9IGFwLT5hX3A7DQogCXN0cnVjdCBudWxsX25vZGUgKnhw
ID0gVlRPTlVMTCh2cCk7DQogCXN0cnVjdCB2bm9kZSAqbG93ZXJ2cCA9IHhw
LT5udWxsX2xvd2VydnA7DQorDQorCWxvY2ttZ3IoJm51bGxfaGFzaGxvY2ss
IExLX0VYQ0xVU0lWRSwgTlVMTCwgcCk7DQorCUxJU1RfUkVNT1ZFKHhwLCBu
dWxsX2hhc2gpOw0KKwlsb2NrbWdyKCZudWxsX2hhc2hsb2NrLCBMS19SRUxF
QVNFLCBOVUxMLCBwKTsNCisNCisJeHAtPm51bGxfbG93ZXJ2cCA9IE5VTExW
UDsNCisJaWYgKHZwLT52X3ZubG9jayAhPSBOVUxMKSB7DQorCQl2cC0+dl92
bmxvY2sgPSAmeHAtPm51bGxfbG9jazsJLyogd2Ugbm8gbG9uZ2VyIHNoYXJl
IHRoZSBsb2NrICovDQorCX0gZWxzZQ0KKwkJVk9QX1VOTE9DSyh2cCwgTEtf
VEhJU0xBWUVSLCBwKTsNCisNCisJdnB1dChsb3dlcnZwKTsNCiAJLyoNCi0J
ICogRG8gbm90aGluZyAoYW5kIF9kb24ndF8gYnlwYXNzKS4NCi0JICogV2Fp
dCB0byB2cmVsZSBsb3dlcnZwIHVudGlsIHJlY2xhaW0sDQotCSAqIHNvIHRo
YXQgdW50aWwgdGhlbiBvdXIgbnVsbF9ub2RlIGlzIGluIHRoZQ0KLQkgKiBj
YWNoZSBhbmQgcmV1c2FibGUuDQotCSAqIFdlIHN0aWxsIGhhdmUgdG8gdGVs
bCB0aGUgbG93ZXIgbGF5ZXIgdGhlIHZub2RlDQotCSAqIGlzIG5vdyBpbmFj
dGl2ZSB0aG91Z2guDQotCSAqDQotCSAqIE5FRURTV09SSzogU29tZWRheSwg
Y29uc2lkZXIgaW5hY3RpdmUnaW5nDQotCSAqIHRoZSBsb3dlcnZwIGFuZCB0
aGVuIHRyeWluZyB0byByZWFjdGl2YXRlIGl0DQotCSAqIHdpdGggY2FwYWJp
bGl0aWVzICh2X2lkKQ0KLQkgKiBsaWtlIHRoZXkgZG8gaW4gdGhlIG5hbWUg
bG9va3VwIGNhY2hlIGNvZGUuDQotCSAqIFRoYXQncyB0b28gbXVjaCB3b3Jr
IGZvciBub3cuDQorCSAqIE5vdyBpdCBpcyBzYWZlIHRvIGRyb3AgcmVmZXJl
bmNlcyB0byB0aGUgbG93ZXIgdm5vZGUuDQorCSAqIFZPUF9JTkFDVElWRSgp
IHdpbGwgYmUgY2FsbGVkIGJ5IHZyZWxlKCkgaWYgbmVjZXNzYXJ5Lg0KIAkg
Ki8NCi0JVk9QX0lOQUNUSVZFKGxvd2VydnAsIGFwLT5hX3ApOw0KLQlWT1Bf
VU5MT0NLKGFwLT5hX3ZwLCAwLCBhcC0+YV9wKTsNCisJdnJlbGUgKGxvd2Vy
dnApOw0KKw0KIAlyZXR1cm4gKDApOw0KIH0NCiANCisvKg0KKyAqIFdlIGNh
biBmcmVlIG1lbW9yeSBpbiBudWxsX2luYWN0aXZlLCBidXQgd2UgZG8gdGhp
cw0KKyAqIGhlcmUuIChQb3NzaWJsZSB0byBndWFyZCB2cC0+dl9kYXRhIHRv
IHBvaW50IHNvbWV3aGVyZSkNCisgKi8NCiBzdGF0aWMgaW50DQogbnVsbF9y
ZWNsYWltKGFwKQ0KIAlzdHJ1Y3Qgdm9wX3JlY2xhaW1fYXJncyAvKiB7DQpA
QCAtNjM4LDIyICs3NDMsMTEgQEANCiAJfSAqLyAqYXA7DQogew0KIAlzdHJ1
Y3Qgdm5vZGUgKnZwID0gYXAtPmFfdnA7DQotCXN0cnVjdCBwcm9jICpwID0g
YXAtPmFfcDsNCi0Jc3RydWN0IG51bGxfbm9kZSAqeHAgPSBWVE9OVUxMKHZw
KTsNCi0Jc3RydWN0IHZub2RlICpsb3dlcnZwID0geHAtPm51bGxfbG93ZXJ2
cDsNCisJdm9pZCAqdmRhdGEgPSB2cC0+dl9kYXRhOw0KIA0KLQkvKg0KLQkg
KiBOb3RlOiBpbiB2b3BfcmVjbGFpbSwgdnAtPnZfb3AgPT0gZGVhZF92bm9k
ZW9wX3AsDQotCSAqIHNvIHdlIGNhbid0IGNhbGwgVk9QcyBvbiBvdXJzZWxm
Lg0KLQkgKi8NCi0JLyogQWZ0ZXIgdGhpcyBhc3NpZ25tZW50LCB0aGlzIG5v
ZGUgd2lsbCBub3QgYmUgcmUtdXNlZC4gKi8NCi0JeHAtPm51bGxfbG93ZXJ2
cCA9IE5VTExWUDsNCi0JbG9ja21ncigmbnVsbF9oYXNobG9jaywgTEtfRVhD
TFVTSVZFLCBOVUxMLCBwKTsNCi0JTElTVF9SRU1PVkUoeHAsIG51bGxfaGFz
aCk7DQotCWxvY2ttZ3IoJm51bGxfaGFzaGxvY2ssIExLX1JFTEVBU0UsIE5V
TEwsIHApOw0KIAl2cC0+dl9kYXRhID0gTlVMTDsNCi0JRlJFRSh4cCwgTV9O
VUxMRlNOT0RFKTsNCi0JdnJlbGUgKGxvd2VydnApOw0KKwlGUkVFKHZkYXRh
LCBNX05VTExGU05PREUpOw0KKw0KIAlyZXR1cm4gKDApOw0KIH0NCiANCkBA
IC03MzMsNiArODI3LDcgQEANCiAJeyAmdm9wX2dldGF0dHJfZGVzYywJCSh2
b3BfdCAqKSBudWxsX2dldGF0dHIgfSwNCiAJeyAmdm9wX2dldHZvYmplY3Rf
ZGVzYywJCSh2b3BfdCAqKSBudWxsX2dldHZvYmplY3QgfSwNCiAJeyAmdm9w
X2luYWN0aXZlX2Rlc2MsCQkodm9wX3QgKikgbnVsbF9pbmFjdGl2ZSB9LA0K
Kwl7ICZ2b3BfaXNsb2NrZWRfZGVzYywJCSh2b3BfdCAqKSBudWxsX2lzbG9j
a2VkIH0sDQogCXsgJnZvcF9sb2NrX2Rlc2MsCQkodm9wX3QgKikgbnVsbF9s
b2NrIH0sDQogCXsgJnZvcF9sb29rdXBfZGVzYywJCSh2b3BfdCAqKSBudWxs
X2xvb2t1cCB9LA0KIAl7ICZ2b3Bfb3Blbl9kZXNjLAkJKHZvcF90ICopIG51
bGxfb3BlbiB9LA0KSW5kZXg6IHN5cy9sb2NrLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0NClJDUyBmaWxlOiAvaG9tZS9uY3ZzL3NyYy9zeXMvc3lzL2xv
Y2suaCx2DQpyZXRyaWV2aW5nIHJldmlzaW9uIDEuMTcuMi4xDQpkaWZmIC11
IC1yMS4xNy4yLjEgbG9jay5oDQotLS0gc3lzL2xvY2suaAkyMDAwLzA5LzMw
IDAyOjQ5OjM3CTEuMTcuMi4xDQorKysgc3lzL2xvY2suaAkyMDAxLzA2LzA2
IDA4OjUzOjQ5DQpAQCAtMTQxLDYgKzE0MSw3IEBADQogCQkJCSAgIGdldHRp
bmcgbGtfaW50ZXJsb2NrICovDQogI2RlZmluZSBMS19SRVRSWQkweDAwMDIw
MDAwIC8qIHZuX2xvY2s6IHJldHJ5IHVudGlsIGxvY2tlZCAqLw0KICNkZWZp
bmUJTEtfTk9PQkoJMHgwMDA0MDAwMCAvKiB2Z2V0OiBkb24ndCBjcmVhdGUg
b2JqZWN0ICovDQorI2RlZmluZQlMS19USElTTEFZRVIJMHgwMDA4MDAwMCAv
KiB2bl9sb2NrOiBsb2NrL3VubG9jayBvbmx5IGN1cnJlbnQgbGF5ZXIgKi8N
CiANCiAvKg0KICAqIEludGVybmFsIHN0YXRlIGZsYWdzIGNvcnJlc3BvbmRp
bmcgdG8gbGtfc2hhcmVjb3VudCwgYW5kIGxrX3dhaXRjb3VudA0K
--0-248198860-991820441=:61571--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-stable" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0106061624520.61571-200000>