Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 9 Apr 2012 12:20:15 GMT
From:      ONGS-OZAWA <ozawa@ongs.co.jp>
To:        freebsd-fs@FreeBSD.org
Subject:   Re: kern/161511: [unionfs] Filesystem deadlocks when using multiple unionfs mounts on top of single filesystem
Message-ID:  <201204091220.q39CKF0x011689@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR kern/161511; it has been noted by GNATS.

From: ONGS-OZAWA <ozawa@ongs.co.jp>
To: bug-followup@FreeBSD.org, gcooper@ixsystems.com
Cc:  
Subject: Re: kern/161511: [unionfs] Filesystem deadlocks when using multiple
 unionfs mounts on top of single filesystem
Date: Mon, 09 Apr 2012 21:17:14 +0900

 This is a multi-part message in MIME format.
 --------------080703070504010006020003
 Content-Type: text/plain; charset=ISO-2022-JP
 Content-Transfer-Encoding: 7bit
 
 Please try this new patch that solves a dead lock issue of unionfs.
 
 # cd /usr/src/
 # patch -p3 < attached_file
 
 --
  ONGS Inc.
  Ozawa <ozawa@ongs.co.jp>
  WWW: http://www.ongs.co.jp/
 
 --------------080703070504010006020003
 Content-Type: text/plain;
  name="unionfs_20120409.diff"
 Content-Transfer-Encoding: base64
 Content-Disposition: attachment;
  filename="unionfs_20120409.diff"
 
 ZGlmZiAtdXJCTiAvdXNyL3NyYy5vcmlnL3N5cy9mcy91bmlvbmZzL3VuaW9uX3N1YnIuYyAv
 dXNyL3NyYy9zeXMvZnMvdW5pb25mcy91bmlvbl9zdWJyLmMKLS0tIC91c3Ivc3JjLm9yaWcv
 c3lzL2ZzL3VuaW9uZnMvdW5pb25fc3Vici5jCTIwMTItMDQtMDggMTQ6MDE6MjMuMDAwMDAw
 MDAwICswOTAwCisrKyAvdXNyL3NyYy9zeXMvZnMvdW5pb25mcy91bmlvbl9zdWJyLmMJMjAx
 Mi0wNC0wOSAxMTozMjoyOS4wMDAwMDAwMDAgKzA5MDAKQEAgLTM1MCwxOSArMzUwLDIyIEBA
 CiAJdXZwID0gdW5wLT51bl91cHBlcnZwOwogCWR2cCA9IHVucC0+dW5fZHZwOwogCXVucC0+
 dW5fbG93ZXJ2cCA9IHVucC0+dW5fdXBwZXJ2cCA9IE5VTExWUDsKLQogCXZwLT52X3ZubG9j
 ayA9ICYodnAtPnZfbG9jayk7CiAJdnAtPnZfZGF0YSA9IE5VTEw7Ci0JbG9ja21ncih2cC0+
 dl92bmxvY2ssIExLX0VYQ0xVU0lWRSB8IExLX0lOVEVSTE9DSywgVklfTVRYKHZwKSk7CisJ
 dnAtPnZfb2JqZWN0ID0gTlVMTDsKKwlWSV9VTkxPQ0sodnApOworCiAJaWYgKGx2cCAhPSBO
 VUxMVlApCi0JCVZPUF9VTkxPQ0sobHZwLCAwKTsKKwkJVk9QX1VOTE9DSyhsdnAsIExLX1JF
 TEVBU0UpOwogCWlmICh1dnAgIT0gTlVMTFZQKQotCQlWT1BfVU5MT0NLKHV2cCwgMCk7Ci0J
 dnAtPnZfb2JqZWN0ID0gTlVMTDsKKwkJVk9QX1VOTE9DSyh1dnAsIExLX1JFTEVBU0UpOwog
 CiAJaWYgKGR2cCAhPSBOVUxMVlAgJiYgdW5wLT51bl9oYXNoLmxlX3ByZXYgIT0gTlVMTCkK
 IAkJdW5pb25mc19yZW1fY2FjaGVkX3Zub2RlKHVucCwgZHZwKTsKIAorCWlmIChsb2NrbWdy
 KHZwLT52X3ZubG9jaywgTEtfRVhDTFVTSVZFLCBWSV9NVFgodnApKSAhPSAwKQorCQlwYW5p
 YygidGhlIGxvY2sgZm9yIGRlbGV0aW9uIGlzIHVuYWNxdWlyYWJsZS4iKTsKKwogCWlmIChs
 dnAgIT0gTlVMTFZQKSB7CiAJCXZmc2xvY2tlZCA9IFZGU19MT0NLX0dJQU5UKGx2cC0+dl9t
 b3VudCk7CiAJCXZyZWxlKGx2cCk7CkBAIC01NTAsNyArNTUzLDcgQEAKIAkJY24tPmNuX2Zs
 YWdzIHw9IChjbnAtPmNuX2ZsYWdzICYgU0FWRVNUQVJUKTsKIAogCXZyZWYoZHZwKTsKLQlW
 T1BfVU5MT0NLKGR2cCwgMCk7CisJVk9QX1VOTE9DSyhkdnAsIExLX1JFTEVBU0UpOwogCiAJ
 aWYgKChlcnJvciA9IHJlbG9va3VwKGR2cCwgdnBwLCBjbikpKSB7CiAJCXVtYV96ZnJlZShu
 YW1laV96b25lLCBjbi0+Y25fcG5idWYpOwpAQCAtOTU3LDcgKzk2MCw3IEBACiAJKnZwcCA9
 IHZwOwogCiB1bmlvbmZzX3ZuX2NyZWF0ZV9vbl91cHBlcl9mcmVlX291dDE6Ci0JVk9QX1VO
 TE9DSyh1ZHZwLCAwKTsKKwlWT1BfVU5MT0NLKHVkdnAsIExLX1JFTEVBU0UpOwogCiB1bmlv
 bmZzX3ZuX2NyZWF0ZV9vbl91cHBlcl9mcmVlX291dDI6CiAJaWYgKGNuLmNuX2ZsYWdzICYg
 SEFTQlVGKSB7CmRpZmYgLXVyQk4gL3Vzci9zcmMub3JpZy9zeXMvZnMvdW5pb25mcy91bmlv
 bl92ZnNvcHMuYyAvdXNyL3NyYy9zeXMvZnMvdW5pb25mcy91bmlvbl92ZnNvcHMuYwotLS0g
 L3Vzci9zcmMub3JpZy9zeXMvZnMvdW5pb25mcy91bmlvbl92ZnNvcHMuYwkyMDEyLTA0LTA4
 IDE0OjAxOjIzLjAwMDAwMDAwMCArMDkwMAorKysgL3Vzci9zcmMvc3lzL2ZzL3VuaW9uZnMv
 dW5pb25fdmZzb3BzLmMJMjAxMi0wNC0wOSAxMTozMjoyOS4wMDAwMDAwMDAgKzA5MDAKQEAg
 LTE2NSw3ICsxNjUsNyBAQAogCQl1aWQgPSB2YS52YV91aWQ7CiAJCWdpZCA9IHZhLnZhX2dp
 ZDsKIAl9Ci0JVk9QX1VOTE9DSyhtcC0+bW50X3Zub2RlY292ZXJlZCwgMCk7CisJVk9QX1VO
 TE9DSyhtcC0+bW50X3Zub2RlY292ZXJlZCwgTEtfUkVMRUFTRSk7CiAJaWYgKGVycm9yKQog
 CQlyZXR1cm4gKGVycm9yKTsKIApAQCAtMjUwLDcgKzI1MCw3IEBACiAJICogU2F2ZSByZWZl
 cmVuY2UKIAkgKi8KIAlpZiAoYmVsb3cpIHsKLQkJVk9QX1VOTE9DSyh1cHBlcnJvb3R2cCwg
 MCk7CisJCVZPUF9VTkxPQ0sodXBwZXJyb290dnAsIExLX1JFTEVBU0UpOwogCQl2bl9sb2Nr
 KGxvd2Vycm9vdHZwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7CiAJCXVtcC0+dW1fbG93
 ZXJ2cCA9IHVwcGVycm9vdHZwOwogCQl1bXAtPnVtX3VwcGVydnAgPSBsb3dlcnJvb3R2cDsK
 QEAgLTI4MSw3ICsyODEsNyBAQAogCS8qCiAJICogVW5sb2NrIHRoZSBub2RlCiAJICovCi0J
 Vk9QX1VOTE9DSyh1bXAtPnVtX3VwcGVydnAsIDApOworCVZPUF9VTkxPQ0sodW1wLT51bV91
 cHBlcnZwLCBMS19SRUxFQVNFKTsKIAogCS8qCiAJICogR2V0IHRoZSB1bmlvbmZzIHJvb3Qg
 dm5vZGUuCmRpZmYgLXVyQk4gL3Vzci9zcmMub3JpZy9zeXMvZnMvdW5pb25mcy91bmlvbl92
 bm9wcy5jIC91c3Ivc3JjL3N5cy9mcy91bmlvbmZzL3VuaW9uX3Zub3BzLmMKLS0tIC91c3Iv
 c3JjLm9yaWcvc3lzL2ZzL3VuaW9uZnMvdW5pb25fdm5vcHMuYwkyMDEyLTA0LTA4IDE0OjAx
 OjIzLjAwMDAwMDAwMCArMDkwMAorKysgL3Vzci9zcmMvc3lzL2ZzL3VuaW9uZnMvdW5pb25f
 dm5vcHMuYwkyMDEyLTA0LTA5IDExOjMyOjI5LjAwMDAwMDAwMCArMDkwMApAQCAtNzUsMjEg
 Kzc1LDYgQEAKIAlLQVNTRVJUKCgodnApLT52X29wID09ICZ1bmlvbmZzX3Zub2Rlb3BzKSwg
 XAogCSAgICAoInVuaW9uZnM6IGl0IGlzIG5vdCB1bmlvbmZzLXZub2RlIikpCiAKLS8qIGxv
 Y2ttZ3IgbG9jayA8LT4gcmV2ZXJzZSB0YWJsZSAqLwotc3RydWN0IGxrX2xyX3RhYmxlIHsK
 LQlpbnQJbG9jazsKLQlpbnQJcmV2bG9jazsKLX07Ci0KLXN0YXRpYyBzdHJ1Y3QgbGtfbHJf
 dGFibGUgdW5fbGx0W10gPSB7Ci0Je0xLX1NIQVJFRCwgTEtfUkVMRUFTRX0sCi0Je0xLX0VY
 Q0xVU0lWRSwgTEtfUkVMRUFTRX0sCi0Je0xLX1VQR1JBREUsIExLX0RPV05HUkFERX0sCi0J
 e0xLX0RPV05HUkFERSwgTEtfVVBHUkFERX0sCi0JezAsIDB9Ci19OwotCi0KIHN0YXRpYyBp
 bnQKIHVuaW9uZnNfbG9va3VwKHN0cnVjdCB2b3BfY2FjaGVkbG9va3VwX2FyZ3MgKmFwKQog
 ewpAQCAtMTQxLDcgKzEyNiw3IEBACiAJCWlmICh1ZHZwICE9IE5VTExWUCkgewogCQkJZHRt
 cHZwID0gdWR2cDsKIAkJCWlmIChsZHZwICE9IE5VTExWUCkKLQkJCQlWT1BfVU5MT0NLKGxk
 dnAsIDApOworCQkJCVZPUF9VTkxPQ0sobGR2cCwgTEtfUkVMRUFTRSk7CiAJCX0KIAkJZWxz
 ZQogCQkJZHRtcHZwID0gbGR2cDsKQEAgLTE0OSw3ICsxMzQsNyBAQAogCQllcnJvciA9IFZP
 UF9MT09LVVAoZHRtcHZwLCAmdnAsIGNucCk7CiAKIAkJaWYgKGR0bXB2cCA9PSB1ZHZwICYm
 IGxkdnAgIT0gTlVMTFZQKSB7Ci0JCQlWT1BfVU5MT0NLKHVkdnAsIDApOworCQkJVk9QX1VO
 TE9DSyh1ZHZwLCBMS19SRUxFQVNFKTsKIAkJCXZuX2xvY2soZHZwLCBMS19FWENMVVNJVkUg
 fCBMS19SRVRSWSk7CiAJCX0KIApAQCAtMTYxLDEwICsxNDYsMTAgQEAKIAkJCSAqLwogCQkJ
 aWYgKG5hbWVpb3AgPT0gREVMRVRFICB8fCBuYW1laW9wID09IFJFTkFNRSB8fAogCQkJICAg
 IChjbnAtPmNuX2xrZmxhZ3MgJiBMS19UWVBFX01BU0spKQotCQkJCVZPUF9VTkxPQ0sodnAs
 IDApOworCQkJCVZPUF9VTkxPQ0sodnAsIExLX1JFTEVBU0UpOwogCQkJdnJlbGUodnApOwog
 Ci0JCQlWT1BfVU5MT0NLKGR2cCwgMCk7CisJCQlWT1BfVU5MT0NLKGR2cCwgTEtfUkVMRUFT
 RSk7CiAJCQkqKGFwLT5hX3ZwcCkgPSBkdW5wLT51bl9kdnA7CiAJCQl2cmVmKGR1bnAtPnVu
 X2R2cCk7CiAKQEAgLTIwMiw3ICsxODcsNyBAQAogCQkJfQogCQkJaWYgKG5hbWVpb3AgPT0g
 REVMRVRFIHx8IG5hbWVpb3AgPT0gUkVOQU1FIHx8CiAJCQkgICAgKGNucC0+Y25fbGtmbGFn
 cyAmIExLX1RZUEVfTUFTSykpCi0JCQkJVk9QX1VOTE9DSyh1dnAsIDApOworCQkJCVZPUF9V
 TkxPQ0sodXZwLCBMS19SRUxFQVNFKTsKIAkJfQogCiAJCS8qIGNoZWNrIHdoaXRlb3V0ICov
 CkBAIC0yNDYsNyArMjMxLDcgQEAKIAkJCQlyZXR1cm4gKGxlcnJvcik7CiAJCQl9CiAJCQlp
 ZiAoY25wLT5jbl9sa2ZsYWdzICYgTEtfVFlQRV9NQVNLKQotCQkJCVZPUF9VTkxPQ0sobHZw
 LCAwKTsKKwkJCQlWT1BfVU5MT0NLKGx2cCwgTEtfUkVMRUFTRSk7CiAJCX0KIAl9CiAKQEAg
 LTI4MSw3ICsyNjYsNyBAQAogCQkJZ290byB1bmlvbmZzX2xvb2t1cF9vdXQ7CiAKIAkJaWYg
 KExLX1NIQVJFRCA9PSAoY25wLT5jbl9sa2ZsYWdzICYgTEtfVFlQRV9NQVNLKSkKLQkJCVZP
 UF9VTkxPQ0sodnAsIDApOworCQkJVk9QX1VOTE9DSyh2cCwgTEtfUkVMRUFTRSk7CiAJCWlm
 IChMS19FWENMVVNJVkUgIT0gVk9QX0lTTE9DS0VEKHZwKSkgewogCQkJdm5fbG9jayh2cCwg
 TEtfRVhDTFVTSVZFIHwgTEtfUkVUUlkpOwogCQkJbG9ja2ZsYWcgPSAxOwpAQCAtMjg5LDcg
 KzI3NCw3IEBACiAJCWVycm9yID0gdW5pb25mc19ta3NoYWRvd2RpcihNT1VOVFRPVU5JT05G
 U01PVU5UKGR2cC0+dl9tb3VudCksCiAJCSAgICB1ZHZwLCBWVE9VTklPTkZTKHZwKSwgY25w
 LCB0ZCk7CiAJCWlmIChsb2NrZmxhZyAhPSAwKQotCQkJVk9QX1VOTE9DSyh2cCwgMCk7CisJ
 CQlWT1BfVU5MT0NLKHZwLCBMS19SRUxFQVNFKTsKIAkJaWYgKGVycm9yICE9IDApIHsKIAkJ
 CVVOSU9ORlNERUJVRygidW5pb25mc19sb29rdXA6IFVuYWJsZSB0byBjcmVhdGUgc2hhZG93
 IGRpci4iKTsKIAkJCWlmICgoY25wLT5jbl9sa2ZsYWdzICYgTEtfVFlQRV9NQVNLKSA9PSBM
 S19FWENMVVNJVkUpCkBAIC0zODYsNyArMzcxLDcgQEAKIAkJaWYgKHZwLT52X3R5cGUgPT0g
 VlNPQ0spCiAJCQkqKGFwLT5hX3ZwcCkgPSB2cDsKIAkJZWxzZSB7Ci0JCQlWT1BfVU5MT0NL
 KHZwLCAwKTsKKwkJCVZPUF9VTkxPQ0sodnAsIExLX1JFTEVBU0UpOwogCQkJZXJyb3IgPSB1
 bmlvbmZzX25vZGVnZXQoYXAtPmFfZHZwLT52X21vdW50LCB2cCwgTlVMTFZQLAogCQkJICAg
 IGFwLT5hX2R2cCwgYXAtPmFfdnBwLCBjbnAsIGN1cnRocmVhZCk7CiAJCQl2cmVsZSh2cCk7
 CkBAIC00NjAsNyArNDQ1LDcgQEAKIAkJaWYgKHZwLT52X3R5cGUgPT0gVlNPQ0spCiAJCQkq
 KGFwLT5hX3ZwcCkgPSB2cDsKIAkJZWxzZSB7Ci0JCQlWT1BfVU5MT0NLKHZwLCAwKTsKKwkJ
 CVZPUF9VTkxPQ0sodnAsIExLX1JFTEVBU0UpOwogCQkJZXJyb3IgPSB1bmlvbmZzX25vZGVn
 ZXQoYXAtPmFfZHZwLT52X21vdW50LCB2cCwgTlVMTFZQLAogCQkJICAgIGFwLT5hX2R2cCwg
 YXAtPmFfdnBwLCBjbnAsIGN1cnRocmVhZCk7CiAJCQl2cmVsZSh2cCk7CkBAIC02MTksNyAr
 NjA0LDcgQEAKIAl1bmlvbmZzX3RyeXJlbV9ub2RlX3N0YXR1cyh1bnAsIHVuc3ApOwogCiAJ
 aWYgKGxvY2tlZCAhPSAwKQotCQlWT1BfVU5MT0NLKGFwLT5hX3ZwLCAwKTsKKwkJVk9QX1VO
 TE9DSyhhcC0+YV92cCwgTEtfUkVMRUFTRSk7CiAKIAlVTklPTkZTX0lOVEVSTkFMX0RFQlVH
 KCJ1bmlvbmZzX2Nsb3NlOiBsZWF2ZSAoJWQpXG4iLCBlcnJvcik7CiAKQEAgLTkxNCw3ICs4
 OTksNyBAQAogCXVuaW9uZnNfZ2V0X25vZGVfc3RhdHVzKHVucCwgYXAtPmFfdGQsICZ1bnNw
 KTsKIAlvdnAgPSAodW5zcC0+dW5zX3VwcGVyX29wZW5jbnQgPyB1bnAtPnVuX3VwcGVydnAg
 OiB1bnAtPnVuX2xvd2VydnApOwogCXVuaW9uZnNfdHJ5cmVtX25vZGVfc3RhdHVzKHVucCwg
 dW5zcCk7Ci0JVk9QX1VOTE9DSyhhcC0+YV92cCwgMCk7CisJVk9QX1VOTE9DSyhhcC0+YV92
 cCwgTEtfUkVMRUFTRSk7CiAKIAlpZiAob3ZwID09IE5VTExWUCkKIAkJcmV0dXJuIChFQkFE
 Rik7CkBAIC05NDEsNyArOTI2LDcgQEAKIAl1bmlvbmZzX2dldF9ub2RlX3N0YXR1cyh1bnAs
 IGFwLT5hX3RkLCAmdW5zcCk7CiAJb3ZwID0gKHVuc3AtPnVuc191cHBlcl9vcGVuY250ID8g
 dW5wLT51bl91cHBlcnZwIDogdW5wLT51bl9sb3dlcnZwKTsKIAl1bmlvbmZzX3RyeXJlbV9u
 b2RlX3N0YXR1cyh1bnAsIHVuc3ApOwotCVZPUF9VTkxPQ0soYXAtPmFfdnAsIDApOworCVZP
 UF9VTkxPQ0soYXAtPmFfdnAsIExLX1JFTEVBU0UpOwogCiAJaWYgKG92cCA9PSBOVUxMVlAp
 CiAJCXJldHVybiAoRUJBREYpOwpAQCAtMTAwMSw3ICs5ODYsNyBAQAogCQl1bXAgPSBOVUxM
 OwogCQl2cCA9IHV2cCA9IGx2cCA9IE5VTExWUDsKIAkJLyogc2VhcmNoIHZub2RlICovCi0J
 CVZPUF9VTkxPQ0soYXAtPmFfdnAsIDApOworCQlWT1BfVU5MT0NLKGFwLT5hX3ZwLCBMS19S
 RUxFQVNFKTsKIAkJZXJyb3IgPSB1bmlvbmZzX3JlbG9va3VwKHVkdnAsICZ2cCwgY25wLCAm
 Y24sIHRkLAogCQkgICAgY25wLT5jbl9uYW1lcHRyLCBzdHJsZW4oY25wLT5jbl9uYW1lcHRy
 KSwgREVMRVRFKTsKIAkJaWYgKGVycm9yICE9IDAgJiYgZXJyb3IgIT0gRU5PRU5UKSB7CkBA
 IC0xMjA0LDcgKzExODksNyBAQAogCQkJaWYgKChlcnJvciA9IHZuX2xvY2soZnZwLCBMS19F
 WENMVVNJVkUpKSAhPSAwKQogCQkJCWdvdG8gdW5pb25mc19yZW5hbWVfYWJvcnQ7CiAJCQll
 cnJvciA9IHVuaW9uZnNfY29weWZpbGUodW5wLCAxLCBmY25wLT5jbl9jcmVkLCB0ZCk7Ci0J
 CQlWT1BfVU5MT0NLKGZ2cCwgMCk7CisJCQlWT1BfVU5MT0NLKGZ2cCwgTEtfUkVMRUFTRSk7
 CiAJCQlpZiAoZXJyb3IgIT0gMCkKIAkJCQlnb3RvIHVuaW9uZnNfcmVuYW1lX2Fib3J0Owog
 CQkJYnJlYWs7CkBAIC0xMjEyLDcgKzExOTcsNyBAQAogCQkJaWYgKChlcnJvciA9IHZuX2xv
 Y2soZnZwLCBMS19FWENMVVNJVkUpKSAhPSAwKQogCQkJCWdvdG8gdW5pb25mc19yZW5hbWVf
 YWJvcnQ7CiAJCQllcnJvciA9IHVuaW9uZnNfbWtzaGFkb3dkaXIodW1wLCByZmR2cCwgdW5w
 LCBmY25wLCB0ZCk7Ci0JCQlWT1BfVU5MT0NLKGZ2cCwgMCk7CisJCQlWT1BfVU5MT0NLKGZ2
 cCwgTEtfUkVMRUFTRSk7CiAJCQlpZiAoZXJyb3IgIT0gMCkKIAkJCQlnb3RvIHVuaW9uZnNf
 cmVuYW1lX2Fib3J0OwogCQkJYnJlYWs7CkBAIC0xMjY5LDEzICsxMjU0LDEzIEBACiAJCWlm
 ICgoZXJyb3IgPSB2bl9sb2NrKGZkdnAsIExLX0VYQ0xVU0lWRSkpICE9IDApCiAJCQlnb3Rv
 IHVuaW9uZnNfcmVuYW1lX2Fib3J0OwogCQllcnJvciA9IHVuaW9uZnNfcmVsb29rdXBfZm9y
 X2RlbGV0ZShmZHZwLCBmY25wLCB0ZCk7Ci0JCVZPUF9VTkxPQ0soZmR2cCwgMCk7CisJCVZP
 UF9VTkxPQ0soZmR2cCwgTEtfUkVMRUFTRSk7CiAJCWlmIChlcnJvciAhPSAwKQogCQkJZ290
 byB1bmlvbmZzX3JlbmFtZV9hYm9ydDsKIAogCQkvKiBMb2NrZSBvZiB0dnAgaXMgY2FuY2Vs
 ZWQgaW4gb3JkZXIgdG8gYXZvaWQgcmVjdXJzaXZlIGxvY2suICovCiAJCWlmICh0dnAgIT0g
 TlVMTFZQICYmIHR2cCAhPSB0ZHZwKQotCQkJVk9QX1VOTE9DSyh0dnAsIDApOworCQkJVk9Q
 X1VOTE9DSyh0dnAsIExLX1JFTEVBU0UpOwogCQllcnJvciA9IHVuaW9uZnNfcmVsb29rdXBf
 Zm9yX3JlbmFtZSh0ZHZwLCB0Y25wLCB0ZCk7CiAJCWlmICh0dnAgIT0gTlVMTFZQICYmIHR2
 cCAhPSB0ZHZwKQogCQkJdm5fbG9jayh0dnAsIExLX0VYQ0xVU0lWRSB8IExLX1JFVFJZKTsK
 QEAgLTEyOTMsMTEgKzEyNzgsMTEgQEAKIAl9CiAKIAlpZiAobHRkdnAgIT0gTlVMTFZQKQot
 CQlWT1BfVU5MT0NLKGx0ZHZwLCAwKTsKKwkJVk9QX1VOTE9DSyhsdGR2cCwgTEtfUkVMRUFT
 RSk7CiAJaWYgKHRkdnAgIT0gcnRkdnApCiAJCXZyZWxlKHRkdnApOwogCWlmIChsdHZwICE9
 IE5VTExWUCkKLQkJVk9QX1VOTE9DSyhsdHZwLCAwKTsKKwkJVk9QX1VOTE9DSyhsdHZwLCBM
 S19SRUxFQVNFKTsKIAlpZiAodHZwICE9IHJ0dnAgJiYgdHZwICE9IE5VTExWUCkgewogCQlp
 ZiAocnR2cCA9PSBOVUxMVlApCiAJCQl2cHV0KHR2cCk7CkBAIC0xMzcxLDcgKzEzNTYsNyBA
 QAogCQl9CiAKIAkJaWYgKChlcnJvciA9IFZPUF9NS0RJUih1ZHZwLCAmdXZwLCBjbnAsIGFw
 LT5hX3ZhcCkpID09IDApIHsKLQkJCVZPUF9VTkxPQ0sodXZwLCAwKTsKKwkJCVZPUF9VTkxP
 Q0sodXZwLCBMS19SRUxFQVNFKTsKIAkJCWNucC0+Y25fbGtmbGFncyA9IExLX0VYQ0xVU0lW
 RTsKIAkJCWVycm9yID0gdW5pb25mc19ub2RlZ2V0KGFwLT5hX2R2cC0+dl9tb3VudCwgdXZw
 LCBOVUxMVlAsCiAJCQkgICAgYXAtPmFfZHZwLCBhcC0+YV92cHAsIGNucCwgdGQpOwpAQCAt
 MTQ2Nyw3ICsxNDUyLDcgQEAKIAlpZiAodWR2cCAhPSBOVUxMVlApIHsKIAkJZXJyb3IgPSBW
 T1BfU1lNTElOSyh1ZHZwLCAmdXZwLCBjbnAsIGFwLT5hX3ZhcCwgYXAtPmFfdGFyZ2V0KTsK
 IAkJaWYgKGVycm9yID09IDApIHsKLQkJCVZPUF9VTkxPQ0sodXZwLCAwKTsKKwkJCVZPUF9V
 TkxPQ0sodXZwLCBMS19SRUxFQVNFKTsKIAkJCWNucC0+Y25fbGtmbGFncyA9IExLX0VYQ0xV
 U0lWRTsKIAkJCWVycm9yID0gdW5pb25mc19ub2RlZ2V0KGFwLT5hX2R2cC0+dl9tb3VudCwg
 dXZwLCBOVUxMVlAsCiAJCQkgICAgYXAtPmFfZHZwLCBhcC0+YV92cHAsIGNucCwgdGQpOwpA
 QCAtMTQ5MCw2ICsxNDc1LDcgQEAKIAlzdHJ1Y3QgdW5pb25mc19ub2RlICp1bnA7CiAJc3Ry
 dWN0IHVuaW9uZnNfbm9kZV9zdGF0dXMgKnVuc3A7CiAJc3RydWN0IHVpbyAgICAgKnVpbzsK
 KwlzdHJ1Y3Qgdm5vZGUgICAqdnA7CiAJc3RydWN0IHZub2RlICAgKnV2cDsKIAlzdHJ1Y3Qg
 dm5vZGUgICAqbHZwOwogCXN0cnVjdCB0aHJlYWQgICp0ZDsKQEAgLTE1MDUsNDEgKzE0OTEs
 NDkgQEAKIAllcnJvciA9IDA7CiAJZW9mZmxhZyA9IDA7CiAJbG9ja2VkID0gMDsKLQl1bnAg
 PSBWVE9VTklPTkZTKGFwLT5hX3ZwKTsKIAl1aW8gPSBhcC0+YV91aW87Ci0JdXZwID0gdW5w
 LT51bl91cHBlcnZwOwotCWx2cCA9IHVucC0+dW5fbG93ZXJ2cDsKKwl1dnAgPSBOVUxMVlA7
 CisJbHZwID0gTlVMTFZQOwogCXRkID0gdWlvLT51aW9fdGQ7CiAJbmNvb2tpZXNfYmsgPSAw
 OwogCWNvb2tpZXNfYmsgPSBOVUxMOwogCi0JaWYgKGFwLT5hX3ZwLT52X3R5cGUgIT0gVkRJ
 UikKKwl2cCA9IGFwLT5hX3ZwOworCWlmICh2cC0+dl90eXBlICE9IFZESVIpCiAJCXJldHVy
 biAoRU5PVERJUik7CiAKLQkvKiBjaGVjayBvcGFxdWUgKi8KLQlpZiAodXZwICE9IE5VTExW
 UCAmJiBsdnAgIT0gTlVMTFZQKSB7Ci0JCWlmICgoZXJyb3IgPSBWT1BfR0VUQVRUUih1dnAs
 ICZ2YSwgYXAtPmFfY3JlZCkpICE9IDApCi0JCQlnb3RvIHVuaW9uZnNfcmVhZGRpcl9leGl0
 OwotCQlpZiAodmEudmFfZmxhZ3MgJiBPUEFRVUUpCi0JCQlsdnAgPSBOVUxMVlA7Ci0JfQot
 CiAJLyogY2hlY2sgdGhlIG9wZW4gY291bnQuIHVuaW9uZnMgbmVlZHMgdG8gb3BlbiBiZWZv
 cmUgcmVhZGRpci4gKi8KLQlpZiAoVk9QX0lTTE9DS0VEKGFwLT5hX3ZwKSAhPSBMS19FWENM
 VVNJVkUpIHsKLQkJdm5fbG9jayhhcC0+YV92cCwgTEtfVVBHUkFERSB8IExLX1JFVFJZKTsK
 KwlpZiAoVk9QX0lTTE9DS0VEKHZwKSAhPSBMS19FWENMVVNJVkUpIHsKKwkJaWYgKHZuX2xv
 Y2sodnAsIExLX1VQR1JBREUpICE9IDApCisJCQl2bl9sb2NrKHZwLCBMS19FWENMVVNJVkUg
 fCBMS19SRVRSWSk7CiAJCWxvY2tlZCA9IDE7CiAJfQotCXVuaW9uZnNfZ2V0X25vZGVfc3Rh
 dHVzKHVucCwgdGQsICZ1bnNwKTsKLQlpZiAoKHV2cCAhPSBOVUxMVlAgJiYgdW5zcC0+dW5z
 X3VwcGVyX29wZW5jbnQgPD0gMCkgfHwKLQkgICAgKGx2cCAhPSBOVUxMVlAgJiYgdW5zcC0+
 dW5zX2xvd2VyX29wZW5jbnQgPD0gMCkpIHsKLQkJdW5pb25mc190cnlyZW1fbm9kZV9zdGF0
 dXModW5wLCB1bnNwKTsKKwl1bnAgPSBWVE9VTklPTkZTKHZwKTsKKwlpZiAodW5wID09IE5V
 TEwpCiAJCWVycm9yID0gRUJBREY7CisJZWxzZSB7CisJCXV2cCA9IHVucC0+dW5fdXBwZXJ2
 cDsKKwkJbHZwID0gdW5wLT51bl9sb3dlcnZwOworCQl1bmlvbmZzX2dldF9ub2RlX3N0YXR1
 cyh1bnAsIHRkLCAmdW5zcCk7CisJCWlmICgodXZwICE9IE5VTExWUCAmJiB1bnNwLT51bnNf
 dXBwZXJfb3BlbmNudCA8PSAwKSB8fAorCQkJKGx2cCAhPSBOVUxMVlAgJiYgdW5zcC0+dW5z
 X2xvd2VyX29wZW5jbnQgPD0gMCkpIHsKKwkJCXVuaW9uZnNfdHJ5cmVtX25vZGVfc3RhdHVz
 KHVucCwgdW5zcCk7CisJCQllcnJvciA9IEVCQURGOworCQl9CiAJfQotCWlmIChsb2NrZWQg
 PT0gMSkKLQkJdm5fbG9jayhhcC0+YV92cCwgTEtfRE9XTkdSQURFIHwgTEtfUkVUUlkpOwor
 CWlmIChsb2NrZWQpCisJCXZuX2xvY2sodnAsIExLX0RPV05HUkFERSB8IExLX1JFVFJZKTsK
 IAlpZiAoZXJyb3IgIT0gMCkKIAkJZ290byB1bmlvbmZzX3JlYWRkaXJfZXhpdDsKIAorCS8q
 IGNoZWNrIG9wYXF1ZSAqLworCWlmICh1dnAgIT0gTlVMTFZQICYmIGx2cCAhPSBOVUxMVlAp
 IHsKKwkJaWYgKChlcnJvciA9IFZPUF9HRVRBVFRSKHV2cCwgJnZhLCBhcC0+YV9jcmVkKSkg
 IT0gMCkKKwkJCWdvdG8gdW5pb25mc19yZWFkZGlyX2V4aXQ7CisJCWlmICh2YS52YV9mbGFn
 cyAmIE9QQVFVRSkKKwkJCWx2cCA9IE5VTExWUDsKKwl9CisKIAkvKiB1cHBlciBvbmx5ICov
 CiAJaWYgKHV2cCAhPSBOVUxMVlAgJiYgbHZwID09IE5VTExWUCkgewogCQllcnJvciA9IFZP
 UF9SRUFERElSKHV2cCwgdWlvLCBhcC0+YV9jcmVkLCBhcC0+YV9lb2ZmbGFnLApAQCAtMTc0
 MywxOCArMTczNyw2NiBAQAogfQogCiBzdGF0aWMgaW50Ci11bmlvbmZzX2dldF9sbHRfcmV2
 bG9jayhpbnQgZmxhZ3MpCit1bmlvbmZzX2lzbG9ja2VkKHN0cnVjdCB2b3BfaXNsb2NrZWRf
 YXJncyAqYXApCiB7Ci0JaW50IGNvdW50OworCXN0cnVjdCB1bmlvbmZzX25vZGUgKnVucDsK
 IAotCWZsYWdzICY9IExLX1RZUEVfTUFTSzsKLQlmb3IgKGNvdW50ID0gMDsgdW5fbGx0W2Nv
 dW50XS5sb2NrICE9IDA7IGNvdW50KyspIHsKLQkJaWYgKGZsYWdzID09IHVuX2xsdFtjb3Vu
 dF0ubG9jaykgewotCQkJcmV0dXJuIHVuX2xsdFtjb3VudF0ucmV2bG9jazsKLQkJfQorCUtB
 U1NFUlRfVU5JT05GU19WTk9ERShhcC0+YV92cCk7CisKKwl1bnAgPSBWVE9VTklPTkZTKGFw
 LT5hX3ZwKTsKKwlpZiAodW5wID09IE5VTEwpCisJCXJldHVybiAodm9wX3N0ZGlzbG9ja2Vk
 KGFwKSk7CisKKwlpZiAodW5wLT51bl91cHBlcnZwICE9IE5VTExWUCkKKwkJcmV0dXJuIChW
 T1BfSVNMT0NLRUQodW5wLT51bl91cHBlcnZwKSk7CisJaWYgKHVucC0+dW5fbG93ZXJ2cCAh
 PSBOVUxMVlApCisJCXJldHVybiAoVk9QX0lTTE9DS0VEKHVucC0+dW5fbG93ZXJ2cCkpOwor
 CXJldHVybiAodm9wX3N0ZGlzbG9ja2VkKGFwKSk7Cit9CisKK3N0YXRpYyBpbnQKK3VuaW9u
 ZnNfZ2V0X2xsdF9yZXZsb2NrKHN0cnVjdCB2bm9kZSAqdnAsIGludCBmbGFncykKK3sKKwlp
 bnQgcmV2bG9jazsKKworCXJldmxvY2sgPSAwOworCisJc3dpdGNoIChmbGFncyAmIExLX1RZ
 UEVfTUFTSykgeworCWNhc2UgTEtfU0hBUkVEOgorCQlpZiAoVk9QX0lTTE9DS0VEKHZwKSA9
 PSBMS19FWENMVVNJVkUpCisJCQlyZXZsb2NrID0gTEtfVVBHUkFERTsKKwkJZWxzZQorCQkJ
 cmV2bG9jayA9IExLX1JFTEVBU0U7CisJCWJyZWFrOworCWNhc2UgTEtfRVhDTFVTSVZFOgor
 CWNhc2UgTEtfVVBHUkFERToKKwkJcmV2bG9jayA9IExLX1JFTEVBU0U7CisJCWJyZWFrOwor
 CWNhc2UgTEtfRE9XTkdSQURFOgorCQlyZXZsb2NrID0gTEtfVVBHUkFERTsKKwkJYnJlYWs7
 CisJZGVmYXVsdDoKKwkJYnJlYWs7CiAJfQogCi0JcmV0dXJuIDA7CisJcmV0dXJuIChyZXZs
 b2NrKTsKK30KKworLyoKKyAqIFRoZSBzdGF0ZSBvZiBhbiBhY3F1aXJlZCBsb2NrIGlzIGFk
 anVzdGVkIHNpbWlsYXJseSB0bworICogdGhlIHRpbWUgb2YgZXJyb3IgZ2VuZXJhdGluZy4g
 CisgKiBmbGFnczogTEtfUkVMRUFTRSBvciBMS19VUEdSQURFCisgKi8KK3N0YXRpYyB2b2lk
 Cit1bmlvbmZzX3JldmxvY2soc3RydWN0IHZub2RlICp2cCwgaW50IGZsYWdzKQoreworCWlm
 IChmbGFncyAmIExLX1JFTEVBU0UpCisJCVZPUF9VTkxPQ0sodnAsIGZsYWdzKTsKKwllbHNl
 IHsKKwkJLyogVVBHUkFERSAqLworCQlpZiAodm5fbG9jayh2cCwgZmxhZ3MpICE9IDApCisJ
 CQl2bl9sb2NrKHZwLCBMS19FWENMVVNJVkUgfCBMS19SRVRSWSk7CisJfQogfQogCiBzdGF0
 aWMgaW50CkBAIC0xNzYzLDYgKzE4MDUsNyBAQAogCWludAkJZXJyb3I7CiAJaW50CQlmbGFn
 czsKIAlpbnQJCXJldmxvY2s7CisJaW50CQlpbnRlcmxvY2s7CiAJaW50CQl1aG9sZDsKIAlz
 dHJ1Y3QgbW91bnQgICAqbXA7CiAJc3RydWN0IHVuaW9uZnNfbW91bnQgKnVtcDsKQEAgLTE3
 NzQsMTUgKzE4MTcsMTMgQEAKIAlLQVNTRVJUX1VOSU9ORlNfVk5PREUoYXAtPmFfdnApOwog
 CiAJZXJyb3IgPSAwOworCWludGVybG9jayA9IDE7CiAJdWhvbGQgPSAwOwogCWZsYWdzID0g
 YXAtPmFfZmxhZ3M7CiAJdnAgPSBhcC0+YV92cDsKIAogCWlmIChMS19SRUxFQVNFID09IChm
 bGFncyAmIExLX1RZUEVfTUFTSykgfHwgIShmbGFncyAmIExLX1RZUEVfTUFTSykpCi0JCXJl
 dHVybiAoVk9QX1VOTE9DSyh2cCwgZmxhZ3MpKTsKLQotCWlmICgocmV2bG9jayA9IHVuaW9u
 ZnNfZ2V0X2xsdF9yZXZsb2NrKGZsYWdzKSkgPT0gMCkKLQkJcGFuaWMoInVua25vd24gbG9j
 ayB0eXBlOiAweCV4IiwgZmxhZ3MgJiBMS19UWVBFX01BU0spOworCQlyZXR1cm4gKFZPUF9V
 TkxPQ0sodnAsIGZsYWdzIHwgTEtfUkVMRUFTRSkpOwogCiAJaWYgKChmbGFncyAmIExLX0lO
 VEVSTE9DSykgPT0gMCkKIAkJVklfTE9DSyh2cCk7CkBAIC0xNzk4LDYgKzE4MzksOSBAQAog
 CWx2cCA9IHVucC0+dW5fbG93ZXJ2cDsKIAl1dnAgPSB1bnAtPnVuX3VwcGVydnA7CiAKKwlp
 ZiAoKHJldmxvY2sgPSB1bmlvbmZzX2dldF9sbHRfcmV2bG9jayh2cCwgZmxhZ3MpKSA9PSAw
 KQorCQlwYW5pYygidW5rbm93biBsb2NrIHR5cGU6IDB4JXgiLCBmbGFncyAmIExLX1RZUEVf
 TUFTSyk7CisKIAlpZiAoKG1wLT5tbnRfa2Vybl9mbGFnICYgTU5US19NUFNBRkUpICE9IDAg
 JiYKIAkgICAgKHZwLT52X2lmbGFnICYgVklfT1dFSU5BQ1QpICE9IDApCiAJCWZsYWdzIHw9
 IExLX05PV0FJVDsKQEAgLTE4MTEsNiArMTg1NSwyMyBAQAogCQlmbGFncyB8PSBMS19DQU5S
 RUNVUlNFOwogCiAJaWYgKGx2cCAhPSBOVUxMVlApIHsKKwkJaWYgKHV2cCAhPSBOVUxMVlAg
 JiYgZmxhZ3MgJiBMS19VUEdSQURFKSB7CisJCQkvKiBTaGFyZSBMb2NrIGlzIG9uY2UgcmVs
 ZWFzZWQgYW5kIGEgZGVhZGxvY2sgaXMgYXZvaWRlZC4gICovCisJCQlWSV9MT0NLX0ZMQUdT
 KHV2cCwgTVRYX0RVUE9LKTsKKwkJCXZob2xkbCh1dnApOworCQkJdWhvbGQgPSAxOworCQkJ
 VklfVU5MT0NLKHZwKTsKKwkJCVZPUF9VTkxPQ0sodXZwLCBMS19SRUxFQVNFIHwgTEtfSU5U
 RVJMT0NLKTsKKwkJCVZJX0xPQ0sodnApOworCQkJdW5wID0gVlRPVU5JT05GUyh2cCk7CisJ
 CQlpZiAodW5wID09IE5VTEwpIHsKKwkJCQkvKiB2bm9kZSBpcyByZWxlYXNlZC4gKi8KKwkJ
 CQlWSV9VTkxPQ0sodnApOworCQkJCVZPUF9VTkxPQ0sobHZwLCBMS19SRUxFQVNFKTsKKwkJ
 CQl2ZHJvcCh1dnApOworCQkJCXJldHVybiAoRUJVU1kpOworCQkJfQorCQl9CiAJCVZJX0xP
 Q0tfRkxBR1MobHZwLCBNVFhfRFVQT0spOwogCQlmbGFncyB8PSBMS19JTlRFUkxPQ0s7CiAJ
 CXZob2xkbChsdnApOwpAQCAtMTgyMywxOSArMTg4NCwyOCBAQAogCQlWSV9MT0NLKHZwKTsK
 IAkJdW5wID0gVlRPVU5JT05GUyh2cCk7CiAJCWlmICh1bnAgPT0gTlVMTCkgeworCQkJLyog
 dm5vZGUgaXMgcmVsZWFzZWQuICovCiAJCQlWSV9VTkxPQ0sodnApOwogCQkJaWYgKGVycm9y
 ID09IDApCi0JCQkJVk9QX1VOTE9DSyhsdnAsIDApOworCQkJCVZPUF9VTkxPQ0sobHZwLCBM
 S19SRUxFQVNFKTsKIAkJCXZkcm9wKGx2cCk7CisJCQlpZiAodWhvbGQgIT0gMCkKKwkJCQl2
 ZHJvcCh1dnApOwogCQkJcmV0dXJuICh2b3Bfc3RkbG9jayhhcCkpOwogCQl9CiAJfQogCiAJ
 aWYgKGVycm9yID09IDAgJiYgdXZwICE9IE5VTExWUCkgeworCQlpZiAodWhvbGQgJiYgZmxh
 Z3MgJiBMS19VUEdSQURFKSB7CisJCQlmbGFncyAmPSB+TEtfVFlQRV9NQVNLOworCQkJZmxh
 Z3MgfD0gTEtfRVhDTFVTSVZFOworCQl9CiAJCVZJX0xPQ0tfRkxBR1ModXZwLCBNVFhfRFVQ
 T0spOwogCQlmbGFncyB8PSBMS19JTlRFUkxPQ0s7Ci0JCXZob2xkbCh1dnApOwotCQl1aG9s
 ZCA9IDE7CisJCWlmICh1aG9sZCA9PSAwKSB7CisJCQl2aG9sZGwodXZwKTsKKwkJCXVob2xk
 ID0gMTsKKwkJfQogCiAJCVZJX1VOTE9DSyh2cCk7CiAJCWFwLT5hX2ZsYWdzICY9IH5MS19J
 TlRFUkxPQ0s7CkBAIC0xODQ1LDMwICsxOTE1LDI3IEBACiAJCVZJX0xPQ0sodnApOwogCQl1
 bnAgPSBWVE9VTklPTkZTKHZwKTsKIAkJaWYgKHVucCA9PSBOVUxMKSB7CisJCQkvKiB2bm9k
 ZSBpcyByZWxlYXNlZC4gKi8KIAkJCVZJX1VOTE9DSyh2cCk7Ci0JCQlpZiAoZXJyb3IgPT0g
 MCkgewotCQkJCVZPUF9VTkxPQ0sodXZwLCAwKTsKLQkJCQlpZiAobHZwICE9IE5VTExWUCkK
 LQkJCQkJVk9QX1VOTE9DSyhsdnAsIDApOwotCQkJfQotCQkJaWYgKGx2cCAhPSBOVUxMVlAp
 Ci0JCQkJdmRyb3AobHZwKTsKKwkJCWlmIChlcnJvciA9PSAwKQorCQkJCVZPUF9VTkxPQ0so
 dXZwLCBMS19SRUxFQVNFKTsKIAkJCXZkcm9wKHV2cCk7CisJCQlpZiAobHZwICE9IE5VTExW
 UCkgeworCQkJCVZPUF9VTkxPQ0sobHZwLCBMS19SRUxFQVNFKTsKKwkJCQl2ZHJvcChsdnAp
 OworCQkJfQogCQkJcmV0dXJuICh2b3Bfc3RkbG9jayhhcCkpOwogCQl9Ci0KIAkJaWYgKGVy
 cm9yICE9IDAgJiYgbHZwICE9IE5VTExWUCkgeworCQkJLyogcm9sbGJhY2sgKi8KIAkJCVZJ
 X1VOTE9DSyh2cCk7Ci0JCQlpZiAoKHJldmxvY2sgJiBMS19UWVBFX01BU0spID09IExLX1JF
 TEVBU0UpCi0JCQkJVk9QX1VOTE9DSyhsdnAsIHJldmxvY2spOwotCQkJZWxzZQotCQkJCXZu
 X2xvY2sobHZwLCByZXZsb2NrIHwgTEtfUkVUUlkpOwotCQkJZ290byB1bmlvbmZzX2xvY2tf
 YWJvcnQ7CisJCQl1bmlvbmZzX3JldmxvY2sobHZwLCByZXZsb2NrKTsKKwkJCWludGVybG9j
 ayA9IDA7CiAJCX0KIAl9CiAKLQlWSV9VTkxPQ0sodnApOwotdW5pb25mc19sb2NrX2Fib3J0
 OgorCWlmIChpbnRlcmxvY2spCisJCVZJX1VOTE9DSyh2cCk7CiAJaWYgKGx2cCAhPSBOVUxM
 VlApCiAJCXZkcm9wKGx2cCk7CiAJaWYgKHVob2xkICE9IDApCkBAIC0yMDEzLDcgKzIwODAs
 NyBAQAogCQkJdW5pb25mc190cnlyZW1fbm9kZV9zdGF0dXModW5wLCB1bnNwKTsKIAl9CiAK
 LQlWT1BfVU5MT0NLKHZwLCAwKTsKKwlWT1BfVU5MT0NLKHZwLCBMS19SRUxFQVNFKTsKIAog
 CWVycm9yID0gVk9QX0FEVkxPQ0sodXZwLCBhcC0+YV9pZCwgYXAtPmFfb3AsIGFwLT5hX2Zs
 LCBhcC0+YV9mbGFncyk7CiAKQEAgLTIwMjIsNyArMjA4OSw3IEBACiAJcmV0dXJuIGVycm9y
 OwogCiB1bmlvbmZzX2FkdmxvY2tfYWJvcnQ6Ci0JVk9QX1VOTE9DSyh2cCwgMCk7CisJVk9Q
 X1VOTE9DSyh2cCwgTEtfUkVMRUFTRSk7CiAKIAlVTklPTkZTX0lOVEVSTkFMX0RFQlVHKCJ1
 bmlvbmZzX2FkdmxvY2s6IGxlYXZlICglZClcbiIsIGVycm9yKTsKIApAQCAtMjE1MCw3ICsy
 MjE3LDggQEAKIAllcnJvciA9IFZPUF9PUEVORVhUQVRUUih0dnAsIGFwLT5hX2NyZWQsIGFw
 LT5hX3RkKTsKIAogCWlmIChlcnJvciA9PSAwKSB7Ci0JCXZuX2xvY2sodnAsIExLX1VQR1JB
 REUgfCBMS19SRVRSWSk7CisJCWlmICh2bl9sb2NrKHZwLCBMS19VUEdSQURFKSAhPSAwKQor
 CQkJdm5fbG9jayh2cCwgTEtfRVhDTFVTSVZFIHwgTEtfUkVUUlkpOwogCQlpZiAodHZwID09
 IHVucC0+dW5fdXBwZXJ2cCkKIAkJCXVucC0+dW5fZmxhZyB8PSBVTklPTkZTX09QRU5FWFRV
 OwogCQllbHNlCkBAIC0yMTg2LDcgKzIyNTQsOCBAQAogCWVycm9yID0gVk9QX0NMT1NFRVhU
 QVRUUih0dnAsIGFwLT5hX2NvbW1pdCwgYXAtPmFfY3JlZCwgYXAtPmFfdGQpOwogCiAJaWYg
 KGVycm9yID09IDApIHsKLQkJdm5fbG9jayh2cCwgTEtfVVBHUkFERSB8IExLX1JFVFJZKTsK
 KwkJaWYgKHZuX2xvY2sodnAsIExLX1VQR1JBREUpICE9IDApCisJCQl2bl9sb2NrKHZwLCBM
 S19FWENMVVNJVkUgfCBMS19SRVRSWSk7CiAJCWlmICh0dnAgPT0gdW5wLT51bl91cHBlcnZw
 KQogCQkJdW5wLT51bl9mbGFnICY9IH5VTklPTkZTX09QRU5FWFRVOwogCQllbHNlCkBAIC0y
 NDM1LDYgKzI1MDQsNyBAQAogCS52b3BfZ2V0ZXh0YXR0ciA9CXVuaW9uZnNfZ2V0ZXh0YXR0
 ciwKIAkudm9wX2dldHdyaXRlbW91bnQgPQl1bmlvbmZzX2dldHdyaXRlbW91bnQsCiAJLnZv
 cF9pbmFjdGl2ZSA9CQl1bmlvbmZzX2luYWN0aXZlLAorCS52b3BfaXNsb2NrZWQgPQkJdW5p
 b25mc19pc2xvY2tlZCwKIAkudm9wX2lvY3RsID0JCXVuaW9uZnNfaW9jdGwsCiAJLnZvcF9s
 aW5rID0JCXVuaW9uZnNfbGluaywKIAkudm9wX2xpc3RleHRhdHRyID0JdW5pb25mc19saXN0
 ZXh0YXR0ciwK
 --------------080703070504010006020003--



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