From owner-freebsd-fs@FreeBSD.ORG Mon Apr 9 12:20:15 2012 Return-Path: Delivered-To: freebsd-fs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 86EEC106566B for ; Mon, 9 Apr 2012 12:20:15 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id 707518FC08 for ; Mon, 9 Apr 2012 12:20:15 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q39CKF8G011691 for ; Mon, 9 Apr 2012 12:20:15 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q39CKF0x011689; Mon, 9 Apr 2012 12:20:15 GMT (envelope-from gnats) Date: Mon, 9 Apr 2012 12:20:15 GMT Message-Id: <201204091220.q39CKF0x011689@freefall.freebsd.org> To: freebsd-fs@FreeBSD.org From: ONGS-OZAWA Cc: Subject: Re: kern/161511: [unionfs] Filesystem deadlocks when using multiple unionfs mounts on top of single filesystem X-BeenThere: freebsd-fs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: ONGS-OZAWA List-Id: Filesystems List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Apr 2012 12:20:15 -0000 The following reply was made to PR kern/161511; it has been noted by GNATS. From: ONGS-OZAWA 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 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--