From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Faccini, Bruno" Subject: [PATCH v2] ext4: always pre-allocate max depth for path Date: Thu, 23 Jun 2016 11:52:29 +0000 Message-ID: <55AFDADC-DF82-41FC-8C5C-A0E3D97EF51A@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Cc: "tytso@mit.edu" To: "linux-ext4@vger.kernel.org" Return-path: Received: from mga04.intel.com ([192.55.52.120]:50085 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751605AbcFWLwe (ORCPT ); Thu, 23 Jun 2016 07:52:34 -0400 Content-Language: en-US Content-ID: <3765F46A37BC0D45AD07B8454D3442E9@intel.com> Sender: linux-ext4-owner@vger.kernel.org List-ID: RnJvbTogQnJ1bm8gRmFjY2luaSA8YnJ1bm8uZmFjY2luaUBpbnRlbC5jb20+DQoNCkkgaGF2ZSBm aXJzdCBmb3VuZCB0aGlzIHdheSB0byBmaXggaG9sZXMgaW4gcHJldmlvdXMgZXh0NCBsYXllcnMg dmVyc2lvbnMNCndoZXJlIGFuIGFycmF5IG9mIHN0cnVjdCBleHQ0X2V4dF9wYXRoIGhhZCBiZWVu IGFsbG9jYXRlZCB3aXRoIGFuIGFyYml0cmFyeQ0KZXZhbHVhdGVkIHNpemUgYW5kIGZpbmFsbHkg Y291bGQgb3ZlcnJ1biB1cG9uIGV4dF9kZXB0aCgpIGdyb3d0aCBvdXRzaWRlDQppX2RhdGFfc2Vt IHByb3RlY3Rpb24uIEJ1dCBpdCBzZWVtcyBpdCBjYW4gc3RpbGwgaGVscCB3aXRoIHJlY2VudCBl eHQ0DQp2ZXJzaW9uLCB0byBhdm9pZCByZS1hbGxvY2F0aW9uIG5lZWQgYW5kIG92ZXJoZWFkIHdo ZW4gaXQgY2FuIGJlIGFsbG9jYXRlZA0KdG8gbWF4IHBvc3NpYmxlIGV4dGVudCBkZXB0aCAoaWUs IDUgcHJlc2VudGx5KSBhdCBmaXJzdCB0aW1lIGFuZCBmb3IgYSBsb3cNCmNvc3QgcmVnYXJkaW5n IGl0cyBtZW1vcnkgZm9vdC1wcmludCwgaXQgc2hvdWxkIGFsc28gYXZvaWQgZnVydGhlciBpbnZh bGlkDQpkZXJlZmVyZW5jZSBieSB1bmRlcmx5aW5nIGNhbGxlcnMgc2hhcmluZyBzYW1lIHBwYXRo ICh3aXRoIHByZXNlbnQNCmludGVyLXJvdXRpbmVzIHBhdGggcmUtdXNlIHNjaGVtZSksIGFuZCBh bHNvIHVwb24gcmUtYWxsb2NhdGlvbiBlcnJvci4NCg0KU2lnbmVkLW9mZi1ieTogQnJ1bm8gRmFj Y2luaSA8YnJ1bm8uZmFjY2luaUBpbnRlbC5jb20+DQpDYzogQW5kcmVhcyBEaWxnZXIgPGFkaWxn ZXJAZGlsZ2VyLmNhPg0KQ2M6IGxpbnV4LWV4dDRAdmdlci5rZXJuZWwub3JnDQrigJQNCiBleHQ0 LmggICAgICAgIHwgICAgNSArLQ0KIGV4dGVudHMuYyAgICAgfCAgMTE3ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0NCiBtb3ZlX2V4dGVu dC5jIHwgICAxMCArLS0tDQogc3VwZXIuYyAgICAgICB8ICAgIDMgLQ0KIDQgZmlsZXMgY2hhbmdl ZCwgOTAgaW5zZXJ0aW9ucygrKSwgNDUgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9mcy9l eHQ0L2V4dDQuaCBiL2ZzL2V4dDQvZXh0NC5oDQppbmRleCAxZTIwZmE5Li43M2Q1ODY2IDEwMDY0 NA0KLS0tIGEvZnMvZXh0NC9leHQ0LmgNCisrKyBiL2ZzL2V4dDQvZXh0NC5oDQpAQCAtMTM0MCw2 ICsxMzQwLDkgQEAgc3RydWN0IGV4dDRfc2JfaW5mbyB7DQogCXVuc2lnbmVkIGxvbmcgc19leHRf ZXh0ZW50czsNCiAjZW5kaWYNCiANCisJLyogbWF4aW11bSBwb3NzaWJsZSBleHRlbnRzIHRyZWUg ZGVwdGgsIHRvIGJlIGNvbXB1dGVkIGF0IG1vdW50IHRpbWUgKi8NCisJdW5zaWduZWQgaW50IHNf bWF4X2V4dF90cmVlX2RlcHRoOw0KKw0KIAkvKiBmb3IgYnVkZHkgYWxsb2NhdG9yICovDQogCXN0 cnVjdCBleHQ0X2dyb3VwX2luZm8gKioqc19ncm91cF9pbmZvOw0KIAlzdHJ1Y3QgaW5vZGUgKnNf YnVkZHlfY2FjaGU7DQpkaWZmIC0tZ2l0IGEvZnMvZXh0NC9leHRlbnRzLmMgYi9mcy9leHQ0L2V4 dGVudHMuYw0KaW5kZXggYjUyZmVhMy4uZGE5MTQyZCAxMDA2NDQNCi0tLSBhL2ZzL2V4dDQvZXh0 ZW50cy5jDQorKysgYi9mcy9leHQ0L2V4dGVudHMuYw0KQEAgLTg3MSwxOSArODcxLDE4IEBAIGV4 dDRfZmluZF9leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3QgYmxvY2ssDQog DQogCWlmIChwYXRoKSB7DQogCQlleHQ0X2V4dF9kcm9wX3JlZnMocGF0aCk7DQotCQlpZiAoZGVw dGggPiBwYXRoWzBdLnBfbWF4ZGVwdGgpIHsNCi0JCQlrZnJlZShwYXRoKTsNCi0JCQkqb3JpZ19w YXRoID0gcGF0aCA9IE5VTEw7DQotCQl9DQotCX0NCi0JaWYgKCFwYXRoKSB7DQorCQkvKiBwYXRo IGhhcyBiZWVuIGFsbG9jYXRlZCBmb3IgdGhlIG1heCBwb3NzaWJsZSBkZXB0aA0KKwkJICogc28g d2UgY2FuIHNpbXBseSByZXVzZSBpdCAqLw0KKwkJLyogWFhYIG5lZWQgdG8gY2xlYXIvemVybyBv bGQgcGF0aCBjb250ZW50PyAqLw0KKwl9IGVsc2Ugew0KIAkJLyogYWNjb3VudCBwb3NzaWJsZSBk ZXB0aCBpbmNyZWFzZSAqLw0KLQkJcGF0aCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleHQ0X2V4 dF9wYXRoKSAqIChkZXB0aCArIDIpLA0KKwkJcGF0aCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBl eHQ0X2V4dF9wYXRoKSAqDQorCQkJCUVYVDRfU0IoaW5vZGUtPmlfc2IpLT5zX21heF9leHRfdHJl ZV9kZXB0aCwNCiAJCQkJR0ZQX05PRlMpOw0KIAkJaWYgKHVubGlrZWx5KCFwYXRoKSkNCiAJCQly ZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCi0JCXBhdGhbMF0ucF9tYXhkZXB0aCA9IGRlcHRoICsg MTsNCiAJfQ0KKwlwYXRoWzBdLnBfbWF4ZGVwdGggPSBkZXB0aCArIDE7DQogCXBhdGhbMF0ucF9o ZHIgPSBlaDsNCiAJcGF0aFswXS5wX2JoID0gTlVMTDsNCiANCkBAIC05MzQsOSArOTMzLDExIEBA IGV4dDRfZmluZF9leHRlbnQoc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3QgYmxvY2ss DQogDQogZXJyOg0KIAlleHQ0X2V4dF9kcm9wX3JlZnMocGF0aCk7DQotCWtmcmVlKHBhdGgpOw0K LQlpZiAob3JpZ19wYXRoKQ0KLQkJKm9yaWdfcGF0aCA9IE5VTEw7DQorDQorCS8qIGRvIG5vdCBm cmVlICpvcmlnX3BhdGgsIGl0IGlzIGxpa2VseSB0byBiZSByZWZlcmVuY2VkIGJ5IGNhbGxlcnMg Ki8NCisJaWYgKCFvcmlnX3BhdGgpDQorCQlrZnJlZShwYXRoKTsNCisNCiAJcmV0dXJuIEVSUl9Q VFIocmV0KTsNCiB9DQogDQpAQCAtMjE0Nyw3ICsyMTQ4LDggQEAgc3RhdGljIGludCBleHQ0X2Zp bGxfZmllbWFwX2V4dGVudHMoc3RydWN0IGlub2RlICppbm9kZSwNCiAJCQkJICAgIGV4dDRfbGJs a190IGJsb2NrLCBleHQ0X2xibGtfdCBudW0sDQogCQkJCSAgICBzdHJ1Y3QgZmllbWFwX2V4dGVu dF9pbmZvICpmaWVpbmZvKQ0KIHsNCi0Jc3RydWN0IGV4dDRfZXh0X3BhdGggKnBhdGggPSBOVUxM Ow0KKwlzdHJ1Y3QgZXh0NF9leHRfcGF0aCAqcGF0aCA9IE5VTEwsICpvcmlnX3BhdGggPSBOVUxM Ow0KKwlzdHJ1Y3QgZXh0NF9leHRfcGF0aCAqKm9yaWdfcHBhdGggPSAmb3JpZ19wYXRoOw0KIAlz dHJ1Y3QgZXh0NF9leHRlbnQgKmV4Ow0KIAlzdHJ1Y3QgZXh0ZW50X3N0YXR1cyBlczsNCiAJZXh0 NF9sYmxrX3QgbmV4dCwgbmV4dF9kZWwsIHN0YXJ0ID0gMCwgZW5kID0gMDsNCkBAIC0yMTYxLDEz ICsyMTYzLDE2IEBAIHN0YXRpYyBpbnQgZXh0NF9maWxsX2ZpZW1hcF9leHRlbnRzKHN0cnVjdCBp bm9kZSAqaW5vZGUsDQogCQkvKiBmaW5kIGV4dGVudCBmb3IgdGhpcyBibG9jayAqLw0KIAkJZG93 bl9yZWFkKCZFWFQ0X0koaW5vZGUpLT5pX2RhdGFfc2VtKTsNCiANCi0JCXBhdGggPSBleHQ0X2Zp bmRfZXh0ZW50KGlub2RlLCBibG9jaywgJnBhdGgsIDApOw0KKwkJcGF0aCA9IGV4dDRfZmluZF9l eHRlbnQoaW5vZGUsIGJsb2NrLCBvcmlnX3BwYXRoLCAwKTsNCiAJCWlmIChJU19FUlIocGF0aCkp IHsNCiAJCQl1cF9yZWFkKCZFWFQ0X0koaW5vZGUpLT5pX2RhdGFfc2VtKTsNCiAJCQllcnIgPSBQ VFJfRVJSKHBhdGgpOw0KIAkJCXBhdGggPSBOVUxMOw0KIAkJCWJyZWFrOw0KIAkJfQ0KKwkJaWYg KCFvcmlnX3BhdGgpDQorCQkJb3JpZ19wYXRoID0gcGF0aDsNCisJCS8qIFhYWCBlbHNlIEJVR19P TihwYXRoICE9IG9yaWdfcGF0aCk7ICovDQogDQogCQlkZXB0aCA9IGV4dF9kZXB0aChpbm9kZSk7 DQogCQlpZiAodW5saWtlbHkocGF0aFtkZXB0aF0ucF9oZHIgPT0gTlVMTCkpIHsNCkBAIC0yMjg3 LDggKzIyOTIsOCBAQCBzdGF0aWMgaW50IGV4dDRfZmlsbF9maWVtYXBfZXh0ZW50cyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLA0KIAkJYmxvY2sgPSBlcy5lc19sYmxrICsgZXMuZXNfbGVuOw0KIAl9DQog DQotCWV4dDRfZXh0X2Ryb3BfcmVmcyhwYXRoKTsNCi0Ja2ZyZWUocGF0aCk7DQorCWV4dDRfZXh0 X2Ryb3BfcmVmcyhvcmlnX3BhdGgpOw0KKwlrZnJlZShvcmlnX3BhdGgpOw0KIAlyZXR1cm4gZXJy Ow0KIH0NCiANCkBAIC0yOTEwLDcgKzI5MTUsOCBAQCBhZ2FpbjoNCiAJCQlwYXRoW2tdLnBfYmxv Y2sgPQ0KIAkJCQlsZTE2X3RvX2NwdShwYXRoW2tdLnBfaGRyLT5laF9lbnRyaWVzKSsxOw0KIAl9 IGVsc2Ugew0KLQkJcGF0aCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleHQ0X2V4dF9wYXRoKSAq IChkZXB0aCArIDEpLA0KKwkJcGF0aCA9IGt6YWxsb2Moc2l6ZW9mKHN0cnVjdCBleHQ0X2V4dF9w YXRoKSAqDQorCQkJICAgICAgIEVYVDRfU0IoaW5vZGUtPmlfc2IpLT5zX21heF9leHRfdHJlZV9k ZXB0aCwNCiAJCQkgICAgICAgR0ZQX05PRlMpOw0KIAkJaWYgKHBhdGggPT0gTlVMTCkgew0KIAkJ CWV4dDRfam91cm5hbF9zdG9wKGhhbmRsZSk7DQpAQCAtMzA1MSwxMyArMzA1NywyMSBAQCBvdXQ6 DQogICovDQogdm9pZCBleHQ0X2V4dF9pbml0KHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpDQogew0K KwlleHQ0X2ZzYmxrX3QgbWF4YmxvY2tzOw0KKwl1bnNpZ25lZCBtYXhfZXh0X2VudHJ5X3NpemUg PSBtYXgoc2l6ZW9mKHN0cnVjdCBleHQ0X2V4dGVudCksDQorCQkJCQkgIHNpemVvZihzdHJ1Y3Qg ZXh0NF9leHRlbnRfaWR4KSk7DQorCXVuc2lnbmVkIG1pbl9leHRfcGVyX25vZGUgPSAoc2ItPnNf YmxvY2tzaXplIC0NCisJCQkJICAgICBzaXplb2Yoc3RydWN0IGV4dDRfZXh0ZW50X2hlYWRlcikp IC8NCisJCQkJICAgIG1heF9leHRfZW50cnlfc2l6ZTsNCisNCiAJLyoNCiAJICogcG9zc2libGUg aW5pdGlhbGl6YXRpb24gd291bGQgYmUgaGVyZQ0KIAkgKi8NCiANCiAJaWYgKGV4dDRfaGFzX2Zl YXR1cmVfZXh0ZW50cyhzYikpIHsNCi0jaWYgZGVmaW5lZChBR0dSRVNTSVZFX1RFU1QpIHx8IGRl ZmluZWQoQ0hFQ0tfQklOU0VBUkNIKSB8fCBkZWZpbmVkKEVYVEVOVFNfU1RBVFMpDQotCQlwcmlu dGsoS0VSTl9JTkZPICJFWFQ0LWZzOiBmaWxlIGV4dGVudHMgZW5hYmxlZCINCisjaWYgZGVmaW5l ZChBR0dSRVNTSVZFX1RFU1QpIHx8IGRlZmluZWQoQ0hFQ0tfQklOU0VBUkNIKSB8fCBcDQorICAg IGRlZmluZWQoRVhURU5UU19TVEFUUykgfHwgZGVmaW5lZChFWFRfREVCVUcpDQorCQlwcmludGso S0VSTl9JTkZPICJFWFQ0LWZzICglcyk6IGZpbGUgZXh0ZW50cyBlbmFibGVkIg0KICNpZmRlZiBB R0dSRVNTSVZFX1RFU1QNCiAJCSAgICAgICAiLCBhZ2dyZXNzaXZlIHRlc3RzIg0KICNlbmRpZg0K QEAgLTMwNjcsNyArMzA4MSwzMiBAQCB2b2lkIGV4dDRfZXh0X2luaXQoc3RydWN0IHN1cGVyX2Js b2NrICpzYikNCiAjaWZkZWYgRVhURU5UU19TVEFUUw0KIAkJICAgICAgICIsIHN0YXRzIg0KICNl bmRpZg0KLQkJICAgICAgICJcbiIpOw0KKwkJICAgICAgICJcbiIsIHNiLT5zX2lkKTsNCisjZW5k aWYNCisNCisNCisJCUVYVDRfU0Ioc2IpLT5zX21heF9leHRfdHJlZV9kZXB0aCA9IDE7DQorDQor CQltYXhibG9ja3MgPSBzYi0+c19tYXhieXRlcyA+PiBFWFQ0X0JMT0NLX1NJWkVfQklUUyhzYik7 DQorDQorCQkvKiAxc3Qvcm9vdCBsZXZlbC9ub2RlIG9mIGV4dGVudHMgdHJlZSBzdGFuZHMgaW4g aV9kYXRhIGFuZA0KKwkJICogZW50cmllcyBzdG9yZWQgaW4gdHJlZSBub2RlcyBjYW4gYmUgb2Yg dHlwZSBleHQ0X2V4dGVudA0KKwkJICogKGxlYWYgbm9kZSkgb3IgZXh0NF9leHRlbnRfaWR4IChp bnRlcm5hbCBub2RlKSAqLw0KKwkJZG9fZGl2KG1heGJsb2NrcywNCisJCSAgICAgICAoc2l6ZW9m KCgoc3RydWN0IGV4dDRfaW5vZGVfaW5mbyAqKU5VTEwpLT5pX2RhdGEpIC0NCisJCQlzaXplb2Yo c3RydWN0IGV4dDRfZXh0ZW50X2hlYWRlcikpIC8NCisJCSAgICAgICBtYXhfZXh0X2VudHJ5X3Np emUpOw0KKw0KKwkJLyogY29tcHV0ZSBtYXhpbXVtIGV4dGVudHMgdHJlZSBkZXB0aCBmb3IgYSBm dWxseSBwb3B1bGF0ZWQNCisJCSAqIGZpbGUgb2YgbWF4IHNpemUgbWFkZSBvZiBvbmx5IG1pbmlt YWwvMS1ibG9jayBleHRlbnRzICovDQorCQl3aGlsZSAobWF4YmxvY2tzID4gMCkgew0KKwkJCWRv X2RpdihtYXhibG9ja3MsIG1pbl9leHRfcGVyX25vZGUpOw0KKwkJCUVYVDRfU0Ioc2IpLT5zX21h eF9leHRfdHJlZV9kZXB0aCsrOw0KKwkJfQ0KKw0KKyNpZmRlZiBFWFRfREVCVUcNCisJCXByaW50 ayhLRVJOX0lORk8gIkVYVDQtZnMgKCVzKTogbWF4aW11bSB0cmVlIGRlcHRoPSV1XG4iLA0KKwkJ ICAgICAgIHNiLT5zX2lkLCBFWFQ0X1NCKHNiKS0+c19tYXhfZXh0X3RyZWVfZGVwdGgpOw0KICNl bmRpZg0KICNpZmRlZiBFWFRFTlRTX1NUQVRTDQogCQlzcGluX2xvY2tfaW5pdCgmRVhUNF9TQihz YiktPnNfZXh0X3N0YXRzX2xvY2spOw0KQEAgLTUzNDgsMTggKzUzODcsMTggQEAgZXh0NF9leHRf c2hpZnRfZXh0ZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBoYW5kbGVfdCAqaGFuZGxlLA0KIAkJ ICAgICAgIGV4dDRfbGJsa190IHN0YXJ0LCBleHQ0X2xibGtfdCBzaGlmdCwNCiAJCSAgICAgICBl bnVtIFNISUZUX0RJUkVDVElPTiBTSElGVCkNCiB7DQotCXN0cnVjdCBleHQ0X2V4dF9wYXRoICpw YXRoOw0KKwlzdHJ1Y3QgZXh0NF9leHRfcGF0aCAqcGF0aCwgKm9yaWdfcGF0aDsNCiAJaW50IHJl dCA9IDAsIGRlcHRoOw0KIAlzdHJ1Y3QgZXh0NF9leHRlbnQgKmV4dGVudDsNCiAJZXh0NF9sYmxr X3Qgc3RvcCwgKml0ZXJhdG9yLCBleF9zdGFydCwgZXhfZW5kOw0KIA0KIAkvKiBMZXQgcGF0aCBw b2ludCB0byB0aGUgbGFzdCBleHRlbnQgKi8NCi0JcGF0aCA9IGV4dDRfZmluZF9leHRlbnQoaW5v ZGUsIEVYVF9NQVhfQkxPQ0tTIC0gMSwgTlVMTCwgMCk7DQotCWlmIChJU19FUlIocGF0aCkpDQot CQlyZXR1cm4gUFRSX0VSUihwYXRoKTsNCisJb3JpZ19wYXRoID0gZXh0NF9maW5kX2V4dGVudChp bm9kZSwgRVhUX01BWF9CTE9DS1MgLSAxLCBOVUxMLCAwKTsNCisJaWYgKElTX0VSUihvcmlnX3Bh dGgpKQ0KKwkJcmV0dXJuIFBUUl9FUlIob3JpZ19wYXRoKTsNCiANCi0JZGVwdGggPSBwYXRoLT5w X2RlcHRoOw0KLQlleHRlbnQgPSBwYXRoW2RlcHRoXS5wX2V4dDsNCisJZGVwdGggPSBvcmlnX3Bh dGgtPnBfZGVwdGg7DQorCWV4dGVudCA9IG9yaWdfcGF0aFtkZXB0aF0ucF9leHQ7DQogCWlmICgh ZXh0ZW50KQ0KIAkJZ290byBvdXQ7DQogDQpAQCAtNTM3MSw5ICs1NDEwLDExIEBAIGV4dDRfZXh0 X3NoaWZ0X2V4dGVudHMoc3RydWN0IGlub2RlICppbm9kZSwgaGFuZGxlX3QgKmhhbmRsZSwNCiAJ ICogc3VyZSB0aGUgaG9sZSBpcyBiaWcgZW5vdWdoIHRvIGFjY29tbW9kYXRlIHRoZSBzaGlmdC4N CiAJKi8NCiAJaWYgKFNISUZUID09IFNISUZUX0xFRlQpIHsNCi0JCXBhdGggPSBleHQ0X2ZpbmRf ZXh0ZW50KGlub2RlLCBzdGFydCAtIDEsICZwYXRoLCAwKTsNCi0JCWlmIChJU19FUlIocGF0aCkp DQotCQkJcmV0dXJuIFBUUl9FUlIocGF0aCk7DQorCQlwYXRoID0gZXh0NF9maW5kX2V4dGVudChp bm9kZSwgc3RhcnQgLSAxLCAmb3JpZ19wYXRoLCAwKTsNCisJCWlmIChJU19FUlIocGF0aCkpIHsN CisJCQlyZXQgPSBQVFJfRVJSKHBhdGgpOw0KKwkJCWdvdG8gb3V0Ow0KKwkJfQ0KIAkJZGVwdGgg PSBwYXRoLT5wX2RlcHRoOw0KIAkJZXh0ZW50ID0gIHBhdGhbZGVwdGhdLnBfZXh0Ow0KIAkJaWYg KGV4dGVudCkgew0KQEAgLTUzODcsOSArNTQyOCw4IEBAIGV4dDRfZXh0X3NoaWZ0X2V4dGVudHMo c3RydWN0IGlub2RlICppbm9kZSwgaGFuZGxlX3QgKmhhbmRsZSwNCiANCiAJCWlmICgoc3RhcnQg PT0gZXhfc3RhcnQgJiYgc2hpZnQgPiBleF9zdGFydCkgfHwNCiAJCSAgICAoc2hpZnQgPiBzdGFy dCAtIGV4X2VuZCkpIHsNCi0JCQlleHQ0X2V4dF9kcm9wX3JlZnMocGF0aCk7DQotCQkJa2ZyZWUo cGF0aCk7DQotCQkJcmV0dXJuIC1FSU5WQUw7DQorCQkJcmV0ID0gLUVJTlZBTDsNCisJCQlnb3Rv IG91dDsNCiAJCX0NCiAJfQ0KIA0KQEAgLTU0MDUsMTUgKzU0NDUsMTggQEAgZXh0NF9leHRfc2hp ZnRfZXh0ZW50cyhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBoYW5kbGVfdCAqaGFuZGxlLA0KIA0KIAkv KiBJdHMgc2FmZSB0byBzdGFydCB1cGRhdGluZyBleHRlbnRzICovDQogCXdoaWxlIChzdGFydCA8 IHN0b3ApIHsNCi0JCXBhdGggPSBleHQ0X2ZpbmRfZXh0ZW50KGlub2RlLCAqaXRlcmF0b3IsICZw YXRoLCAwKTsNCi0JCWlmIChJU19FUlIocGF0aCkpDQotCQkJcmV0dXJuIFBUUl9FUlIocGF0aCk7 DQorCQlwYXRoID0gZXh0NF9maW5kX2V4dGVudChpbm9kZSwgKml0ZXJhdG9yLCAmb3JpZ19wYXRo LCAwKTsNCisJCWlmIChJU19FUlIocGF0aCkpIHsNCisJCQlyZXQgPSBQVFJfRVJSKHBhdGgpOw0K KwkJCWdvdG8gb3V0Ow0KKwkJfQ0KIAkJZGVwdGggPSBwYXRoLT5wX2RlcHRoOw0KIAkJZXh0ZW50 ID0gcGF0aFtkZXB0aF0ucF9leHQ7DQogCQlpZiAoIWV4dGVudCkgew0KIAkJCUVYVDRfRVJST1Jf SU5PREUoaW5vZGUsICJ1bmV4cGVjdGVkIGhvbGUgYXQgJWx1IiwNCiAJCQkJCSAodW5zaWduZWQg bG9uZykgKml0ZXJhdG9yKTsNCi0JCQlyZXR1cm4gLUVGU0NPUlJVUFRFRDsNCisJCQlyZXQgPSAg LUVGU0NPUlJVUFRFRDsNCisJCQlnb3RvIG91dDsNCiAJCX0NCiAJCWlmIChTSElGVCA9PSBTSElG VF9MRUZUICYmICppdGVyYXRvciA+DQogCQkgICAgbGUzMl90b19jcHUoZXh0ZW50LT5lZV9ibG9j aykpIHsNCkBAIC01NDQ1LDggKzU0ODgsOCBAQCBleHQ0X2V4dF9zaGlmdF9leHRlbnRzKHN0cnVj dCBpbm9kZSAqaW5vZGUsIGhhbmRsZV90ICpoYW5kbGUsDQogCQkJYnJlYWs7DQogCX0NCiBvdXQ6 DQotCWV4dDRfZXh0X2Ryb3BfcmVmcyhwYXRoKTsNCi0Ja2ZyZWUocGF0aCk7DQorCWV4dDRfZXh0 X2Ryb3BfcmVmcyhvcmlnX3BhdGgpOw0KKwlrZnJlZShvcmlnX3BhdGgpOw0KIAlyZXR1cm4gcmV0 Ow0KIH0NCiANCmRpZmYgLS1naXQgYS9mcy9leHQ0L21vdmVfZXh0ZW50LmMgYi9mcy9leHQ0L21v dmVfZXh0ZW50LmMNCmluZGV4IGZiNmYxMTcuLjdjMzE5YzUgMTAwNjQ0DQotLS0gYS9mcy9leHQ0 L21vdmVfZXh0ZW50LmMNCisrKyBiL2ZzL2V4dDQvbW92ZV9leHRlbnQuYw0KQEAgLTM5LDEzICsz OSwxMSBAQCBnZXRfZXh0X3BhdGgoc3RydWN0IGlub2RlICppbm9kZSwgZXh0NF9sYmxrX3QgbGJs b2NrLA0KIAlwYXRoID0gZXh0NF9maW5kX2V4dGVudChpbm9kZSwgbGJsb2NrLCBwcGF0aCwgRVhU NF9FWF9OT0NBQ0hFKTsNCiAJaWYgKElTX0VSUihwYXRoKSkNCiAJCXJldHVybiBQVFJfRVJSKHBh dGgpOw0KLQlpZiAocGF0aFtleHRfZGVwdGgoaW5vZGUpXS5wX2V4dCA9PSBOVUxMKSB7DQotCQll eHQ0X2V4dF9kcm9wX3JlZnMocGF0aCk7DQotCQlrZnJlZShwYXRoKTsNCi0JCSpwcGF0aCA9IE5V TEw7DQorCWlmIChwYXRoW2V4dF9kZXB0aChpbm9kZSldLnBfZXh0ID09IE5VTEwpDQogCQlyZXR1 cm4gLUVOT0RBVEE7DQotCX0NCi0JKnBwYXRoID0gcGF0aDsNCisJaWYgKCpwcGF0aCA9PSBOVUxM KQ0KKwkJKnBwYXRoID0gcGF0aDsNCisJLyogWFhYIGVsc2UgQlVHX09OKHBhdGggIT0gKnBwYXRo KTsgKi8NCiAJcmV0dXJuIDA7DQogfQ0KIA0KZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBi L2ZzL2V4dDQvc3VwZXIuYw0KaW5kZXggNDg2ZTg2OS4uMTk5MTU3YSAxMDA2NDQNCi0tLSBhL2Zz L2V4dDQvc3VwZXIuYw0KKysrIGIvZnMvZXh0NC9zdXBlci5jDQpAQCAtMzcwMSw2ICszNzAxLDgg QEAgc3RhdGljIGludCBleHQ0X2ZpbGxfc3VwZXIoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdm9p ZCAqZGF0YSwgaW50IHNpbGVudCkNCiAJCWlmIChleHQ0X211bHRpX21vdW50X3Byb3RlY3Qoc2Is IGxlNjRfdG9fY3B1KGVzLT5zX21tcF9ibG9jaykpKQ0KIAkJCWdvdG8gZmFpbGVkX21vdW50M2E7 DQogDQorCWV4dDRfZXh0X2luaXQoc2IpOyAvKiBuZWVkZWQgYmVmb3JlIHVzaW5nIGV4dGVudC1t YXBwZWQgam91cm5hbCAqLw0KKw0KIAkvKg0KIAkgKiBUaGUgZmlyc3QgaW5vZGUgd2UgbG9vayBh dCBpcyB0aGUgam91cm5hbCBpbm9kZS4gIERvbid0IHRyeQ0KIAkgKiByb290IGZpcnN0OiBpdCBt YXkgYmUgbW9kaWZpZWQgaW4gdGhlIGpvdXJuYWwhDQpAQCAtMzg5NCw3ICszODk2LDYgQEAgbm9f am91cm5hbDoNCiAJCWdvdG8gZmFpbGVkX21vdW50NGE7DQogCX0NCiANCi0JZXh0NF9leHRfaW5p dChzYik7DQogCWVyciA9IGV4dDRfbWJfaW5pdChzYik7DQogCWlmIChlcnIpIHsNCiAJCWV4dDRf bXNnKHNiLCBLRVJOX0VSUiwgImZhaWxlZCB0byBpbml0aWFsaXplIG1iYWxsb2MgKCVkKSIsDQri gJQNCg0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCkludGVsIENvcnBvcmF0aW9uIFNBUyAoRnJlbmNoIHNpbXBsaWZp ZWQgam9pbnQgc3RvY2sgY29tcGFueSkKUmVnaXN0ZXJlZCBoZWFkcXVhcnRlcnM6ICJMZXMgTW9u dGFsZXRzIi0gMiwgcnVlIGRlIFBhcmlzLCAKOTIxOTYgTWV1ZG9uIENlZGV4LCBGcmFuY2UKUmVn aXN0cmF0aW9uIE51bWJlcjogIDMwMiA0NTYgMTk5IFIuQy5TLiBOQU5URVJSRQpDYXBpdGFsOiA0 LDU3MiwwMDAgRXVyb3MKClRoaXMgZS1tYWlsIGFuZCBhbnkgYXR0YWNobWVudHMgbWF5IGNvbnRh aW4gY29uZmlkZW50aWFsIG1hdGVyaWFsIGZvcgp0aGUgc29sZSB1c2Ugb2YgdGhlIGludGVuZGVk IHJlY2lwaWVudChzKS4gQW55IHJldmlldyBvciBkaXN0cmlidXRpb24KYnkgb3RoZXJzIGlzIHN0 cmljdGx5IHByb2hpYml0ZWQuIElmIHlvdSBhcmUgbm90IHRoZSBpbnRlbmRlZApyZWNpcGllbnQs IHBsZWFzZSBjb250YWN0IHRoZSBzZW5kZXIgYW5kIGRlbGV0ZSBhbGwgY29waWVzLgo=