From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Wed, 2 May 2001 18:00:19 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Wed, 2 May 2001 18:00:01 -0400 Received: from fungus.teststation.com ([212.32.186.211]:4749 "EHLO fungus.svenskatest.se") by vger.kernel.org with ESMTP id ; Wed, 2 May 2001 17:59:58 -0400 Date: Wed, 2 May 2001 23:59:55 +0200 (CEST) From: Urban Widmark To: cc: Xuan Baldauf Subject: [PATCH][RFT] smbfs bugfixes for 2.4.4 Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="-1463780587-1188951267-988840630=:27315" Content-ID: Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org 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. ---1463780587-1188951267-988840630=:27315 Content-Type: TEXT/PLAIN; CHARSET=iso-8859-1 Content-Transfer-Encoding: QUOTED-PRINTABLE Content-ID: Hello all This patch have been building up for a while, without reaching some undefined level of readiness. I would like some feedback from other smbfs users before submitting this for 2.4.4-something. Particularly from people mounting win9x shares. * win9x will sometimes not give back the right filesize, this can cause problems when cp'ing a file over an existing one. When truncating the file to 0 bytes the server keeps reporting the old size and much confusion arises. (reported by Xuan Baldauf, could you verify that this fixes it? If it does it's a much better fix than the workaround you got before.) * The timeout for a reconnect was only 5 seconds, which may not be enough. To make it worse, if there is a timeout the mount will be dead. umount time. * Allow smbmount to supply a new connection even if the retry attempt has timed-out. "dead" mounts can then be resurrected ... this allows you to replace a smbmount that have crashed, or it would if smbmount supported that. * Locking bug in smb_newconn, it modifies the "server" struct without having the server lock. * Fix theoretical memory leak and the missing smb malloc debug functions. * fsync now causes a SMBflush to tell the server that we want the data to hit the disc. (as suggested by Jochen Dolze) * Don't zero out the superblock flags to allow readonly mounts to be readonly. If someone knows why sb->s_flags =3D 0; is a good idea I'd like to know. (fix&testing by Ren=E9 Scharfe) Patch vs 2.4.4, if someone prefers 2.4.4-acX it should work (even if the patch fails on changes to Configure.help). /Urban ---1463780587-1188951267-988840630=:27315 Content-Type: TEXT/PLAIN; CHARSET=iso-8859-1; NAME="smbfs-2.4.4-flush+retry.patch" Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: ATTACHMENT; FILENAME="smbfs-2.4.4-flush+retry.patch" ZGlmZiAtdXJOIC1YIGV4Y2x1ZGUgbGludXgtMi40LjQtb3JpZy9Eb2N1bWVu dGF0aW9uL0NvbmZpZ3VyZS5oZWxwIGxpbnV4LTIuNC40LXNtYmZzL0RvY3Vt ZW50YXRpb24vQ29uZmlndXJlLmhlbHANCi0tLSBsaW51eC0yLjQuNC1vcmln L0RvY3VtZW50YXRpb24vQ29uZmlndXJlLmhlbHAJV2VkIE1heSAgMiAyMDow MTowNyAyMDAxDQorKysgbGludXgtMi40LjQtc21iZnMvRG9jdW1lbnRhdGlv bi9Db25maWd1cmUuaGVscAlXZWQgTWF5ICAyIDIwOjQ0OjQzIDIwMDENCkBA IC0xMjA4MSwxMCArMTIwODEsNyBAQA0KICAgVGhlIG5scyBzZXR0aW5ncyBj YW4gYmUgY2hhbmdlZCBhdCBtb3VudCB0aW1lLCBpZiB5b3VyIHNtYm1vdW50 DQogICBzdXBwb3J0cyB0aGF0LCB1c2luZyB0aGUgY29kZXBhZ2UgYW5kIGlv Y2hhcnNldCBwYXJhbWV0ZXJzLg0KIA0KLSAgQ3VycmVudGx5IG5vIHNtYm1v dW50IGRpc3RyaWJ1dGVkIHdpdGggc2FtYmEgc3VwcG9ydHMgdGhpcywgaXQg aXMNCi0gIGFzc3VtZWQgZnV0dXJlIHZlcnNpb25zIHdpbGwuIEluIHRoZSBt ZWFudGltZSB5b3UgY2FuIGdldCBhbg0KLSAgdW5vZmZpY2lhbCBwYXRjaCBm b3Igc2FtYmEgMi4wLjcgZnJvbToNCi0gIGh0dHA6Ly93d3cuaG9qZHB1bmt0 ZW4uYWMuc2UvMDU0L3NhbWJhL2luZGV4Lmh0bWwNCisgIHNtYm1vdW50IGZy b20gc2FtYmEgMi4yLjAgb3IgbGF0ZXIgc3VwcG9ydHMgdGhpcy4NCiANCiBu bHMgc3VwcG9ydCBzZXR0aW5nDQogQ09ORklHX1NNQl9OTFNfUkVNT1RFDQpA QCAtMTIwOTYsMTAgKzEyMDkzLDcgQEANCiAgIFRoZSBubHMgc2V0dGluZ3Mg Y2FuIGJlIGNoYW5nZWQgYXQgbW91bnQgdGltZSwgaWYgeW91ciBzbWJtb3Vu dA0KICAgc3VwcG9ydHMgdGhhdCwgdXNpbmcgdGhlIGNvZGVwYWdlIGFuZCBp b2NoYXJzZXQgcGFyYW1ldGVycy4NCiANCi0gIEN1cnJlbnRseSBubyBzbWJt b3VudCBkaXN0cmlidXRlZCB3aXRoIHNhbWJhIHN1cHBvcnRzIHRoaXMsIGl0 IGlzDQotICBhc3N1bWVkIGZ1dHVyZSB2ZXJzaW9ucyB3aWxsLiBJbiB0aGUg bWVhbnRpbWUgeW91IGNhbiBnZXQgYW4NCi0gIHVub2ZmaWNpYWwgcGF0Y2gg Zm9yIHNhbWJhIDIuMC43IGZyb206DQotICBodHRwOi8vd3d3LmhvamRwdW5r dGVuLmFjLnNlLzA1NC9zYW1iYS9pbmRleC5odG1sDQorICBzbWJtb3VudCBm cm9tIHNhbWJhIDIuMi4wIG9yIGxhdGVyIHN1cHBvcnRzIHRoaXMuDQogDQog Q29kYSBmaWxlIHN5c3RlbSBzdXBwb3J0IChhZHZhbmNlZCBuZXR3b3JrIGZz KQ0KIENPTkZJR19DT0RBX0ZTDQpkaWZmIC11ck4gLVggZXhjbHVkZSBsaW51 eC0yLjQuNC1vcmlnL01BSU5UQUlORVJTIGxpbnV4LTIuNC40LXNtYmZzL01B SU5UQUlORVJTDQotLS0gbGludXgtMi40LjQtb3JpZy9NQUlOVEFJTkVSUwlX ZWQgTWF5ICAyIDIwOjAxOjA3IDIwMDENCisrKyBsaW51eC0yLjQuNC1zbWJm cy9NQUlOVEFJTkVSUwlXZWQgTWF5ICAyIDIwOjQyOjI0IDIwMDENCkBAIC0x MTcxLDcgKzExNzEsNyBAQA0KIA0KIFNNQiBGSUxFU1lTVEVNDQogUDoJVXJi YW4gV2lkbWFyaw0KLU06CXVyYmFuQHN2ZW5za2F0ZXN0LnNlDQorTToJdXJi YW5AdGVzdHN0YXRpb24uY29tDQogVzoJaHR0cDovL3NhbWJhLm9yZy8NCiBM OglzYW1iYUBzYW1iYS5vcmcNCiBTOglNYWludGFpbmVkDQpkaWZmIC11ck4g LVggZXhjbHVkZSBsaW51eC0yLjQuNC1vcmlnL2ZzL3NtYmZzL0NoYW5nZUxv ZyBsaW51eC0yLjQuNC1zbWJmcy9mcy9zbWJmcy9DaGFuZ2VMb2cNCi0tLSBs aW51eC0yLjQuNC1vcmlnL2ZzL3NtYmZzL0NoYW5nZUxvZwlTYXQgTWFyIDMx IDE5OjExOjUzIDIwMDENCisrKyBsaW51eC0yLjQuNC1zbWJmcy9mcy9zbWJm cy9DaGFuZ2VMb2cJV2VkIE1heSAgMiAyMzo0ODo1NiAyMDAxDQpAQCAtMSw1 ICsxLDE4IEBADQogQ2hhbmdlTG9nIGZvciBzbWJmcy4NCiANCisyMDAxLTA0 LTI1IFJlbukgU2NoYXJmZSA8bC5zLnJAd2ViLmRlPg0KKw0KKwkqIGlub2Rl LmM6IERvbid0IGNsZWFyIHNfZmxhZ3MgYW5kIGFsbG93IHJvIG1vdW50cw0K Kw0KKzIwMDEtMDQtMjEgVXJiYW4gV2lkbWFyayA8dXJiYW5AdGVzdHN0YXRp b24uY29tPg0KKw0KKwkqIGRpci5jLCBwcm9jLmM6IHJlcGxhY2UgdGVzdHMg b24gY29ubl9waWQgd2l0aCB0ZXN0cyBvbiBzdGF0ZSB0bw0KKwkgIGZpeCBz bWJtb3VudCByZWNvbm5lY3Qgb24gc21iX3JldHJ5IHRpbWVvdXQgYW5kIHVw IHRoZSB0aW1lb3V0IHRvIDMwcy4NCisJKiBwcm9jLmM6IHNtYl9uZXdjb25u IG11c3QgaGF2ZSB0aGUgc2VydmVyIGxvY2tlZCB3aGlsZSB1cGRhdGluZyBp dC4NCisJKiBpbm9kZS5jLCBwcm9jLmM6IG5lZWQgZmx1c2ggYWZ0ZXIgdHJ1 bmNhdGUgb24gc29tZSBzZXJ2ZXJzICh3aW45eCkNCisJKiBmaWxlLmM6IGFk ZCBjYWxsIHRvIHNlbmQgU01CZmx1c2ggb24gZnN5bmMNCisJICAoYXMgc3Vn Z2VzdGVkIGJ5IEpvY2hlbiBEb2x6ZSA8ZG9semVAZXBjbmV0LmRlPikNCisN CiAyMDAxLTAzLTA2IFVyYmFuIFdpZG1hcmsgPHVyYmFuQHRlc3RzdGF0aW9u LmNvbT4NCiANCiAJKiBjYWNoZS5jOiBkX2FkZCBvbiBoYXNoZWQgZGVudHJp ZXMgY29ycnVwdHMgZF9oYXNoIGxpc3QgYW5kDQpkaWZmIC11ck4gLVggZXhj bHVkZSBsaW51eC0yLjQuNC1vcmlnL2ZzL3NtYmZzL2Rpci5jIGxpbnV4LTIu NC40LXNtYmZzL2ZzL3NtYmZzL2Rpci5jDQotLS0gbGludXgtMi40LjQtb3Jp Zy9mcy9zbWJmcy9kaXIuYwlUaHUgRmViIDIyIDIwOjUyOjAzIDIwMDENCisr KyBsaW51eC0yLjQuNC1zbWJmcy9mcy9zbWJmcy9kaXIuYwlXZWQgTWF5ICAy IDIwOjQyOjI0IDIwMDENCkBAIC0yMTAsMTAgKzIxMCw2IEBADQogCXJldHVy biByZXN1bHQ7DQogfQ0KIA0KLS8qDQotICogTm90ZTogaW4gb3JkZXIgdG8g YWxsb3cgdGhlIHNtYm1vdW50IHByb2Nlc3MgdG8gb3BlbiB0aGUNCi0gKiBt b3VudCBwb2ludCwgd2UgZG9uJ3QgcmV2YWxpZGF0ZSBpZiBjb25uX3BpZCBp cyBOVUxMLg0KLSAqLw0KIHN0YXRpYyBpbnQNCiBzbWJfZGlyX29wZW4oc3Ry dWN0IGlub2RlICpkaXIsIHN0cnVjdCBmaWxlICpmaWxlKQ0KIHsNCkBAIC0y MzAsMTQgKzIyNiwxOCBAQA0KIAkgKi8NCiAJbG9ja19rZXJuZWwoKTsNCiAJ c2VydmVyID0gc2VydmVyX2Zyb21fZGVudHJ5KGRlbnRyeSk7DQotCWlmIChz ZXJ2ZXItPm9wdC5wcm90b2NvbCA8IFNNQl9QUk9UT0NPTF9MQU5NQU4yKQ0K LQl7DQorCWlmIChzZXJ2ZXItPm9wdC5wcm90b2NvbCA8IFNNQl9QUk9UT0NP TF9MQU5NQU4yKSB7DQogCQl1bnNpZ25lZCBsb25nIGFnZSA9IGppZmZpZXMg LSBkaXItPnUuc21iZnNfaS5vbGRtdGltZTsNCiAJCWlmIChhZ2UgPiAyKkha KQ0KIAkJCXNtYl9pbnZhbGlkX2Rpcl9jYWNoZShkaXIpOw0KIAl9DQogDQot CWlmIChzZXJ2ZXItPmNvbm5fcGlkKQ0KKwkvKg0KKwkgKiBOb3RlOiBpbiBv cmRlciB0byBhbGxvdyB0aGUgc21ibW91bnQgcHJvY2VzcyB0byBvcGVuIHRo ZQ0KKwkgKiBtb3VudCBwb2ludCwgd2Ugb25seSByZXZhbGlkYXRlIGlmIHRo ZSBjb25uZWN0aW9uIGlzIHZhbGlkIG9yDQorCSAqIGlmIHRoZSBwcm9jZXNz IGlzIHRyeWluZyB0byBhY2Nlc3Mgc29tZXRoaW5nIG90aGVyIHRoYW4gdGhl IHJvb3QuDQorCSAqLw0KKwlpZiAoc2VydmVyLT5zdGF0ZSA9PSBDT05OX1ZB TElEIHx8ICFJU19ST09UKGRlbnRyeSkpDQogCQllcnJvciA9IHNtYl9yZXZh bGlkYXRlX2lub2RlKGRlbnRyeSk7DQogCXVubG9ja19rZXJuZWwoKTsNCiAJ cmV0dXJuIGVycm9yOw0KZGlmZiAtdXJOIC1YIGV4Y2x1ZGUgbGludXgtMi40 LjQtb3JpZy9mcy9zbWJmcy9maWxlLmMgbGludXgtMi40LjQtc21iZnMvZnMv c21iZnMvZmlsZS5jDQotLS0gbGludXgtMi40LjQtb3JpZy9mcy9zbWJmcy9m aWxlLmMJVGh1IEZlYiAyMiAyMDo1MjowMyAyMDAxDQorKysgbGludXgtMi40 LjQtc21iZnMvZnMvc21iZnMvZmlsZS5jCVdlZCBNYXkgIDIgMjE6NTU6NTgg MjAwMQ0KQEAgLTI4LDggKzI4LDIzIEBADQogc3RhdGljIGludA0KIHNtYl9m c3luYyhzdHJ1Y3QgZmlsZSAqZmlsZSwgc3RydWN0IGRlbnRyeSAqIGRlbnRy eSwgaW50IGRhdGFzeW5jKQ0KIHsNCisJaW50IHJlc3VsdDsNCisJc3RydWN0 IHNtYl9zYl9pbmZvICpzZXJ2ZXIgPSBzZXJ2ZXJfZnJvbV9kZW50cnkoZGVu dHJ5KTsNCisNCiAJVkVSQk9TRSgic3luYyBmaWxlICVzLyVzXG4iLCBERU5U UllfUEFUSChkZW50cnkpKTsNCi0JcmV0dXJuIDA7DQorDQorCS8qDQorCSAq IFRoZSBWRlMgd2lsbCB3cml0ZXBhZ2UoKSBhbGwgZGlydHkgcGFnZXMgZm9y IHVzLCBidXQgd2UNCisJICogc2hvdWxkIHNlbmQgYSBTTUJmbHVzaCB0byB0 aGUgc2VydmVyLCBsZXR0aW5nIGl0IGtub3cgdGhhdA0KKwkgKiB3ZSB3YW50 IHRoaW5ncyBzeW5jaHJvbml6ZWQgd2l0aCBhY3R1YWwgc3RvcmFnZS4NCisJ ICoNCisJICogTm90ZTogdGhpcyBmdW5jdGlvbiByZXF1aXJlcyBhbGwgcGFn ZXMgdG8gaGF2ZSBiZWVuIHdyaXR0ZW4gYWxyZWFkeQ0KKwkgKiAgICAgICAo c2hvdWxkIGJlIG9rIHdpdGggd3JpdGVwYWdlX3N5bmMpDQorCSAqLw0KKwlz bWJfbG9ja19zZXJ2ZXIoc2VydmVyKTsNCisJcmVzdWx0ID0gc21iX3Byb2Nf Zmx1c2goc2VydmVyLCBkZW50cnktPmRfaW5vZGUtPnUuc21iZnNfaS5maWxl aWQpOw0KKwlzbWJfdW5sb2NrX3NlcnZlcihzZXJ2ZXIpOw0KKwlyZXR1cm4g cmVzdWx0Ow0KIH0NCiANCiAvKg0KQEAgLTIwNSw2ICsyMjAsMjAgQEANCiAN CiAJVkVSQk9TRSgiZmlsZSAlcy8lcywgY291bnQ9JWx1QCVsdVxuIiwgREVO VFJZX1BBVEgoZGVudHJ5KSwNCiAJCSh1bnNpZ25lZCBsb25nKSBjb3VudCwg KHVuc2lnbmVkIGxvbmcpICpwcG9zKTsNCisNCisJLyoNCisJICogVGhlIGxv Y2Fsd3JpdGUgZmxhZyBpcyBuZWVkZWQgdnMgc29tZSBzZXJ2ZXJzIHRoYXQg ZG8gbm90DQorCSAqIGltbWVkaWF0ZWx5IHJldHVybiB0aGUgY29ycmVjdCBm aWxlc2l6ZS4gQnV0IGl0IGFsc28gcHJldmVudHMgdXMNCisJICogZnJvbSBl dmVyIHNlZWluZyBjaGFuZ2VzIG1hZGUgb24gdGhlIHNlcnZlcnNpZGUuIENs ZWFyaW5nIHRoZSBmbGFnDQorCSAqIG9uIHJlYWQgaGVscHMgb25lIGNhc2Ug YW5kIGJyZWFrcyB0aGUgb3RoZXIuDQorCSAqIChicm9rZW4gYXJlOiB3aW45 OHNlLCBwb3NzaWJseSBub3Qgd2luOTUtb3JpZ2luYWw/KQ0KKwkgKg0KKwkg KiBKb2NoZW4gRG9semUgPGRvbHplQGVwY25ldC5kZT4gaGFzIHRoZSBkZXRh aWxzLiBJIGhvcGUgb3Bsb2Nrcw0KKwkgKiBhcmUgdGhlIHNvbHV0aW9uLiAt LSBwdXcNCisJICovDQorI2lmIDANCisJZGVudHJ5LT5kX2lub2RlLT51LnNt YmZzX2kuZmxhZ3MgJj0gflNNQl9GX0xPQ0FMV1JJVEU7DQorI2VuZGlmDQog DQogCXN0YXR1cyA9IHNtYl9yZXZhbGlkYXRlX2lub2RlKGRlbnRyeSk7DQog CWlmIChzdGF0dXMpDQpkaWZmIC11ck4gLVggZXhjbHVkZSBsaW51eC0yLjQu NC1vcmlnL2ZzL3NtYmZzL2lub2RlLmMgbGludXgtMi40LjQtc21iZnMvZnMv c21iZnMvaW5vZGUuYw0KLS0tIGxpbnV4LTIuNC40LW9yaWcvZnMvc21iZnMv aW5vZGUuYwlXZWQgTWF5ICAyIDIwOjAxOjM3IDIwMDENCisrKyBsaW51eC0y LjQuNC1zbWJmcy9mcy9zbWJmcy9pbm9kZS5jCVdlZCBNYXkgIDIgMjI6MzA6 NTIgMjAwMQ0KQEAgLTEyMSw4ICsxMjEsMTAgQEANCiAJaW5vZGUtPmlfYmxr c2l6ZT0gZmF0dHItPmZfYmxrc2l6ZTsNCiAJaW5vZGUtPmlfYmxvY2tzID0g ZmF0dHItPmZfYmxvY2tzOw0KIAkvKg0KLQkgKiBEb24ndCBjaGFuZ2UgdGhl IHNpemUgYW5kIG10aW1lL2F0aW1lIGZpZWxkcw0KLQkgKiBpZiB3ZSdyZSB3 cml0aW5nIHRvIHRoZSBmaWxlLg0KKwkgKiBEb24ndCBjaGFuZ2UgdGhlIHNp emUgYW5kIG10aW1lL2F0aW1lIGZpZWxkcyBpZiB3ZSdyZQ0KKwkgKiB3cml0 aW5nIHRvIHRoZSBmaWxlLiBXZSBuZWVkIHRoaXMgYXMgd2UgbWF5IGhhdmUg bG9jYWwNCisJICogdW53cml0dGVuIGNoYW5nZXMgdGhhdCB3ZSBkb24ndCB3 YW50IHJlcGxhY2VkIGp1c3QgYmVjYXVzZQ0KKwkgKiBzb21lb25lIHJldmFs aWRhdGVkLg0KIAkgKi8NCiAJaWYgKCEoaW5vZGUtPnUuc21iZnNfaS5mbGFn cyAmIFNNQl9GX0xPQ0FMV1JJVEUpKSB7DQogCQlpbm9kZS0+aV9zaXplICA9 IGZhdHRyLT5mX3NpemU7DQpAQCAtMjM0LDkgKzIzNiwxMCBAQA0KIAlsYXN0 X3N6ICAgPSBpbm9kZS0+aV9zaXplOw0KIAllcnJvciA9IHNtYl9yZWZyZXNo X2lub2RlKGRlbnRyeSk7DQogCWlmIChlcnJvciB8fCBpbm9kZS0+aV9tdGlt ZSAhPSBsYXN0X3RpbWUgfHwgaW5vZGUtPmlfc2l6ZSAhPSBsYXN0X3N6KSB7 DQotCQlWRVJCT1NFKCIlcy8lcyBjaGFuZ2VkLCBvbGQ9JWxkLCBuZXc9JWxk XG4iLA0KKwkJVkVSQk9TRSgiJXMvJXMgY2hhbmdlZCwgb2xkPSVsZCwgbmV3 PSVsZCwgb3o9JWxkLCBuej0lbGRcbiIsDQogCQkJREVOVFJZX1BBVEgoZGVu dHJ5KSwNCi0JCQkobG9uZykgbGFzdF90aW1lLCAobG9uZykgaW5vZGUtPmlf bXRpbWUpOw0KKwkJCShsb25nKSBsYXN0X3RpbWUsIChsb25nKSBpbm9kZS0+ aV9tdGltZSwNCisJCQkobG9uZykgbGFzdF9zeiwgKGxvbmcpIGlub2RlLT5p X3NpemUpOw0KIA0KIAkJaWYgKCFTX0lTRElSKGlub2RlLT5pX21vZGUpKQ0K IAkJCWludmFsaWRhdGVfaW5vZGVfcGFnZXMoaW5vZGUpOw0KQEAgLTM1NSw4 ICszNTgsOCBAQA0KIAlpZiAoc2VydmVyLT5jb25uX3BpZCkNCiAJICAgICAg IGtpbGxfcHJvYyhzZXJ2ZXItPmNvbm5fcGlkLCBTSUdURVJNLCAxKTsNCiAN Ci0Ja2ZyZWUoc2VydmVyLT5tbnQpOw0KLQlrZnJlZShzYi0+dS5zbWJmc19z Yi50ZW1wX2J1Zik7DQorCXNtYl9rZnJlZShzZXJ2ZXItPm1udCk7DQorCXNt Yl9rZnJlZShzYi0+dS5zbWJmc19zYi50ZW1wX2J1Zik7DQogCWlmIChzZXJ2 ZXItPnBhY2tldCkNCiAJCXNtYl92ZnJlZShzZXJ2ZXItPnBhY2tldCk7DQog DQpAQCAtMzkwLDcgKzM5Myw2IEBADQogCXNiLT5zX2Jsb2Nrc2l6ZSA9IDEw MjQ7CS8qIEVoLi4uICBJcyB0aGlzIGNvcnJlY3Q/ICovDQogCXNiLT5zX2Js b2Nrc2l6ZV9iaXRzID0gMTA7DQogCXNiLT5zX21hZ2ljID0gU01CX1NVUEVS X01BR0lDOw0KLQlzYi0+c19mbGFncyA9IDA7DQogCXNiLT5zX29wID0gJnNt Yl9zb3BzOw0KIA0KIAlzYi0+dS5zbWJmc19zYi5tbnQgPSBOVUxMOw0KQEAg LTQwMCwxMyArNDAyLDEzIEBADQogCXNiLT51LnNtYmZzX3NiLmNvbm5fcGlk ID0gMDsNCiAJc2ItPnUuc21iZnNfc2Iuc3RhdGUgPSBDT05OX0lOVkFMSUQ7 IC8qIG5vIGNvbm5lY3Rpb24geWV0ICovDQogCXNiLT51LnNtYmZzX3NiLmdl bmVyYXRpb24gPSAwOw0KLQlzYi0+dS5zbWJmc19zYi5wYWNrZXRfc2l6ZSA9 IHNtYl9yb3VuZF9sZW5ndGgoU01CX0lOSVRJQUxfUEFDS0VUX1NJWkUpOwkN CisJc2ItPnUuc21iZnNfc2IucGFja2V0X3NpemUgPSBzbWJfcm91bmRfbGVu Z3RoKFNNQl9JTklUSUFMX1BBQ0tFVF9TSVpFKTsNCiAJc2ItPnUuc21iZnNf c2IucGFja2V0ID0gc21iX3ZtYWxsb2Moc2ItPnUuc21iZnNfc2IucGFja2V0 X3NpemUpOw0KIAlpZiAoIXNiLT51LnNtYmZzX3NiLnBhY2tldCkNCiAJCWdv dG8gb3V0X25vX21lbTsNCiANCiAJLyogQWxsb2NhdGUgdGhlIGdsb2JhbCB0 ZW1wIGJ1ZmZlciAqLw0KLQlzYi0+dS5zbWJmc19zYi50ZW1wX2J1ZiA9IGtt YWxsb2MoMipTTUJfTUFYUEFUSExFTiArIDIwLCBHRlBfS0VSTkVMKTsNCisJ c2ItPnUuc21iZnNfc2IudGVtcF9idWYgPSBzbWJfa21hbGxvYygyKlNNQl9N QVhQQVRITEVOKzIwLCBHRlBfS0VSTkVMKTsNCiAJaWYgKCFzYi0+dS5zbWJm c19zYi50ZW1wX2J1ZikNCiAJCWdvdG8gb3V0X25vX3RlbXA7DQogDQpAQCAt NDE3LDcgKzQxOSw3IEBADQogDQogCS8qIEFsbG9jYXRlIHRoZSBtb3VudCBk YXRhIHN0cnVjdHVyZSAqLw0KIAkvKiBGSVhNRTogbWVyZ2UgdGhpcyB3aXRo IHRoZSBvdGhlciBtYWxsb2MgYW5kIGdldCBhIHdob2xlIHBhZ2U/ICovDQot CW1udCA9IGttYWxsb2Moc2l6ZW9mKHN0cnVjdCBzbWJfbW91bnRfZGF0YV9r ZXJuZWwpLCBHRlBfS0VSTkVMKTsNCisJbW50ID0gc21iX2ttYWxsb2Moc2l6 ZW9mKHN0cnVjdCBzbWJfbW91bnRfZGF0YV9rZXJuZWwpLCBHRlBfS0VSTkVM KTsNCiAJaWYgKCFtbnQpDQogCQlnb3RvIG91dF9ub19tb3VudDsNCiAJc2It PnUuc21iZnNfc2IubW50ID0gbW50Ow0KQEAgLTQ4Miw5ICs0ODQsOSBAQA0K IG91dF9ub19yb290Og0KIAlpcHV0KHJvb3RfaW5vZGUpOw0KIG91dF9iYWRf b3B0aW9uOg0KLQlrZnJlZShzYi0+dS5zbWJmc19zYi5tbnQpOw0KKwlzbWJf a2ZyZWUoc2ItPnUuc21iZnNfc2IubW50KTsNCiBvdXRfbm9fbW91bnQ6DQot CWtmcmVlKHNiLT51LnNtYmZzX3NiLnRlbXBfYnVmKTsNCisJc21iX2tmcmVl KHNiLT51LnNtYmZzX3NiLnRlbXBfYnVmKTsNCiBvdXRfbm9fdGVtcDoNCiAJ c21iX3ZmcmVlKHNiLT51LnNtYmZzX3NiLnBhY2tldCk7DQogb3V0X25vX21l bToNCmRpZmYgLXVyTiAtWCBleGNsdWRlIGxpbnV4LTIuNC40LW9yaWcvZnMv c21iZnMvaW9jdGwuYyBsaW51eC0yLjQuNC1zbWJmcy9mcy9zbWJmcy9pb2N0 bC5jDQotLS0gbGludXgtMi40LjQtb3JpZy9mcy9zbWJmcy9pb2N0bC5jCVdl ZCBNYXkgIDIgMjA6MDE6MzcgMjAwMQ0KKysrIGxpbnV4LTIuNC40LXNtYmZz L2ZzL3NtYmZzL2lvY3RsLmMJV2VkIE1heSAgMiAyMDo0MjoyNCAyMDAxDQpA QCAtMjMsNyArMjMsNyBAQA0KIHNtYl9pb2N0bChzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCwNCiAJICB1bnNpZ25lZCBpbnQgY21k LCB1bnNpZ25lZCBsb25nIGFyZykNCiB7DQotCXN0cnVjdCBzbWJfc2JfaW5m byAqc2VydmVyID0gU01CX1NFUlZFUihpbm9kZSk7DQorCXN0cnVjdCBzbWJf c2JfaW5mbyAqc2VydmVyID0gc2VydmVyX2Zyb21faW5vZGUoaW5vZGUpOw0K IAlzdHJ1Y3Qgc21iX2Nvbm5fb3B0IG9wdDsNCiAJaW50IHJlc3VsdCA9IC1F SU5WQUw7DQogDQpAQCAtMzcsNyArMzcsNyBAQA0KIAkJYnJlYWs7DQogDQog CWNhc2UgU01CX0lPQ19ORVdDT05OOg0KLQkJLyogcmVxdWlyZSBhbiBhcmd1 bWVudCA9PSB0aGUgbW91bnQgZGF0YSwgZWxzZSBpdCBpcyBFSU5WQUwgKi8N CisJCS8qIHJlcXVpcmUgYW4gYXJndW1lbnQgPT0gc21iX2Nvbm5fb3B0LCBl bHNlIGl0IGlzIEVJTlZBTCAqLw0KIAkJaWYgKCFhcmcpDQogCQkJYnJlYWs7 DQogDQpAQCAtNDUsNyArNDUsOCBAQA0KIAkJaWYgKCFjb3B5X2Zyb21fdXNl cigmb3B0LCAodm9pZCAqKWFyZywgc2l6ZW9mKG9wdCkpKQ0KIAkJCXJlc3Vs dCA9IHNtYl9uZXdjb25uKHNlcnZlciwgJm9wdCk7DQogCQlicmVhazsNCi0J ZGVmYXVsdDo7DQorCWRlZmF1bHQ6DQorCQlicmVhazsNCiAJfQ0KIA0KIAly ZXR1cm4gcmVzdWx0Ow0KZGlmZiAtdXJOIC1YIGV4Y2x1ZGUgbGludXgtMi40 LjQtb3JpZy9mcy9zbWJmcy9wcm9jLmMgbGludXgtMi40LjQtc21iZnMvZnMv c21iZnMvcHJvYy5jDQotLS0gbGludXgtMi40LjQtb3JpZy9mcy9zbWJmcy9w cm9jLmMJV2VkIE1heSAgMiAyMDowMTozNyAyMDAxDQorKysgbGludXgtMi40 LjQtc21iZnMvZnMvc21iZnMvcHJvYy5jCVdlZCBNYXkgIDIgMjM6MzI6NDEg MjAwMQ0KQEAgLTU0LDE4ICs1NCw2IEBADQogCQkgICAgc3RydWN0IHNtYl9m YXR0ciAqZmF0dHIpOw0KIA0KIA0KLXN0YXRpYyBpbmxpbmUgdm9pZA0KLXNt Yl9sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlcikNCi17 DQotCWRvd24oJihzZXJ2ZXItPnNlbSkpOw0KLX0NCi0NCi1zdGF0aWMgaW5s aW5lIHZvaWQNCi1zbWJfdW5sb2NrX3NlcnZlcihzdHJ1Y3Qgc21iX3NiX2lu Zm8gKnNlcnZlcikNCi17DQotCXVwKCYoc2VydmVyLT5zZW0pKTsNCi19DQot DQogDQogc3RhdGljIHZvaWQNCiBzdHJfdXBwZXIoY2hhciAqbmFtZSwgaW50 IGxlbikNCkBAIC02NjEsMjkgKzY0OSwzMSBAQA0KIAlwaWRfdCBwaWQgPSBz ZXJ2ZXItPmNvbm5fcGlkOw0KIAlpbnQgZXJyb3IsIHJlc3VsdCA9IDA7DQog DQotCWlmIChzZXJ2ZXItPnN0YXRlICE9IENPTk5fSU5WQUxJRCkNCisJaWYg KHNlcnZlci0+c3RhdGUgPT0gQ09OTl9WQUxJRCB8fCBzZXJ2ZXItPnN0YXRl ID09IENPTk5fUkVUUllJTkcpDQogCQlnb3RvIG91dDsNCiANCiAJc21iX2Ns b3NlX3NvY2tldChzZXJ2ZXIpOw0KIA0KIAlpZiAocGlkID09IDApIHsNCisJ CS8qIEZJWE1FOiB0aGlzIGlzIGZhdGFsICovDQogCQlwcmludGsoS0VSTl9F UlIgInNtYl9yZXRyeTogbm8gY29ubmVjdGlvbiBwcm9jZXNzXG4iKTsNCiAJ CXNlcnZlci0+c3RhdGUgPSBDT05OX1JFVFJJRUQ7DQogCQlnb3RvIG91dDsN CiAJfQ0KIA0KIAkvKg0KLQkgKiBDbGVhciB0aGUgcGlkIHRvIGVuYWJsZSB0 aGUgaW9jdGwuDQorCSAqIENoYW5nZSBzdGF0ZSBzbyB0aGF0IG9ubHkgb25l IHJldHJ5IHBlciBzZXJ2ZXIgd2lsbCBiZSBzdGFydGVkLg0KIAkgKi8NCi0J c2VydmVyLT5jb25uX3BpZCA9IDA7DQorCXNlcnZlci0+c3RhdGUgPSBDT05O X1JFVFJZSU5HOw0KIA0KIAkvKg0KIAkgKiBOb3RlOiB1c2UgdGhlICJwcml2 IiBmbGFnLCBhcyBhIHVzZXIgcHJvY2VzcyBtYXkgbmVlZCB0byByZWNvbm5l Y3QuDQogCSAqLw0KIAllcnJvciA9IGtpbGxfcHJvYyhwaWQsIFNJR1VTUjEs IDEpOw0KIAlpZiAoZXJyb3IpIHsNCisJCS8qIEZJWE1FOiB0aGlzIGlzIGZh dGFsICovDQogCQlwcmludGsoS0VSTl9FUlIgInNtYl9yZXRyeTogc2lnbmFs IGZhaWxlZCwgZXJyb3I9JWRcbiIsIGVycm9yKTsNCi0JCWdvdG8gb3V0X3Jl c3RvcmU7DQorCQlnb3RvIG91dDsNCiAJfQ0KIAlWRVJCT1NFKCJzaWduYWxs ZWQgcGlkICVkLCB3YWl0aW5nIGZvciBuZXcgY29ubmVjdGlvblxuIiwgcGlk KTsNCiANCkBAIC02OTEsNyArNjgxLDkgQEANCiAJICogV2FpdCBmb3IgdGhl IG5ldyBjb25uZWN0aW9uLg0KIAkgKi8NCiAjaWZkZWYgU01CX1JFVFJZX0lO VFINCi0JaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KCZzZXJ2ZXIt PndhaXQsICA1KkhaKTsNCisJc21iX3VubG9ja19zZXJ2ZXIoc2VydmVyKTsN CisJaW50ZXJydXB0aWJsZV9zbGVlcF9vbl90aW1lb3V0KCZzZXJ2ZXItPndh aXQsICAzMCpIWik7DQorCXNtYl9sb2NrX3NlcnZlcihzZXJ2ZXIpOw0KIAlp ZiAoc2lnbmFsX3BlbmRpbmcoY3VycmVudCkpDQogCQlwcmludGsoS0VSTl9J TkZPICJzbWJfcmV0cnk6IGNhdWdodCBzaWduYWxcbiIpOw0KICNlbHNlDQpA QCAtNzAyLDggKzY5NCwxMyBAQA0KIAkgKg0KIAkgKiBzbWJtb3VudCBzaG91 bGQgYmUgYWJsZSB0byByZWNvbm5lY3QgbGF0ZXIsIGJ1dCBpdCBjYW4ndCBi ZWNhdXNlDQogCSAqIGl0IHdpbGwgZ2V0IGFuIC1FSU8gb24gYXR0ZW1wdHMg dG8gb3BlbiB0aGUgbW91bnRwb2ludCENCisJICoNCisJICogRklYTUU6IGdv IGJhY2sgdG8gdGhlIGludGVycnVwdGFibGUgdmVyc2lvbiBub3cgdGhhdCBz bWJtb3VudA0KKwkgKiBjYW4gYXZvaWQgLUVJTyBvbiB0aGUgbW91bnRwb2lu dCB3aGVuIHJlY29ubmVjdGluZz8NCiAJICovDQotCXNsZWVwX29uX3RpbWVv dXQoJnNlcnZlci0+d2FpdCwgNSpIWik7DQorCXNtYl91bmxvY2tfc2VydmVy KHNlcnZlcik7DQorCXNsZWVwX29uX3RpbWVvdXQoJnNlcnZlci0+d2FpdCwg MzAqSFopOw0KKwlzbWJfbG9ja19zZXJ2ZXIoc2VydmVyKTsNCiAjZW5kaWYN CiANCiAJLyoNCkBAIC03MTUsMTUgKzcxMiwxMSBAQA0KIAkJUEFSQU5PSUEo InN1Y2Nlc3NmdWwsIG5ldyBwaWQ9JWQsIGdlbmVyYXRpb249JWRcbiIsDQog CQkJIHNlcnZlci0+Y29ubl9waWQsIHNlcnZlci0+Z2VuZXJhdGlvbik7DQog CQlyZXN1bHQgPSAxOw0KKwl9IGVsc2UgaWYgKHNlcnZlci0+c3RhdGUgPT0g Q09OTl9SRVRSWUlORykgew0KKwkJLyogYWxsb3cgZnVydGhlciBhdHRlbXB0 cyBsYXRlciAqLw0KKwkJc2VydmVyLT5zdGF0ZSA9IENPTk5fUkVUUklFRDsN CiAJfQ0KIA0KLQkvKg0KLQkgKiBSZXN0b3JlIHRoZSBvcmlnaW5hbCBwaWQg aWYgd2UgZGlkbid0IGdldCBhIG5ldyBvbmUuDQotCSAqLw0KLW91dF9yZXN0 b3JlOg0KLQlpZiAoIXNlcnZlci0+Y29ubl9waWQpDQotCQlzZXJ2ZXItPmNv bm5fcGlkID0gcGlkOw0KLQ0KIG91dDoNCiAJcmV0dXJuIHJlc3VsdDsNCiB9 DQpAQCAtNzQyLDE5ICs3MzUsMTYgQEANCiAJcy0+ZXJyID0gMDsNCiANCiAJ LyogTWFrZSBzdXJlIHdlIGhhdmUgYSBjb25uZWN0aW9uICovDQotCWlmIChz LT5zdGF0ZSAhPSBDT05OX1ZBTElEKQ0KLQl7DQorCWlmIChzLT5zdGF0ZSAh PSBDT05OX1ZBTElEKSB7DQogCQlpZiAoIXNtYl9yZXRyeShzKSkNCiAJCQln b3RvIG91dDsNCiAJfQ0KIA0KLQlpZiAoc21iX3JlcXVlc3QocykgPCAwKQ0K LQl7DQorCWlmIChzbWJfcmVxdWVzdChzKSA8IDApIHsNCiAJCURFQlVHMSgi c21iX3JlcXVlc3QgZmFpbGVkXG4iKTsNCiAJCWdvdG8gb3V0Ow0KIAl9DQot CWlmIChzbWJfdmFsaWRfcGFja2V0KHMtPnBhY2tldCkgIT0gMCkNCi0Jew0K KwlpZiAoc21iX3ZhbGlkX3BhY2tldChzLT5wYWNrZXQpICE9IDApIHsNCiAJ CVBBUkFOT0lBKCJpbnZhbGlkIHBhY2tldCFcbiIpOw0KIAkJZ290byBvdXQ7 DQogCX0NCkBAIC03NjQsOCArNzU0LDcgQEANCiAJICogaXMgc3F1YXNoaW5n IHNvbWUgZXJyb3IgY29kZXMsIGJ1dCBJIGRvbid0IHRoaW5rIHRoaXMgaXMN CiAJICogY29ycmVjdDogYWZ0ZXIgYSBzZXJ2ZXIgZXJyb3IgdGhlIHBhY2tl dCB3b24ndCBiZSB2YWxpZC4NCiAJICovDQotCWlmIChzLT5yY2xzICE9IDAp DQotCXsNCisJaWYgKHMtPnJjbHMgIT0gMCkgew0KIAkJcmVzdWx0ID0gLXNt Yl9lcnJubyhzKTsNCiAJCWlmICghcmVzdWx0KQ0KIAkJCXByaW50ayhLRVJO X0RFQlVHICJzbWJfcmVxdWVzdF9vazogcmNscz0lZCwgZXJyPSVkIG1hcHBl ZCB0byAwXG4iLA0KQEAgLTc4NSwxMCArNzc0LDYgQEANCiAvKg0KICAqIFRo aXMgaW1wbGVtZW50cyB0aGUgTkVXQ09OTiBpb2N0bC4gSXQgaW5zdGFsbHMg dGhlIHNlcnZlciBwaWQsDQogICogc2V0cyBzZXJ2ZXItPnN0YXRlIHRvIENP Tk5fVkFMSUQsIGFuZCB3YWtlcyB1cCB0aGUgd2FpdGluZyBwcm9jZXNzLg0K LSAqDQotICogTm90ZSB0aGF0IHRoaXMgbXVzdCBiZSBjYWxsZWQgd2l0aCB0 aGUgc2VydmVyIGxvY2tlZCwgZXhjZXB0IGZvcg0KLSAqIHRoZSBmaXJzdCBj YWxsIG1hZGUgYWZ0ZXIgbW91bnRpbmcgdGhlIHZvbHVtZS4gVGhlIHNlcnZl ciBwaWQNCi0gKiB3aWxsIGJlIHNldCB0byB6ZXJvIHRvIGluZGljYXRlIHRo YXQgc21iZnMgaXMgYXdhaXRpbmcgYSBjb25uZWN0aW9uLg0KICAqLw0KIGlu dA0KIHNtYl9uZXdjb25uKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyLCBz dHJ1Y3Qgc21iX2Nvbm5fb3B0ICpvcHQpDQpAQCAtNzk4LDExICs3ODMsMTMg QEANCiANCiAJVkVSQk9TRSgiZmQ9JWQsIHBpZD0lZFxuIiwgb3B0LT5mZCwg Y3VycmVudC0+cGlkKTsNCiANCisJc21iX2xvY2tfc2VydmVyKHNlcnZlcik7 DQorDQogCS8qDQotCSAqIE1ha2Ugc3VyZSB3ZSBkb24ndCBhbHJlYWR5IGhh dmUgYSBwaWQgLi4uDQorCSAqIE1ha2Ugc3VyZSB3ZSBkb24ndCBhbHJlYWR5 IGhhdmUgYSB2YWxpZCBjb25uZWN0aW9uIC4uLg0KIAkgKi8NCiAJZXJyb3Ig PSAtRUlOVkFMOw0KLQlpZiAoc2VydmVyLT5jb25uX3BpZCkNCisJaWYgKHNl cnZlci0+c3RhdGUgPT0gQ09OTl9WQUxJRCkNCiAJCWdvdG8gb3V0Ow0KIA0K IAllcnJvciA9IC1FQUNDRVM7DQpAQCAtODUxLDYgKzgzOCw4IEBADQogCQlp bnQgbGVuID0gc21iX3JvdW5kX2xlbmd0aChzZXJ2ZXItPm9wdC5tYXhfeG1p dCk7DQogCQljaGFyICpidWYgPSBzbWJfdm1hbGxvYyhsZW4pOw0KIAkJaWYg KGJ1Zikgew0KKwkJCWlmIChzZXJ2ZXItPnBhY2tldCkNCisJCQkJc21iX3Zm cmVlKHNlcnZlci0+cGFja2V0KTsNCiAJCQlzZXJ2ZXItPnBhY2tldCA9IGJ1 ZjsNCiAJCQlzZXJ2ZXItPnBhY2tldF9zaXplID0gbGVuOw0KIAkJfSBlbHNl IHsNCkBAIC04NjMsNiArODUyLDggQEANCiAJfQ0KIA0KIG91dDoNCisJc21i X3VubG9ja19zZXJ2ZXIoc2VydmVyKTsNCisNCiAjaWZkZWYgU01CX1JFVFJZ X0lOVFINCiAJd2FrZV91cF9pbnRlcnJ1cHRpYmxlKCZzZXJ2ZXItPndhaXQp Ow0KICNlbHNlDQpAQCAtMTAxNiw3ICsxMDA3LDcgQEANCiAJfQ0KIA0KIAlp ZiAoIXNtYl9pc19vcGVuKGlub2RlKSkgew0KLQkJc3RydWN0IHNtYl9zYl9p bmZvICpzZXJ2ZXIgPSBTTUJfU0VSVkVSKGlub2RlKTsNCisJCXN0cnVjdCBz bWJfc2JfaW5mbyAqc2VydmVyID0gc2VydmVyX2Zyb21faW5vZGUoaW5vZGUp Ow0KIAkJc21iX2xvY2tfc2VydmVyKHNlcnZlcik7DQogCQlyZXN1bHQgPSAw Ow0KIAkJaWYgKCFzbWJfaXNfb3Blbihpbm9kZSkpDQpAQCAtMTA4NCw2ICsx MDc1LDggQEANCiAJCSAqIHR3byBzZWNvbmRzIC4uLiByb3VuZCB0aGUgdGlt ZXMgdG8gYXZvaWQgbmVlZGxlc3MNCiAJCSAqIGNhY2hlIGludmFsaWRhdGlv bnMhDQogCQkgKi8NCisJCS8qIEZJWE1FOiBjb3VsZCB0aGlzIGJlIHRoZSBj YXVzZSBvZiB0aGUgcHJvYmxlbXMgd2l0aCB0YXINCisJCSAgIHJhbmRvbWx5 IHJlcG9ydGluZyBmaWxlcyBhcyBjaGFuZ2VkPyAqLw0KIAkJaWYgKGluby0+ aV9tdGltZSAmIDEpDQogCQkJaW5vLT5pX210aW1lLS07DQogCQlpZiAoaW5v LT5pX2F0aW1lICYgMSkNCkBAIC0xMTE5LDkgKzExMTIsOCBAQA0KIHsNCiAJ aW50IHJlc3VsdCA9IDA7DQogDQotCWlmIChzbWJfaXNfb3Blbihpbm8pKQ0K LQl7DQotCQlzdHJ1Y3Qgc21iX3NiX2luZm8gKnNlcnZlciA9IFNNQl9TRVJW RVIoaW5vKTsNCisJaWYgKHNtYl9pc19vcGVuKGlubykpIHsNCisJCXN0cnVj dCBzbWJfc2JfaW5mbyAqc2VydmVyID0gc2VydmVyX2Zyb21faW5vZGUoaW5v KTsNCiAJCXNtYl9sb2NrX3NlcnZlcihzZXJ2ZXIpOw0KIAkJcmVzdWx0ID0g c21iX3Byb2NfY2xvc2VfaW5vZGUoc2VydmVyLCBpbm8pOw0KIAkJc21iX3Vu bG9ja19zZXJ2ZXIoc2VydmVyKTsNCkBAIC0xNDIzLDYgKzE0MTUsMTcgQEAN CiAJcmV0dXJuIHJlc3VsdDsNCiB9DQogDQorLyoNCisgKiBDYWxsZWQgd2l0 aCB0aGUgc2VydmVyIGxvY2tlZA0KKyAqLw0KK2ludA0KK3NtYl9wcm9jX2Zs dXNoKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyLCBfX3UxNiBmaWxlaWQp DQorew0KKwlzbWJfc2V0dXBfaGVhZGVyKHNlcnZlciwgU01CZmx1c2gsIDEs IDApOw0KKwlXU0VUKHNlcnZlci0+cGFja2V0LCBzbWJfdnd2MCwgZmlsZWlk KTsNCisJcmV0dXJuIHNtYl9yZXF1ZXN0X29rKHNlcnZlciwgU01CZmx1c2gs IDAsIDApOw0KK30NCisNCiBpbnQNCiBzbWJfcHJvY190cnVuYyhzdHJ1Y3Qg c21iX3NiX2luZm8gKnNlcnZlciwgX191MTYgZmlkLCBfX3UzMiBsZW5ndGgp DQogew0KQEAgLTE0MzEsNyArMTQzNCw3IEBADQogDQogCXNtYl9sb2NrX3Nl cnZlcihzZXJ2ZXIpOw0KIA0KLSAgICAgIHJldHJ5Og0KK3JldHJ5Og0KIAlw ID0gc21iX3NldHVwX2hlYWRlcihzZXJ2ZXIsIFNNQndyaXRlLCA1LCAzKTsN CiAJV1NFVChzZXJ2ZXItPnBhY2tldCwgc21iX3Z3djAsIGZpZCk7DQogCVdT RVQoc2VydmVyLT5wYWNrZXQsIHNtYl92d3YxLCAwKTsNCkBAIC0xNDQ1LDcg KzE0NDgsMTYgQEANCiAJCQlnb3RvIHJldHJ5Ow0KIAkJZ290byBvdXQ7DQog CX0NCisNCisJLyoNCisJICogd2luOXggZG9lc24ndCBhcHBlYXIgdG8gdXBk YXRlIHRoZSBzaXplIGltbWVkaWF0ZWx5Lg0KKwkgKiBJdCB3aWxsIHJldHVy biB0aGUgb2xkIGZpbGUgc2l6ZSBhZnRlciB0aGUgdHJ1bmNhdGUsDQorCSAq IGNvbmZ1c2luZyBzbWJmcy4NCisJICogTlQgYW5kIFNhbWJhIHJldHVybiB0 aGUgbmV3IHZhbHVlIGltbWVkaWF0ZWx5Lg0KKwkgKi8NCiAJcmVzdWx0ID0g MDsNCisJaWYgKHNlcnZlci0+bW50LT5mbGFncyAmIFNNQl9NT1VOVF9XSU45 NSkNCisJCXJlc3VsdCA9IHNtYl9wcm9jX2ZsdXNoKHNlcnZlciwgZmlkKTsN CiBvdXQ6DQogCXNtYl91bmxvY2tfc2VydmVyKHNlcnZlcik7DQogCXJldHVy biByZXN1bHQ7DQpkaWZmIC11ck4gLVggZXhjbHVkZSBsaW51eC0yLjQuNC1v cmlnL2ZzL3NtYmZzL3NvY2suYyBsaW51eC0yLjQuNC1zbWJmcy9mcy9zbWJm cy9zb2NrLmMNCi0tLSBsaW51eC0yLjQuNC1vcmlnL2ZzL3NtYmZzL3NvY2su YwlUaHUgRmViIDIyIDIwOjUyOjAzIDIwMDENCisrKyBsaW51eC0yLjQuNC1z bWJmcy9mcy9zbWJmcy9zb2NrLmMJV2VkIE1heSAgMiAyMDo0MjoyNCAyMDAx DQpAQCAtMTUwLDE0ICsxNTAsMTQgQEANCiAJREVCVUcxKCJmb3VuZD0lZCwg Y291bnQ9JWQsIHJlc3VsdD0lZFxuIiwgZm91bmQsIGNvdW50LCByZXN1bHQp Ow0KIAlpZiAoZm91bmQpDQogCQlmb3VuZF9kYXRhKGpvYi0+c2spOw0KLQlr ZnJlZShwdHIpOw0KKwlzbWJfa2ZyZWUocHRyKTsNCiB9DQogDQogc3RhdGlj IHZvaWQNCiBzbWJfZGF0YV9yZWFkeShzdHJ1Y3Qgc29jayAqc2ssIGludCBs ZW4pDQogew0KIAlzdHJ1Y3QgZGF0YV9jYWxsYmFjayogam9iOw0KLQlqb2Ig PSBrbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGF0YV9jYWxsYmFjayksR0ZQX0FU T01JQyk7DQorCWpvYiA9IHNtYl9rbWFsbG9jKHNpemVvZihzdHJ1Y3QgZGF0 YV9jYWxsYmFjayksR0ZQX0FUT01JQyk7DQogCWlmKGpvYiA9PSAwKSB7DQog CQlwcmludGsoInNtYl9kYXRhX3JlYWR5OiBsb3N0IFNFU1NJT04gS0VFUEFM SVZFIGR1ZSB0byBPT00uXG4iKTsNCiAJCWZvdW5kX2RhdGEoc2spOw0KZGlm ZiAtdXJOIC1YIGV4Y2x1ZGUgbGludXgtMi40LjQtb3JpZy9pbmNsdWRlL2xp bnV4L3NtYi5oIGxpbnV4LTIuNC40LXNtYmZzL2luY2x1ZGUvbGludXgvc21i LmgNCi0tLSBsaW51eC0yLjQuNC1vcmlnL2luY2x1ZGUvbGludXgvc21iLmgJ VGh1IEZlYiAyMiAyMTozNDoyMSAyMDAxDQorKysgbGludXgtMi40LjQtc21i ZnMvaW5jbHVkZS9saW51eC9zbWIuaAlXZWQgTWF5ICAyIDIyOjAwOjE5IDIw MDENCkBAIC05NCwyMSArOTQsMTQgQEANCiB9Ow0KIA0KIGVudW0gc21iX2Nv bm5fc3RhdGUgew0KLSAgICAgICAgQ09OTl9WQUxJRCwgICAgICAgICAgICAg LyogZXZlcnl0aGluZydzIGZpbmUgKi8NCi0gICAgICAgIENPTk5fSU5WQUxJ RCwgICAgICAgICAgIC8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCBidXQgZGlk IG5vdA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5 IHRvIHJlY29ubmVjdCB5ZXQuICovDQotICAgICAgICBDT05OX1JFVFJJRUQg ICAgICAgICAgICAvKiBUcmllZCBhIHJlY29ubmVjdGlvbiwgYnV0IHdhcyBy ZWZ1c2VkICovDQorCUNPTk5fVkFMSUQsCQkvKiBldmVyeXRoaW5nJ3MgZmlu ZSAqLw0KKwlDT05OX0lOVkFMSUQsCQkvKiBTb21ldGhpbmcgd2VudCB3cm9u ZywgYnV0IGRpZCBub3QNCisJCQkJICAgdHJ5IHRvIHJlY29ubmVjdCB5ZXQu ICovDQorCUNPTk5fUkVUUklFRCwJCS8qIFRyaWVkIGEgcmVjb25uZWN0aW9u LCBidXQgd2FzIHJlZnVzZWQgKi8NCisJQ09OTl9SRVRSWUlORwkJLyogQ3Vy cmVudGx5IHRyeWluZyB0byByZWNvbm5lY3QgKi8NCiB9Ow0KIA0KLS8qDQot ICogVGhlIHJlYWRkaXIgY2FjaGUgc2l6ZSBjb250cm9scyBob3cgbWFueSBk aXJlY3RvcnkgZW50cmllcyBhcmUgY2FjaGVkLg0KLSAqLw0KLSNkZWZpbmUg U01CX1JFQURESVJfQ0FDSEVfU0laRSAgICAgICAgNjQNCi0NCiAjZGVmaW5l IFNNQl9TVVBFUl9NQUdJQyAgICAgICAgICAgICAgIDB4NTE3Qg0KLQ0KLSNk ZWZpbmUgU01CX1NFUlZFUihpbm9kZSkgICAgKCYoaW5vZGUtPmlfc2ItPnUu c21iZnNfc2IpKQ0KLSNkZWZpbmUgU01CX0lOT1AoaW5vZGUpICAgICAgKCYo aW5vZGUtPnUuc21iZnNfaSkpDQogDQogI2RlZmluZSBTTUJfSEVBREVSX0xF TiAgIDM3ICAgICAvKiBpbmNsdWRlcyBldmVyeXRoaW5nIHVwIHRvLCBidXQg bm90DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpbmNs dWRpbmcgc21iX2JjYyAqLw0KZGlmZiAtdXJOIC1YIGV4Y2x1ZGUgbGludXgt Mi40LjQtb3JpZy9pbmNsdWRlL2xpbnV4L3NtYl9mcy5oIGxpbnV4LTIuNC40 LXNtYmZzL2luY2x1ZGUvbGludXgvc21iX2ZzLmgNCi0tLSBsaW51eC0yLjQu NC1vcmlnL2luY2x1ZGUvbGludXgvc21iX2ZzLmgJVGh1IEZlYiAyMiAyMTo0 NDoyMCAyMDAxDQorKysgbGludXgtMi40LjQtc21iZnMvaW5jbHVkZS9saW51 eC9zbWJfZnMuaAlXZWQgTWF5ICAyIDIyOjA5OjU4IDIwMDENCkBAIC00OCw4 ICs0OCwxMSBAQA0KIA0KICNpZmRlZiBERUJVR19TTUJfTUFMTE9DDQogDQor I2luY2x1ZGUgPGxpbnV4L3NsYWIuaD4NCisNCiBleHRlcm4gaW50IHNtYl9t YWxsb2NlZDsNCiBleHRlcm4gaW50IHNtYl9jdXJyZW50X3ZtYWxsb2NlZDsN CitleHRlcm4gaW50IHNtYl9jdXJyZW50X2ttYWxsb2NlZDsNCiANCiBzdGF0 aWMgaW5saW5lIHZvaWQgKg0KIHNtYl92bWFsbG9jKHVuc2lnbmVkIGludCBz aXplKQ0KQEAgLTY2LDEyICs2OSwyNyBAQA0KICAgICAgICAgdmZyZWUob2Jq KTsNCiB9DQogDQorc3RhdGljIGlubGluZSB2b2lkICoNCitzbWJfa21hbGxv YyhzaXplX3Qgc2l6ZSwgaW50IGZsYWdzKQ0KK3sNCisJc21iX21hbGxvY2Vk ICs9IDE7DQorCXNtYl9jdXJyZW50X2ttYWxsb2NlZCArPSAxOw0KKwlyZXR1 cm4ga21hbGxvYyhzaXplLCBmbGFncyk7DQorfQ0KKw0KK3N0YXRpYyBpbmxp bmUgdm9pZA0KK3NtYl9rZnJlZSh2b2lkICpvYmopDQorew0KKwlzbWJfY3Vy cmVudF9rbWFsbG9jZWQgLT0gMTsNCisJa2ZyZWUob2JqKTsNCit9DQorDQog I2Vsc2UgLyogREVCVUdfU01CX01BTExPQyAqLw0KIA0KLSNkZWZpbmUgc21i X2ttYWxsb2MocyxwKSBrbWFsbG9jKHMscCkNCi0jZGVmaW5lIHNtYl9rZnJl ZV9zKG8scykga2ZyZWUobykNCi0jZGVmaW5lIHNtYl92bWFsbG9jKHMpICAg dm1hbGxvYyhzKQ0KLSNkZWZpbmUgc21iX3ZmcmVlKG8pICAgICB2ZnJlZShv KQ0KKyNkZWZpbmUgc21iX2ttYWxsb2MocyxwKQlrbWFsbG9jKHMscCkNCisj ZGVmaW5lIHNtYl9rZnJlZShvKQkJa2ZyZWUobykNCisjZGVmaW5lIHNtYl92 bWFsbG9jKHMpCQl2bWFsbG9jKHMpDQorI2RlZmluZSBzbWJfdmZyZWUobykJ CXZmcmVlKG8pDQogDQogI2VuZGlmIC8qIERFQlVHX1NNQl9NQUxMT0MgKi8N CiANCkBAIC0xMzksNyArMTU3LDcgQEANCiBzdGF0aWMgaW5saW5lIGludA0K IHNtYl9pc19vcGVuKHN0cnVjdCBpbm9kZSAqaSkNCiB7DQotCXJldHVybiAo aS0+dS5zbWJmc19pLm9wZW4gPT0gU01CX1NFUlZFUihpKS0+Z2VuZXJhdGlv bik7DQorCXJldHVybiAoaS0+dS5zbWJmc19pLm9wZW4gPT0gc2VydmVyX2Zy b21faW5vZGUoaSktPmdlbmVyYXRpb24pOw0KIH0NCiANCiANCkBAIC0xOTQs NiArMjEyLDcgQEANCiBpbnQgc21iX3Byb2NfZHNrYXR0cihzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKiwgc3RydWN0IHN0YXRmcyAqKTsNCiBpbnQgc21iX3Byb2Nf ZGlzY29ubmVjdChzdHJ1Y3Qgc21iX3NiX2luZm8gKik7DQogaW50IHNtYl9w cm9jX3RydW5jKHN0cnVjdCBzbWJfc2JfaW5mbyAqLCBfX3UxNiwgX191MzIp Ow0KK2ludCBzbWJfcHJvY19mbHVzaChzdHJ1Y3Qgc21iX3NiX2luZm8gKiwg X191MTYpOw0KIHZvaWQgc21iX2luaXRfcm9vdF9kaXJlbnQoc3RydWN0IHNt Yl9zYl9pbmZvICosIHN0cnVjdCBzbWJfZmF0dHIgKik7DQogDQogLyogbGlu dXgvZnMvc21iZnMvc29jay5jICovDQpkaWZmIC11ck4gLVggZXhjbHVkZSBs aW51eC0yLjQuNC1vcmlnL2luY2x1ZGUvbGludXgvc21iX2ZzX3NiLmggbGlu dXgtMi40LjQtc21iZnMvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaA0KLS0t IGxpbnV4LTIuNC40LW9yaWcvaW5jbHVkZS9saW51eC9zbWJfZnNfc2IuaAlU aHUgRmViIDIyIDIxOjM0OjIxIDIwMDENCisrKyBsaW51eC0yLjQuNC1zbWJm cy9pbmNsdWRlL2xpbnV4L3NtYl9mc19zYi5oCVdlZCBNYXkgIDIgMjI6MDA6 MTkgMjAwMQ0KQEAgLTU4LDYgKzU4LDE5IEBADQogCQkgICAgICAgc3RydWN0 IG5sc190YWJsZSAqLCBzdHJ1Y3QgbmxzX3RhYmxlICopOw0KIH07DQogDQor DQorc3RhdGljIGlubGluZSB2b2lkDQorc21iX2xvY2tfc2VydmVyKHN0cnVj dCBzbWJfc2JfaW5mbyAqc2VydmVyKQ0KK3sNCisJZG93bigmKHNlcnZlci0+ c2VtKSk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZA0KK3NtYl91bmxv Y2tfc2VydmVyKHN0cnVjdCBzbWJfc2JfaW5mbyAqc2VydmVyKQ0KK3sNCisJ dXAoJihzZXJ2ZXItPnNlbSkpOw0KK30NCisNCiAjZW5kaWYgLyogX19LRVJO RUxfXyAqLw0KIA0KICNlbmRpZg0KQmluYXJ5IGZpbGVzIGxpbnV4LTIuNC40 LW9yaWcvcGF0Y2gtMi40LjQtYWMzLmd6IGFuZCBsaW51eC0yLjQuNC1zbWJm cy9wYXRjaC0yLjQuNC1hYzMuZ3ogZGlmZmVyDQo= ---1463780587-1188951267-988840630=:27315--