From owner-freebsd-bugs@FreeBSD.ORG Mon Jan 11 00:20:03 2010 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DA6B01065676 for ; Mon, 11 Jan 2010 00:20:03 +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 AE3B48FC17 for ; Mon, 11 Jan 2010 00:20:03 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.3/8.14.3) with ESMTP id o0B0K3I7009552 for ; Mon, 11 Jan 2010 00:20:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.3/8.14.3/Submit) id o0B0K3V9009551; Mon, 11 Jan 2010 00:20:03 GMT (envelope-from gnats) Date: Mon, 11 Jan 2010 00:20:03 GMT Message-Id: <201001110020.o0B0K3V9009551@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: "Pedro F. Giffuni" Cc: Subject: Re: bin/142384: sync fsck_msdosfs with OpenBSD X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: "Pedro F. Giffuni" List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 11 Jan 2010 00:20:04 -0000 The following reply was made to PR bin/142384; it has been noted by GNATS. From: "Pedro F. Giffuni" To: FreeBSD-gnats-submit@FreeBSD.org, freebsd-bugs@FreeBSD.org Cc: Subject: Re: bin/142384: sync fsck_msdosfs with OpenBSD Date: Sun, 10 Jan 2010 16:12:23 -0800 (PST) --0-1379220581-1263168743=:30404 Content-Type: text/plain; charset=us-ascii While here,.. - clarify a bit the FAT header - ansify a couple of functions --0-1379220581-1263168743=:30404 Content-Type: application/octet-stream; name=patch-fsck_msdosfs Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=patch-fsck_msdosfs ZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9yaWcvYm9vdC5jIGZzY2tfbXNkb3Nm cy9ib290LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Jvb3QuYwkyMDEwLTAx LTA2IDExOjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2Zz L2Jvb3QuYwkyMDEwLTAxLTEwIDE4OjA3OjQ3LjAwMDAwMDAwMCArMDAwMApA QCAtMTAsMTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0 CiAgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0 aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVu dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0 aGUgZGlzdHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVy aWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3 YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3ds ZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUg ZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5n IFNvbGZyYW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5p dmVyc2l0eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAq ICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0 cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBz cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElT JycgQU5EIEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMs IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX QVJSQU5USUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRs aWIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5o PgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAK QEAgLTQ4LDE2ICs0MCwxNSBAQAogI2luY2x1ZGUgImZzdXRpbC5oIgogCiBp bnQKLXJlYWRib290KGRvc2ZzLCBib290KQotCWludCBkb3NmczsKLQlzdHJ1 Y3QgYm9vdGJsb2NrICpib290OworcmVhZGJvb3QoaW50IGRvc2ZzLCBzdHJ1 Y3QgYm9vdGJsb2NrICpib290KQogewogCXVfY2hhciBibG9ja1tET1NCT09U QkxPQ0tTSVpFXTsKIAl1X2NoYXIgZnNpbmZvWzIgKiBET1NCT09UQkxPQ0tT SVpFXTsKIAl1X2NoYXIgYmFja3VwW0RPU0JPT1RCTE9DS1NJWkVdOwogCWlu dCByZXQgPSBGU09LOworCWludCBpOwogCQotCWlmIChyZWFkKGRvc2ZzLCBi bG9jaywgc2l6ZW9mIGJsb2NrKSA8IHNpemVvZiBibG9jaykgeworCWlmICgo c2l6ZV90KXJlYWQoZG9zZnMsIGJsb2NrLCBzaXplb2YgYmxvY2spICE9IHNp emVvZiBibG9jaykgewogCQlwZXJyb3IoImNvdWxkIG5vdCByZWFkIGJvb3Qg YmxvY2siKTsKIAkJcmV0dXJuIEZTRkFUQUw7CiAJfQpAQCAtMTYxLDEyICsx NTIsMjIgQEAKIAkJfQogCQliYWNrdXBbNjVdID0gYmxvY2tbNjVdOwkJCQkv KiBYWFggKi8KIAkJaWYgKG1lbWNtcChibG9jayArIDExLCBiYWNrdXAgKyAx MSwgNzkpKSB7Ci0JCQkvKiBDb3JyZWN0PwkJCQkJWFhYICovCi0JCQlwZmF0 YWwoImJhY2t1cCBkb2Vzbid0IGNvbXBhcmUgdG8gcHJpbWFyeSBib290Ymxv Y2siKTsKLQkJCWlmIChhbHdheXNubykKLQkJCQlwZmF0YWwoIlxuIik7Ci0J CQllbHNlCi0JCQkJcmV0dXJuIEZTRkFUQUw7CisJCQkvKgorCQkJICogWFhY IFdlIHJlcXVpcmUgYSByZWZlcmVuY2UgdGhhdCBleHBsYWlucworCQkJICog dGhhdCB0aGVzZSBieXRlcyBuZWVkIHRvIG1hdGNoLCBvciBzaG91bGQKKwkJ CSAqIGRyb3AgdGhlIGNoZWNrLiAgZ2R0QE5ldEJTRCBoYXMgb2JzZXJ2ZWQK KwkJCSAqIGZpbGVzeXN0ZW1zIHRoYXQgd29yayBmaW5lIHVuZGVyIFdpbmRv d3MgWFAKKwkJCSAqIGFuZCBOZXRCU0QgdGhhdCBkbyBub3QgbWF0Y2gsIHNv IHRoZQorCQkJICogcmVxdWlyZW1lbnQgaXMgc3VzcGVjdC4gIEZvciBub3cs IGp1c3QKKwkJCSAqIHByaW50IG91dCB1c2VmdWwgaW5mb3JtYXRpb24gYW5k IGNvbnRpbnVlLgorCQkJICovCisJCQlwZmF0YWwoImJhY2t1cCAoYmxvY2sg JWQpIG1pc21hdGNoIHdpdGggcHJpbWFyeSBib290YmxvY2s6XG4iLAorCQkJ ICAgICAgICBib290LT5CYWNrdXApOworCQkJZm9yIChpID0gMTE7IGkgPCAx MSArIDkwOyBpKyspIHsKKwkJCQlpZiAoYmxvY2tbaV0gIT0gYmFja3VwW2ld KQorCQkJCQlwZmF0YWwoIlx0aT0lZFx0cHJpbWFyeSAweCUwMnhcdGJhY2t1 cCAweCUwMnhcbiIsCisJCQkJCSAgICAgICBpLCBibG9ja1tpXSwgYmFja3Vw W2ldKTsKKwkJCX0KIAkJfQogCQkvKiBDaGVjayBiYWNrdXAgRlNJbmZvPwkJ CQkJWFhYICovCiAJfQpAQCAtMjMwLDkgKzIzMSw3IEBACiB9CiAKIGludAot d3JpdGVmc2luZm8oZG9zZnMsIGJvb3QpCi0JaW50IGRvc2ZzOwotCXN0cnVj dCBib290YmxvY2sgKmJvb3Q7Cit3cml0ZWZzaW5mbyhpbnQgZG9zZnMsIHN0 cnVjdCBib290YmxvY2sgKmJvb3QpCiB7CiAJdV9jaGFyIGZzaW5mb1syICog RE9TQk9PVEJMT0NLU0laRV07CiAKZGlmZiAtcnUgZnNja19tc2Rvc2ZzLm9y aWcvY2hlY2suYyBmc2NrX21zZG9zZnMvY2hlY2suYwotLS0gZnNja19tc2Rv c2ZzLm9yaWcvY2hlY2suYwkyMDEwLTAxLTA2IDExOjA3OjI0LjAwMDAwMDAw MCArMDAwMAorKysgZnNja19tc2Rvc2ZzL2NoZWNrLmMJMjAxMC0wMS0wNyAy MjowOToxMy4wMDAwMDAwMDAgKzAwMDAKQEAgLTEwLDEzICsxMCw2IEBACiAg KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgbm90aWNlLCB0aGlz IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp bWVyIGluIHRoZQogICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq IDMuIEFsbCBhZHZlcnRpc2luZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0 dXJlcyBvciB1c2Ugb2YgdGhpcyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNw bGF5IHRoZSBmb2xsb3dpbmcgYWNrbm93bGVkZ2VtZW50OgotICoJVGhpcyBw cm9kdWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4g SHVzZW1hbm4KLSAqCWFuZCBXb2xmZ2FuZyBTb2xmcmFuay4KLSAqIDQuIE5l aXRoZXIgdGhlIG5hbWUgb2YgdGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1l cyBvZiBpdHMgY29udHJpYnV0b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUKLSAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl biBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE RUQgQlkgVEhFIEFVVEhPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBP UgogICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUwpAQCAtNDAsNyAr MzMsNiBAQAogCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3Ry aW5nLmg+Ci0jaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzdGRpby5o PgogI2luY2x1ZGUgPHVuaXN0ZC5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CkBA IC01NCw3ICs0Niw4IEBACiAJaW50IGRvc2ZzOwogCXN0cnVjdCBib290Ymxv Y2sgYm9vdDsKIAlzdHJ1Y3QgZmF0RW50cnkgKmZhdCA9IE5VTEw7Ci0JaW50 IGksIGZpbmlzaF9kb3NkaXJzZWN0aW9uPTA7CisJaW50IGZpbmlzaF9kb3Nk aXJzZWN0aW9uPTA7CisJdV9pbnQgaTsKIAlpbnQgbW9kID0gMDsKIAlpbnQg cmV0ID0gODsKIApkaWZmIC1ydSBmc2NrX21zZG9zZnMub3JpZy9kaXIuYyBm c2NrX21zZG9zZnMvZGlyLmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2Rpci5j CTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisrKyBmc2Nr X21zZG9zZnMvZGlyLmMJMjAxMC0wMS0wOCAxNTozMDowMy4wMDAwMDAwMDAg KzAwMDAKQEAgLTEyLDEzICsxMiw2IEBACiAgKiAyLiBSZWRpc3RyaWJ1dGlv bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv cHlyaWdodAogICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQogICogICAg ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuIEFsbCBhZHZlcnRpc2lu ZyBtYXRlcmlhbHMgbWVudGlvbmluZyBmZWF0dXJlcyBvciB1c2Ugb2YgdGhp cyBzb2Z0d2FyZQotICogICAgbXVzdCBkaXNwbGF5IHRoZSBmb2xsb3dpbmcg YWNrbm93bGVkZ2VtZW50OgotICoJVGhpcyBwcm9kdWN0IGluY2x1ZGVzIHNv ZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4gSHVzZW1hbm4KLSAqCWFuZCBX b2xmZ2FuZyBTb2xmcmFuay4KLSAqIDQuIE5laXRoZXIgdGhlIG5hbWUgb2Yg dGhlIFVuaXZlcnNpdHkgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0 b3JzCi0gKiAgICBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg cHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKLSAqICAgIHdp dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoK ICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUlMg YGBBUyBJUycnIEFORCBBTlkgRVhQUkVTUyBPUgogICogSU1QTElFRCBXQVJS QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN UExJRUQgV0FSUkFOVElFUwpAQCAtNDQsNyArMzcsNiBAQAogI2luY2x1ZGUg PHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPGN0 eXBlLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDx1bmlzdGQu aD4KICNpbmNsdWRlIDx0aW1lLmg+CiAKQEAgLTIzMCwxMiArMjIyLDI0IEBA CiAJYjEgPSBib290LT5Sb290RGlyRW50cyAqIDMyOwogCWIyID0gYm9vdC0+ U2VjUGVyQ2x1c3QgKiBib290LT5CeXRlc1BlclNlYzsKIAotCWlmICghKGJ1 ZmZlciA9IG1hbGxvYyhiMSA+IGIyID8gYjEgOiBiMikpCi0JICAgIHx8ICEo ZGVsYnVmID0gbWFsbG9jKGIyKSkKLQkgICAgfHwgIShyb290RGlyID0gbmV3 RG9zRGlyRW50cnkoKSkpIHsKLQkJcGVycm9yKCJObyBzcGFjZSBmb3IgZGly ZWN0b3J5Iik7CisJaWYgKChidWZmZXIgPSBtYWxsb2MoIGIxID4gYjIgPyBi MSA6IGIyKSkgPT0gTlVMTCkgeworCQlwZXJyb3IoIk5vIHNwYWNlIGZvciBk aXJlY3RvcnkgYnVmZmVyIik7CiAJCXJldHVybiBGU0ZBVEFMOwogCX0KKwor CWlmICgoZGVsYnVmID0gbWFsbG9jKGIyKSkgPT0gTlVMTCkgeworCQlmcmVl KGJ1ZmZlcik7CisJCXBlcnJvcigiTm8gc3BhY2UgZm9yIGRpcmVjdG9yeSBk ZWxidWYiKTsKKwkJcmV0dXJuIEZTRkFUQUw7CisJfQorCisJaWYgKChyb290 RGlyID0gbmV3RG9zRGlyRW50cnkoKSkgPT0gTlVMTCkgeworCQlmcmVlKGJ1 ZmZlcik7CisJCWZyZWUoZGVsYnVmKTsKKwkJcGVycm9yKCJObyBzcGFjZSBm b3IgZGlyZWN0b3J5IGVudHJ5Iik7CisJCXJldHVybiBGU0ZBVEFMOworCX0K KwogCW1lbXNldChyb290RGlyLCAwLCBzaXplb2YgKnJvb3REaXIpOwogCWlm IChib290LT5mbGFncyAmIEZBVDMyKSB7CiAJCWlmIChib290LT5Sb290Q2wg PCBDTFVTVF9GSVJTVCB8fCBib290LT5Sb290Q2wgPj0gYm9vdC0+TnVtQ2x1 c3RlcnMpIHsKQEAgLTM2Nyw3ICszNzEsOCBAQAogCQkJCXJldHVybiBGU0ZB VEFMOwogCQkJc3RhcnQgPSBidWZmZXI7CiAJCX0KLQkJaWYgKGVuZGNsID09 IGN1cmNsKQorCQkvKiBzdGFydGNsIGlzIDwgQ0xVU1RfRklSU1QgZm9yICFm YXQzMiByb290ICovCisJCWlmICgoZW5kY2wgPT0gY3VyY2wpIHx8IChzdGFy dGNsIDwgQ0xVU1RfRklSU1QpKQogCQkJZm9yICg7IHN0YXJ0IDwgZW5kOyBz dGFydCArPSAzMikKIAkJCQkqc3RhcnQgPSBTTE9UX0RFTEVURUQ7CiAJCXJl dHVybiBGU0RJUk1PRDsKQEAgLTM4NSw3ICszOTAsNyBAQAogCS8qCiAJICog Q2hlY2sgc2l6ZSBvbiBvcmRpbmFyeSBmaWxlcwogCSAqLwotCWludDMyX3Qg cGh5c2ljYWxTaXplOworCXVfaW50MzJfdCBwaHlzaWNhbFNpemU7CiAKIAlp ZiAoZGlyLT5oZWFkID09IENMVVNUX0ZSRUUpCiAJCXBoeXNpY2FsU2l6ZSA9 IDA7CkBAIC02NDQsNyArNjQ5LDggQEAKIAkJCQlkaXJlbnQuaGVhZCB8PSAo cFsyMF0gPDwgMTYpIHwgKHBbMjFdIDw8IDI0KTsKIAkJCWRpcmVudC5zaXpl ID0gcFsyOF0gfCAocFsyOV0gPDwgOCkgfCAocFszMF0gPDwgMTYpIHwgKHBb MzFdIDw8IDI0KTsKIAkJCWlmICh2YWxsZm4pIHsKLQkJCQlzdHJjcHkoZGly ZW50LmxuYW1lLCBsb25nTmFtZSk7CisJCQkJc3RybGNweShkaXJlbnQubG5h bWUsIGxvbmdOYW1lLAorCQkJCSAgICBzaXplb2YoZGlyZW50LmxuYW1lKSk7 CiAJCQkJbG9uZ05hbWVbMF0gPSAnXDAnOwogCQkJCXNob3J0U3VtID0gLTE7 CiAJCQl9CkBAIC04MzIsNiArODM4LDEwIEBACiAJCQl9CiAJCQlib290LT5O dW1GaWxlcysrOwogCQl9CisKKwkJaWYgKCEoYm9vdC0+ZmxhZ3MgJiBGQVQz MikgJiYgIWRpci0+cGFyZW50KQorCQkJYnJlYWs7CisKIAkJaWYgKG1vZCAm IFRISVNNT0QpIHsKIAkJCWxhc3QgKj0gMzI7CiAJCQlpZiAobHNlZWsoZiwg b2ZmLCBTRUVLX1NFVCkgIT0gb2ZmCkBAIC04NDcsNiArODU3LDE5IEBACiAJ CQkJaW52bGZuID8gaW52bGZuIDogdmFsbGZuLCBwLAogCQkJCWludmxmbiA/ IGludmNsIDogdmFsY2wsIC0xLCAwLAogCQkJCWZ1bGxwYXRoKGRpciksIDEp OworCisJLyogVGhlIHJvb3QgZGlyZWN0b3J5IG9mIG5vbiBmYXQzMiBmaWxl c3lzdGVtcyBpcyBpbiBhIHNwZWNpYWwKKwkgKiBhcmVhIGFuZCBtYXkgaGF2 ZSBiZWVuIG1vZGlmaWVkIGFib3ZlIHdpdGhvdXQgYmVpbmcgd3JpdHRlbiBv dXQuCisJICovCisJaWYgKChtb2QgJiBGU0RJUk1PRCkgJiYgIShib290LT5m bGFncyAmIEZBVDMyKSAmJiAhZGlyLT5wYXJlbnQpIHsKKwkJbGFzdCAqPSAz MjsKKwkJaWYgKGxzZWVrKGYsIG9mZiwgU0VFS19TRVQpICE9IG9mZgorCQkg ICAgfHwgd3JpdGUoZiwgYnVmZmVyLCBsYXN0KSAhPSBsYXN0KSB7CisJCQlw ZXJyb3IoIlVuYWJsZSB0byB3cml0ZSBkaXJlY3RvcnkiKTsKKwkJCXJldHVy biBGU0ZBVEFMOworCQl9CisJCW1vZCAmPSB+VEhJU01PRDsKKwl9CiAJcmV0 dXJuIG1vZCAmIH5USElTTU9EOwogfQogCkBAIC05MzYsNyArOTU5LDcgQEAK IAkJbGZvZmYgPSBsZmNsICogYm9vdC0+Q2x1c3RlclNpemUKIAkJICAgICsg Ym9vdC0+Q2x1c3Rlck9mZnNldCAqIGJvb3QtPkJ5dGVzUGVyU2VjOwogCQlp ZiAobHNlZWsoZG9zZnMsIGxmb2ZmLCBTRUVLX1NFVCkgIT0gbGZvZmYKLQkJ ICAgIHx8IHJlYWQoZG9zZnMsIGxmYnVmLCBib290LT5DbHVzdGVyU2l6ZSkg IT0gYm9vdC0+Q2x1c3RlclNpemUpIHsKKwkJICAgIHx8IChzaXplX3QpcmVh ZChkb3NmcywgbGZidWYsIGJvb3QtPkNsdXN0ZXJTaXplKSAhPSBib290LT5D bHVzdGVyU2l6ZSkgewogCQkJcGVycm9yKCJjb3VsZCBub3QgcmVhZCBMT1NU LkRJUiIpOwogCQkJcmV0dXJuIEZTRkFUQUw7CiAJCX0KQEAgLTk2Niw3ICs5 ODksNyBAQAogCXBbMzFdID0gKHVfY2hhcikoZC5zaXplID4+IDI0KTsKIAlm YXRbaGVhZF0uZmxhZ3MgfD0gRkFUX1VTRUQ7CiAJaWYgKGxzZWVrKGRvc2Zz LCBsZm9mZiwgU0VFS19TRVQpICE9IGxmb2ZmCi0JICAgIHx8IHdyaXRlKGRv c2ZzLCBsZmJ1ZiwgYm9vdC0+Q2x1c3RlclNpemUpICE9IGJvb3QtPkNsdXN0 ZXJTaXplKSB7CisJICAgIHx8IChzaXplX3Qpd3JpdGUoZG9zZnMsIGxmYnVm LCBib290LT5DbHVzdGVyU2l6ZSkgIT0gYm9vdC0+Q2x1c3RlclNpemUpIHsK IAkJcGVycm9yKCJjb3VsZCBub3Qgd3JpdGUgTE9TVC5ESVIiKTsKIAkJcmV0 dXJuIEZTRkFUQUw7CiAJfQpkaWZmIC1ydSBmc2NrX21zZG9zZnMub3JpZy9k b3Nmcy5oIGZzY2tfbXNkb3Nmcy9kb3Nmcy5oCi0tLSBmc2NrX21zZG9zZnMu b3JpZy9kb3Nmcy5oCTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICsw MDAwCisrKyBmc2NrX21zZG9zZnMvZG9zZnMuaAkyMDEwLTAxLTA4IDE5OjQy OjA1LjAwMDAwMDAwMCArMDAwMApAQCAtMTIsMTMgKzEyLDYgQEAKICAqIDIu IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj ZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICBub3RpY2UsIHRoaXMgbGlz dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg aW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g QWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVz IG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0gKiAgICBtdXN0IGRpc3BsYXkg dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0gKglUaGlzIHByb2R1 Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IE1hcnRpbiBIdXNl bWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZyYW5rLgotICogNC4gTmVpdGhl ciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVzIG9m IGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9y c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0 d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl cm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC WSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SCiAg KiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTCkBAIC01NSw4ICs0OCwx MyBAQAogCXVfaW50CUZBVHNtYWxsOwkJLyogbnVtYmVyIG9mIHNlY3RvcnMg cGVyIEZBVCAqLwogCXVfaW50CVNlY1BlclRyYWNrOwkJLyogc2VjdG9ycyBw ZXIgdHJhY2sgKi8KIAl1X2ludAlIZWFkczsJCQkvKiBudW1iZXIgb2YgaGVh ZHMgKi8KLQl1X2ludDMyX3QgU2VjdG9yczsJCS8qIHRvdGFsIG51bWJlciBv ZiBzZWN0b3JzICovCiAJdV9pbnQzMl90IEhpZGRlblNlY3M7CQkvKiAjIG9m IGhpZGRlbiBzZWN0b3JzICovCisJdV9pbnQzMl90IFNlY3RvcnM7CQkvKiB0 b3RhbCBudW1iZXIgb2Ygc2VjdG9ycyAqLworI2RlZmluZQlGQVQzMgkJMQkJ LyogdGhpcyBpcyBhIEZBVDMyIGZpbGUgc3lzdGVtICovCisJCQkJCS8qCisJ CQkJCSAqIE1heWJlLCB3ZSBzaG91bGQgc2VwYXJhdGUgb3V0CisJCQkJCSAq IHZhcmlvdXMgcGFydHMgb2YgRkFUMzI/CVhYWAorCQkJCQkgKi8KIAl1X2lu dDMyX3QgSHVnZVNlY3RvcnM7CQkvKiAjIG9mIHNlY3RvcnMgaWYgYnBiU2Vj dG9ycyA9PSAwICovCiAJdV9pbnQJRlNJbmZvOwkJCS8qIEZTSW5mbyBzZWN0 b3IgKi8KIAl1X2ludAlCYWNrdXA7CQkJLyogQmFja3VwIG9mIEJvb3RibG9j a3MgKi8KQEAgLTY2LDExICs2NCw2IEBACiAKIAkvKiBhbmQgc29tZSBtb3Jl IGNhbGN1bGF0ZWQgdmFsdWVzICovCiAJdV9pbnQJZmxhZ3M7CQkJLyogc29t ZSBmbGFnczogKi8KLSNkZWZpbmUJRkFUMzIJCTEJCS8qIHRoaXMgaXMgYSBG QVQzMiBmaWxlIHN5c3RlbSAqLwotCQkJCQkvKgotCQkJCQkgKiBNYXliZSwg d2Ugc2hvdWxkIHNlcGFyYXRlIG91dAotCQkJCQkgKiB2YXJpb3VzIHBhcnRz IG9mIEZBVDMyPwlYWFgKLQkJCQkJICovCiAJaW50CVZhbGlkRmF0OwkJLyog dmFsaWQgZmF0IGlmIEZBVDMyIG5vbi1taXJyb3JlZCAqLwogCWNsX3QJQ2x1 c3RNYXNrOwkJLyogbWFzayBmb3IgZW50cmllcyBpbiBGQVQgKi8KIAljbF90 CU51bUNsdXN0ZXJzOwkJLyogIyBvZiBlbnRyaWVzIGluIGEgRkFUICovCmRp ZmYgLXJ1IGZzY2tfbXNkb3Nmcy5vcmlnL2V4dC5oIGZzY2tfbXNkb3Nmcy9l eHQuaAotLS0gZnNja19tc2Rvc2ZzLm9yaWcvZXh0LmgJMjAxMC0wMS0wNiAx MTowNzoyNC4wMDAwMDAwMDAgKzAwMDAKKysrIGZzY2tfbXNkb3Nmcy9leHQu aAkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAwMApAQCAtMTAs MTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz dHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0g KiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1l bnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZy YW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0 eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1h eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZp YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5E IEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTCkBAIC03NywxMiArNzAsMTIgQEAKICNkZWZpbmUJRlNESVJNT0QJMgkJ LyogU29tZSBkaXJlY3Rvcnkgd2FzIG1vZGlmaWVkICovCiAjZGVmaW5lCUZT RkFUTU9ECTQJCS8qIFRoZSBGQVQgd2FzIG1vZGlmaWVkICovCiAjZGVmaW5l CUZTRVJST1IJCTgJCS8qIFNvbWUgdW5yZWNvdmVyZWQgZXJyb3IgcmVtYWlu cyAqLwotI2RlZmluZQlGU0ZBVEFMCQkxNgkJLyogU29tZSB1bnJlY292ZXJh YmxlIGVycm9yIG9jY3VyZWQgKi8KKyNkZWZpbmUJRlNGQVRBTAkJMTYJCS8q IFNvbWUgdW5yZWNvdmVyYWJsZSBlcnJvciBvY2N1cnJlZCAqLwogI2RlZmlu ZSBGU0RJUlRZCQkzMgkJLyogRmlsZSBzeXN0ZW0gaXMgZGlydHkgKi8KICNk ZWZpbmUgRlNGSVhGQVQJNjQJCS8qIEZpeCBmaWxlIHN5c3RlbSBGQVQgKi8K IAogLyoKLSAqIHJlYWQgYSBib290IGJsb2NrIGluIGEgbWFjaGluZSBpbmRl cGVuZGVuZCBmYXNoaW9uIGFuZCB0cmFuc2xhdGUKKyAqIHJlYWQgYSBib290 IGJsb2NrIGluIGEgbWFjaGluZSBpbmRlcGVuZGVudCBmYXNoaW9uIGFuZCB0 cmFuc2xhdGUKICAqIGl0IGludG8gb3VyIHN0cnVjdCBib290YmxvY2suCiAg Ki8KIGludCByZWFkYm9vdChpbnQsIHN0cnVjdCBib290YmxvY2sgKik7CkBA IC05NiwxMyArODksMTMgQEAKICAqIFJlYWQgb25lIG9mIHRoZSBGQVQgY29w aWVzIGFuZCByZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBuZXcKICAqIGFsbG9j YXRlZCBhcnJheSBob2xkaW5nIG91ciBkZXNjcmlwdGlvbiBvZiBpdC4KICAq LwotaW50IHJlYWRmYXQoaW50LCBzdHJ1Y3QgYm9vdGJsb2NrICosIGludCwg c3RydWN0IGZhdEVudHJ5ICoqKTsKK2ludCByZWFkZmF0KGludCwgc3RydWN0 IGJvb3RibG9jayAqLCB1X2ludCwgc3RydWN0IGZhdEVudHJ5ICoqKTsKIAog LyoKICAqIENoZWNrIHR3byBGQVQgY29waWVzIGZvciBjb25zaXN0ZW5jeSBh bmQgbWVyZ2UgY2hhbmdlcyBpbnRvIHRoZQotICogZmlyc3QgaWYgbmVjY2Vz c2FyeS4KKyAqIGZpcnN0IGlmIG5lY2Vzc2FyeS4KICAqLwotaW50IGNvbXBh cmVmYXQoc3RydWN0IGJvb3RibG9jayAqLCBzdHJ1Y3QgZmF0RW50cnkgKiwg c3RydWN0IGZhdEVudHJ5ICosIGludCk7CitpbnQgY29tcGFyZWZhdChzdHJ1 Y3QgYm9vdGJsb2NrICosIHN0cnVjdCBmYXRFbnRyeSAqLCBzdHJ1Y3QgZmF0 RW50cnkgKiwgdV9pbnQpOwogCiAvKgogICogQ2hlY2sgYSBGQVQKZGlmZiAt cnUgZnNja19tc2Rvc2ZzLm9yaWcvZmF0LmMgZnNja19tc2Rvc2ZzL2ZhdC5j Ci0tLSBmc2NrX21zZG9zZnMub3JpZy9mYXQuYwkyMDEwLTAxLTA2IDExOjA3 OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2ZzL2ZhdC5jCTIw MTAtMDEtMDcgMjI6MTM6MzEuMDAwMDAwMDAwICswMDAwCkBAIC0xMCwxMyAr MTAsNiBAQAogICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgIG5v dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp bmcgZGlzY2xhaW1lciBpbiB0aGUKICAqICAgIGRvY3VtZW50YXRpb24gYW5k L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli dXRpb24uCi0gKiAzLiBBbGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRp b25pbmcgZmVhdHVyZXMgb3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLSAqICAg IG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoK LSAqCVRoaXMgcHJvZHVjdCBpbmNsdWRlcyBzb2Z0d2FyZSBkZXZlbG9wZWQg YnkgTWFydGluIEh1c2VtYW5uCi0gKglhbmQgV29sZmdhbmcgU29sZnJhbmsu Ci0gKiA0LiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBVbml2ZXJzaXR5IG5v ciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycwotICogICAgbWF5IGJl IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg ZnJvbSB0aGlzIHNvZnR3YXJlCi0gKiAgICB3aXRob3V0IHNwZWNpZmljIHBy aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJF IElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1JTIGBgQVMgSVMnJyBBTkQgQU5Z IEVYUFJFU1MgT1IKICAqIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMK QEAgLTQ3LDEwICs0MCwxMCBAQAogI2luY2x1ZGUgImV4dC5oIgogI2luY2x1 ZGUgImZzdXRpbC5oIgogCi1zdGF0aWMgaW50IGNoZWNrY2xudW0oc3RydWN0 IGJvb3RibG9jayAqLCBpbnQsIGNsX3QsIGNsX3QgKik7Ci1zdGF0aWMgaW50 IGNsdXN0ZGlmZmVyKGNsX3QsIGNsX3QgKiwgY2xfdCAqLCBpbnQpOworc3Rh dGljIGludCBjaGVja2NsbnVtKHN0cnVjdCBib290YmxvY2sgKiwgdV9pbnQs IGNsX3QsIGNsX3QgKik7CitzdGF0aWMgaW50IGNsdXN0ZGlmZmVyKGNsX3Qs IGNsX3QgKiwgY2xfdCAqLCB1X2ludCk7CiBzdGF0aWMgaW50IHRyeWNsZWFy KHN0cnVjdCBib290YmxvY2sgKiwgc3RydWN0IGZhdEVudHJ5ICosIGNsX3Qs IGNsX3QgKik7Ci1zdGF0aWMgaW50IF9yZWFkZmF0KGludCwgc3RydWN0IGJv b3RibG9jayAqLCBpbnQsIHVfY2hhciAqKik7CitzdGF0aWMgaW50IF9yZWFk ZmF0KGludCwgc3RydWN0IGJvb3RibG9jayAqLCB1X2ludCwgdV9jaGFyICoq KTsKIAogLyotCiAgKiBUaGUgZmlyc3QgMiBGQVQgZW50cmllcyBjb250YWlu IHBzZXVkby1jbHVzdGVyIG51bWJlcnMgd2l0aCB0aGUgZm9sbG93aW5nCkBA IC0xMzUsNyArMTI4LDcgQEAKICAqIENoZWNrIGEgY2x1c3RlciBudW1iZXIg Zm9yIHZhbGlkIHZhbHVlCiAgKi8KIHN0YXRpYyBpbnQKLWNoZWNrY2xudW0o c3RydWN0IGJvb3RibG9jayAqYm9vdCwgaW50IGZhdCwgY2xfdCBjbCwgY2xf dCAqbmV4dCkKK2NoZWNrY2xudW0oc3RydWN0IGJvb3RibG9jayAqYm9vdCwg dV9pbnQgZmF0LCBjbF90IGNsLCBjbF90ICpuZXh0KQogewogCWlmICgqbmV4 dCA+PSAoQ0xVU1RfUlNSVkQmYm9vdC0+Q2x1c3RNYXNrKSkKIAkJKm5leHQg fD0gfmJvb3QtPkNsdXN0TWFzazsKQEAgLTE2Niw3ICsxNTksNyBAQAogICog UmVhZCBhIEZBVCBmcm9tIGRpc2suIFJldHVybnMgMSBpZiBzdWNjZXNzZnVs LCAwIG90aGVyd2lzZS4KICAqLwogc3RhdGljIGludAotX3JlYWRmYXQoaW50 IGZzLCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBpbnQgbm8sIHVfY2hhciAq KmJ1ZmZlcikKK19yZWFkZmF0KGludCBmcywgc3RydWN0IGJvb3RibG9jayAq Ym9vdCwgdV9pbnQgbm8sIHVfY2hhciAqKmJ1ZmZlcikKIHsKIAlvZmZfdCBv ZmY7CiAKQEAgLTE4NCw3ICsxNzcsNyBAQAogCQlnb3RvIGVycjsKIAl9CiAK LQlpZiAocmVhZChmcywgKmJ1ZmZlciwgYm9vdC0+RkFUc2VjcyAqIGJvb3Qt PkJ5dGVzUGVyU2VjKQorCWlmICgoc2l6ZV90KXJlYWQoZnMsICpidWZmZXIs IGJvb3QtPkZBVHNlY3MgKiBib290LT5CeXRlc1BlclNlYykKIAkgICAgIT0g Ym9vdC0+RkFUc2VjcyAqIGJvb3QtPkJ5dGVzUGVyU2VjKSB7CiAJCXBlcnJv cigiVW5hYmxlIHRvIHJlYWQgRkFUIik7CiAJCWdvdG8gZXJyOwpAQCAtMjAx LDI0ICsxOTQsMjYgQEAKICAqIFJlYWQgYSBGQVQgYW5kIGRlY29kZSBpdCBp bnRvIGludGVybmFsIGZvcm1hdAogICovCiBpbnQKLXJlYWRmYXQoaW50IGZz LCBzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBpbnQgbm8sIHN0cnVjdCBmYXRF bnRyeSAqKmZwKQorcmVhZGZhdChpbnQgZnMsIHN0cnVjdCBib290YmxvY2sg KmJvb3QsIHVfaW50IG5vLCBzdHJ1Y3QgZmF0RW50cnkgKipmcCkKIHsKIAlz dHJ1Y3QgZmF0RW50cnkgKmZhdDsKIAl1X2NoYXIgKmJ1ZmZlciwgKnA7CiAJ Y2xfdCBjbDsKIAlpbnQgcmV0ID0gRlNPSzsKKwlzaXplX3QgbGVuOwogCiAJ Ym9vdC0+TnVtRnJlZSA9IGJvb3QtPk51bUJhZCA9IDA7CiAKIAlpZiAoIV9y ZWFkZmF0KGZzLCBib290LCBubywgJmJ1ZmZlcikpCiAJCXJldHVybiBGU0ZB VEFMOwogCQkKLQlmYXQgPSBjYWxsb2MoYm9vdC0+TnVtQ2x1c3RlcnMsIHNp emVvZihzdHJ1Y3QgZmF0RW50cnkpKTsKKwlmYXQgPSBtYWxsb2MobGVuID0g Ym9vdC0+TnVtQ2x1c3RlcnMgKiBzaXplb2Yoc3RydWN0IGZhdEVudHJ5KSk7 CiAJaWYgKGZhdCA9PSBOVUxMKSB7CiAJCXBlcnJvcigiTm8gc3BhY2UgZm9y IEZBVCIpOwogCQlmcmVlKGJ1ZmZlcik7CiAJCXJldHVybiBGU0ZBVEFMOwog CX0KKwkodm9pZCltZW1zZXQoZmF0LCAwLCBsZW4pOwogCiAJaWYgKGJ1ZmZl clswXSAhPSBib290LT5NZWRpYQogCSAgICB8fCBidWZmZXJbMV0gIT0gMHhm ZiB8fCBidWZmZXJbMl0gIT0gMHhmZgpAQCAtMzExLDcgKzMwNiwxMSBAQAog CX0KIAogCWZyZWUoYnVmZmVyKTsKLQkqZnAgPSBmYXQ7CisJaWYgKHJldCAm IEZTRkFUQUwpIHsKKwkJZnJlZShmYXQpOworCQkqZnAgPSBOVUxMOworCX0g ZWxzZQorCQkqZnAgPSBmYXQ7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtMzMx LDcgKzMzMCw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNsdXN0ZGlmZmVyKGNs X3QgY2wsIGNsX3QgKmNwMSwgY2xfdCAqY3AyLCBpbnQgZmF0bnVtKQorY2x1 c3RkaWZmZXIoY2xfdCBjbCwgY2xfdCAqY3AxLCBjbF90ICpjcDIsIHVfaW50 IGZhdG51bSkKIHsKIAlpZiAoKmNwMSA9PSBDTFVTVF9GUkVFIHx8ICpjcDEg Pj0gQ0xVU1RfUlNSVkQpIHsKIAkJaWYgKCpjcDIgPT0gQ0xVU1RfRlJFRSB8 fCAqY3AyID49IENMVVNUX1JTUlZEKSB7CkBAIC0zNDYsMTMgKzM0NSwxMyBA QAogCQkJCX0KIAkJCQlyZXR1cm4gRlNGQVRBTDsKIAkJCX0KLQkJCXB3YXJu KCJDbHVzdGVyICV1IGlzIG1hcmtlZCAlcyBpbiBGQVQgMCwgJXMgaW4gRkFU ICVkXG4iLAorCQkJcHdhcm4oIkNsdXN0ZXIgJXUgaXMgbWFya2VkICVzIGlu IEZBVCAwLCAlcyBpbiBGQVQgJXVcbiIsCiAJCQkgICAgICBjbCwgcnNydmRj bHR5cGUoKmNwMSksIHJzcnZkY2x0eXBlKCpjcDIpLCBmYXRudW0pOwogCQkJ aWYgKGFzaygwLCAiVXNlIEZBVCAwJ3MgZW50cnkiKSkgewogCQkJCSpjcDIg PSAqY3AxOwogCQkJCXJldHVybiBGU0ZBVE1PRDsKIAkJCX0KLQkJCWlmIChh c2soMCwgIlVzZSBGQVQgJWQncyBlbnRyeSIsIGZhdG51bSkpIHsKKwkJCWlm IChhc2soMCwgIlVzZSBGQVQgJXUncyBlbnRyeSIsIGZhdG51bSkpIHsKIAkJ CQkqY3AxID0gKmNwMjsKIAkJCQlyZXR1cm4gRlNGQVRNT0Q7CiAJCQl9CkBA IC0zNjAsNyArMzU5LDcgQEAKIAkJfQogCQlwd2FybigiQ2x1c3RlciAldSBp cyBtYXJrZWQgJXMgaW4gRkFUIDAsIGJ1dCBjb250aW51ZXMgd2l0aCBjbHVz dGVyICV1IGluIEZBVCAlZFxuIiwKIAkJICAgICAgY2wsIHJzcnZkY2x0eXBl KCpjcDEpLCAqY3AyLCBmYXRudW0pOwotCQlpZiAoYXNrKDAsICJVc2UgY29u dGludWF0aW9uIGZyb20gRkFUICVkIiwgZmF0bnVtKSkgeworCQlpZiAoYXNr KDAsICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUICV1IiwgZmF0bnVtKSkg ewogCQkJKmNwMSA9ICpjcDI7CiAJCQlyZXR1cm4gRlNGQVRNT0Q7CiAJCX0K QEAgLTM3MSw3ICszNzAsNyBAQAogCQlyZXR1cm4gRlNGQVRBTDsKIAl9CiAJ aWYgKCpjcDIgPT0gQ0xVU1RfRlJFRSB8fCAqY3AyID49IENMVVNUX1JTUlZE KSB7Ci0JCXB3YXJuKCJDbHVzdGVyICV1IGNvbnRpbnVlcyB3aXRoIGNsdXN0 ZXIgJXUgaW4gRkFUIDAsIGJ1dCBpcyBtYXJrZWQgJXMgaW4gRkFUICVkXG4i LAorCQlwd2FybigiQ2x1c3RlciAldSBjb250aW51ZXMgd2l0aCBjbHVzdGVy ICV1IGluIEZBVCAwLCBidXQgaXMgbWFya2VkICVzIGluIEZBVCAldVxuIiwK IAkJICAgICAgY2wsICpjcDEsIHJzcnZkY2x0eXBlKCpjcDIpLCBmYXRudW0p OwogCQlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9uIGZyb20gRkFUIDAi KSkgewogCQkJKmNwMiA9ICpjcDE7CkBAIC0zODMsMTMgKzM4MiwxMyBAQAog CQl9CiAJCXJldHVybiBGU0VSUk9SOwogCX0KLQlwd2FybigiQ2x1c3RlciAl dSBjb250aW51ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAwLCBidXQgd2l0 aCBjbHVzdGVyICV1IGluIEZBVCAlZFxuIiwKKwlwd2FybigiQ2x1c3RlciAl dSBjb250aW51ZXMgd2l0aCBjbHVzdGVyICV1IGluIEZBVCAwLCBidXQgd2l0 aCBjbHVzdGVyICV1IGluIEZBVCAldVxuIiwKIAkgICAgICBjbCwgKmNwMSwg KmNwMiwgZmF0bnVtKTsKIAlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9u IGZyb20gRkFUIDAiKSkgewogCQkqY3AyID0gKmNwMTsKIAkJcmV0dXJuIEZT RkFUTU9EOwogCX0KLQlpZiAoYXNrKDAsICJVc2UgY29udGludWF0aW9uIGZy b20gRkFUICVkIiwgZmF0bnVtKSkgeworCWlmIChhc2soMCwgIlVzZSBjb250 aW51YXRpb24gZnJvbSBGQVQgJXUiLCBmYXRudW0pKSB7CiAJCSpjcDEgPSAq Y3AyOwogCQlyZXR1cm4gRlNGQVRNT0Q7CiAJfQpAQCAtNDAxLDggKzQwMCw4 IEBACiAgKiBpbnRvIHRoZSBmaXJzdCBvbmUuCiAgKi8KIGludAotY29tcGFy ZWZhdChzdHJ1Y3QgYm9vdGJsb2NrICpib290LCBzdHJ1Y3QgZmF0RW50cnkg KmZpcnN0LCAKLSAgICBzdHJ1Y3QgZmF0RW50cnkgKnNlY29uZCwgaW50IGZh dG51bSkKK2NvbXBhcmVmYXQoc3RydWN0IGJvb3RibG9jayAqYm9vdCwgc3Ry dWN0IGZhdEVudHJ5ICpmaXJzdCwKKyAgICBzdHJ1Y3QgZmF0RW50cnkgKnNl Y29uZCwgdV9pbnQgZmF0bnVtKQogewogCWNsX3QgY2w7CiAJaW50IHJldCA9 IEZTT0s7CkBAIC01NDIsOCArNTQxLDggQEAKIHsKIAl1X2NoYXIgKmJ1ZmZl ciwgKnA7CiAJY2xfdCBjbDsKLQlpbnQgaTsKLQl1X2ludDMyX3QgZmF0c3o7 CisJdV9pbnQgaTsKKwlzaXplX3QgZmF0c3o7CiAJb2ZmX3Qgb2ZmOwogCWlu dCByZXQgPSBGU09LOwogCkBAIC02MzMsNyArNjMyLDcgQEAKIAkJb2ZmID0g Ym9vdC0+UmVzU2VjdG9ycyArIGkgKiBib290LT5GQVRzZWNzOwogCQlvZmYg Kj0gYm9vdC0+Qnl0ZXNQZXJTZWM7CiAJCWlmIChsc2Vlayhmcywgb2ZmLCBT RUVLX1NFVCkgIT0gb2ZmCi0JCSAgICB8fCB3cml0ZShmcywgYnVmZmVyLCBm YXRzeikgIT0gZmF0c3opIHsKKwkJICAgIHx8IChzaXplX3Qpd3JpdGUoZnMs IGJ1ZmZlciwgZmF0c3opICE9IGZhdHN6KSB7CiAJCQlwZXJyb3IoIlVuYWJs ZSB0byB3cml0ZSBGQVQiKTsKIAkJCXJldCA9IEZTRkFUQUw7IC8qIFJldHVy biBpbW1lZGlhdGVseT8JCVhYWCAqLwogCQl9CkBAIC02ODMsMTcgKzY4Miw2 IEBACiAJCQkJcmV0ID0gMTsKIAkJCX0KIAkJfQotCQlpZiAoYm9vdC0+TnVt RnJlZSAmJiBmYXRbYm9vdC0+RlNOZXh0XS5uZXh0ICE9IENMVVNUX0ZSRUUp IHsKLQkJCXB3YXJuKCJOZXh0IGZyZWUgY2x1c3RlciBpbiBGU0luZm8gYmxv Y2sgKCV1KSBub3QgZnJlZVxuIiwKLQkJCSAgICAgIGJvb3QtPkZTTmV4dCk7 Ci0JCQlpZiAoYXNrKDEsICJGaXgiKSkKLQkJCQlmb3IgKGhlYWQgPSBDTFVT VF9GSVJTVDsgaGVhZCA8IGJvb3QtPk51bUNsdXN0ZXJzOyBoZWFkKyspCi0J CQkJCWlmIChmYXRbaGVhZF0ubmV4dCA9PSBDTFVTVF9GUkVFKSB7Ci0JCQkJ CQlib290LT5GU05leHQgPSBoZWFkOwotCQkJCQkJcmV0ID0gMTsKLQkJCQkJ CWJyZWFrOwotCQkJCQl9Ci0JCX0KIAkJaWYgKHJldCkKIAkJCW1vZCB8PSB3 cml0ZWZzaW5mbyhkb3NmcywgYm9vdCk7CiAJfQpkaWZmIC1ydSBmc2NrX21z ZG9zZnMub3JpZy9mc2NrX21zZG9zZnMuOCBmc2NrX21zZG9zZnMvZnNja19t c2Rvc2ZzLjgKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL2ZzY2tfbXNkb3Nmcy44 CTIwMTAtMDEtMDYgMTE6MDc6MjQuMDAwMDAwMDAwICswMDAwCisrKyBmc2Nr X21zZG9zZnMvZnNja19tc2Rvc2ZzLjgJMjAxMC0wMS0wNyAyMjowOToxMy4w MDAwMDAwMDAgKzAwMDAKQEAgLTExLDEzICsxMSw2IEBACiAuXCIgMi4gUmVk aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo ZSBhYm92ZSBjb3B5cmlnaHQKIC5cIiAgICBub3RpY2UsIHRoaXMgbGlzdCBv ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g dGhlCiAuXCIgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLS5cIiAzLiBB bGwgYWR2ZXJ0aXNpbmcgbWF0ZXJpYWxzIG1lbnRpb25pbmcgZmVhdHVyZXMg b3IgdXNlIG9mIHRoaXMgc29mdHdhcmUKLS5cIiAgICBtdXN0IGRpc3BsYXkg dGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1lbnQ6Ci0uXCIJVGhpcyBwcm9k dWN0IGluY2x1ZGVzIHNvZnR3YXJlIGRldmVsb3BlZCBieSBNYXJ0aW4gSHVz ZW1hbm4KLS5cIglhbmQgV29sZmdhbmcgU29sZnJhbmsuCi0uXCIgNC4gTmVp dGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0eSBub3IgdGhlIG5hbWVz IG9mIGl0cyBjb250cmlidXRvcnMKLS5cIiAgICBtYXkgYmUgdXNlZCB0byBl bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMg c29mdHdhcmUKLS5cIiAgICB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0 ZW4gcGVybWlzc2lvbi4KIC5cIgogLlwiIFRISVMgU09GVFdBUkUgSVMgUFJP VklERUQgQlkgVEhFIEFVVEhPUlMgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVT UyBPUgogLlwiIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKZGlmZiAt cnUgZnNja19tc2Rvc2ZzLm9yaWcvbWFpbi5jIGZzY2tfbXNkb3Nmcy9tYWlu LmMKLS0tIGZzY2tfbXNkb3Nmcy5vcmlnL21haW4uYwkyMDEwLTAxLTA2IDEx OjA3OjI0LjAwMDAwMDAwMCArMDAwMAorKysgZnNja19tc2Rvc2ZzL21haW4u YwkyMDEwLTAxLTA3IDIyOjA5OjEzLjAwMDAwMDAwMCArMDAwMApAQCAtMTAs MTMgKzEwLDYgQEAKICAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCiAgKiAgICBkb2N1bWVudGF0aW9u IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz dHJpYnV0aW9uLgotICogMy4gQWxsIGFkdmVydGlzaW5nIG1hdGVyaWFscyBt ZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCi0g KiAgICBtdXN0IGRpc3BsYXkgdGhlIGZvbGxvd2luZyBhY2tub3dsZWRnZW1l bnQ6Ci0gKglUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxv cGVkIGJ5IE1hcnRpbiBIdXNlbWFubgotICoJYW5kIFdvbGZnYW5nIFNvbGZy YW5rLgotICogNC4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgVW5pdmVyc2l0 eSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKLSAqICAgIG1h eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp dmVkIGZyb20gdGhpcyBzb2Z0d2FyZQotICogICAgd2l0aG91dCBzcGVjaWZp YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZU V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SUyBgYEFTIElTJycgQU5E IEFOWSBFWFBSRVNTIE9SCiAgKiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U SUVTCkBAIC00MCw3ICszMyw2IEBACiAKICNpbmNsdWRlIDxzdGRsaWIuaD4K ICNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgogI2lu Y2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjaW5jbHVk ZSA8ZXJybm8uaD4K --0-1379220581-1263168743=:30404--