From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jaegeuk Kim Subject: Re: [PATCH 2/5 V2] f2fs: add unlikely() macro for compiler optimization Date: Fri, 06 Dec 2013 13:12:03 +0900 Message-ID: <1386303123.2101.18.camel@kjgkr> References: <000001cef19a$a4bed330$ee3c7990$@samsung.com> Reply-To: jaegeuk.kim@samsung.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from sog-mx-4.v43.ch3.sourceforge.com ([172.29.43.194] helo=mx.sourceforge.net) by sfs-ml-4.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1Vommu-0001LR-Uq for linux-f2fs-devel@lists.sourceforge.net; Fri, 06 Dec 2013 04:13:13 +0000 Received: from mailout3.samsung.com ([203.254.224.33]) by sog-mx-4.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-MD5:128) (Exim 4.76) id 1Vomms-00088o-KS for linux-f2fs-devel@lists.sourceforge.net; Fri, 06 Dec 2013 04:13:12 +0000 Received: from epcpsbgr1.samsung.com (u141.gpu120.samsung.co.kr [203.254.230.141]) by mailout3.samsung.com (Oracle Communications Messaging Server 7u4-24.01 (7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0MXD00K3RADQNYC0@mailout3.samsung.com> for linux-f2fs-devel@lists.sourceforge.net; Fri, 06 Dec 2013 13:13:02 +0900 (KST) In-reply-to: <000001cef19a$a4bed330$ee3c7990$@samsung.com> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net To: Chao Yu Cc: linux-fsdevel@vger.kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net SGksCgpKdXN0IGluIGNhc2UsIGlmIHlvdSBhZ3JlZWQgdGhlIGZvbGxvd2luZyBjb21tZW50cywg SSdsbCBmaXggdGhvc2UgYW5kCm1lcmdlIHRoZSBwYXRjaCBieSBteXNlbGYuClRoYW5rcywKCjIw MTMtMTItMDUgKOuqqSksIDE3OjE1ICswODAwLCBDaGFvIFl1Ogo+IEFzIHdlIGtub3csIHNvbWUg b2Ygb3VyIGJyYW5jaCBjb25kaXRpb24gd2lsbCByYXJlbHkgYmUgdHJ1ZS4gU28gd2UgY291bGQg YWRkCj4gJ3VubGlrZWx5JyB0byBsZXQgY29tcGlsZXIgb3B0aW1pemUgdGhlc2UgY29kZSwgYnkg dGhpcyB3YXkgd2UgY291bGQgZHJvcAo+IHVubmVlZGVkICdqdW1wJyBhc3NlbWJsZSBjb2RlIHRv IGltcHJvdmUgcGVyZm9ybWFuY2UuCj4gCj4gY2hhbmdlIGxvZzoKPiAgbyBhZGQgKnVubGlrZWx5 KiBhcyBtYW55IGFzIHBvc3NpYmxlIGFjcm9zcyB0aGUgd2hvbGUgc291cmNlIGZpbGVzIGF0IG9u Y2UKPiAgICBzdWdnZXN0ZWQgYnkgSmFlZ2V1ayBLaW0uCj4gCj4gU3VnZ2VzdGVkLWJ5OiBKYWVn ZXVrIEtpbSA8amFlZ2V1ay5raW1Ac2Ftc3VuZy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogQ2hhbyBZ dSA8Y2hhbzIueXVAc2Ftc3VuZy5jb20+Cj4gLS0tCj4gIGZzL2YyZnMvY2hlY2twb2ludC5jIHwg ICAxMCArKysrKy0tLS0tCj4gIGZzL2YyZnMvZGF0YS5jICAgICAgIHwgICAgNCArKy0tCj4gIGZz L2YyZnMvZGlyLmMgICAgICAgIHwgICAgNCArKy0tCj4gIGZzL2YyZnMvZjJmcy5oICAgICAgIHwg ICAgOCArKysrLS0tLQo+ICBmcy9mMmZzL25vZGUuYyAgICAgICB8ICAgMTYgKysrKysrKystLS0t LS0tLQo+ICBmcy9mMmZzL3NlZ21lbnQuaCAgICB8ICAgIDIgKy0KPiAgNiBmaWxlcyBjaGFuZ2Vk LCAyMiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvZnMv ZjJmcy9jaGVja3BvaW50LmMgYi9mcy9mMmZzL2NoZWNrcG9pbnQuYwo+IGluZGV4IDM4ZjRhMjI0 Li42NTgwODA4IDEwMDY0NAo+IC0tLSBhL2ZzL2YyZnMvY2hlY2twb2ludC5jCj4gKysrIGIvZnMv ZjJmcy9jaGVja3BvaW50LmMKPiBAQCAtODIsOCArODIsOCBAQCBzdGF0aWMgaW50IGYyZnNfd3Jp dGVfbWV0YV9wYWdlKHN0cnVjdCBwYWdlICpwYWdlLAo+ICAJc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpID0gRjJGU19TQihpbm9kZS0+aV9zYik7Cj4gIAo+ICAJLyogU2hvdWxkIG5vdCB3cml0ZSBh bnkgbWV0YSBwYWdlcywgaWYgYW55IElPIGVycm9yIHdhcyBvY2N1cnJlZCAqLwo+IC0JaWYgKHdi Yy0+Zm9yX3JlY2xhaW0gfHwgc2JpLT5wb3JfZG9pbmcgfHwKPiAtCQkJaXNfc2V0X2NrcHRfZmxh Z3MoRjJGU19DS1BUKHNiaSksIENQX0VSUk9SX0ZMQUcpKSB7Cj4gKwlpZiAodW5saWtlbHkod2Jj LT5mb3JfcmVjbGFpbSB8fCBzYmktPnBvcl9kb2luZyB8fAo+ICsJCQlpc19zZXRfY2twdF9mbGFn cyhGMkZTX0NLUFQoc2JpKSwgQ1BfRVJST1JfRkxBRykpKSB7CgoJaWYgKHVubGlrZWx5KHNiaS0+ cG9yX2RvaW5nIHx8IGlzX3NldF9ja3B0X2ZsYWdzKEYyRlNfQ0tQVChzYmkpLApDUF9FUlJPUl9G TEFHKSkpCgkJZ290byByZWRpcnR5X291dDsKCWlmICh3YmMtPmZvcl9yZWNsYWltKQoJCWdvdG8g cmVkaXJ0eV9vdXQ7CgpyZWRpcnR5X291dDoKPiAgCQlkZWNfcGFnZV9jb3VudChzYmksIEYyRlNf RElSVFlfTUVUQSk7Cj4gIAkJd2JjLT5wYWdlc19za2lwcGVkKys7Cj4gIAkJc2V0X3BhZ2VfZGly dHkocGFnZSk7Cj4gQEAgLTEzNyw3ICsxMzcsNyBAQCBsb25nIHN5bmNfbWV0YV9wYWdlcyhzdHJ1 Y3QgZjJmc19zYl9pbmZvICpzYmksIGVudW0gcGFnZV90eXBlIHR5cGUsCj4gIAkJbnJfcGFnZXMg PSBwYWdldmVjX2xvb2t1cF90YWcoJnB2ZWMsIG1hcHBpbmcsICZpbmRleCwKPiAgCQkJCVBBR0VD QUNIRV9UQUdfRElSVFksCj4gIAkJCQltaW4oZW5kIC0gaW5kZXgsIChwZ29mZl90KVBBR0VWRUNf U0laRS0xKSArIDEpOwo+IC0JCWlmIChucl9wYWdlcyA9PSAwKQo+ICsJCWlmICh1bmxpa2VseShu cl9wYWdlcyA9PSAwKSkKPiAgCQkJYnJlYWs7Cj4gIAo+ICAJCWZvciAoaSA9IDA7IGkgPCBucl9w YWdlczsgaSsrKSB7Cj4gQEAgLTE1MCw3ICsxNTAsNyBAQCBsb25nIHN5bmNfbWV0YV9wYWdlcyhz dHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGVudW0gcGFnZV90eXBlIHR5cGUsCj4gIAkJCQl1bmxv Y2tfcGFnZShwYWdlKTsKPiAgCQkJCWJyZWFrOwo+ICAJCQl9Cj4gLQkJCWlmIChud3JpdHRlbisr ID49IG5yX3RvX3dyaXRlKQo+ICsJCQlpZiAodW5saWtlbHkobndyaXR0ZW4rKyA+PSBucl90b193 cml0ZSkpCgpud3JpdHRlbisrOwoKaWYgKHVubGlrZWx5KG53cml0dGVuID49IG5yX3RvX3dyaXRl KSkKCgo+ICAJCQkJYnJlYWs7Cj4gIAkJfQo+ICAJCXBhZ2V2ZWNfcmVsZWFzZSgmcHZlYyk7Cj4g QEAgLTIwMCw3ICsyMDAsNyBAQCBpbnQgYWNxdWlyZV9vcnBoYW5faW5vZGUoc3RydWN0IGYyZnNf c2JfaW5mbyAqc2JpKQo+ICAJbWF4X29ycGhhbnMgPSAoc2JpLT5ibG9ja3NfcGVyX3NlZyAtIDIg LSBOUl9DVVJTRUdfVFlQRSkKPiAgCQkJCSogRjJGU19PUlBIQU5TX1BFUl9CTE9DSzsKPiAgCW11 dGV4X2xvY2soJnNiaS0+b3JwaGFuX2lub2RlX211dGV4KTsKPiAtCWlmIChzYmktPm5fb3JwaGFu cyA+PSBtYXhfb3JwaGFucykKPiArCWlmICh1bmxpa2VseShzYmktPm5fb3JwaGFucyA+PSBtYXhf b3JwaGFucykpCj4gIAkJZXJyID0gLUVOT1NQQzsKPiAgCWVsc2UKPiAgCQlzYmktPm5fb3JwaGFu cysrOwo+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2RhdGEuYyBiL2ZzL2YyZnMvZGF0YS5jCj4gaW5k ZXggNGUyZmMwOS4uMmNlNWE5ZSAxMDA2NDQKPiAtLS0gYS9mcy9mMmZzL2RhdGEuYwo+ICsrKyBi L2ZzL2YyZnMvZGF0YS5jCj4gQEAgLTI1MSw3ICsyNTEsNyBAQCBpbnQgcmVzZXJ2ZV9uZXdfYmxv Y2soc3RydWN0IGRub2RlX29mX2RhdGEgKmRuKQo+ICAKPiAgCWlmIChpc19pbm9kZV9mbGFnX3Nl dChGMkZTX0koZG4tPmlub2RlKSwgRklfTk9fQUxMT0MpKQo+ICAJCXJldHVybiAtRVBFUk07Cj4g LQlpZiAoIWluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwgMSkpCj4gKwlpZiAo dW5saWtlbHkoIWluY192YWxpZF9ibG9ja19jb3VudChzYmksIGRuLT5pbm9kZSwgMSkpKQo+ICAJ CXJldHVybiAtRU5PU1BDOwo+ICAKPiAgCXRyYWNlX2YyZnNfcmVzZXJ2ZV9uZXdfYmxvY2soZG4t Pmlub2RlLCBkbi0+bmlkLCBkbi0+b2ZzX2luX25vZGUpOwo+IEBAIC03MTEsNyArNzExLDcgQEAg c3RhdGljIGludCBmMmZzX3dyaXRlX2RhdGFfcGFnZShzdHJ1Y3QgcGFnZSAqcGFnZSwKPiAgCj4g IAl6ZXJvX3VzZXJfc2VnbWVudChwYWdlLCBvZmZzZXQsIFBBR0VfQ0FDSEVfU0laRSk7Cj4gIHdy aXRlOgo+IC0JaWYgKHNiaS0+cG9yX2RvaW5nKSB7Cj4gKwlpZiAodW5saWtlbHkoc2JpLT5wb3Jf ZG9pbmcpKSB7Cj4gIAkJZXJyID0gQU9QX1dSSVRFUEFHRV9BQ1RJVkFURTsKPiAgCQlnb3RvIHJl ZGlydHlfb3V0Owo+ICAJfQo+IGRpZmYgLS1naXQgYS9mcy9mMmZzL2Rpci5jIGIvZnMvZjJmcy9k aXIuYwo+IGluZGV4IDU5NGZjMWIuLjBjYzI2YmEgMTAwNjQ0Cj4gLS0tIGEvZnMvZjJmcy9kaXIu Ywo+ICsrKyBiL2ZzL2YyZnMvZGlyLmMKPiBAQCAtMTkwLDcgKzE5MCw3IEBAIHN0cnVjdCBmMmZz X2Rpcl9lbnRyeSAqZjJmc19maW5kX2VudHJ5KHN0cnVjdCBpbm9kZSAqZGlyLAo+ICAJdW5zaWdu ZWQgaW50IG1heF9kZXB0aDsKPiAgCXVuc2lnbmVkIGludCBsZXZlbDsKPiAgCj4gLQlpZiAobmFt ZWxlbiA+IEYyRlNfTkFNRV9MRU4pCj4gKwlpZiAodW5saWtlbHkobmFtZWxlbiA+IEYyRlNfTkFN RV9MRU4pKQo+ICAJCXJldHVybiBOVUxMOwo+ICAKPiAgCWlmIChucGFnZXMgPT0gMCkKPiBAQCAt NDYxLDcgKzQ2MSw3IEBAIGludCBfX2YyZnNfYWRkX2xpbmsoc3RydWN0IGlub2RlICpkaXIsIGNv bnN0IHN0cnVjdCBxc3RyICpuYW1lLCBzdHJ1Y3QgaW5vZGUgKmluCj4gIAl9Cj4gIAo+ICBzdGFy dDoKPiAtCWlmIChjdXJyZW50X2RlcHRoID09IE1BWF9ESVJfSEFTSF9ERVBUSCkKPiArCWlmICh1 bmxpa2VseShjdXJyZW50X2RlcHRoID09IE1BWF9ESVJfSEFTSF9ERVBUSCkpCj4gIAkJcmV0dXJu IC1FTk9TUEM7Cj4gIAo+ICAJLyogSW5jcmVhc2UgdGhlIGRlcHRoLCBpZiByZXF1aXJlZCAqLwo+ IGRpZmYgLS1naXQgYS9mcy9mMmZzL2YyZnMuaCBiL2ZzL2YyZnMvZjJmcy5oCj4gaW5kZXggMTBl Y2EwMi4uZGNhMThiMyAxMDA2NDQKPiAtLS0gYS9mcy9mMmZzL2YyZnMuaAo+ICsrKyBiL2ZzL2Yy ZnMvZjJmcy5oCj4gQEAgLTU3NCw3ICs1NzQsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZjJmc191 bmxvY2tfYWxsKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSkKPiAgc3RhdGljIGlubGluZSBpbnQg Y2hlY2tfbmlkX3JhbmdlKHN0cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwgbmlkX3QgbmlkKQo+ICB7 Cj4gIAlXQVJOX09OKChuaWQgPj0gTk1fSShzYmkpLT5tYXhfbmlkKSk7Cj4gLQlpZiAobmlkID49 IE5NX0koc2JpKS0+bWF4X25pZCkKPiArCWlmICh1bmxpa2VseShuaWQgPj0gTk1fSShzYmkpLT5t YXhfbmlkKSkKPiAgCQlyZXR1cm4gLUVJTlZBTDsKPiAgCXJldHVybiAwOwo+ICB9Cj4gQEAgLTYw MCw3ICs2MDAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgaW5jX3ZhbGlkX2Jsb2NrX2NvdW50KHN0 cnVjdCBmMmZzX3NiX2luZm8gKnNiaSwKPiAgCXNwaW5fbG9jaygmc2JpLT5zdGF0X2xvY2spOwo+ ICAJdmFsaWRfYmxvY2tfY291bnQgPQo+ICAJCXNiaS0+dG90YWxfdmFsaWRfYmxvY2tfY291bnQg KyAoYmxvY2tfdCljb3VudDsKPiAtCWlmICh2YWxpZF9ibG9ja19jb3VudCA+IHNiaS0+dXNlcl9i bG9ja19jb3VudCkgewo+ICsJaWYgKHVubGlrZWx5KHZhbGlkX2Jsb2NrX2NvdW50ID4gc2JpLT51 c2VyX2Jsb2NrX2NvdW50KSkgewo+ICAJCXNwaW5fdW5sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4g IAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+IEBAIC03MTksMTMgKzcxOSwxMyBAQCBzdGF0aWMgaW5s aW5lIGJvb2wgaW5jX3ZhbGlkX25vZGVfY291bnQoc3RydWN0IGYyZnNfc2JfaW5mbyAqc2JpLAo+ ICAJc3Bpbl9sb2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gIAo+ICAJdmFsaWRfYmxvY2tfY291bnQg PSBzYmktPnRvdGFsX3ZhbGlkX2Jsb2NrX2NvdW50ICsgMTsKPiAtCWlmICh2YWxpZF9ibG9ja19j b3VudCA+IHNiaS0+dXNlcl9ibG9ja19jb3VudCkgewo+ICsJaWYgKHVubGlrZWx5KHZhbGlkX2Js b2NrX2NvdW50ID4gc2JpLT51c2VyX2Jsb2NrX2NvdW50KSkgewo+ICAJCXNwaW5fdW5sb2NrKCZz YmktPnN0YXRfbG9jayk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+ICAKPiAgCXZhbGlkX25v ZGVfY291bnQgPSBzYmktPnRvdGFsX3ZhbGlkX25vZGVfY291bnQgKyAxOwo+IC0JaWYgKHZhbGlk X25vZGVfY291bnQgPiBzYmktPnRvdGFsX25vZGVfY291bnQpIHsKPiArCWlmICh1bmxpa2VseSh2 YWxpZF9ub2RlX2NvdW50ID4gc2JpLT50b3RhbF9ub2RlX2NvdW50KSkgewo+ICAJCXNwaW5fdW5s b2NrKCZzYmktPnN0YXRfbG9jayk7Cj4gIAkJcmV0dXJuIGZhbHNlOwo+ICAJfQo+IGRpZmYgLS1n aXQgYS9mcy9mMmZzL25vZGUuYyBiL2ZzL2YyZnMvbm9kZS5jCj4gaW5kZXggNWUyNTg4Zi4uNDhj YmY3NiAxMDA2NDQKPiAtLS0gYS9mcy9mMmZzL25vZGUuYwo+ICsrKyBiL2ZzL2YyZnMvbm9kZS5j Cj4gQEAgLTk0LDcgKzk0LDcgQEAgc3RhdGljIHZvaWQgcmFfbmF0X3BhZ2VzKHN0cnVjdCBmMmZz X3NiX2luZm8gKnNiaSwgaW50IG5pZCkKPiAgCWludCBpOwo+ICAKPiAgCWZvciAoaSA9IDA7IGkg PCBGUkVFX05JRF9QQUdFUzsgaSsrLCBuaWQgKz0gTkFUX0VOVFJZX1BFUl9CTE9DSykgewo+IC0J CWlmIChuaWQgPj0gbm1faS0+bWF4X25pZCkKPiArCQlpZiAodW5saWtlbHkobmlkID49IG5tX2kt Pm1heF9uaWQpKQo+ICAJCQluaWQgPSAwOwo+ICAJCWluZGV4ID0gY3VycmVudF9uYXRfYWRkcihz YmksIG5pZCk7Cj4gIAo+IEBAIC0xMTYwLDcgKzExNjAsNyBAQCBpbnQgd2FpdF9vbl9ub2RlX3Bh Z2VzX3dyaXRlYmFjayhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIG5pZF90IGlubykKPiAgCQkJ c3RydWN0IHBhZ2UgKnBhZ2UgPSBwdmVjLnBhZ2VzW2ldOwo+ICAKPiAgCQkJLyogdW50aWwgcmFk aXggdHJlZSBsb29rdXAgYWNjZXB0cyBlbmRfaW5kZXggKi8KPiAtCQkJaWYgKHBhZ2UtPmluZGV4 ID4gZW5kKQo+ICsJCQlpZiAodW5saWtlbHkocGFnZS0+aW5kZXggPiBlbmQpKQo+ICAJCQkJY29u dGludWU7Cj4gIAo+ICAJCQlpZiAoaW5vICYmIGlub19vZl9ub2RlKHBhZ2UpID09IGlubykgewo+ IEBAIC0xMTkwLDcgKzExOTAsNyBAQCBzdGF0aWMgaW50IGYyZnNfd3JpdGVfbm9kZV9wYWdlKHN0 cnVjdCBwYWdlICpwYWdlLAo+ICAJYmxvY2tfdCBuZXdfYWRkcjsKPiAgCXN0cnVjdCBub2RlX2lu Zm8gbmk7Cj4gIAo+IC0JaWYgKHNiaS0+cG9yX2RvaW5nKQo+ICsJaWYgKHVubGlrZWx5KHNiaS0+ cG9yX2RvaW5nKSkKPiAgCQlnb3RvIHJlZGlydHlfb3V0Owo+ICAKPiAgCXdhaXRfb25fcGFnZV93 cml0ZWJhY2socGFnZSk7Cj4gQEAgLTEzMjYsNyArMTMyNiw3IEBAIHN0YXRpYyBpbnQgYWRkX2Zy ZWVfbmlkKHN0cnVjdCBmMmZzX25tX2luZm8gKm5tX2ksIG5pZF90IG5pZCwgYm9vbCBidWlsZCkK PiAgCQlyZXR1cm4gLTE7Cj4gIAo+ICAJLyogMCBuaWQgc2hvdWxkIG5vdCBiZSB1c2VkICovCj4g LQlpZiAobmlkID09IDApCj4gKwlpZiAodW5saWtlbHkobmlkID09IDApKQo+ICAJCXJldHVybiAw Owo+ICAKPiAgCWlmIChidWlsZCkgewo+IEBAIC0xMzc5LDcgKzEzNzksNyBAQCBzdGF0aWMgdm9p ZCBzY2FuX25hdF9wYWdlKHN0cnVjdCBmMmZzX25tX2luZm8gKm5tX2ksCj4gIAo+ICAJZm9yICg7 IGkgPCBOQVRfRU5UUllfUEVSX0JMT0NLOyBpKyssIHN0YXJ0X25pZCsrKSB7Cj4gIAo+IC0JCWlm IChzdGFydF9uaWQgPj0gbm1faS0+bWF4X25pZCkKPiArCQlpZiAodW5saWtlbHkoc3RhcnRfbmlk ID49IG5tX2ktPm1heF9uaWQpKQo+ICAJCQlicmVhazsKPiAgCj4gIAkJYmxrX2FkZHIgPSBsZTMy X3RvX2NwdShuYXRfYmxrLT5lbnRyaWVzW2ldLmJsb2NrX2FkZHIpOwo+IEBAIC0xNDEzLDcgKzE0 MTMsNyBAQCBzdGF0aWMgdm9pZCBidWlsZF9mcmVlX25pZHMoc3RydWN0IGYyZnNfc2JfaW5mbyAq c2JpKQo+ICAJCWYyZnNfcHV0X3BhZ2UocGFnZSwgMSk7Cj4gIAo+ICAJCW5pZCArPSAoTkFUX0VO VFJZX1BFUl9CTE9DSyAtIChuaWQgJSBOQVRfRU5UUllfUEVSX0JMT0NLKSk7Cj4gLQkJaWYgKG5p ZCA+PSBubV9pLT5tYXhfbmlkKQo+ICsJCWlmICh1bmxpa2VseShuaWQgPj0gbm1faS0+bWF4X25p ZCkpCj4gIAkJCW5pZCA9IDA7Cj4gIAo+ICAJCWlmIChpKysgPT0gRlJFRV9OSURfUEFHRVMpCj4g QEAgLTE0NDcsNyArMTQ0Nyw3IEBAIGJvb2wgYWxsb2NfbmlkKHN0cnVjdCBmMmZzX3NiX2luZm8g KnNiaSwgbmlkX3QgKm5pZCkKPiAgCXN0cnVjdCBmcmVlX25pZCAqaSA9IE5VTEw7Cj4gIAlzdHJ1 Y3QgbGlzdF9oZWFkICp0aGlzOwo+ICByZXRyeToKPiAtCWlmIChzYmktPnRvdGFsX3ZhbGlkX25v ZGVfY291bnQgKyAxID49IG5tX2ktPm1heF9uaWQpCj4gKwlpZiAodW5saWtlbHkoc2JpLT50b3Rh bF92YWxpZF9ub2RlX2NvdW50ICsgMSA+PSBubV9pLT5tYXhfbmlkKSkKPiAgCQlyZXR1cm4gZmFs c2U7Cj4gIAo+ICAJc3Bpbl9sb2NrKCZubV9pLT5mcmVlX25pZF9saXN0X2xvY2spOwo+IEBAIC0x NTU3LDcgKzE1NTcsNyBAQCBpbnQgcmVjb3Zlcl9pbm9kZV9wYWdlKHN0cnVjdCBmMmZzX3NiX2lu Zm8gKnNiaSwgc3RydWN0IHBhZ2UgKnBhZ2UpCj4gIAluZXdfbmkgPSBvbGRfbmk7Cj4gIAluZXdf bmkuaW5vID0gaW5vOwo+ICAKPiAtCWlmICghaW5jX3ZhbGlkX25vZGVfY291bnQoc2JpLCBOVUxM KSkKPiArCWlmICh1bmxpa2VseSghaW5jX3ZhbGlkX25vZGVfY291bnQoc2JpLCBOVUxMKSkpCj4g IAkJV0FSTl9PTigxKTsKPiAgCXNldF9ub2RlX2FkZHIoc2JpLCAmbmV3X25pLCBORVdfQUREUik7 Cj4gIAlpbmNfdmFsaWRfaW5vZGVfY291bnQoc2JpKTsKPiBkaWZmIC0tZ2l0IGEvZnMvZjJmcy9z ZWdtZW50LmggYi9mcy9mMmZzL3NlZ21lbnQuaAo+IGluZGV4IDI2ODEyZmMuLmVhNTYzNzYgMTAw NjQ0Cj4gLS0tIGEvZnMvZjJmcy9zZWdtZW50LmgKPiArKysgYi9mcy9mMmZzL3NlZ21lbnQuaAo+ IEBAIC00NTcsNyArNDU3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGhhc19ub3RfZW5vdWdoX2Zy ZWVfc2VjcyhzdHJ1Y3QgZjJmc19zYl9pbmZvICpzYmksIGludCBmcmVlZCkKPiAgCWludCBub2Rl X3NlY3MgPSBnZXRfYmxvY2t0eXBlX3NlY3Moc2JpLCBGMkZTX0RJUlRZX05PREVTKTsKPiAgCWlu dCBkZW50X3NlY3MgPSBnZXRfYmxvY2t0eXBlX3NlY3Moc2JpLCBGMkZTX0RJUlRZX0RFTlRTKTsK PiAgCj4gLQlpZiAoc2JpLT5wb3JfZG9pbmcpCj4gKwlpZiAodW5saWtlbHkoc2JpLT5wb3JfZG9p bmcpKQo+ICAJCXJldHVybiBmYWxzZTsKPiAgCj4gIAlyZXR1cm4gKChmcmVlX3NlY3Rpb25zKHNi aSkgKyBmcmVlZCkgPD0gKG5vZGVfc2VjcyArIDIgKiBkZW50X3NlY3MgKwoKLS0gCkphZWdldWsg S2ltClNhbXN1bmcKCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClNwb25zb3JlZCBieSBJbnRlbChS KSBYREsgCkRldmVsb3AsIHRlc3QgYW5kIGRpc3BsYXkgd2ViIGFuZCBoeWJyaWQgYXBwcyB3aXRo IGEgc2luZ2xlIGNvZGUgYmFzZS4KRG93bmxvYWQgaXQgZm9yIGZyZWUgbm93IQpodHRwOi8vcHVi YWRzLmcuZG91YmxlY2xpY2submV0L2dhbXBhZC9jbGs/aWQ9MTExNDA4NjMxJml1PS80MTQwL29z dGcuY2xrdHJrCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f CkxpbnV4LWYyZnMtZGV2ZWwgbWFpbGluZyBsaXN0CkxpbnV4LWYyZnMtZGV2ZWxAbGlzdHMuc291 cmNlZm9yZ2UubmV0Cmh0dHBzOi8vbGlzdHMuc291cmNlZm9yZ2UubmV0L2xpc3RzL2xpc3RpbmZv L2xpbnV4LWYyZnMtZGV2ZWwK