From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752613Ab1GTW5B (ORCPT ); Wed, 20 Jul 2011 18:57:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:23795 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752102Ab1GTW5A (ORCPT ); Wed, 20 Jul 2011 18:57:00 -0400 Date: Wed, 20 Jul 2011 18:56:50 -0400 (EDT) From: Mikulas Patocka X-X-Sender: mpatocka@hs20-bc2-1.build.redhat.com To: Zdenek Kabelac , Milan Broz , "Alasdair G. Kergon" , dm-devel@redhat.com cc: gregkh@suse.de, linux-kernel@vger.kernel.org Subject: [PATCHES] improve sysfs performance, make it O(log n) Message-ID: MIME-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="168436252-594179023-1311202610=:4812" Sender: linux-kernel-owner@vger.kernel.org List-ID: 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. --168436252-594179023-1311202610=:4812 Content-Type: TEXT/PLAIN; charset=US-ASCII Hi Here are 5 patches to make sysfs O(log n) and improve performance on operations with many block devices. Patch 1 changes synchronize_rcu() to synchronize_rcu_expedited(), it causes massive speedup when deleting many block devices. Patch 2 fixes inefficient i_nlink calculation in sysfs. Patch 3 makes name lookups use rb-tree. Patch 4 removes s_sibling hack (it has no effect on performance). Patch 5 makes inode number lookups use rb-tree --- thus making all types of sysfs directory operations O(log n). Performance testing --- 10000 dm devices created with dmsetup: The numbers are time in seconds to perform these operations: 1. create 10000 devices 2. ls -la /sys/block 3. ls -al /sys/block after a cache flush (echo 3 >/proc/sys/vm/drop_caches) 4. dmsetup remove_all no patches 109 9.8 12 1624 patch 1 109 9.1 12 15 patches 1,2 120 0.19 3.0 16 patches 1,2,3 68 0.17 0.47 12 patches 1,2,3,4 68 0.15 0.48 11 all patches 37 0.16 0.46 3.3 Mikulas --168436252-594179023-1311202610=:4812 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=bdi-synchronize-rcu-expedited.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=bdi-synchronize-rcu-expedited.patch YmFja2luZy1kZXY6IHVzZSBzeW5jaHJvbml6ZV9yY3VfZXhwZWRpdGVkIGlu c3RlYWQgb2Ygc3luY2hyb25pemVfcmN1DQoNCnN5bmNocm9uaXplX3JjdSBz bGVlcHMgc2V2ZXJhbCB0aW1lciB0aWNrcy4NCldoZW4gcmVtb3ZpbmcgdGhv dXNhbmRzIGJsb2NrIGRldmljZXMsIHRoaXMgc2xlZXBpbmcNCmNhdXNlcyBh IHNldmVyZSBkZWxheS4NCg0KU2lnbmVkLW9mZi1ieTogTWlrdWxhcyBQYXRv Y2thIDxtcGF0b2NrYUByZWRoYXQuY29tPg0KDQotLS0NCiBtbS9iYWNraW5n LWRldi5jIHwgICAgMiArLQ0KIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlv bigrKSwgMSBkZWxldGlvbigtKQ0KDQpJbmRleDogbGludXgtMy4wLXJjNy1m YXN0L21tL2JhY2tpbmctZGV2LmMNCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N Ci0tLSBsaW51eC0zLjAtcmM3LWZhc3Qub3JpZy9tbS9iYWNraW5nLWRldi5j CTIwMTEtMDctMTkgMTg6MDE6MDAuMDAwMDAwMDAwICswMjAwDQorKysgbGlu dXgtMy4wLXJjNy1mYXN0L21tL2JhY2tpbmctZGV2LmMJMjAxMS0wNy0xOSAx ODowMTowNy4wMDAwMDAwMDAgKzAyMDANCkBAIC01MDUsNyArNTA1LDcgQEAg c3RhdGljIHZvaWQgYmRpX3JlbW92ZV9mcm9tX2xpc3Qoc3RydWN0IA0KIAls aXN0X2RlbF9yY3UoJmJkaS0+YmRpX2xpc3QpOw0KIAlzcGluX3VubG9ja19i aCgmYmRpX2xvY2spOw0KIA0KLQlzeW5jaHJvbml6ZV9yY3UoKTsNCisJc3lu Y2hyb25pemVfcmN1X2V4cGVkaXRlZCgpOw0KIH0NCiANCiBpbnQgYmRpX3Jl Z2lzdGVyKHN0cnVjdCBiYWNraW5nX2Rldl9pbmZvICpiZGksIHN0cnVjdCBk ZXZpY2UgKnBhcmVudCwNCg== --168436252-594179023-1311202610=:4812 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=sysfs-count-subdirs.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=sysfs-count-subdirs.patch c3lzZnM6IGNvdW50IHN1YmRpcmVjdG9yaWVzDQoNClRoaXMgcGF0Y2ggaW50 cm9kdWNlcyBhIHN1YmRpcmVjdG9yeSBjb3VudGVyIGZvciBlYWNoIHN5c2Zz IGRpcmVjdG9yeS4NCg0KV2l0aG91dCB0aGUgcGF0Y2gsIHN5c2ZzX3JlZnJl c2hfaW5vZGUgd291bGQgd2FsayBhbGwgZW50cmllcyBvZiB0aGUgZGlyZWN0 b3J5DQp0byBjYWxjdWxhdGUgdGhlIG51bWJlciBvZiBzdWJkaXJlY3Rvcmll cy4NCg0KU2lnbmVkLW9mZi1ieTogTWlrdWxhcyBQYXRvY2thIDxtcGF0b2Nr YUByZWRoYXQuY29tPg0KDQotLS0NCiBmcy9zeXNmcy9kaXIuYyAgIHwgICAg NiArKysrKysNCiBmcy9zeXNmcy9pbm9kZS5jIHwgICAxNCArLS0tLS0tLS0t LS0tLQ0KIGZzL3N5c2ZzL3N5c2ZzLmggfCAgICAyICsrDQogMyBmaWxlcyBj aGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQ0KDQpJ bmRleDogbGludXgtMy4wLXJjNy1mYXN0L2ZzL3N5c2ZzL2Rpci5jDQo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09DQotLS0gbGludXgtMy4wLXJjNy1mYXN0Lm9y aWcvZnMvc3lzZnMvZGlyLmMJMjAxMS0wNy0xOCAxOTo0MzowNS4wMDAwMDAw MDAgKzAyMDANCisrKyBsaW51eC0zLjAtcmM3LWZhc3QvZnMvc3lzZnMvZGly LmMJMjAxMS0wNy0xOCAxOTo0NTowNi4wMDAwMDAwMDAgKzAyMDANCkBAIC00 Nyw2ICs0Nyw5IEBAIHN0YXRpYyB2b2lkIHN5c2ZzX2xpbmtfc2libGluZyhz dHJ1Y3Qgc3kNCiANCiAJQlVHX09OKHNkLT5zX3NpYmxpbmcpOw0KIA0KKwlp ZiAoc3lzZnNfdHlwZShzZCkgPT0gU1lTRlNfRElSKQ0KKwkJcGFyZW50X3Nk LT5zX2Rpci5zdWJkaXJzKys7DQorDQogCS8qIFN0b3JlIGRpcmVjdG9yeSBl bnRyaWVzIGluIG9yZGVyIGJ5IGluby4gIFRoaXMgYWxsb3dzDQogCSAqIHJl YWRkaXIgdG8gcHJvcGVybHkgcmVzdGFydCB3aXRob3V0IGhhdmluZyB0byBh ZGQgYQ0KIAkgKiBjdXJzb3IgaW50byB0aGUgc19kaXIuY2hpbGRyZW4gbGlz dC4NCkBAIC03Myw2ICs3Niw5IEBAIHN0YXRpYyB2b2lkIHN5c2ZzX3VubGlu a19zaWJsaW5nKHN0cnVjdCANCiB7DQogCXN0cnVjdCBzeXNmc19kaXJlbnQg Kipwb3M7DQogDQorCWlmIChzeXNmc190eXBlKHNkKSA9PSBTWVNGU19ESVIp DQorCQlzZC0+c19wYXJlbnQtPnNfZGlyLnN1YmRpcnMtLTsNCisNCiAJZm9y IChwb3MgPSAmc2QtPnNfcGFyZW50LT5zX2Rpci5jaGlsZHJlbjsgKnBvczsN CiAJICAgICBwb3MgPSAmKCpwb3MpLT5zX3NpYmxpbmcpIHsNCiAJCWlmICgq cG9zID09IHNkKSB7DQpJbmRleDogbGludXgtMy4wLXJjNy1mYXN0L2ZzL3N5 c2ZzL2lub2RlLmMNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaW51 eC0zLjAtcmM3LWZhc3Qub3JpZy9mcy9zeXNmcy9pbm9kZS5jCTIwMTEtMDct MTggMTk6NDM6MzMuMDAwMDAwMDAwICswMjAwDQorKysgbGludXgtMy4wLXJj Ny1mYXN0L2ZzL3N5c2ZzL2lub2RlLmMJMjAxMS0wNy0xOCAxOTo0NTo1MC4w MDAwMDAwMDAgKzAyMDANCkBAIC0yMDIsMTggKzIwMiw2IEBAIHN0YXRpYyBp bmxpbmUgdm9pZCBzZXRfaW5vZGVfYXR0cihzdHJ1Y3QNCiAJaW5vZGUtPmlf Y3RpbWUgPSBpYXR0ci0+aWFfY3RpbWU7DQogfQ0KIA0KLXN0YXRpYyBpbnQg c3lzZnNfY291bnRfbmxpbmsoc3RydWN0IHN5c2ZzX2RpcmVudCAqc2QpDQot ew0KLQlzdHJ1Y3Qgc3lzZnNfZGlyZW50ICpjaGlsZDsNCi0JaW50IG5yID0g MDsNCi0NCi0JZm9yIChjaGlsZCA9IHNkLT5zX2Rpci5jaGlsZHJlbjsgY2hp bGQ7IGNoaWxkID0gY2hpbGQtPnNfc2libGluZykNCi0JCWlmIChzeXNmc190 eXBlKGNoaWxkKSA9PSBTWVNGU19ESVIpDQotCQkJbnIrKzsNCi0NCi0JcmV0 dXJuIG5yICsgMjsNCi19DQotDQogc3RhdGljIHZvaWQgc3lzZnNfcmVmcmVz aF9pbm9kZShzdHJ1Y3Qgc3lzZnNfZGlyZW50ICpzZCwgc3RydWN0IGlub2Rl ICppbm9kZSkNCiB7DQogCXN0cnVjdCBzeXNmc19pbm9kZV9hdHRycyAqaWF0 dHJzID0gc2QtPnNfaWF0dHI7DQpAQCAtMjMwLDcgKzIxOCw3IEBAIHN0YXRp YyB2b2lkIHN5c2ZzX3JlZnJlc2hfaW5vZGUoc3RydWN0IHMNCiAJfQ0KIA0K IAlpZiAoc3lzZnNfdHlwZShzZCkgPT0gU1lTRlNfRElSKQ0KLQkJaW5vZGUt PmlfbmxpbmsgPSBzeXNmc19jb3VudF9ubGluayhzZCk7DQorCQlpbm9kZS0+ aV9ubGluayA9IHNkLT5zX2Rpci5zdWJkaXJzICsgMjsNCiB9DQogDQogaW50 IHN5c2ZzX2dldGF0dHIoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBk ZW50cnkgKmRlbnRyeSwgc3RydWN0IGtzdGF0ICpzdGF0KQ0KSW5kZXg6IGxp bnV4LTMuMC1yYzctZmFzdC9mcy9zeXNmcy9zeXNmcy5oDQo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09DQotLS0gbGludXgtMy4wLXJjNy1mYXN0Lm9yaWcvZnMv c3lzZnMvc3lzZnMuaAkyMDExLTA3LTE4IDE5OjQyOjQyLjAwMDAwMDAwMCAr MDIwMA0KKysrIGxpbnV4LTMuMC1yYzctZmFzdC9mcy9zeXNmcy9zeXNmcy5o CTIwMTEtMDctMTggMTk6NDQ6MjguMDAwMDAwMDAwICswMjAwDQpAQCAtMTks NiArMTksOCBAQCBzdHJ1Y3Qgc3lzZnNfZWxlbV9kaXIgew0KIAlzdHJ1Y3Qg a29iamVjdAkJKmtvYmo7DQogCS8qIGNoaWxkcmVuIGxpc3Qgc3RhcnRzIGhl cmUgYW5kIGdvZXMgdGhyb3VnaCBzZC0+c19zaWJsaW5nICovDQogCXN0cnVj dCBzeXNmc19kaXJlbnQJKmNoaWxkcmVuOw0KKw0KKwl1bnNpZ25lZCBsb25n CQlzdWJkaXJzOw0KIH07DQogDQogc3RydWN0IHN5c2ZzX2VsZW1fc3ltbGlu ayB7DQo= --168436252-594179023-1311202610=:4812 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=sysfs-name-tree.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=sysfs-name-tree.patch c3lzZnM6IHVzZSByYi10cmVlIGZvciBuYW1lIGxvb2t1cHMNCg0KVXNlIHJl ZC1ibGFjayB0cmVlIGZvciBuYW1lIGxvb2t1cHMuDQoNClNpZ25lZC1vZmYt Ynk6IE1pa3VsYXMgUGF0b2NrYSA8bXBhdG9ja2FAcmVkaGF0LmNvbT4NCg0K LS0tDQogZnMvc3lzZnMvZGlyLmMgICB8ICAgNDUgKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tDQogZnMvc3lzZnMvc3lz ZnMuaCB8ICAgIDUgKysrKysNCiAyIGZpbGVzIGNoYW5nZWQsIDQ0IGluc2Vy dGlvbnMoKyksIDYgZGVsZXRpb25zKC0pDQoNCkluZGV4OiBsaW51eC0zLjAt cmM3LWZhc3QvZnMvc3lzZnMvc3lzZnMuaA0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIGxpbnV4LTMuMC1yYzctZmFzdC5vcmlnL2ZzL3N5c2ZzL3N5 c2ZzLmgJMjAxMS0wNy0xOCAyMDowNjoyNC4wMDAwMDAwMDAgKzAyMDANCisr KyBsaW51eC0zLjAtcmM3LWZhc3QvZnMvc3lzZnMvc3lzZnMuaAkyMDExLTA3 LTE4IDIwOjE2OjMyLjAwMDAwMDAwMCArMDIwMA0KQEAgLTExLDYgKzExLDcg QEANCiAjaW5jbHVkZSA8bGludXgvbG9ja2RlcC5oPg0KICNpbmNsdWRlIDxs aW51eC9rb2JqZWN0X25zLmg+DQogI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQor I2luY2x1ZGUgPGxpbnV4L3JidHJlZS5oPg0KIA0KIHN0cnVjdCBzeXNmc19v cGVuX2RpcmVudDsNCiANCkBAIC0yMSw2ICsyMiw4IEBAIHN0cnVjdCBzeXNm c19lbGVtX2RpciB7DQogCXN0cnVjdCBzeXNmc19kaXJlbnQJKmNoaWxkcmVu Ow0KIA0KIAl1bnNpZ25lZCBsb25nCQlzdWJkaXJzOw0KKw0KKwlzdHJ1Y3Qg cmJfcm9vdAkJbmFtZV90cmVlOw0KIH07DQogDQogc3RydWN0IHN5c2ZzX2Vs ZW1fc3ltbGluayB7DQpAQCAtNjEsNiArNjQsOCBAQCBzdHJ1Y3Qgc3lzZnNf ZGlyZW50IHsNCiAJc3RydWN0IHN5c2ZzX2RpcmVudAkqc19zaWJsaW5nOw0K IAljb25zdCBjaGFyCQkqc19uYW1lOw0KIA0KKwlzdHJ1Y3QgcmJfbm9kZQkJ bmFtZV9ub2RlOw0KKw0KIAljb25zdCB2b2lkCQkqc19uczsgLyogbmFtZXNw YWNlIHRhZyAqLw0KIAl1bmlvbiB7DQogCQlzdHJ1Y3Qgc3lzZnNfZWxlbV9k aXIJCXNfZGlyOw0KSW5kZXg6IGxpbnV4LTMuMC1yYzctZmFzdC9mcy9zeXNm cy9kaXIuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTMu MC1yYzctZmFzdC5vcmlnL2ZzL3N5c2ZzL2Rpci5jCTIwMTEtMDctMTggMjA6 MDY6MjQuMDAwMDAwMDAwICswMjAwDQorKysgbGludXgtMy4wLXJjNy1mYXN0 L2ZzL3N5c2ZzL2Rpci5jCTIwMTEtMDctMTggMjA6MTY6MDIuMDAwMDAwMDAw ICswMjAwDQpAQCAtNDUsNiArNDUsOSBAQCBzdGF0aWMgdm9pZCBzeXNmc19s aW5rX3NpYmxpbmcoc3RydWN0IHN5DQogCXN0cnVjdCBzeXNmc19kaXJlbnQg KnBhcmVudF9zZCA9IHNkLT5zX3BhcmVudDsNCiAJc3RydWN0IHN5c2ZzX2Rp cmVudCAqKnBvczsNCiANCisJc3RydWN0IHJiX25vZGUgKipwOw0KKwlzdHJ1 Y3QgcmJfbm9kZSAqcGFyZW50Ow0KKw0KIAlCVUdfT04oc2QtPnNfc2libGlu Zyk7DQogDQogCWlmIChzeXNmc190eXBlKHNkKSA9PSBTWVNGU19ESVIpDQpA QCAtNjAsNiArNjMsMjYgQEAgc3RhdGljIHZvaWQgc3lzZnNfbGlua19zaWJs aW5nKHN0cnVjdCBzeQ0KIAl9DQogCXNkLT5zX3NpYmxpbmcgPSAqcG9zOw0K IAkqcG9zID0gc2Q7DQorDQorCXAgPSAmcGFyZW50X3NkLT5zX2Rpci5uYW1l X3RyZWUucmJfbm9kZTsNCisJcGFyZW50ID0gTlVMTDsNCisJd2hpbGUgKCpw KSB7DQorCQlpbnQgYzsNCisJCXBhcmVudCA9ICpwOw0KKyNkZWZpbmUgbm9k ZQlyYl9lbnRyeShwYXJlbnQsIHN0cnVjdCBzeXNmc19kaXJlbnQsIG5hbWVf bm9kZSkNCisJCWMgPSBzdHJjbXAoc2QtPnNfbmFtZSwgbm9kZS0+c19uYW1l KTsNCisJCWlmIChjIDwgMCkgew0KKwkJCXAgPSAmbm9kZS0+bmFtZV9ub2Rl LnJiX2xlZnQ7DQorCQl9IGVsc2UgaWYgKGMgPiAwKSB7DQorCQkJcCA9ICZu b2RlLT5uYW1lX25vZGUucmJfcmlnaHQ7DQorCQl9IGVsc2Ugew0KKwkJCXBy aW50ayhLRVJOX0NSSVQgInN5c2ZzOiBpbnNlcnRpbmcgZHVwbGljYXRlIGZp bGVuYW1lICclcydcbiIsIHNkLT5zX25hbWUpOw0KKwkJCUJVRygpOw0KKwkJ fQ0KKyN1bmRlZiBub2RlDQorCX0NCisJcmJfbGlua19ub2RlKCZzZC0+bmFt ZV9ub2RlLCBwYXJlbnQsIHApOw0KKwlyYl9pbnNlcnRfY29sb3IoJnNkLT5u YW1lX25vZGUsICZwYXJlbnRfc2QtPnNfZGlyLm5hbWVfdHJlZSk7DQogfQ0K IA0KIC8qKg0KQEAgLTg3LDYgKzExMCw4IEBAIHN0YXRpYyB2b2lkIHN5c2Zz X3VubGlua19zaWJsaW5nKHN0cnVjdCANCiAJCQlicmVhazsNCiAJCX0NCiAJ fQ0KKw0KKwlyYl9lcmFzZSgmc2QtPm5hbWVfbm9kZSwgJnNkLT5zX3BhcmVu dC0+c19kaXIubmFtZV90cmVlKTsNCiB9DQogDQogLyoqDQpAQCAtNTQ2LDE0 ICs1NzEsMjIgQEAgc3RydWN0IHN5c2ZzX2RpcmVudCAqc3lzZnNfZmluZF9k aXJlbnQocw0KIAkJCQkgICAgICAgY29uc3Qgdm9pZCAqbnMsDQogCQkJCSAg ICAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpuYW1lKQ0KIHsNCi0Jc3RydWN0 IHN5c2ZzX2RpcmVudCAqc2Q7DQorCXN0cnVjdCByYl9ub2RlICpwID0gcGFy ZW50X3NkLT5zX2Rpci5uYW1lX3RyZWUucmJfbm9kZTsNCiANCi0JZm9yIChz ZCA9IHBhcmVudF9zZC0+c19kaXIuY2hpbGRyZW47IHNkOyBzZCA9IHNkLT5z X3NpYmxpbmcpIHsNCi0JCWlmIChucyAmJiBzZC0+c19ucyAmJiAoc2QtPnNf bnMgIT0gbnMpKQ0KLQkJCWNvbnRpbnVlOw0KLQkJaWYgKCFzdHJjbXAoc2Qt PnNfbmFtZSwgbmFtZSkpDQotCQkJcmV0dXJuIHNkOw0KKwl3aGlsZSAocCkg ew0KKwkJaW50IGM7DQorI2RlZmluZSBub2RlCXJiX2VudHJ5KHAsIHN0cnVj dCBzeXNmc19kaXJlbnQsIG5hbWVfbm9kZSkNCisJCWMgPSBzdHJjbXAobmFt ZSwgbm9kZS0+c19uYW1lKTsNCisJCWlmIChjIDwgMCkgew0KKwkJCXAgPSBu b2RlLT5uYW1lX25vZGUucmJfbGVmdDsNCisJCX0gZWxzZSBpZiAoYyA+IDAp IHsNCisJCQlwID0gbm9kZS0+bmFtZV9ub2RlLnJiX3JpZ2h0Ow0KKwkJfSBl bHNlIHsNCisJCQlyZXR1cm4gbm9kZTsNCisJCX0NCisjdW5kZWYgbm9kZQ0K IAl9DQorDQogCXJldHVybiBOVUxMOw0KIH0NCiANCg== --168436252-594179023-1311202610=:4812 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=sysfs-unhack-sibling.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=sysfs-unhack-sibling.patch c3lzZnM6IHJlbW92ZSBzX3NpYmxpbmcgaGFja3MNCg0Kc19zaWJsaW5nIHdh cyB1c2VkIGZvciB0aHJlZSBkaWZmZXJlbnQgcHVycG9zZXM6DQoxKSBhcyBh IGxpbmtlZCBsaXN0IG9mIGVudHJpZXMgaW4gdGhlIGRpcmVjdG9yeQ0KMikg YXMgYSBsaW5rZWQgbGlzdCBvZiBlbnRyaWVzIHRvIGJlIGRlbGV0ZWQNCjMp IGFzIGEgcG9pbnRlciB0byAic3RydWN0IGNvbXBsZXRpb24iDQoNClRoaXMg cGF0Y2ggcmVtb3ZlcyB0aGUgaGFjayBhbmQgaW50cm9kdWNlcyBuZXcgdW5p b24gdSB3aGljaA0KaG9sZHMgcG9pbnRlcnMgZm9yIGNhc2VzIDIpIGFuZCAz KS4NCg0KVGhpcyBjaGFuZ2UgaXMgbmVlZGVkIGZvciB0aGUgZm9sbG93aW5n IHBhdGNoIHRoYXQgcmVtb3ZlcyBzX3NpYmxpbmcgYXQgYWxsDQphbmQgcmVw bGFjZXMgaXQgd2l0aCBhIHJiIHRyZWUuDQoNClNpZ25lZC1vZmYtYnk6IE1p a3VsYXMgUGF0b2NrYSA8bXBhdG9ja2FAcmVkaGF0LmNvbT4NCg0KLS0tDQog ZnMvc3lzZnMvZGlyLmMgICB8ICAgMTkgKysrKysrKy0tLS0tLS0tLS0tLQ0K IGZzL3N5c2ZzL3N5c2ZzLmggfCAgICA1ICsrKysrDQogMiBmaWxlcyBjaGFu Z2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkNCg0KSW5k ZXg6IGxpbnV4LTMuMC1yYzctZmFzdC9mcy9zeXNmcy9kaXIuYw0KPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQ0KLS0tIGxpbnV4LTMuMC1yYzctZmFzdC5vcmln L2ZzL3N5c2ZzL2Rpci5jCTIwMTEtMDctMjAgMjA6NDI6MjUuMDAwMDAwMDAw ICswMjAwDQorKysgbGludXgtMy4wLXJjNy1mYXN0L2ZzL3N5c2ZzL2Rpci5j CTIwMTEtMDctMjAgMjA6NTU6MTUuMDAwMDAwMDAwICswMjAwDQpAQCAtMTU3 LDcgKzE1Nyw2IEBAIHN0cnVjdCBzeXNmc19kaXJlbnQgKnN5c2ZzX2dldF9h Y3RpdmUoc3QNCiAgKi8NCiB2b2lkIHN5c2ZzX3B1dF9hY3RpdmUoc3RydWN0 IHN5c2ZzX2RpcmVudCAqc2QpDQogew0KLQlzdHJ1Y3QgY29tcGxldGlvbiAq Y21wbDsNCiAJaW50IHY7DQogDQogCWlmICh1bmxpa2VseSghc2QpKQ0KQEAg LTE2OSwxMCArMTY4LDkgQEAgdm9pZCBzeXNmc19wdXRfYWN0aXZlKHN0cnVj dCBzeXNmc19kaXJlbg0KIAkJcmV0dXJuOw0KIA0KIAkvKiBhdG9taWNfZGVj X3JldHVybigpIGlzIGEgbWIoKSwgd2UnbGwgYWx3YXlzIHNlZSB0aGUgdXBk YXRlZA0KLQkgKiBzZC0+c19zaWJsaW5nLg0KKwkgKiBzZC0+dS5jb21wbGV0 aW9uLg0KIAkgKi8NCi0JY21wbCA9ICh2b2lkICopc2QtPnNfc2libGluZzsN Ci0JY29tcGxldGUoY21wbCk7DQorCWNvbXBsZXRlKHNkLT51LmNvbXBsZXRp b24pOw0KIH0NCiANCiAvKioNCkBAIC0xODYsMTYgKzE4NCwxNiBAQCBzdGF0 aWMgdm9pZCBzeXNmc19kZWFjdGl2YXRlKHN0cnVjdCBzeXNmDQogCURFQ0xB UkVfQ09NUExFVElPTl9PTlNUQUNLKHdhaXQpOw0KIAlpbnQgdjsNCiANCi0J QlVHX09OKHNkLT5zX3NpYmxpbmcgfHwgIShzZC0+c19mbGFncyAmIFNZU0ZT X0ZMQUdfUkVNT1ZFRCkpOw0KKwlCVUdfT04oIShzZC0+c19mbGFncyAmIFNZ U0ZTX0ZMQUdfUkVNT1ZFRCkpOw0KIA0KIAlpZiAoIShzeXNmc190eXBlKHNk KSAmIFNZU0ZTX0FDVElWRV9SRUYpKQ0KIAkJcmV0dXJuOw0KIA0KLQlzZC0+ c19zaWJsaW5nID0gKHZvaWQgKikmd2FpdDsNCisJc2QtPnUuY29tcGxldGlv biA9ICh2b2lkICopJndhaXQ7DQogDQogCXJ3c2VtX2FjcXVpcmUoJnNkLT5k ZXBfbWFwLCAwLCAwLCBfUkVUX0lQXyk7DQogCS8qIGF0b21pY19hZGRfcmV0 dXJuKCkgaXMgYSBtYigpLCBwdXRfYWN0aXZlKCkgd2lsbCBhbHdheXMgc2Vl DQotCSAqIHRoZSB1cGRhdGVkIHNkLT5zX3NpYmxpbmcuDQorCSAqIHRoZSB1 cGRhdGVkIHNkLT51LmNvbXBsZXRpb24uDQogCSAqLw0KIAl2ID0gYXRvbWlj X2FkZF9yZXR1cm4oU0RfREVBQ1RJVkFURURfQklBUywgJnNkLT5zX2FjdGl2 ZSk7DQogDQpAQCAtMjA0LDggKzIwMiw2IEBAIHN0YXRpYyB2b2lkIHN5c2Zz X2RlYWN0aXZhdGUoc3RydWN0IHN5c2YNCiAJCXdhaXRfZm9yX2NvbXBsZXRp b24oJndhaXQpOw0KIAl9DQogDQotCXNkLT5zX3NpYmxpbmcgPSBOVUxMOw0K LQ0KIAlsb2NrX2FjcXVpcmVkKCZzZC0+ZGVwX21hcCwgX1JFVF9JUF8pOw0K IAlyd3NlbV9yZWxlYXNlKCZzZC0+ZGVwX21hcCwgMSwgX1JFVF9JUF8pOw0K IH0NCkBAIC01MjEsNyArNTE3LDcgQEAgdm9pZCBzeXNmc19yZW1vdmVfb25l KHN0cnVjdCBzeXNmc19hZGRybQ0KIAl9DQogDQogCXNkLT5zX2ZsYWdzIHw9 IFNZU0ZTX0ZMQUdfUkVNT1ZFRDsNCi0Jc2QtPnNfc2libGluZyA9IGFjeHQt PnJlbW92ZWQ7DQorCXNkLT51LnJlbW92ZWRfbGlzdCA9IGFjeHQtPnJlbW92 ZWQ7DQogCWFjeHQtPnJlbW92ZWQgPSBzZDsNCiB9DQogDQpAQCAtNTQ1LDgg KzU0MSw3IEBAIHZvaWQgc3lzZnNfYWRkcm1fZmluaXNoKHN0cnVjdCBzeXNm c19hZGQNCiAJd2hpbGUgKGFjeHQtPnJlbW92ZWQpIHsNCiAJCXN0cnVjdCBz eXNmc19kaXJlbnQgKnNkID0gYWN4dC0+cmVtb3ZlZDsNCiANCi0JCWFjeHQt PnJlbW92ZWQgPSBzZC0+c19zaWJsaW5nOw0KLQkJc2QtPnNfc2libGluZyA9 IE5VTEw7DQorCQlhY3h0LT5yZW1vdmVkID0gc2QtPnUucmVtb3ZlZF9saXN0 Ow0KIA0KIAkJc3lzZnNfZGVhY3RpdmF0ZShzZCk7DQogCQl1bm1hcF9iaW5f ZmlsZShzZCk7DQpJbmRleDogbGludXgtMy4wLXJjNy1mYXN0L2ZzL3N5c2Zz L3N5c2ZzLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBsaW51eC0z LjAtcmM3LWZhc3Qub3JpZy9mcy9zeXNmcy9zeXNmcy5oCTIwMTEtMDctMjAg MjA6NDI6MTIuMDAwMDAwMDAwICswMjAwDQorKysgbGludXgtMy4wLXJjNy1m YXN0L2ZzL3N5c2ZzL3N5c2ZzLmgJMjAxMS0wNy0yMCAyMDo0Njo1MC4wMDAw MDAwMDAgKzAyMDANCkBAIC02Niw2ICs2NiwxMSBAQCBzdHJ1Y3Qgc3lzZnNf ZGlyZW50IHsNCiANCiAJc3RydWN0IHJiX25vZGUJCW5hbWVfbm9kZTsNCiAN CisJdW5pb24gew0KKwkJc3RydWN0IGNvbXBsZXRpb24JKmNvbXBsZXRpb247 DQorCQlzdHJ1Y3Qgc3lzZnNfZGlyZW50CSpyZW1vdmVkX2xpc3Q7DQorCX0g dTsNCisNCiAJY29uc3Qgdm9pZAkJKnNfbnM7IC8qIG5hbWVzcGFjZSB0YWcg Ki8NCiAJdW5pb24gew0KIAkJc3RydWN0IHN5c2ZzX2VsZW1fZGlyCQlzX2Rp cjsNCg== --168436252-594179023-1311202610=:4812 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=sysfs-inode-tree.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=sysfs-inode-tree.patch c3lzZnM6IHVzZSByYi10cmVlIGZvciBpbm9kZSBudW1iZXIgbG9va3VwDQoN ClRoaXMgcGF0Y2ggbWFrZXMgc3lzZnMgdXNlIHJlZC1ibGFjayB0cmVlIGZv ciBpbm9kZSBudW1iZXIgbG9va3VwLg0KVG9nZXRoZXIgd2l0aCBhIHByZXZp b3VzIHBhdGNoIHRvIHVzZSByZWQtYmxhY2sgdHJlZSBmb3IgbmFtZSBsb29r dXAsDQp0aGlzIHBhdGNoIG1ha2VzIGFsbCBzeXNmcyBsb29rdXBzIHRvIGhh dmUgTyhsb2cgbikgY29tcGxleGl0eS4NCg0KU2lnbmVkLW9mZi1ieTogTWlr dWxhcyBQYXRvY2thIDxtcGF0b2NrYUByZWRoYXQuY29tPg0KDQotLS0NCiBm cy9zeXNmcy9kaXIuYyAgIHwgICA4OSArKysrKysrKysrKysrKysrKysrKysr KysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQogZnMvc3lzZnMv c3lzZnMuaCB8ICAgIDUgKy0tDQogMiBmaWxlcyBjaGFuZ2VkLCA1MiBpbnNl cnRpb25zKCspLCA0MiBkZWxldGlvbnMoLSkNCg0KSW5kZXg6IGxpbnV4LTMu MC1yYzctZmFzdC9mcy9zeXNmcy9kaXIuYw0KPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQ0KLS0tIGxpbnV4LTMuMC1yYzctZmFzdC5vcmlnL2ZzL3N5c2ZzL2Rp ci5jCTIwMTEtMDctMjAgMjA6NTU6MTUuMDAwMDAwMDAwICswMjAwDQorKysg bGludXgtMy4wLXJjNy1mYXN0L2ZzL3N5c2ZzL2Rpci5jCTIwMTEtMDctMjAg MjM6MzA6NDcuMDAwMDAwMDAwICswMjAwDQpAQCAtNDMsMjYgKzQzLDMwIEBA IHN0YXRpYyBERUZJTkVfSURBKHN5c2ZzX2lub19pZGEpOw0KIHN0YXRpYyB2 b2lkIHN5c2ZzX2xpbmtfc2libGluZyhzdHJ1Y3Qgc3lzZnNfZGlyZW50ICpz ZCkNCiB7DQogCXN0cnVjdCBzeXNmc19kaXJlbnQgKnBhcmVudF9zZCA9IHNk LT5zX3BhcmVudDsNCi0Jc3RydWN0IHN5c2ZzX2RpcmVudCAqKnBvczsNCiAN CiAJc3RydWN0IHJiX25vZGUgKipwOw0KIAlzdHJ1Y3QgcmJfbm9kZSAqcGFy ZW50Ow0KIA0KLQlCVUdfT04oc2QtPnNfc2libGluZyk7DQotDQogCWlmIChz eXNmc190eXBlKHNkKSA9PSBTWVNGU19ESVIpDQogCQlwYXJlbnRfc2QtPnNf ZGlyLnN1YmRpcnMrKzsNCiANCi0JLyogU3RvcmUgZGlyZWN0b3J5IGVudHJp ZXMgaW4gb3JkZXIgYnkgaW5vLiAgVGhpcyBhbGxvd3MNCi0JICogcmVhZGRp ciB0byBwcm9wZXJseSByZXN0YXJ0IHdpdGhvdXQgaGF2aW5nIHRvIGFkZCBh DQotCSAqIGN1cnNvciBpbnRvIHRoZSBzX2Rpci5jaGlsZHJlbiBsaXN0Lg0K LQkgKi8NCi0JZm9yIChwb3MgPSAmcGFyZW50X3NkLT5zX2Rpci5jaGlsZHJl bjsgKnBvczsgcG9zID0gJigqcG9zKS0+c19zaWJsaW5nKSB7DQotCQlpZiAo c2QtPnNfaW5vIDwgKCpwb3MpLT5zX2lubykNCi0JCQlicmVhazsNCisJcCA9 ICZwYXJlbnRfc2QtPnNfZGlyLmlub2RlX3RyZWUucmJfbm9kZTsNCisJcGFy ZW50ID0gTlVMTDsNCisJd2hpbGUgKCpwKSB7DQorCQlwYXJlbnQgPSAqcDsN CisjZGVmaW5lIG5vZGUJcmJfZW50cnkocGFyZW50LCBzdHJ1Y3Qgc3lzZnNf ZGlyZW50LCBpbm9kZV9ub2RlKQ0KKwkJaWYgKHNkLT5zX2lubyA8IG5vZGUt PnNfaW5vKSB7DQorCQkJcCA9ICZub2RlLT5pbm9kZV9ub2RlLnJiX2xlZnQ7 DQorCQl9IGVsc2UgaWYgKHNkLT5zX2lubyA+IG5vZGUtPnNfaW5vKSB7DQor CQkJcCA9ICZub2RlLT5pbm9kZV9ub2RlLnJiX3JpZ2h0Ow0KKwkJfSBlbHNl IHsNCisJCQlwcmludGsoS0VSTl9DUklUICJzeXNmczogaW5zZXJ0aW5nIGR1 cGxpY2F0ZSBpbm9kZSAnJWx4J1xuIiwgc2QtPnNfaW5vKTsNCisJCQlCVUco KTsNCisJCX0NCisjdW5kZWYgbm9kZQ0KIAl9DQotCXNkLT5zX3NpYmxpbmcg PSAqcG9zOw0KLQkqcG9zID0gc2Q7DQorCXJiX2xpbmtfbm9kZSgmc2QtPmlu b2RlX25vZGUsIHBhcmVudCwgcCk7DQorCXJiX2luc2VydF9jb2xvcigmc2Qt Pmlub2RlX25vZGUsICZwYXJlbnRfc2QtPnNfZGlyLmlub2RlX3RyZWUpOw0K IA0KIAlwID0gJnBhcmVudF9zZC0+c19kaXIubmFtZV90cmVlLnJiX25vZGU7 DQogCXBhcmVudCA9IE5VTEw7DQpAQCAtOTcsMjAgKzEwMSwxMCBAQCBzdGF0 aWMgdm9pZCBzeXNmc19saW5rX3NpYmxpbmcoc3RydWN0IHN5DQogICovDQog c3RhdGljIHZvaWQgc3lzZnNfdW5saW5rX3NpYmxpbmcoc3RydWN0IHN5c2Zz X2RpcmVudCAqc2QpDQogew0KLQlzdHJ1Y3Qgc3lzZnNfZGlyZW50ICoqcG9z Ow0KLQ0KIAlpZiAoc3lzZnNfdHlwZShzZCkgPT0gU1lTRlNfRElSKQ0KIAkJ c2QtPnNfcGFyZW50LT5zX2Rpci5zdWJkaXJzLS07DQogDQotCWZvciAocG9z ID0gJnNkLT5zX3BhcmVudC0+c19kaXIuY2hpbGRyZW47ICpwb3M7DQotCSAg ICAgcG9zID0gJigqcG9zKS0+c19zaWJsaW5nKSB7DQotCQlpZiAoKnBvcyA9 PSBzZCkgew0KLQkJCSpwb3MgPSBzZC0+c19zaWJsaW5nOw0KLQkJCXNkLT5z X3NpYmxpbmcgPSBOVUxMOw0KLQkJCWJyZWFrOw0KLQkJfQ0KLQl9DQotDQor CXJiX2VyYXNlKCZzZC0+aW5vZGVfbm9kZSwgJnNkLT5zX3BhcmVudC0+c19k aXIuaW5vZGVfdHJlZSk7DQogCXJiX2VyYXNlKCZzZC0+bmFtZV9ub2RlLCAm c2QtPnNfcGFyZW50LT5zX2Rpci5uYW1lX3RyZWUpOw0KIH0NCiANCkBAIC03 NzgsMjEgKzc3MiwxOSBAQCB2b2lkIHN5c2ZzX3JlbW92ZV9zdWJkaXIoc3Ry dWN0IHN5c2ZzX2RpDQogc3RhdGljIHZvaWQgX19zeXNmc19yZW1vdmVfZGly KHN0cnVjdCBzeXNmc19kaXJlbnQgKmRpcl9zZCkNCiB7DQogCXN0cnVjdCBz eXNmc19hZGRybV9jeHQgYWN4dDsNCi0Jc3RydWN0IHN5c2ZzX2RpcmVudCAq KnBvczsNCisJc3RydWN0IHJiX25vZGUgKnBvczsNCiANCiAJaWYgKCFkaXJf c2QpDQogCQlyZXR1cm47DQogDQogCXByX2RlYnVnKCJzeXNmcyAlczogcmVt b3ZpbmcgZGlyXG4iLCBkaXJfc2QtPnNfbmFtZSk7DQogCXN5c2ZzX2FkZHJt X3N0YXJ0KCZhY3h0LCBkaXJfc2QpOw0KLQlwb3MgPSAmZGlyX3NkLT5zX2Rp ci5jaGlsZHJlbjsNCi0Jd2hpbGUgKCpwb3MpIHsNCi0JCXN0cnVjdCBzeXNm c19kaXJlbnQgKnNkID0gKnBvczsNCi0NCisJcG9zID0gcmJfZmlyc3QoJmRp cl9zZC0+c19kaXIuaW5vZGVfdHJlZSk7DQorCXdoaWxlIChwb3MpIHsNCisJ CXN0cnVjdCBzeXNmc19kaXJlbnQgKnNkID0gcmJfZW50cnkocG9zLCBzdHJ1 Y3Qgc3lzZnNfZGlyZW50LCBpbm9kZV9ub2RlKTsNCisJCXBvcyA9IHJiX25l eHQocG9zKTsNCiAJCWlmIChzeXNmc190eXBlKHNkKSAhPSBTWVNGU19ESVIp DQogCQkJc3lzZnNfcmVtb3ZlX29uZSgmYWN4dCwgc2QpOw0KLQkJZWxzZQ0K LQkJCXBvcyA9ICYoKnBvcyktPnNfc2libGluZzsNCiAJfQ0KIAlzeXNmc19h ZGRybV9maW5pc2goJmFjeHQpOw0KIA0KQEAgLTkxNSwxMiArOTA3LDI4IEBA IHN0YXRpYyBzdHJ1Y3Qgc3lzZnNfZGlyZW50ICpzeXNmc19kaXJfcG8NCiAJ CQlwb3MgPSBOVUxMOw0KIAl9DQogCWlmICghcG9zICYmIChpbm8gPiAxKSAm JiAoaW5vIDwgSU5UX01BWCkpIHsNCi0JCXBvcyA9IHBhcmVudF9zZC0+c19k aXIuY2hpbGRyZW47DQotCQl3aGlsZSAocG9zICYmIChpbm8gPiBwb3MtPnNf aW5vKSkNCi0JCQlwb3MgPSBwb3MtPnNfc2libGluZzsNCisJCXN0cnVjdCBy Yl9ub2RlICpwID0gcGFyZW50X3NkLT5zX2Rpci5pbm9kZV90cmVlLnJiX25v ZGU7DQorCQl3aGlsZSAocCkgew0KKyNkZWZpbmUgbm9kZQlyYl9lbnRyeShw LCBzdHJ1Y3Qgc3lzZnNfZGlyZW50LCBpbm9kZV9ub2RlKQ0KKwkJCWlmIChp bm8gPCBub2RlLT5zX2lubykgew0KKwkJCQlwb3MgPSBub2RlOw0KKwkJCQlw ID0gbm9kZS0+aW5vZGVfbm9kZS5yYl9sZWZ0Ow0KKwkJCX0gZWxzZSBpZiAo bm9kZS0+c19pbm8gPiBpbm8pIHsNCisJCQkJcCA9IG5vZGUtPmlub2RlX25v ZGUucmJfcmlnaHQ7DQorCQkJfSBlbHNlIHsNCisJCQkJcG9zID0gbm9kZTsN CisJCQkJYnJlYWs7DQorCQkJfQ0KKyN1bmRlZiBub2RlDQorCQl9DQorCX0N CisJd2hpbGUgKHBvcyAmJiBwb3MtPnNfbnMgJiYgcG9zLT5zX25zICE9IG5z KSB7DQorCQlzdHJ1Y3QgcmJfbm9kZSAqcCA9IHJiX25leHQoJnBvcy0+aW5v ZGVfbm9kZSk7DQorCQlpZiAoIXApDQorCQkJcG9zID0gTlVMTDsNCisJCWVs c2UNCisJCQlwb3MgPSByYl9lbnRyeShwLCBzdHJ1Y3Qgc3lzZnNfZGlyZW50 LCBpbm9kZV9ub2RlKTsNCiAJfQ0KLQl3aGlsZSAocG9zICYmIHBvcy0+c19u cyAmJiBwb3MtPnNfbnMgIT0gbnMpDQotCQlwb3MgPSBwb3MtPnNfc2libGlu ZzsNCiAJcmV0dXJuIHBvczsNCiB9DQogDQpAQCAtOTI4LDEwICs5MzYsMTMg QEAgc3RhdGljIHN0cnVjdCBzeXNmc19kaXJlbnQgKnN5c2ZzX2Rpcl9uZQ0K IAlzdHJ1Y3Qgc3lzZnNfZGlyZW50ICpwYXJlbnRfc2QsCWlub190IGlubywg c3RydWN0IHN5c2ZzX2RpcmVudCAqcG9zKQ0KIHsNCiAJcG9zID0gc3lzZnNf ZGlyX3BvcyhucywgcGFyZW50X3NkLCBpbm8sIHBvcyk7DQotCWlmIChwb3Mp DQotCQlwb3MgPSBwb3MtPnNfc2libGluZzsNCi0Jd2hpbGUgKHBvcyAmJiBw b3MtPnNfbnMgJiYgcG9zLT5zX25zICE9IG5zKQ0KLQkJcG9zID0gcG9zLT5z X3NpYmxpbmc7DQorCWlmIChwb3MpIGRvIHsNCisJCXN0cnVjdCByYl9ub2Rl ICpwID0gcmJfbmV4dCgmcG9zLT5pbm9kZV9ub2RlKTsNCisJCWlmICghcCkN CisJCQlwb3MgPSBOVUxMOw0KKwkJZWxzZQ0KKwkJCXBvcyA9IHJiX2VudHJ5 KHAsIHN0cnVjdCBzeXNmc19kaXJlbnQsIGlub2RlX25vZGUpOw0KKwl9IHdo aWxlIChwb3MgJiYgcG9zLT5zX25zICYmIHBvcy0+c19ucyAhPSBucyk7DQog CXJldHVybiBwb3M7DQogfQ0KIA0KSW5kZXg6IGxpbnV4LTMuMC1yYzctZmFz dC9mcy9zeXNmcy9zeXNmcy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot LS0gbGludXgtMy4wLXJjNy1mYXN0Lm9yaWcvZnMvc3lzZnMvc3lzZnMuaAky MDExLTA3LTIwIDIwOjQ2OjUwLjAwMDAwMDAwMCArMDIwMA0KKysrIGxpbnV4 LTMuMC1yYzctZmFzdC9mcy9zeXNmcy9zeXNmcy5oCTIwMTEtMDctMjAgMjE6 MDA6MjguMDAwMDAwMDAwICswMjAwDQpAQCAtMTgsMTEgKzE4LDEwIEBAIHN0 cnVjdCBzeXNmc19vcGVuX2RpcmVudDsNCiAvKiB0eXBlLXNwZWNpZmljIHN0 cnVjdHVyZXMgZm9yIHN5c2ZzX2RpcmVudC0+c18qIHVuaW9uIG1lbWJlcnMg Ki8NCiBzdHJ1Y3Qgc3lzZnNfZWxlbV9kaXIgew0KIAlzdHJ1Y3Qga29iamVj dAkJKmtvYmo7DQotCS8qIGNoaWxkcmVuIGxpc3Qgc3RhcnRzIGhlcmUgYW5k IGdvZXMgdGhyb3VnaCBzZC0+c19zaWJsaW5nICovDQotCXN0cnVjdCBzeXNm c19kaXJlbnQJKmNoaWxkcmVuOw0KIA0KIAl1bnNpZ25lZCBsb25nCQlzdWJk aXJzOw0KIA0KKwlzdHJ1Y3QgcmJfcm9vdAkJaW5vZGVfdHJlZTsNCiAJc3Ry dWN0IHJiX3Jvb3QJCW5hbWVfdHJlZTsNCiB9Ow0KIA0KQEAgLTYxLDkgKzYw LDkgQEAgc3RydWN0IHN5c2ZzX2RpcmVudCB7DQogCXN0cnVjdCBsb2NrZGVw X21hcAlkZXBfbWFwOw0KICNlbmRpZg0KIAlzdHJ1Y3Qgc3lzZnNfZGlyZW50 CSpzX3BhcmVudDsNCi0Jc3RydWN0IHN5c2ZzX2RpcmVudAkqc19zaWJsaW5n Ow0KIAljb25zdCBjaGFyCQkqc19uYW1lOw0KIA0KKwlzdHJ1Y3QgcmJfbm9k ZQkJaW5vZGVfbm9kZTsNCiAJc3RydWN0IHJiX25vZGUJCW5hbWVfbm9kZTsN CiANCiAJdW5pb24gew0K --168436252-594179023-1311202610=:4812--