From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pd0-f175.google.com (mail-pd0-f175.google.com [209.85.192.175]) by kanga.kvack.org (Postfix) with ESMTP id 98C4C6B006E for ; Wed, 21 Jan 2015 16:48:46 -0500 (EST) Received: by mail-pd0-f175.google.com with SMTP id fl12so19287430pdb.6 for ; Wed, 21 Jan 2015 13:48:46 -0800 (PST) Received: from mail-pd0-x232.google.com (mail-pd0-x232.google.com. [2607:f8b0:400e:c02::232]) by mx.google.com with ESMTPS id bv6si5307049pdb.114.2015.01.21.13.48.44 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 21 Jan 2015 13:48:45 -0800 (PST) Received: by mail-pd0-f178.google.com with SMTP id y10so12639000pdj.9 for ; Wed, 21 Jan 2015 13:48:44 -0800 (PST) MIME-Version: 1.0 In-Reply-To: <54C01051.7000107@oracle.com> References: <1404905415-9046-1-git-send-email-a.ryabinin@samsung.com> <1421859105-25253-1-git-send-email-a.ryabinin@samsung.com> <1421859105-25253-8-git-send-email-a.ryabinin@samsung.com> <54C01051.7000107@oracle.com> Date: Thu, 22 Jan 2015 01:48:44 +0400 Message-ID: Subject: Re: [PATCH v9 07/17] mm: slub: add kernel address sanitizer support for slub allocator From: Andrey Ryabinin Content-Type: multipart/mixed; boundary=e89a8f234a33fbb34b050d3084cc Sender: owner-linux-mm@kvack.org List-ID: To: Sasha Levin Cc: Andrey Ryabinin , LKML , Dmitry Chernenkov , Dmitry Vyukov , Konstantin Serebryany , Andrey Konovalov , Yuri Gribov , Konstantin Khlebnikov , Christoph Lameter , Joonsoo Kim , Andrew Morton , Dave Hansen , Andi Kleen , "x86@kernel.org" , "linux-mm@kvack.org" , Pekka Enberg , David Rientjes --e89a8f234a33fbb34b050d3084cc Content-Type: text/plain; charset=UTF-8 2015-01-21 23:47 GMT+03:00 Sasha Levin : > On 01/21/2015 11:51 AM, Andrey Ryabinin wrote: >> With this patch kasan will be able to catch bugs in memory allocated >> by slub. >> Initially all objects in newly allocated slab page, marked as redzone. >> Later, when allocation of slub object happens, requested by caller >> number of bytes marked as accessible, and the rest of the object >> (including slub's metadata) marked as redzone (inaccessible). >> >> We also mark object as accessible if ksize was called for this object. >> There is some places in kernel where ksize function is called to inquire >> size of really allocated area. Such callers could validly access whole >> allocated memory, so it should be marked as accessible. >> >> Code in slub.c and slab_common.c files could validly access to object's >> metadata, so instrumentation for this files are disabled. > > This one doesn't apply on -next. Is there a missing commit? > I don't see anything wrong. It's just difference between torvalds/-next trees. Attached patched for -next just in case. Also there is trivial conflict with -next in 11/17 patch. > Applying: mm: slub: add kernel address sanitizer support for slub allocator > fatal: sha1 information is lacking or useless (mm/slub.c). > Repository lacks necessary blobs to fall back on 3-way merge. > Cannot fall back to three-way merge. > Patch failed at 0007 mm: slub: add kernel address sanitizer support for slub allocator > When you have resolved this problem run "git am --resolved". > If you would prefer to skip this patch, instead run "git am --skip". > To restore the original branch and stop patching run "git am --abort". > > > Thanks, > Sasha > --e89a8f234a33fbb34b050d3084cc Content-Type: text/x-patch; charset=US-ASCII; name="mm-slub-add-kernel-address-sanitizer-support-for-slu.patch" Content-Disposition: attachment; filename="mm-slub-add-kernel-address-sanitizer-support-for-slu.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_i57h52210 RnJvbSBiN2I1NDU5ODE0MzhlY2ZiZWRmN2M1MjU0MTA5MDhmOTAxMTA1ZTEzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXkgUnlhYmluaW4gPGEucnlhYmluaW5Ac2Ftc3VuZy5j b20+CkRhdGU6IFRodSwgMjIgSmFuIDIwMTUgMDQ6MTI6MDMgKzAzMDAKU3ViamVjdDogW1BBVENI XSBtbTogc2x1YjogYWRkIGtlcm5lbCBhZGRyZXNzIHNhbml0aXplciBzdXBwb3J0IGZvciBzbHVi CiBhbGxvY2F0b3IKCldpdGggdGhpcyBwYXRjaCBrYXNhbiB3aWxsIGJlIGFibGUgdG8gY2F0Y2gg YnVncyBpbiBtZW1vcnkgYWxsb2NhdGVkCmJ5IHNsdWIuCkluaXRpYWxseSBhbGwgb2JqZWN0cyBp biBuZXdseSBhbGxvY2F0ZWQgc2xhYiBwYWdlLCBtYXJrZWQgYXMgcmVkem9uZS4KTGF0ZXIsIHdo ZW4gYWxsb2NhdGlvbiBvZiBzbHViIG9iamVjdCBoYXBwZW5zLCByZXF1ZXN0ZWQgYnkgY2FsbGVy Cm51bWJlciBvZiBieXRlcyBtYXJrZWQgYXMgYWNjZXNzaWJsZSwgYW5kIHRoZSByZXN0IG9mIHRo ZSBvYmplY3QKKGluY2x1ZGluZyBzbHViJ3MgbWV0YWRhdGEpIG1hcmtlZCBhcyByZWR6b25lIChp bmFjY2Vzc2libGUpLgoKV2UgYWxzbyBtYXJrIG9iamVjdCBhcyBhY2Nlc3NpYmxlIGlmIGtzaXpl IHdhcyBjYWxsZWQgZm9yIHRoaXMgb2JqZWN0LgpUaGVyZSBpcyBzb21lIHBsYWNlcyBpbiBrZXJu ZWwgd2hlcmUga3NpemUgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGlucXVpcmUKc2l6ZSBvZiByZWFs bHkgYWxsb2NhdGVkIGFyZWEuIFN1Y2ggY2FsbGVycyBjb3VsZCB2YWxpZGx5IGFjY2VzcyB3aG9s ZQphbGxvY2F0ZWQgbWVtb3J5LCBzbyBpdCBzaG91bGQgYmUgbWFya2VkIGFzIGFjY2Vzc2libGUu CgpDb2RlIGluIHNsdWIuYyBhbmQgc2xhYl9jb21tb24uYyBmaWxlcyBjb3VsZCB2YWxpZGx5IGFj Y2VzcyB0byBvYmplY3QncwptZXRhZGF0YSwgc28gaW5zdHJ1bWVudGF0aW9uIGZvciB0aGlzIGZp bGVzIGFyZSBkaXNhYmxlZC4KClNpZ25lZC1vZmYtYnk6IEFuZHJleSBSeWFiaW5pbiA8YS5yeWFi aW5pbkBzYW1zdW5nLmNvbT4KU2lnbmVkLW9mZi1ieTogRG1pdHJ5IENoZXJuZW5rb3YgPGRtaXRy eWNAZ29vZ2xlLmNvbT4KLS0tCiBpbmNsdWRlL2xpbnV4L2thc2FuLmggfCAzMCArKysrKysrKysr KysrKysrCiBpbmNsdWRlL2xpbnV4L3NsYWIuaCAgfCAxMSArKysrLS0KIGxpYi9LY29uZmlnLmth c2FuICAgICB8ICAxICsKIG1tL01ha2VmaWxlICAgICAgICAgICB8ICAzICsrCiBtbS9rYXNhbi9r YXNhbi5jICAgICAgfCA5OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysKIG1tL2thc2FuL3JlcG9ydC5jICAgICB8IDIyICsrKysrKysrKysrKwogbW0v c2xhYl9jb21tb24uYyAgICAgIHwgIDUgKystCiBtbS9zbHViLmMgICAgICAgICAgICAgfCAzNCAr KysrKysrKysrKysrKysrLS0KIDggZmlsZXMgY2hhbmdlZCwgMTk5IGluc2VydGlvbnMoKyksIDUg ZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9rYXNhbi5oIGIvaW5jbHVk ZS9saW51eC9rYXNhbi5oCmluZGV4IGEyNzhjY2MuLjk0MGZjNGYgMTAwNjQ0Ci0tLSBhL2luY2x1 ZGUvbGludXgva2FzYW4uaAorKysgYi9pbmNsdWRlL2xpbnV4L2thc2FuLmgKQEAgLTEyLDYgKzEy LDkgQEAgc3RydWN0IHBhZ2U7CiAjZGVmaW5lIEtBU0FOX1NIQURPV19PRkZTRVQgX0FDKENPTkZJ R19LQVNBTl9TSEFET1dfT0ZGU0VULCBVTCkKIAogI2RlZmluZSBLQVNBTl9GUkVFX1BBR0UgICAg ICAgICAweEZGICAvKiBwYWdlIHdhcyBmcmVlZCAqLworI2RlZmluZSBLQVNBTl9QQUdFX1JFRFpP TkUgICAgICAweEZFICAvKiByZWR6b25lIGZvciBrbWFsbG9jX2xhcmdlIGFsbG9jYXRpb25zICov CisjZGVmaW5lIEtBU0FOX0tNQUxMT0NfUkVEWk9ORSAgIDB4RkMgIC8qIHJlZHpvbmUgaW5zaWRl IHNsdWIgb2JqZWN0ICovCisjZGVmaW5lIEtBU0FOX0tNQUxMT0NfRlJFRSAgICAgIDB4RkIgIC8q IG9iamVjdCB3YXMgZnJlZWQgKGttZW1fY2FjaGVfZnJlZS9rZnJlZSkgKi8KICNkZWZpbmUgS0FT QU5fU0hBRE9XX0dBUCAgICAgICAgMHhGOSAgLyogYWRkcmVzcyBiZWxvbmdzIHRvIHNoYWRvdyBt ZW1vcnkgKi8KIAogI2luY2x1ZGUgPGFzbS9rYXNhbi5oPgpAQCAtMzcsNiArNDAsMTggQEAgdm9p ZCBrYXNhbl91bnBvaXNvbl9zaGFkb3coY29uc3Qgdm9pZCAqYWRkcmVzcywgc2l6ZV90IHNpemUp Owogdm9pZCBrYXNhbl9hbGxvY19wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50 IG9yZGVyKTsKIHZvaWQga2FzYW5fZnJlZV9wYWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWdu ZWQgaW50IG9yZGVyKTsKIAordm9pZCBrYXNhbl9wb2lzb25fc2xhYihzdHJ1Y3QgcGFnZSAqcGFn ZSk7Cit2b2lkIGthc2FuX3VucG9pc29uX29iamVjdF9kYXRhKHN0cnVjdCBrbWVtX2NhY2hlICpj YWNoZSwgdm9pZCAqb2JqZWN0KTsKK3ZvaWQga2FzYW5fcG9pc29uX29iamVjdF9kYXRhKHN0cnVj dCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAqb2JqZWN0KTsKKwordm9pZCBrYXNhbl9rbWFsbG9j X2xhcmdlKGNvbnN0IHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpOwordm9pZCBrYXNhbl9rZnJlZV9s YXJnZShjb25zdCB2b2lkICpwdHIpOwordm9pZCBrYXNhbl9rbWFsbG9jKHN0cnVjdCBrbWVtX2Nh Y2hlICpzLCBjb25zdCB2b2lkICpvYmplY3QsIHNpemVfdCBzaXplKTsKK3ZvaWQga2FzYW5fa3Jl YWxsb2MoY29uc3Qgdm9pZCAqb2JqZWN0LCBzaXplX3QgbmV3X3NpemUpOworCit2b2lkIGthc2Fu X3NsYWJfYWxsb2Moc3RydWN0IGttZW1fY2FjaGUgKnMsIHZvaWQgKm9iamVjdCk7Cit2b2lkIGth c2FuX3NsYWJfZnJlZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgdm9pZCAqb2JqZWN0KTsKKwogI2Vs c2UgLyogQ09ORklHX0tBU0FOICovCiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl91bnBvaXNv bl9zaGFkb3coY29uc3Qgdm9pZCAqYWRkcmVzcywgc2l6ZV90IHNpemUpIHt9CkBAIC00Nyw2ICs2 MiwyMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fZGlzYWJsZV9sb2NhbCh2b2lkKSB7fQog c3RhdGljIGlubGluZSB2b2lkIGthc2FuX2FsbG9jX3BhZ2VzKHN0cnVjdCBwYWdlICpwYWdlLCB1 bnNpZ25lZCBpbnQgb3JkZXIpIHt9CiBzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fZnJlZV9wYWdl cyhzdHJ1Y3QgcGFnZSAqcGFnZSwgdW5zaWduZWQgaW50IG9yZGVyKSB7fQogCitzdGF0aWMgaW5s aW5lIHZvaWQga2FzYW5fcG9pc29uX3NsYWIoc3RydWN0IHBhZ2UgKnBhZ2UpIHt9CitzdGF0aWMg aW5saW5lIHZvaWQga2FzYW5fdW5wb2lzb25fb2JqZWN0X2RhdGEoc3RydWN0IGttZW1fY2FjaGUg KmNhY2hlLAorCQkJCQl2b2lkICpvYmplY3QpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5f cG9pc29uX29iamVjdF9kYXRhKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwKKwkJCQkJdm9pZCAq b2JqZWN0KSB7fQorCitzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fa21hbGxvY19sYXJnZSh2b2lk ICpwdHIsIHNpemVfdCBzaXplKSB7fQorc3RhdGljIGlubGluZSB2b2lkIGthc2FuX2tmcmVlX2xh cmdlKGNvbnN0IHZvaWQgKnB0cikge30KK3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9rbWFsbG9j KHN0cnVjdCBrbWVtX2NhY2hlICpzLCBjb25zdCB2b2lkICpvYmplY3QsCisJCQkJc2l6ZV90IHNp emUpIHt9CitzdGF0aWMgaW5saW5lIHZvaWQga2FzYW5fa3JlYWxsb2MoY29uc3Qgdm9pZCAqb2Jq ZWN0LCBzaXplX3QgbmV3X3NpemUpIHt9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBrYXNhbl9zbGFi X2FsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmplY3QpIHt9CitzdGF0aWMgaW5s aW5lIHZvaWQga2FzYW5fc2xhYl9mcmVlKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICpvYmpl Y3QpIHt9CisKICNlbmRpZiAvKiBDT05GSUdfS0FTQU4gKi8KIAogI2VuZGlmIC8qIExJTlVYX0tB U0FOX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvc2xhYi5oIGIvaW5jbHVkZS9saW51 eC9zbGFiLmgKaW5kZXggMmUzYjQ0OC4uZjc2NDA5NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51 eC9zbGFiLmgKKysrIGIvaW5jbHVkZS9saW51eC9zbGFiLmgKQEAgLTEwNCw2ICsxMDQsNyBAQAog CQkJCSh1bnNpZ25lZCBsb25nKVpFUk9fU0laRV9QVFIpCiAKICNpbmNsdWRlIDxsaW51eC9rbWVt bGVhay5oPgorI2luY2x1ZGUgPGxpbnV4L2thc2FuLmg+CiAKIHN0cnVjdCBtZW1fY2dyb3VwOwog LyoKQEAgLTMyNSw3ICszMjYsMTAgQEAga21lbV9jYWNoZV9hbGxvY19ub2RlX3RyYWNlKHN0cnVj dCBrbWVtX2NhY2hlICpzLAogc3RhdGljIF9fYWx3YXlzX2lubGluZSB2b2lkICprbWVtX2NhY2hl X2FsbG9jX3RyYWNlKHN0cnVjdCBrbWVtX2NhY2hlICpzLAogCQlnZnBfdCBmbGFncywgc2l6ZV90 IHNpemUpCiB7Ci0JcmV0dXJuIGttZW1fY2FjaGVfYWxsb2MocywgZmxhZ3MpOworCXZvaWQgKnJl dCA9IGttZW1fY2FjaGVfYWxsb2MocywgZmxhZ3MpOworCisJa2FzYW5fa21hbGxvYyhzLCByZXQs IHNpemUpOworCXJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBfX2Fsd2F5c19pbmxpbmUgdm9pZCAq CkBAIC0zMzMsNyArMzM3LDEwIEBAIGttZW1fY2FjaGVfYWxsb2Nfbm9kZV90cmFjZShzdHJ1Y3Qg a21lbV9jYWNoZSAqcywKIAkJCSAgICAgIGdmcF90IGdmcGZsYWdzLAogCQkJICAgICAgaW50IG5v ZGUsIHNpemVfdCBzaXplKQogewotCXJldHVybiBrbWVtX2NhY2hlX2FsbG9jX25vZGUocywgZ2Zw ZmxhZ3MsIG5vZGUpOworCXZvaWQgKnJldCA9IGttZW1fY2FjaGVfYWxsb2Nfbm9kZShzLCBnZnBm bGFncywgbm9kZSk7CisKKwlrYXNhbl9rbWFsbG9jKHMsIHJldCwgc2l6ZSk7CisJcmV0dXJuIHJl dDsKIH0KICNlbmRpZiAvKiBDT05GSUdfVFJBQ0lORyAqLwogCmRpZmYgLS1naXQgYS9saWIvS2Nv bmZpZy5rYXNhbiBiL2xpYi9LY29uZmlnLmthc2FuCmluZGV4IGY4NjA3MGQuLmFkYTAyNjAgMTAw NjQ0Ci0tLSBhL2xpYi9LY29uZmlnLmthc2FuCisrKyBiL2xpYi9LY29uZmlnLmthc2FuCkBAIC02 LDYgKzYsNyBAQCBpZiBIQVZFX0FSQ0hfS0FTQU4KIGNvbmZpZyBLQVNBTgogCWJvb2wgIkFkZHJl c3NTYW5pdGl6ZXI6IHJ1bnRpbWUgbWVtb3J5IGRlYnVnZ2VyIgogCWRlcGVuZHMgb24gIU1FTU9S WV9IT1RQTFVHCisJZGVwZW5kcyBvbiBTTFVCX0RFQlVHCiAJaGVscAogCSAgRW5hYmxlcyBhZGRy ZXNzIHNhbml0aXplciAtIHJ1bnRpbWUgbWVtb3J5IGRlYnVnZ2VyLAogCSAgZGVzaWduZWQgdG8g ZmluZCBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIGFuZCB1c2UtYWZ0ZXItZnJlZSBidWdzLgpkaWZm IC0tZ2l0IGEvbW0vTWFrZWZpbGUgYi9tbS9NYWtlZmlsZQppbmRleCA3OWY0ZmJjLi4zYzFjYWEy IDEwMDY0NAotLS0gYS9tbS9NYWtlZmlsZQorKysgYi9tbS9NYWtlZmlsZQpAQCAtMiw2ICsyLDkg QEAKICMgTWFrZWZpbGUgZm9yIHRoZSBsaW51eCBtZW1vcnkgbWFuYWdlci4KICMKIAorS0FTQU5f U0FOSVRJWkVfc2xhYl9jb21tb24ubyA6PSBuCitLQVNBTl9TQU5JVElaRV9zbHViLm8gOj0gbgor CiBtbXUteQkJCTo9IG5vbW11Lm8KIG1tdS0kKENPTkZJR19NTVUpCTo9IGd1cC5vIGhpZ2htZW0u byBtZW1vcnkubyBtaW5jb3JlLm8gXAogCQkJICAgbWxvY2subyBtbWFwLm8gbXByb3RlY3QubyBt cmVtYXAubyBtc3luYy5vIHJtYXAubyBcCmRpZmYgLS1naXQgYS9tbS9rYXNhbi9rYXNhbi5jIGIv bW0va2FzYW4va2FzYW4uYwppbmRleCBlZmU4MTA1Li5jNTIzNTBlIDEwMDY0NAotLS0gYS9tbS9r YXNhbi9rYXNhbi5jCisrKyBiL21tL2thc2FuL2thc2FuLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNp bmNsdWRlIDxsaW51eC9rYXNhbi5oPgogCiAjaW5jbHVkZSAia2FzYW4uaCIKKyNpbmNsdWRlICIu Li9zbGFiLmgiCiAKIC8qCiAgKiBQb2lzb25zIHRoZSBzaGFkb3cgbWVtb3J5IGZvciAnc2l6ZScg Ynl0ZXMgc3RhcnRpbmcgZnJvbSAnYWRkcicuCkBAIC0yNjEsNiArMjYyLDEwMyBAQCB2b2lkIGth c2FuX2ZyZWVfcGFnZXMoc3RydWN0IHBhZ2UgKnBhZ2UsIHVuc2lnbmVkIGludCBvcmRlcikKIAkJ CQlLQVNBTl9GUkVFX1BBR0UpOwogfQogCit2b2lkIGthc2FuX3BvaXNvbl9zbGFiKHN0cnVjdCBw YWdlICpwYWdlKQoreworCWthc2FuX3BvaXNvbl9zaGFkb3cocGFnZV9hZGRyZXNzKHBhZ2UpLAor CQkJUEFHRV9TSVpFIDw8IGNvbXBvdW5kX29yZGVyKHBhZ2UpLAorCQkJS0FTQU5fS01BTExPQ19S RURaT05FKTsKK30KKwordm9pZCBrYXNhbl91bnBvaXNvbl9vYmplY3RfZGF0YShzdHJ1Y3Qga21l bV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCkKK3sKKwlrYXNhbl91bnBvaXNvbl9zaGFkb3co b2JqZWN0LCBjYWNoZS0+b2JqZWN0X3NpemUpOworfQorCit2b2lkIGthc2FuX3BvaXNvbl9vYmpl Y3RfZGF0YShzdHJ1Y3Qga21lbV9jYWNoZSAqY2FjaGUsIHZvaWQgKm9iamVjdCkKK3sKKwlrYXNh bl9wb2lzb25fc2hhZG93KG9iamVjdCwKKwkJCXJvdW5kX3VwKGNhY2hlLT5vYmplY3Rfc2l6ZSwg S0FTQU5fU0hBRE9XX1NDQUxFX1NJWkUpLAorCQkJS0FTQU5fS01BTExPQ19SRURaT05FKTsKK30K Kwordm9pZCBrYXNhbl9zbGFiX2FsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgdm9pZCAq b2JqZWN0KQoreworCWthc2FuX2ttYWxsb2MoY2FjaGUsIG9iamVjdCwgY2FjaGUtPm9iamVjdF9z aXplKTsKK30KKwordm9pZCBrYXNhbl9zbGFiX2ZyZWUoc3RydWN0IGttZW1fY2FjaGUgKmNhY2hl LCB2b2lkICpvYmplY3QpCit7CisJdW5zaWduZWQgbG9uZyBzaXplID0gY2FjaGUtPm9iamVjdF9z aXplOworCXVuc2lnbmVkIGxvbmcgcm91bmRlZF91cF9zaXplID0gcm91bmRfdXAoc2l6ZSwgS0FT QU5fU0hBRE9XX1NDQUxFX1NJWkUpOworCisJLyogUkNVIHNsYWJzIGNvdWxkIGJlIGxlZ2FsbHkg dXNlZCBhZnRlciBmcmVlIHdpdGhpbiB0aGUgUkNVIHBlcmlvZCAqLworCWlmICh1bmxpa2VseShj YWNoZS0+ZmxhZ3MgJiBTTEFCX0RFU1RST1lfQllfUkNVKSkKKwkJcmV0dXJuOworCisJa2FzYW5f cG9pc29uX3NoYWRvdyhvYmplY3QsIHJvdW5kZWRfdXBfc2l6ZSwgS0FTQU5fS01BTExPQ19GUkVF KTsKK30KKwordm9pZCBrYXNhbl9rbWFsbG9jKHN0cnVjdCBrbWVtX2NhY2hlICpjYWNoZSwgY29u c3Qgdm9pZCAqb2JqZWN0LCBzaXplX3Qgc2l6ZSkKK3sKKwl1bnNpZ25lZCBsb25nIHJlZHpvbmVf c3RhcnQ7CisJdW5zaWduZWQgbG9uZyByZWR6b25lX2VuZDsKKworCWlmICh1bmxpa2VseShvYmpl Y3QgPT0gTlVMTCkpCisJCXJldHVybjsKKworCXJlZHpvbmVfc3RhcnQgPSByb3VuZF91cCgodW5z aWduZWQgbG9uZykob2JqZWN0ICsgc2l6ZSksCisJCQkJS0FTQU5fU0hBRE9XX1NDQUxFX1NJWkUp OworCXJlZHpvbmVfZW5kID0gcm91bmRfdXAoKHVuc2lnbmVkIGxvbmcpb2JqZWN0ICsgY2FjaGUt Pm9iamVjdF9zaXplLAorCQkJCUtBU0FOX1NIQURPV19TQ0FMRV9TSVpFKTsKKworCWthc2FuX3Vu cG9pc29uX3NoYWRvdyhvYmplY3QsIHNpemUpOworCWthc2FuX3BvaXNvbl9zaGFkb3coKHZvaWQg KilyZWR6b25lX3N0YXJ0LCByZWR6b25lX2VuZCAtIHJlZHpvbmVfc3RhcnQsCisJCUtBU0FOX0tN QUxMT0NfUkVEWk9ORSk7Cit9CitFWFBPUlRfU1lNQk9MKGthc2FuX2ttYWxsb2MpOworCit2b2lk IGthc2FuX2ttYWxsb2NfbGFyZ2UoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSkKK3sKKwlz dHJ1Y3QgcGFnZSAqcGFnZTsKKwl1bnNpZ25lZCBsb25nIHJlZHpvbmVfc3RhcnQ7CisJdW5zaWdu ZWQgbG9uZyByZWR6b25lX2VuZDsKKworCWlmICh1bmxpa2VseShwdHIgPT0gTlVMTCkpCisJCXJl dHVybjsKKworCXBhZ2UgPSB2aXJ0X3RvX3BhZ2UocHRyKTsKKwlyZWR6b25lX3N0YXJ0ID0gcm91 bmRfdXAoKHVuc2lnbmVkIGxvbmcpKHB0ciArIHNpemUpLAorCQkJCUtBU0FOX1NIQURPV19TQ0FM RV9TSVpFKTsKKwlyZWR6b25lX2VuZCA9ICh1bnNpZ25lZCBsb25nKXB0ciArIChQQUdFX1NJWkUg PDwgY29tcG91bmRfb3JkZXIocGFnZSkpOworCisJa2FzYW5fdW5wb2lzb25fc2hhZG93KHB0ciwg c2l6ZSk7CisJa2FzYW5fcG9pc29uX3NoYWRvdygodm9pZCAqKXJlZHpvbmVfc3RhcnQsIHJlZHpv bmVfZW5kIC0gcmVkem9uZV9zdGFydCwKKwkJS0FTQU5fUEFHRV9SRURaT05FKTsKK30KKwordm9p ZCBrYXNhbl9rcmVhbGxvYyhjb25zdCB2b2lkICpvYmplY3QsIHNpemVfdCBzaXplKQoreworCXN0 cnVjdCBwYWdlICpwYWdlOworCisJaWYgKHVubGlrZWx5KG9iamVjdCA9PSBaRVJPX1NJWkVfUFRS KSkKKwkJcmV0dXJuOworCisJcGFnZSA9IHZpcnRfdG9faGVhZF9wYWdlKG9iamVjdCk7CisKKwlp ZiAodW5saWtlbHkoIVBhZ2VTbGFiKHBhZ2UpKSkKKwkJa2FzYW5fa21hbGxvY19sYXJnZShvYmpl Y3QsIHNpemUpOworCWVsc2UKKwkJa2FzYW5fa21hbGxvYyhwYWdlLT5zbGFiX2NhY2hlLCBvYmpl Y3QsIHNpemUpOworfQorCit2b2lkIGthc2FuX2tmcmVlX2xhcmdlKGNvbnN0IHZvaWQgKnB0cikK K3sKKwlzdHJ1Y3QgcGFnZSAqcGFnZSA9IHZpcnRfdG9fcGFnZShwdHIpOworCisJa2FzYW5fcG9p c29uX3NoYWRvdyhwdHIsIFBBR0VfU0laRSA8PCBjb21wb3VuZF9vcmRlcihwYWdlKSwKKwkJCUtB U0FOX0ZSRUVfUEFHRSk7Cit9CisKICNkZWZpbmUgREVDTEFSRV9BU0FOX0NIRUNLKHNpemUpCQkJ CVwKIAl2b2lkIF9fYXNhbl9sb2FkIyNzaXplKHVuc2lnbmVkIGxvbmcgYWRkcikJCVwKIAl7CQkJ CQkJCVwKZGlmZiAtLWdpdCBhL21tL2thc2FuL3JlcG9ydC5jIGIvbW0va2FzYW4vcmVwb3J0LmMK aW5kZXggNzk4M2ViYi4uZjliYzU3YSAxMDA2NDQKLS0tIGEvbW0va2FzYW4vcmVwb3J0LmMKKysr IGIvbW0va2FzYW4vcmVwb3J0LmMKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlIDxsaW51eC9r YXNhbi5oPgogCiAjaW5jbHVkZSAia2FzYW4uaCIKKyNpbmNsdWRlICIuLi9zbGFiLmgiCiAKIC8q IFNoYWRvdyBsYXlvdXQgY3VzdG9taXphdGlvbi4gKi8KICNkZWZpbmUgU0hBRE9XX0JZVEVTX1BF Ul9CTE9DSyAxCkBAIC01NSw4ICs1NiwxMSBAQCBzdGF0aWMgdm9pZCBwcmludF9lcnJvcl9kZXNj cmlwdGlvbihzdHJ1Y3QgYWNjZXNzX2luZm8gKmluZm8pCiAKIAlzd2l0Y2ggKHNoYWRvd192YWwp IHsKIAljYXNlIEtBU0FOX0ZSRUVfUEFHRToKKwljYXNlIEtBU0FOX0tNQUxMT0NfRlJFRToKIAkJ YnVnX3R5cGUgPSAidXNlIGFmdGVyIGZyZWUiOwogCQlicmVhazsKKwljYXNlIEtBU0FOX1BBR0Vf UkVEWk9ORToKKwljYXNlIEtBU0FOX0tNQUxMT0NfUkVEWk9ORToKIAljYXNlIDAgLi4uIEtBU0FO X1NIQURPV19TQ0FMRV9TSVpFIC0gMToKIAkJYnVnX3R5cGUgPSAib3V0IG9mIGJvdW5kcyBhY2Nl c3MiOwogCQlicmVhazsKQEAgLTgwLDYgKzg0LDI0IEBAIHN0YXRpYyB2b2lkIHByaW50X2FkZHJl c3NfZGVzY3JpcHRpb24oc3RydWN0IGFjY2Vzc19pbmZvICppbmZvKQogCWlmICgoYWRkciA+PSBQ QUdFX09GRlNFVCkgJiYKIAkJKGFkZHIgPCAodW5zaWduZWQgbG9uZyloaWdoX21lbW9yeSkpIHsK IAkJc3RydWN0IHBhZ2UgKnBhZ2UgPSB2aXJ0X3RvX2hlYWRfcGFnZSgodm9pZCAqKWFkZHIpOwor CisJCWlmIChQYWdlU2xhYihwYWdlKSkgeworCQkJdm9pZCAqb2JqZWN0OworCQkJc3RydWN0IGtt ZW1fY2FjaGUgKmNhY2hlID0gcGFnZS0+c2xhYl9jYWNoZTsKKwkJCXZvaWQgKmxhc3Rfb2JqZWN0 OworCisJCQlvYmplY3QgPSB2aXJ0X3RvX29iaihjYWNoZSwgcGFnZV9hZGRyZXNzKHBhZ2UpLAor CQkJCQkodm9pZCAqKWluZm8tPmFjY2Vzc19hZGRyKTsKKwkJCWxhc3Rfb2JqZWN0ID0gcGFnZV9h ZGRyZXNzKHBhZ2UpICsKKwkJCQlwYWdlLT5vYmplY3RzICogY2FjaGUtPnNpemU7CisKKwkJCWlm ICh1bmxpa2VseShvYmplY3QgPiBsYXN0X29iamVjdCkpCisJCQkJb2JqZWN0ID0gbGFzdF9vYmpl Y3Q7IC8qIHdlIGhpdCBpbnRvIHBhZGRpbmcgKi8KKworCQkJb2JqZWN0X2VycihjYWNoZSwgcGFn ZSwgb2JqZWN0LAorCQkJCSJrYXNhbjogYmFkIGFjY2VzcyBkZXRlY3RlZCIpOworCQkJcmV0dXJu OworCQl9CiAJCWR1bXBfcGFnZShwYWdlLCAia2FzYW46IGJhZCBhY2Nlc3MgZGV0ZWN0ZWQiKTsK IAl9CiAKZGlmZiAtLWdpdCBhL21tL3NsYWJfY29tbW9uLmMgYi9tbS9zbGFiX2NvbW1vbi5jCmlu ZGV4IDZhNzUwMmQuLjQwY2VmMzMgMTAwNjQ0Ci0tLSBhL21tL3NsYWJfY29tbW9uLmMKKysrIGIv bW0vc2xhYl9jb21tb24uYwpAQCAtODUzLDYgKzg1Myw3IEBAIHZvaWQgKmttYWxsb2Nfb3JkZXIo c2l6ZV90IHNpemUsIGdmcF90IGZsYWdzLCB1bnNpZ25lZCBpbnQgb3JkZXIpCiAJcGFnZSA9IGFs bG9jX2ttZW1fcGFnZXMoZmxhZ3MsIG9yZGVyKTsKIAlyZXQgPSBwYWdlID8gcGFnZV9hZGRyZXNz KHBhZ2UpIDogTlVMTDsKIAlrbWVtbGVha19hbGxvYyhyZXQsIHNpemUsIDEsIGZsYWdzKTsKKwlr YXNhbl9rbWFsbG9jX2xhcmdlKHJldCwgc2l6ZSk7CiAJcmV0dXJuIHJldDsKIH0KIEVYUE9SVF9T WU1CT0woa21hbGxvY19vcmRlcik7CkBAIC0xMDM3LDggKzEwMzgsMTAgQEAgc3RhdGljIF9fYWx3 YXlzX2lubGluZSB2b2lkICpfX2RvX2tyZWFsbG9jKGNvbnN0IHZvaWQgKnAsIHNpemVfdCBuZXdf c2l6ZSwKIAlpZiAocCkKIAkJa3MgPSBrc2l6ZShwKTsKIAotCWlmIChrcyA+PSBuZXdfc2l6ZSkK KwlpZiAoa3MgPj0gbmV3X3NpemUpIHsKKwkJa2FzYW5fa3JlYWxsb2MoKHZvaWQgKilwLCBuZXdf c2l6ZSk7CiAJCXJldHVybiAodm9pZCAqKXA7CisJfQogCiAJcmV0ID0ga21hbGxvY190cmFja19j YWxsZXIobmV3X3NpemUsIGZsYWdzKTsKIAlpZiAocmV0ICYmIHApCmRpZmYgLS1naXQgYS9tbS9z bHViLmMgYi9tbS9zbHViLmMKaW5kZXggMGQ4ZWI0YS4uOTU1MTU1ZCAxMDA2NDQKLS0tIGEvbW0v c2x1Yi5jCisrKyBiL21tL3NsdWIuYwpAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1ZGUgPGxpbnV4 L3N0YWNrdHJhY2UuaD4KICNpbmNsdWRlIDxsaW51eC9wcmVmZXRjaC5oPgogI2luY2x1ZGUgPGxp bnV4L21lbWNvbnRyb2wuaD4KKyNpbmNsdWRlIDxsaW51eC9rYXNhbi5oPgogCiAjaW5jbHVkZSA8 dHJhY2UvZXZlbnRzL2ttZW0uaD4KIApAQCAtNDY5LDEwICs0NzAsMTIgQEAgc3RhdGljIGludCBk aXNhYmxlX2hpZ2hlcl9vcmRlcl9kZWJ1ZzsKIAogc3RhdGljIGlubGluZSB2b2lkIG1ldGFkYXRh X2FjY2Vzc19lbmFibGUodm9pZCkKIHsKKwlrYXNhbl9kaXNhYmxlX2xvY2FsKCk7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgdm9pZCBtZXRhZGF0YV9hY2Nlc3NfZGlzYWJsZSh2b2lkKQogeworCWthc2Fu X2VuYWJsZV9sb2NhbCgpOwogfQogCiAvKgpAQCAtMTI0MiwxMSArMTI0NSwxMyBAQCBzdGF0aWMg aW5saW5lIHZvaWQgZGVjX3NsYWJzX25vZGUoc3RydWN0IGttZW1fY2FjaGUgKnMsIGludCBub2Rl LAogc3RhdGljIGlubGluZSB2b2lkIGttYWxsb2NfbGFyZ2Vfbm9kZV9ob29rKHZvaWQgKnB0ciwg c2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQogewogCWttZW1sZWFrX2FsbG9jKHB0ciwgc2l6ZSwg MSwgZmxhZ3MpOworCWthc2FuX2ttYWxsb2NfbGFyZ2UocHRyLCBzaXplKTsKIH0KIAogc3RhdGlj IGlubGluZSB2b2lkIGtmcmVlX2hvb2soY29uc3Qgdm9pZCAqeCkKIHsKIAlrbWVtbGVha19mcmVl KHgpOworCWthc2FuX2tmcmVlX2xhcmdlKHgpOwogfQogCiBzdGF0aWMgaW5saW5lIHN0cnVjdCBr bWVtX2NhY2hlICpzbGFiX3ByZV9hbGxvY19ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLApAQCAt MTI2OSw2ICsxMjc0LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHNsYWJfcG9zdF9hbGxvY19ob29r KHN0cnVjdCBrbWVtX2NhY2hlICpzLAogCWttZW1jaGVja19zbGFiX2FsbG9jKHMsIGZsYWdzLCBv YmplY3QsIHNsYWJfa3NpemUocykpOwogCWttZW1sZWFrX2FsbG9jX3JlY3Vyc2l2ZShvYmplY3Qs IHMtPm9iamVjdF9zaXplLCAxLCBzLT5mbGFncywgZmxhZ3MpOwogCW1lbWNnX2ttZW1fcHV0X2Nh Y2hlKHMpOworCWthc2FuX3NsYWJfYWxsb2Mocywgb2JqZWN0KTsKIH0KIAogc3RhdGljIGlubGlu ZSB2b2lkIHNsYWJfZnJlZV9ob29rKHN0cnVjdCBrbWVtX2NhY2hlICpzLCB2b2lkICp4KQpAQCAt MTI5Miw2ICsxMjk4LDggQEAgc3RhdGljIGlubGluZSB2b2lkIHNsYWJfZnJlZV9ob29rKHN0cnVj dCBrbWVtX2NhY2hlICpzLCB2b2lkICp4KQogI2VuZGlmCiAJaWYgKCEocy0+ZmxhZ3MgJiBTTEFC X0RFQlVHX09CSkVDVFMpKQogCQlkZWJ1Z19jaGVja19ub19vYmpfZnJlZWQoeCwgcy0+b2JqZWN0 X3NpemUpOworCisJa2FzYW5fc2xhYl9mcmVlKHMsIHgpOwogfQogCiAvKgpAQCAtMTM4Niw4ICsx Mzk0LDExIEBAIHN0YXRpYyB2b2lkIHNldHVwX29iamVjdChzdHJ1Y3Qga21lbV9jYWNoZSAqcywg c3RydWN0IHBhZ2UgKnBhZ2UsCiAJCQkJdm9pZCAqb2JqZWN0KQogewogCXNldHVwX29iamVjdF9k ZWJ1ZyhzLCBwYWdlLCBvYmplY3QpOwotCWlmICh1bmxpa2VseShzLT5jdG9yKSkKKwlpZiAodW5s aWtlbHkocy0+Y3RvcikpIHsKKwkJa2FzYW5fdW5wb2lzb25fb2JqZWN0X2RhdGEocywgb2JqZWN0 KTsKIAkJcy0+Y3RvcihvYmplY3QpOworCQlrYXNhbl9wb2lzb25fb2JqZWN0X2RhdGEocywgb2Jq ZWN0KTsKKwl9CiB9CiAKIHN0YXRpYyBzdHJ1Y3QgcGFnZSAqbmV3X3NsYWIoc3RydWN0IGttZW1f Y2FjaGUgKnMsIGdmcF90IGZsYWdzLCBpbnQgbm9kZSkKQEAgLTE0MjAsNiArMTQzMSw4IEBAIHN0 YXRpYyBzdHJ1Y3QgcGFnZSAqbmV3X3NsYWIoc3RydWN0IGttZW1fY2FjaGUgKnMsIGdmcF90IGZs YWdzLCBpbnQgbm9kZSkKIAlpZiAodW5saWtlbHkocy0+ZmxhZ3MgJiBTTEFCX1BPSVNPTikpCiAJ CW1lbXNldChzdGFydCwgUE9JU09OX0lOVVNFLCBQQUdFX1NJWkUgPDwgb3JkZXIpOwogCisJa2Fz YW5fcG9pc29uX3NsYWIocGFnZSk7CisKIAlmb3JfZWFjaF9vYmplY3RfaWR4KHAsIGlkeCwgcywg c3RhcnQsIHBhZ2UtPm9iamVjdHMpIHsKIAkJc2V0dXBfb2JqZWN0KHMsIHBhZ2UsIHApOwogCQlp ZiAobGlrZWx5KGlkeCA8IHBhZ2UtPm9iamVjdHMpKQpAQCAtMjUwNCw2ICsyNTE3LDcgQEAgdm9p ZCAqa21lbV9jYWNoZV9hbGxvY190cmFjZShzdHJ1Y3Qga21lbV9jYWNoZSAqcywgZ2ZwX3QgZ2Zw ZmxhZ3MsIHNpemVfdCBzaXplKQogewogCXZvaWQgKnJldCA9IHNsYWJfYWxsb2MocywgZ2ZwZmxh Z3MsIF9SRVRfSVBfKTsKIAl0cmFjZV9rbWFsbG9jKF9SRVRfSVBfLCByZXQsIHNpemUsIHMtPnNp emUsIGdmcGZsYWdzKTsKKwlrYXNhbl9rbWFsbG9jKHMsIHJldCwgc2l6ZSk7CiAJcmV0dXJuIHJl dDsKIH0KIEVYUE9SVF9TWU1CT0woa21lbV9jYWNoZV9hbGxvY190cmFjZSk7CkBAIC0yNTMwLDYg KzI1NDQsOCBAQCB2b2lkICprbWVtX2NhY2hlX2FsbG9jX25vZGVfdHJhY2Uoc3RydWN0IGttZW1f Y2FjaGUgKnMsCiAKIAl0cmFjZV9rbWFsbG9jX25vZGUoX1JFVF9JUF8sIHJldCwKIAkJCSAgIHNp emUsIHMtPnNpemUsIGdmcGZsYWdzLCBub2RlKTsKKworCWthc2FuX2ttYWxsb2MocywgcmV0LCBz aXplKTsKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JUX1NZTUJPTChrbWVtX2NhY2hlX2FsbG9jX25v ZGVfdHJhY2UpOwpAQCAtMjkxNSw2ICsyOTMxLDcgQEAgc3RhdGljIHZvaWQgZWFybHlfa21lbV9j YWNoZV9ub2RlX2FsbG9jKGludCBub2RlKQogCWluaXRfb2JqZWN0KGttZW1fY2FjaGVfbm9kZSwg biwgU0xVQl9SRURfQUNUSVZFKTsKIAlpbml0X3RyYWNraW5nKGttZW1fY2FjaGVfbm9kZSwgbik7 CiAjZW5kaWYKKwlrYXNhbl9rbWFsbG9jKGttZW1fY2FjaGVfbm9kZSwgbiwgc2l6ZW9mKHN0cnVj dCBrbWVtX2NhY2hlX25vZGUpKTsKIAlpbml0X2ttZW1fY2FjaGVfbm9kZShuKTsKIAlpbmNfc2xh YnNfbm9kZShrbWVtX2NhY2hlX25vZGUsIG5vZGUsIHBhZ2UtPm9iamVjdHMpOwogCkBAIC0zMjg3 LDYgKzMzMDQsOCBAQCB2b2lkICpfX2ttYWxsb2Moc2l6ZV90IHNpemUsIGdmcF90IGZsYWdzKQog CiAJdHJhY2Vfa21hbGxvYyhfUkVUX0lQXywgcmV0LCBzaXplLCBzLT5zaXplLCBmbGFncyk7CiAK KwlrYXNhbl9rbWFsbG9jKHMsIHJldCwgc2l6ZSk7CisKIAlyZXR1cm4gcmV0OwogfQogRVhQT1JU X1NZTUJPTChfX2ttYWxsb2MpOwpAQCAtMzMzMCwxMiArMzM0OSwxNCBAQCB2b2lkICpfX2ttYWxs b2Nfbm9kZShzaXplX3Qgc2l6ZSwgZ2ZwX3QgZmxhZ3MsIGludCBub2RlKQogCiAJdHJhY2Vfa21h bGxvY19ub2RlKF9SRVRfSVBfLCByZXQsIHNpemUsIHMtPnNpemUsIGZsYWdzLCBub2RlKTsKIAor CWthc2FuX2ttYWxsb2MocywgcmV0LCBzaXplKTsKKwogCXJldHVybiByZXQ7CiB9CiBFWFBPUlRf U1lNQk9MKF9fa21hbGxvY19ub2RlKTsKICNlbmRpZgogCi1zaXplX3Qga3NpemUoY29uc3Qgdm9p ZCAqb2JqZWN0KQorc3RhdGljIHNpemVfdCBfX2tzaXplKGNvbnN0IHZvaWQgKm9iamVjdCkKIHsK IAlzdHJ1Y3QgcGFnZSAqcGFnZTsKIApAQCAtMzM1MSw2ICszMzcyLDE1IEBAIHNpemVfdCBrc2l6 ZShjb25zdCB2b2lkICpvYmplY3QpCiAKIAlyZXR1cm4gc2xhYl9rc2l6ZShwYWdlLT5zbGFiX2Nh Y2hlKTsKIH0KKworc2l6ZV90IGtzaXplKGNvbnN0IHZvaWQgKm9iamVjdCkKK3sKKwlzaXplX3Qg c2l6ZSA9IF9fa3NpemUob2JqZWN0KTsKKwkvKiBXZSBhc3N1bWUgdGhhdCBrc2l6ZSBjYWxsZXJz IGNvdWxkIHVzZSB3aG9sZSBhbGxvY2F0ZWQgYXJlYSwKKwkgICBzbyB3ZSBuZWVkIHVucG9pc29u IHRoaXMgYXJlYS4gKi8KKwlrYXNhbl9rcmVhbGxvYyhvYmplY3QsIHNpemUpOworCXJldHVybiBz aXplOworfQogRVhQT1JUX1NZTUJPTChrc2l6ZSk7CiAKIHZvaWQga2ZyZWUoY29uc3Qgdm9pZCAq eCkKLS0gCjIuMC40Cgo= --e89a8f234a33fbb34b050d3084cc-- -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: email@kvack.org