Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933909Ab2FBWZy (ORCPT ); Sat, 2 Jun 2012 18:25:54 -0400 Received: from mail-wg0-f44.google.com ([74.125.82.44]:57881 "EHLO mail-wg0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754469Ab2FBWZx (ORCPT ); Sat, 2 Jun 2012 18:25:53 -0400 MIME-Version: 1.0 In-Reply-To: <20120602211917.14275f12@pyramind.ukuu.org.uk> References: <4FC6189B.9080909@fusionio.com> <1338402812.2760.413.camel@edumazet-glaptop> <4FC66D3D.6080509@fusionio.com> <1338404902.2760.451.camel@edumazet-glaptop> <1338410107.2760.544.camel@edumazet-glaptop> <1338456918.2760.1318.camel@edumazet-glaptop> <1338574627.2760.1545.camel@edumazet-glaptop> <1338583498.2760.1648.camel@edumazet-glaptop> <20120601215620.305155c0@pyramind.ukuu.org.uk> <1338584389.2760.1653.camel@edumazet-glaptop> <1338621438.2760.1679.camel@edumazet-glaptop> <1338623708.2760.1691.camel@edumazet-glaptop> <1338624102.2760.1693.camel@edumazet-glaptop> <20120602125723.5b057570@pyramind.ukuu.org.uk> <1338640231.2760.1704.camel@edumazet-glaptop> <20120602211917.14275f12@pyramind.ukuu.org.uk> From: Linus Torvalds Date: Sat, 2 Jun 2012 15:25:29 -0700 X-Google-Sender-Auth: Uu_geMLtRimViE9KHNbjCEWlCl8 Message-ID: Subject: Re: [PATCH] tty: add lockdep annotations To: Alan Cox Cc: Eric Dumazet , Alan Cox , "linux-kernel@vger.kernel.org" , Jens Axboe Content-Type: multipart/mixed; boundary=001636b430e492232404c184c85c Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 39892 Lines: 541 --001636b430e492232404c184c85c Content-Type: text/plain; charset=ISO-8859-1 On Sat, Jun 2, 2012 at 1:19 PM, Alan Cox wrote: > > Yep. Been that way 8) > > tty_driver_remove_tty is called from tty_shutdown is called from the > final tty_kref_put can be called from IRQ context. Hmm. Ok. Looking at it, the ".shutdown" and ".remove" functions are all very limited, so I suspect we could just make the rule be that the install/lookup functions are serialized against each other by the pty_mutex (true today), and then we just add a small spinlock for the actual driver array insert/lookup. So my patch could probably be munged to do something like that. But since I want to close the merge window and release -rc1 today, it does feel too late to start mucking with fundamental locking things. So reverting is likely the right thing to do. Can somebody double-check the attached revert commit? Did I miss some commit that depended on the tty locking changes? Eric, does this make things work for you again? When/if we get the locking sorted out for the tty install/lookup/remove, we can revert this revert and do the locking fixes on top of that. Alan, please double-check my revert. I've done an allmodconfig build with it, and I've looked at the patch and grepped that I didn't miss any 'tty_[un]lock()' cases, but that's the limit of my sanity-checking. I did check that this revert means that the main tty files are now back in the same exact state they were before that "tty_lock: Localise the lock" commit. I left the per-ldisc waitqueue change in there, though, that one seemed independent. Linus --001636b430e492232404c184c85c Content-Type: application/octet-stream; name="tty-locking-revert.patch" Content-Disposition: attachment; filename="tty-locking-revert.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h2z90z570 Y29tbWl0IGYzMDk1MzJiZjNlMWNjMWI3ODc0MDNkODRlMzAzOTgxMmE3ZGJlNTAKQXV0aG9yOiBM aW51cyBUb3J2YWxkcyA8dG9ydmFsZHNAbGludXgtZm91bmRhdGlvbi5vcmc+CkRhdGU6ICAgU2F0 IEp1biAyIDE1OjIxOjQzIDIwMTIgLTA3MDAKCiAgICB0dHk6IFJldmVydCB0aGUgdHR5IGxvY2tp bmcgc2VyaWVzLCBpdCBuZWVkcyBtb3JlIHdvcmsKICAgIAogICAgVGhpcyByZXZlcnRzIHRoZSB0 dHkgbGF5ZXIgY2hhbmdlIHRvIHVzZSBwZXItdHR5IGxvY2tpbmcsIGJlY2F1c2UgaXQncwogICAg bm90IGNvcnJlY3QgeWV0LCBhbmQgZml4aW5nIGl0IHdpbGwgcmVxdWlyZSBzb21lIG1vcmUgZGVl cCBzdXJnZXJ5LgogICAgCiAgICBUaGUgbWFpbiByZXZlcnQgaXMgZDI5ZjNlZjM5YmU0ICgidHR5 X2xvY2s6IExvY2FsaXNlIHRoZSBsb2NrIiksIGJ1dAogICAgdGhlcmUgYXJlIHNldmVyYWwgc21h bGxlciBjb21taXRzIHRoYXQgYnVpbHQgdXBvbiBpdCwgdGhleSBhbHNvIGdldAogICAgcmV2ZXJ0 ZWQgaGVyZS4gVGhlIGxpc3Qgb2YgcmV2ZXJ0ZWQgY29tbWl0cyBpczoKICAgIAogICAgICBmZGU4 NmQzMTA4ODYgLSB0dHk6IGFkZCBsb2NrZGVwIGFubm90YXRpb25zCiAgICAgIDhmNjU3NmFkNDc2 YiAtIHR0eTogZml4IGxkaXNjIGxvY2sgaW52ZXJzaW9uIHRyYWNlCiAgICAgIGQzY2E4YjY0Yjk3 ZSAtIHB0eTogRml4IGxvY2sgaW52ZXJzaW9uCiAgICAgIGIxZDY3OWFmZDc2NiAtIHR0eTogZHJv cCB0aGUgcHR5IGxvY2sgZHVyaW5nIGhhbmd1cAogICAgICBhYmNlZmU1ZmMzNTcgLSB0dHkvYW1p c2VyaWFsOiBBZGQgbWlzc2luZyBhcmd1bWVudCBmb3IgdHR5X3VubG9jaygpCiAgICAgIGZkMTFi NDJlMzU5OCAtIGNyaXM6IGZpeCBtaXNzaW5nIHR0eSBhcmcgaW4gd2FpdF9ldmVudF9pbnRlcnJ1 cHRpYmxlX3R0eSBjYWxsCiAgICAgIGQyOWYzZWYzOWJlNCAtIHR0eV9sb2NrOiBMb2NhbGlzZSB0 aGUgbG9jawogICAgCiAgICBUaGUgcmV2ZXJ0IGhhZCBhIHRyaXZpYWwgY29uZmxpY3QgaW4gdGhl IDY4MzYwc2VyaWFsLmMgc3RhZ2luZyBkcml2ZXIKICAgIHRoYXQgZ290IHJlbW92ZWQgaW4gdGhl IG1lYW50aW1lLgogICAgCiAgICBTaWduZWQtb2ZmLWJ5OiBMaW51cyBUb3J2YWxkcyA8dG9ydmFs ZHNAbGludXgtZm91bmRhdGlvbi5vcmc+Ci0tLQogZHJpdmVycy90dHkvYW1pc2VyaWFsLmMgICAg ICB8IDE0ICsrKystLS0tLQogZHJpdmVycy90dHkvY3ljbGFkZXMuYyAgICAgICB8ICAyICstCiBk cml2ZXJzL3R0eS9uX3IzOTY0LmMgICAgICAgIHwgMTEgKysrKy0tLQogZHJpdmVycy90dHkvcHR5 LmMgICAgICAgICAgICB8IDI1ICsrKysrKystLS0tLS0tLS0KIGRyaXZlcnMvdHR5L3NlcmlhbC9j cmlzdjEwLmMgfCAgOCArKy0tLQogZHJpdmVycy90dHkvc3luY2xpbmsuYyAgICAgICB8ICA0ICst LQogZHJpdmVycy90dHkvc3luY2xpbmtfZ3QuYyAgICB8ICA0ICstLQogZHJpdmVycy90dHkvc3lu Y2xpbmttcC5jICAgICB8ICA0ICstLQogZHJpdmVycy90dHkvdHR5X2lvLmMgICAgICAgICB8IDY3 ICsrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBkcml2ZXJzL3R0eS90 dHlfbGRpc2MuYyAgICAgIHwgNjcgKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KIGRyaXZlcnMvdHR5L3R0eV9tdXRleC5jICAgICAgfCA3MSArKysrKysrKysrLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZHJpdmVycy90dHkvdHR5X3BvcnQuYyAgICAg ICB8ICA2ICsrLS0KIGluY2x1ZGUvbGludXgvdHR5LmggICAgICAgICAgfCAyMyArKysrKystLS0t LS0tLQogbmV0L2JsdWV0b290aC9yZmNvbW0vdHR5LmMgICB8ICA0ICstLQogMTQgZmlsZXMgY2hh bmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDE5MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9k cml2ZXJzL3R0eS9hbWlzZXJpYWwuYyBiL2RyaXZlcnMvdHR5L2FtaXNlcmlhbC5jCmluZGV4IDM1 ODE5ZTMxMjYyNC4uNmNjNDM1OGY2OGMxIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9hbWlzZXJp YWwuYworKysgYi9kcml2ZXJzL3R0eS9hbWlzZXJpYWwuYwpAQCAtMTAzMyw3ICsxMDMzLDcgQEAg c3RhdGljIGludCBnZXRfc2VyaWFsX2luZm8oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0 IHNlcmlhbF9zdGF0ZSAqc3RhdGUsCiAJaWYgKCFyZXRpbmZvKQogCQlyZXR1cm4gLUVGQVVMVDsK IAltZW1zZXQoJnRtcCwgMCwgc2l6ZW9mKHRtcCkpOwotCXR0eV9sb2NrKHR0eSk7CisJdHR5X2xv Y2soKTsKIAl0bXAubGluZSA9IHR0eS0+aW5kZXg7CiAJdG1wLnBvcnQgPSBzdGF0ZS0+cG9ydDsK IAl0bXAuZmxhZ3MgPSBzdGF0ZS0+dHBvcnQuZmxhZ3M7CkBAIC0xMDQyLDcgKzEwNDIsNyBAQCBz dGF0aWMgaW50IGdldF9zZXJpYWxfaW5mbyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3Qg c2VyaWFsX3N0YXRlICpzdGF0ZSwKIAl0bXAuY2xvc2VfZGVsYXkgPSBzdGF0ZS0+dHBvcnQuY2xv c2VfZGVsYXk7CiAJdG1wLmNsb3Npbmdfd2FpdCA9IHN0YXRlLT50cG9ydC5jbG9zaW5nX3dhaXQ7 CiAJdG1wLmN1c3RvbV9kaXZpc29yID0gc3RhdGUtPmN1c3RvbV9kaXZpc29yOwotCXR0eV91bmxv Y2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJaWYgKGNvcHlfdG9fdXNlcihyZXRpbmZvLCZ0bXAs c2l6ZW9mKCpyZXRpbmZvKSkpCiAJCXJldHVybiAtRUZBVUxUOwogCXJldHVybiAwOwpAQCAtMTA1 OSwxMiArMTA1OSwxMiBAQCBzdGF0aWMgaW50IHNldF9zZXJpYWxfaW5mbyhzdHJ1Y3QgdHR5X3N0 cnVjdCAqdHR5LCBzdHJ1Y3Qgc2VyaWFsX3N0YXRlICpzdGF0ZSwKIAlpZiAoY29weV9mcm9tX3Vz ZXIoJm5ld19zZXJpYWwsbmV3X2luZm8sc2l6ZW9mKG5ld19zZXJpYWwpKSkKIAkJcmV0dXJuIC1F RkFVTFQ7CiAKLQl0dHlfbG9jayh0dHkpOworCXR0eV9sb2NrKCk7CiAJY2hhbmdlX3NwZCA9ICgo bmV3X3NlcmlhbC5mbGFncyBeIHBvcnQtPmZsYWdzKSAmIEFTWU5DX1NQRF9NQVNLKSB8fAogCQlu ZXdfc2VyaWFsLmN1c3RvbV9kaXZpc29yICE9IHN0YXRlLT5jdXN0b21fZGl2aXNvcjsKIAlpZiAo bmV3X3NlcmlhbC5pcnEgfHwgbmV3X3NlcmlhbC5wb3J0ICE9IHN0YXRlLT5wb3J0IHx8CiAJCQlu ZXdfc2VyaWFsLnhtaXRfZmlmb19zaXplICE9IHN0YXRlLT54bWl0X2ZpZm9fc2l6ZSkgewotCQl0 dHlfdW5sb2NrKHR0eSk7CisJCXR0eV91bmxvY2soKTsKIAkJcmV0dXJuIC1FSU5WQUw7CiAJfQog ICAKQEAgLTEwNzQsNyArMTA3NCw3IEBAIHN0YXRpYyBpbnQgc2V0X3NlcmlhbF9pbmZvKHN0cnVj dCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBzZXJpYWxfc3RhdGUgKnN0YXRlLAogCQkgICAgKG5l d19zZXJpYWwueG1pdF9maWZvX3NpemUgIT0gc3RhdGUtPnhtaXRfZmlmb19zaXplKSB8fAogCQkg ICAgKChuZXdfc2VyaWFsLmZsYWdzICYgfkFTWU5DX1VTUl9NQVNLKSAhPQogCQkgICAgIChwb3J0 LT5mbGFncyAmIH5BU1lOQ19VU1JfTUFTSykpKSB7Ci0JCQl0dHlfdW5sb2NrKHR0eSk7CisJCQl0 dHlfdW5sb2NrKCk7CiAJCQlyZXR1cm4gLUVQRVJNOwogCQl9CiAJCXBvcnQtPmZsYWdzID0gKChw b3J0LT5mbGFncyAmIH5BU1lOQ19VU1JfTUFTSykgfApAQCAtMTA4NCw3ICsxMDg0LDcgQEAgc3Rh dGljIGludCBzZXRfc2VyaWFsX2luZm8oc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IHNl cmlhbF9zdGF0ZSAqc3RhdGUsCiAJfQogCiAJaWYgKG5ld19zZXJpYWwuYmF1ZF9iYXNlIDwgOTYw MCkgewotCQl0dHlfdW5sb2NrKHR0eSk7CisJCXR0eV91bmxvY2soKTsKIAkJcmV0dXJuIC1FSU5W QUw7CiAJfQogCkBAIC0xMTE2LDcgKzExMTYsNyBAQCBjaGVja19hbmRfZXhpdDoKIAkJfQogCX0g ZWxzZQogCQlyZXR2YWwgPSBzdGFydHVwKHR0eSwgc3RhdGUpOwotCXR0eV91bmxvY2sodHR5KTsK Kwl0dHlfdW5sb2NrKCk7CiAJcmV0dXJuIHJldHZhbDsKIH0KIApkaWZmIC0tZ2l0IGEvZHJpdmVy cy90dHkvY3ljbGFkZXMuYyBiL2RyaXZlcnMvdHR5L2N5Y2xhZGVzLmMKaW5kZXggNjk4NGUxYTI2 ODZhLi5lNjFjYWJkZDY5ZGYgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L2N5Y2xhZGVzLmMKKysr IGIvZHJpdmVycy90dHkvY3ljbGFkZXMuYwpAQCAtMTU5OSw3ICsxNTk5LDcgQEAgc3RhdGljIGlu dCBjeV9vcGVuKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxwKQogCSAq IElmIHRoZSBwb3J0IGlzIHRoZSBtaWRkbGUgb2YgY2xvc2luZywgYmFpbCBvdXQgbm93CiAJICov CiAJaWYgKHR0eV9odW5nX3VwX3AoZmlscCkgfHwgKGluZm8tPnBvcnQuZmxhZ3MgJiBBU1lOQ19D TE9TSU5HKSkgewotCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdHR5KHR0eSwgaW5mby0+cG9y dC5jbG9zZV93YWl0LAorCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdHR5KGluZm8tPnBvcnQu Y2xvc2Vfd2FpdCwKIAkJCQkhKGluZm8tPnBvcnQuZmxhZ3MgJiBBU1lOQ19DTE9TSU5HKSk7CiAJ CXJldHVybiAoaW5mby0+cG9ydC5mbGFncyAmIEFTWU5DX0hVUF9OT1RJRlkpID8gLUVBR0FJTjog LUVSRVNUQVJUU1lTOwogCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L25fcjM5NjQuYyBiL2Ry aXZlcnMvdHR5L25fcjM5NjQuYwppbmRleCA2NTZhZDkzYmJjOTYuLjVjNmMzMTQ1OWEyZiAxMDA2 NDQKLS0tIGEvZHJpdmVycy90dHkvbl9yMzk2NC5jCisrKyBiL2RyaXZlcnMvdHR5L25fcjM5NjQu YwpAQCAtMTA2NSw4ICsxMDY1LDcgQEAgc3RhdGljIHNzaXplX3QgcjM5NjRfcmVhZChzdHJ1Y3Qg dHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAogCVRSQUNFX0woInJlYWQoKSIp OwogCi0JLyogRklYTUU6IHNob3VsZCB1c2UgYSBwcml2YXRlIGxvY2sgKi8KLQl0dHlfbG9jayh0 dHkpOworCXR0eV9sb2NrKCk7CiAKIAlwQ2xpZW50ID0gZmluZENsaWVudChwSW5mbywgdGFza19w aWQoY3VycmVudCkpOwogCWlmIChwQ2xpZW50KSB7CkBAIC0xMDc4LDcgKzEwNzcsNyBAQCBzdGF0 aWMgc3NpemVfdCByMzk2NF9yZWFkKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxl ICpmaWxlLAogCQkJCWdvdG8gdW5sb2NrOwogCQkJfQogCQkJLyogYmxvY2sgdW50aWwgdGhlcmUg aXMgYSBtZXNzYWdlOiAqLwotCQkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3R0eSh0dHksIHBJ bmZvLT5yZWFkX3dhaXQsCisJCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdHR5KHBJbmZvLT5y ZWFkX3dhaXQsCiAJCQkJCShwTXNnID0gcmVtb3ZlX21zZyhwSW5mbywgcENsaWVudCkpKTsKIAkJ fQogCkBAIC0xMTA4LDcgKzExMDcsNyBAQCBzdGF0aWMgc3NpemVfdCByMzk2NF9yZWFkKHN0cnVj dCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCBmaWxlICpmaWxlLAogCX0KIAlyZXQgPSAtRVBFUk07 CiB1bmxvY2s6Ci0JdHR5X3VubG9jayh0dHkpOworCXR0eV91bmxvY2soKTsKIAlyZXR1cm4gcmV0 OwogfQogCkBAIC0xMTU3LDcgKzExNTYsNyBAQCBzdGF0aWMgc3NpemVfdCByMzk2NF93cml0ZShz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlsZSwKIAlwSGVhZGVyLT5sb2Nr cyA9IDA7CiAJcEhlYWRlci0+b3duZXIgPSBOVUxMOwogCi0JdHR5X2xvY2sodHR5KTsKKwl0dHlf bG9jaygpOwogCiAJcENsaWVudCA9IGZpbmRDbGllbnQocEluZm8sIHRhc2tfcGlkKGN1cnJlbnQp KTsKIAlpZiAocENsaWVudCkgewpAQCAtMTE3Niw3ICsxMTc1LDcgQEAgc3RhdGljIHNzaXplX3Qg cjM5NjRfd3JpdGUoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbGUsCiAJ YWRkX3R4X3F1ZXVlKHBJbmZvLCBwSGVhZGVyKTsKIAl0cmlnZ2VyX3RyYW5zbWl0KHBJbmZvKTsK IAotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlm ZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3B0eS5jIGIvZHJpdmVycy90dHkvcHR5LmMKaW5kZXggNjVj N2M2MmM3YWFlLi41NTA1ZmZjOTFkYTQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3B0eS5jCisr KyBiL2RyaXZlcnMvdHR5L3B0eS5jCkBAIC00Nyw3ICs0Nyw2IEBAIHN0YXRpYyB2b2lkIHB0eV9j bG9zZShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAl3YWtlX3Vw X2ludGVycnVwdGlibGUoJnR0eS0+cmVhZF93YWl0KTsKIAl3YWtlX3VwX2ludGVycnVwdGlibGUo JnR0eS0+d3JpdGVfd2FpdCk7CiAJdHR5LT5wYWNrZXQgPSAwOwotCS8qIFJldmlldyAtIGtyZWZz IG9uIHR0eV9saW5rID8/ICovCiAJaWYgKCF0dHktPmxpbmspCiAJCXJldHVybjsKIAl0dHktPmxp bmstPnBhY2tldCA9IDA7CkBAIC02Myw5ICs2Miw5IEBAIHN0YXRpYyB2b2lkIHB0eV9jbG9zZShz dHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAkJICAgICAgICBtdXRl eF91bmxvY2soJmRldnB0c19tdXRleCk7CiAJCX0KICNlbmRpZgotCQl0dHlfdW5sb2NrKHR0eSk7 CisJCXR0eV91bmxvY2soKTsKIAkJdHR5X3ZoYW5ndXAodHR5LT5saW5rKTsKLQkJdHR5X2xvY2so dHR5KTsKKwkJdHR5X2xvY2soKTsKIAl9CiB9CiAKQEAgLTYyMywyNyArNjIyLDI2IEBAIHN0YXRp YyBpbnQgcHRteF9vcGVuKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQog CQlyZXR1cm4gcmV0dmFsOwogCiAJLyogZmluZCBhIGRldmljZSB0aGF0IGlzIG5vdCBpbiB1c2Uu ICovCi0JbXV0ZXhfbG9jaygmZGV2cHRzX211dGV4KTsKKwl0dHlfbG9jaygpOwogCWluZGV4ID0g ZGV2cHRzX25ld19pbmRleChpbm9kZSk7CisJdHR5X3VubG9jaygpOwogCWlmIChpbmRleCA8IDAp IHsKIAkJcmV0dmFsID0gaW5kZXg7CiAJCWdvdG8gZXJyX2ZpbGU7CiAJfQogCi0JbXV0ZXhfdW5s b2NrKCZkZXZwdHNfbXV0ZXgpOwotCiAJbXV0ZXhfbG9jaygmdHR5X211dGV4KTsKKwltdXRleF9s b2NrKCZkZXZwdHNfbXV0ZXgpOwogCXR0eSA9IHR0eV9pbml0X2RldihwdG1fZHJpdmVyLCBpbmRl eCk7CisJbXV0ZXhfdW5sb2NrKCZkZXZwdHNfbXV0ZXgpOworCXR0eV9sb2NrKCk7CisJbXV0ZXhf dW5sb2NrKCZ0dHlfbXV0ZXgpOwogCiAJaWYgKElTX0VSUih0dHkpKSB7CiAJCXJldHZhbCA9IFBU Ul9FUlIodHR5KTsKIAkJZ290byBvdXQ7CiAJfQogCi0JLyogVGhlIHR0eSByZXR1cm5lZCBoZXJl IGlzIGxvY2tlZCBzbyB3ZSBjYW4gc2FmZWx5Ci0JICAgZHJvcCB0aGUgbXV0ZXggKi8KLQltdXRl eF91bmxvY2soJnR0eV9tdXRleCk7Ci0KIAlzZXRfYml0KFRUWV9QVFlfTE9DSywgJnR0eS0+Zmxh Z3MpOyAvKiBMT0NLIFRIRSBTTEFWRSAqLwogCiAJdHR5X2FkZF9maWxlKHR0eSwgZmlscCk7CkBA IC02NTYsMTcgKzY1NCwxNiBAQCBzdGF0aWMgaW50IHB0bXhfb3BlbihzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAlpZiAocmV0dmFsKQogCQlnb3RvIGVycl9yZWxlYXNl OwogCi0JdHR5X3VubG9jayh0dHkpOworCXR0eV91bmxvY2soKTsKIAlyZXR1cm4gMDsKIGVycl9y ZWxlYXNlOgotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJdHR5X3JlbGVhc2Uo aW5vZGUsIGZpbHApOwogCXJldHVybiByZXR2YWw7CiBvdXQ6Ci0JbXV0ZXhfdW5sb2NrKCZ0dHlf bXV0ZXgpOwogCWRldnB0c19raWxsX2luZGV4KGlub2RlLCBpbmRleCk7CisJdHR5X3VubG9jaygp OwogZXJyX2ZpbGU6Ci0gICAgICAgIG11dGV4X3VubG9jaygmZGV2cHRzX211dGV4KTsKIAl0dHlf ZnJlZV9maWxlKGZpbHApOwogCXJldHVybiByZXR2YWw7CiB9CmRpZmYgLS1naXQgYS9kcml2ZXJz L3R0eS9zZXJpYWwvY3Jpc3YxMC5jIGIvZHJpdmVycy90dHkvc2VyaWFsL2NyaXN2MTAuYwppbmRl eCA3MjY0ZDRkMjY3MTcuLjgwYjZiMWIxZjcyNSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvc2Vy aWFsL2NyaXN2MTAuYworKysgYi9kcml2ZXJzL3R0eS9zZXJpYWwvY3Jpc3YxMC5jCkBAIC0zOTc2 LDcgKzM5NzYsNyBAQCBibG9ja190aWxfcmVhZHkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3Ry dWN0IGZpbGUgKiBmaWxwLAogCSAqLwogCWlmICh0dHlfaHVuZ191cF9wKGZpbHApIHx8CiAJICAg IChpbmZvLT5mbGFncyAmIEFTWU5DX0NMT1NJTkcpKSB7Ci0JCXdhaXRfZXZlbnRfaW50ZXJydXB0 aWJsZV90dHkodHR5LCBpbmZvLT5jbG9zZV93YWl0LAorCQl3YWl0X2V2ZW50X2ludGVycnVwdGli bGVfdHR5KGluZm8tPmNsb3NlX3dhaXQsCiAJCQkhKGluZm8tPmZsYWdzICYgQVNZTkNfQ0xPU0lO RykpOwogI2lmZGVmIFNFUklBTF9ET19SRVNUQVJUCiAJCWlmIChpbmZvLT5mbGFncyAmIEFTWU5D X0hVUF9OT1RJRlkpCkBAIC00MDUyLDkgKzQwNTIsOSBAQCBibG9ja190aWxfcmVhZHkoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxwLAogCQlwcmludGsoImJsb2NrX3Rp bF9yZWFkeSBibG9ja2luZzogdHR5UyVkLCBjb3VudCA9ICVkXG4iLAogCQkgICAgICAgaW5mby0+ bGluZSwgaW5mby0+Y291bnQpOwogI2VuZGlmCi0JCXR0eV91bmxvY2sodHR5KTsKKwkJdHR5X3Vu bG9jaygpOwogCQlzY2hlZHVsZSgpOwotCQl0dHlfbG9jayh0dHkpOworCQl0dHlfbG9jaygpOwog CX0KIAlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwogCXJlbW92ZV93YWl0X3F1ZXVl KCZpbmZvLT5vcGVuX3dhaXQsICZ3YWl0KTsKQEAgLTQxMTUsNyArNDExNSw3IEBAIHJzX29wZW4o c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKiBmaWxwKQogCSAqLwogCWlmICh0 dHlfaHVuZ191cF9wKGZpbHApIHx8CiAJICAgIChpbmZvLT5mbGFncyAmIEFTWU5DX0NMT1NJTkcp KSB7Ci0JCXdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90dHkodHR5LCBpbmZvLT5jbG9zZV93YWl0 LAorCQl3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdHR5KGluZm8tPmNsb3NlX3dhaXQsCiAJCQkh KGluZm8tPmZsYWdzICYgQVNZTkNfQ0xPU0lORykpOwogI2lmZGVmIFNFUklBTF9ET19SRVNUQVJU CiAJCXJldHVybiAoKGluZm8tPmZsYWdzICYgQVNZTkNfSFVQX05PVElGWSkgPwpkaWZmIC0tZ2l0 IGEvZHJpdmVycy90dHkvc3luY2xpbmsuYyBiL2RyaXZlcnMvdHR5L3N5bmNsaW5rLmMKaW5kZXgg NWVkMGRhYWU2NTY0Li41OTNkNDBhZDBhNmIgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3N5bmNs aW5rLmMKKysrIGIvZHJpdmVycy90dHkvc3luY2xpbmsuYwpAQCAtMzMzOCw5ICszMzM4LDkgQEAg c3RhdGljIGludCBibG9ja190aWxfcmVhZHkoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0 IGZpbGUgKiBmaWxwLAogCQkJcHJpbnRrKCIlcyglZCk6YmxvY2tfdGlsX3JlYWR5IGJsb2NraW5n IG9uICVzIGNvdW50PSVkXG4iLAogCQkJCSBfX0ZJTEVfXyxfX0xJTkVfXywgdHR5LT5kcml2ZXIt Pm5hbWUsIHBvcnQtPmNvdW50ICk7CiAJCQkJIAotCQl0dHlfdW5sb2NrKHR0eSk7CisJCXR0eV91 bmxvY2soKTsKIAkJc2NoZWR1bGUoKTsKLQkJdHR5X2xvY2sodHR5KTsKKwkJdHR5X2xvY2soKTsK IAl9CiAJCiAJc2V0X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKZGlmZiAtLWdpdCBhL2Ry aXZlcnMvdHR5L3N5bmNsaW5rX2d0LmMgYi9kcml2ZXJzL3R0eS9zeW5jbGlua19ndC5jCmluZGV4 IDQ1YjQzZjExY2EzOS4uYWExZGViZjk3Y2M3IDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zeW5j bGlua19ndC5jCisrKyBiL2RyaXZlcnMvdHR5L3N5bmNsaW5rX2d0LmMKQEAgLTMzMzYsOSArMzMz Niw5IEBAIHN0YXRpYyBpbnQgYmxvY2tfdGlsX3JlYWR5KHN0cnVjdCB0dHlfc3RydWN0ICp0dHks IHN0cnVjdCBmaWxlICpmaWxwLAogCQl9CiAKIAkJREJHSU5GTygoIiVzIGJsb2NrX3RpbF9yZWFk eSB3YWl0XG4iLCB0dHktPmRyaXZlci0+bmFtZSkpOwotCQl0dHlfdW5sb2NrKHR0eSk7CisJCXR0 eV91bmxvY2soKTsKIAkJc2NoZWR1bGUoKTsKLQkJdHR5X2xvY2sodHR5KTsKKwkJdHR5X2xvY2so KTsKIAl9CiAKIAlzZXRfY3VycmVudF9zdGF0ZShUQVNLX1JVTk5JTkcpOwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy90dHkvc3luY2xpbmttcC5jIGIvZHJpdmVycy90dHkvc3luY2xpbmttcC5jCmluZGV4 IDRhMWU0ZjA3NzY1Yi4uYTNkZGRjMTJkMmZlIDEwMDY0NAotLS0gYS9kcml2ZXJzL3R0eS9zeW5j bGlua21wLmMKKysrIGIvZHJpdmVycy90dHkvc3luY2xpbmttcC5jCkBAIC0zMzU3LDkgKzMzNTcs OSBAQCBzdGF0aWMgaW50IGJsb2NrX3RpbF9yZWFkeShzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBz dHJ1Y3QgZmlsZSAqZmlscCwKIAkJCXByaW50aygiJXMoJWQpOiVzIGJsb2NrX3RpbF9yZWFkeSgp IGNvdW50PSVkXG4iLAogCQkJCSBfX0ZJTEVfXyxfX0xJTkVfXywgdHR5LT5kcml2ZXItPm5hbWUs IHBvcnQtPmNvdW50ICk7CiAKLQkJdHR5X3VubG9jayh0dHkpOworCQl0dHlfdW5sb2NrKCk7CiAJ CXNjaGVkdWxlKCk7Ci0JCXR0eV9sb2NrKHR0eSk7CisJCXR0eV9sb2NrKCk7CiAJfQogCiAJc2V0 X2N1cnJlbnRfc3RhdGUoVEFTS19SVU5OSU5HKTsKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdHR5L3R0 eV9pby5jIGIvZHJpdmVycy90dHkvdHR5X2lvLmMKaW5kZXggOWU5MzBjMDA5YmYyLi5iNDI1Yzc5 Njc1YWQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3R0eV9pby5jCisrKyBiL2RyaXZlcnMvdHR5 L3R0eV9pby5jCkBAIC0xODUsNyArMTg1LDYgQEAgdm9pZCBmcmVlX3R0eV9zdHJ1Y3Qoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSkKIAkJcHV0X2RldmljZSh0dHktPmRldik7CiAJa2ZyZWUodHR5LT53 cml0ZV9idWYpOwogCXR0eV9idWZmZXJfZnJlZV9hbGwodHR5KTsKLQl0dHktPm1hZ2ljID0gMHhE RUFEREVBRDsKIAlrZnJlZSh0dHkpOwogfQogCkBAIC01NzQsNyArNTczLDcgQEAgdm9pZCBfX3R0 eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkKIAl9CiAJc3Bpbl91bmxvY2soJnJlZGly ZWN0X2xvY2spOwogCi0JdHR5X2xvY2sodHR5KTsKKwl0dHlfbG9jaygpOwogCiAJLyogc29tZSBm dW5jdGlvbnMgYmVsb3cgZHJvcCBCVE0sIHNvIHdlIG5lZWQgdGhpcyBiaXQgKi8KIAlzZXRfYml0 KFRUWV9IVVBQSU5HLCAmdHR5LT5mbGFncyk7CkBAIC02NjcsNyArNjY2LDcgQEAgdm9pZCBfX3R0 eV9oYW5ndXAoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSkKIAljbGVhcl9iaXQoVFRZX0hVUFBJTkcs ICZ0dHktPmZsYWdzKTsKIAl0dHlfbGRpc2NfZW5hYmxlKHR0eSk7CiAKLQl0dHlfdW5sb2NrKHR0 eSk7CisJdHR5X3VubG9jaygpOwogCiAJaWYgKGYpCiAJCWZwdXQoZik7CkBAIC0xMTA0LDEyICsx MTAzLDEyIEBAIHZvaWQgdHR5X3dyaXRlX21lc3NhZ2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwg Y2hhciAqbXNnKQogewogCWlmICh0dHkpIHsKIAkJbXV0ZXhfbG9jaygmdHR5LT5hdG9taWNfd3Jp dGVfbG9jayk7Ci0JCXR0eV9sb2NrKHR0eSk7CisJCXR0eV9sb2NrKCk7CiAJCWlmICh0dHktPm9w cy0+d3JpdGUgJiYgIXRlc3RfYml0KFRUWV9DTE9TSU5HLCAmdHR5LT5mbGFncykpIHsKLQkJCXR0 eV91bmxvY2sodHR5KTsKKwkJCXR0eV91bmxvY2soKTsKIAkJCXR0eS0+b3BzLT53cml0ZSh0dHks IG1zZywgc3RybGVuKG1zZykpOwogCQl9IGVsc2UKLQkJCXR0eV91bmxvY2sodHR5KTsKKwkJCXR0 eV91bmxvY2soKTsKIAkJdHR5X3dyaXRlX3VubG9jayh0dHkpOwogCX0KIAlyZXR1cm47CkBAIC0x NDA0LDcgKzE0MDMsNiBAQCBzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5X2luaXRfZGV2KHN0cnVjdCB0 dHlfZHJpdmVyICpkcml2ZXIsIGludCBpZHgpCiAJfQogCWluaXRpYWxpemVfdHR5X3N0cnVjdCh0 dHksIGRyaXZlciwgaWR4KTsKIAotCXR0eV9sb2NrKHR0eSk7CiAJcmV0dmFsID0gdHR5X2RyaXZl cl9pbnN0YWxsX3R0eShkcml2ZXIsIHR0eSk7CiAJaWYgKHJldHZhbCA8IDApCiAJCWdvdG8gZXJy X2RlaW5pdF90dHk7CkBAIC0xNDE3LDExICsxNDE1LDkgQEAgc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eV9pbml0X2RldihzdHJ1Y3QgdHR5X2RyaXZlciAqZHJpdmVyLCBpbnQgaWR4KQogCXJldHZhbCA9 IHR0eV9sZGlzY19zZXR1cCh0dHksIHR0eS0+bGluayk7CiAJaWYgKHJldHZhbCkKIAkJZ290byBl cnJfcmVsZWFzZV90dHk7Ci0JLyogUmV0dXJuIHRoZSB0dHkgbG9ja2VkIHNvIHRoYXQgaXQgY2Fu bm90IHZhbmlzaCB1bmRlciB0aGUgY2FsbGVyICovCiAJcmV0dXJuIHR0eTsKIAogZXJyX2RlaW5p dF90dHk6Ci0JdHR5X3VubG9jayh0dHkpOwogCWRlaW5pdGlhbGl6ZV90dHlfc3RydWN0KHR0eSk7 CiAJZnJlZV90dHlfc3RydWN0KHR0eSk7CiBlcnJfbW9kdWxlX3B1dDoKQEAgLTE0MzAsNyArMTQy Niw2IEBAIGVycl9tb2R1bGVfcHV0OgogCiAJLyogY2FsbCB0aGUgdHR5IHJlbGVhc2VfdHR5IHJv dXRpbmUgdG8gY2xlYW4gb3V0IHRoaXMgc2xvdCAqLwogZXJyX3JlbGVhc2VfdHR5OgotCXR0eV91 bmxvY2sodHR5KTsKIAlwcmludGtfcmF0ZWxpbWl0ZWQoS0VSTl9JTkZPICJ0dHlfaW5pdF9kZXY6 IGxkaXNjIG9wZW4gZmFpbGVkLCAiCiAJCQkJICJjbGVhcmluZyBzbG90ICVkXG4iLCBpZHgpOwog CXJlbGVhc2VfdHR5KHR0eSwgaWR4KTsKQEAgLTE2MzMsNyArMTYyOCw3IEBAIGludCB0dHlfcmVs ZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAlpZiAodHR5X3Bh cmFub2lhX2NoZWNrKHR0eSwgaW5vZGUsIF9fZnVuY19fKSkKIAkJcmV0dXJuIDA7CiAKLQl0dHlf bG9jayh0dHkpOworCXR0eV9sb2NrKCk7CiAJY2hlY2tfdHR5X2NvdW50KHR0eSwgX19mdW5jX18p OwogCiAJX190dHlfZmFzeW5jKC0xLCBmaWxwLCAwKTsKQEAgLTE2NDIsMTEgKzE2MzcsMTAgQEAg aW50IHR0eV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQog CXB0eV9tYXN0ZXIgPSAodHR5LT5kcml2ZXItPnR5cGUgPT0gVFRZX0RSSVZFUl9UWVBFX1BUWSAm JgogCQkgICAgICB0dHktPmRyaXZlci0+c3VidHlwZSA9PSBQVFlfVFlQRV9NQVNURVIpOwogCWRl dnB0cyA9ICh0dHktPmRyaXZlci0+ZmxhZ3MgJiBUVFlfRFJJVkVSX0RFVlBUU19NRU0pICE9IDA7 Ci0JLyogUmV2aWV3OiBwYXJhbGxlbCBjbG9zZSAqLwogCW9fdHR5ID0gdHR5LT5saW5rOwogCiAJ aWYgKHR0eV9yZWxlYXNlX2NoZWNrcyh0dHksIG9fdHR5LCBpZHgpKSB7Ci0JCXR0eV91bmxvY2so dHR5KTsKKwkJdHR5X3VubG9jaygpOwogCQlyZXR1cm4gMDsKIAl9CiAKQEAgLTE2NTgsNyArMTY1 Miw3IEBAIGludCB0dHlfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAq ZmlscCkKIAlpZiAodHR5LT5vcHMtPmNsb3NlKQogCQl0dHktPm9wcy0+Y2xvc2UodHR5LCBmaWxw KTsKIAotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJLyoKIAkgKiBTYW5pdHkg Y2hlY2s6IGlmIHR0eS0+Y291bnQgaXMgZ29pbmcgdG8gemVybywgdGhlcmUgc2hvdWxkbid0IGJl CiAJICogYW55IHdhaXRlcnMgb24gdHR5LT5yZWFkX3dhaXQgb3IgdHR5LT53cml0ZV93YWl0LiAg V2UgdGVzdCB0aGUKQEAgLTE2ODEsNyArMTY3NSw3IEBAIGludCB0dHlfcmVsZWFzZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAkJICAgb3BlbnMgb24gL2Rldi90dHkg Ki8KIAogCQltdXRleF9sb2NrKCZ0dHlfbXV0ZXgpOwotCQl0dHlfbG9ja19wYWlyKHR0eSwgb190 dHkpOworCQl0dHlfbG9jaygpOwogCQl0dHlfY2xvc2luZyA9IHR0eS0+Y291bnQgPD0gMTsKIAkJ b190dHlfY2xvc2luZyA9IG9fdHR5ICYmCiAJCQkob190dHktPmNvdW50IDw9IChwdHlfbWFzdGVy ID8gMSA6IDApKTsKQEAgLTE3MTIsNyArMTcwNiw3IEBAIGludCB0dHlfcmVsZWFzZShzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAogCQlwcmludGsoS0VSTl9XQVJOSU5H ICIlczogJXM6IHJlYWQvd3JpdGUgd2FpdCBxdWV1ZSBhY3RpdmUhXG4iLAogCQkJCV9fZnVuY19f LCB0dHlfbmFtZSh0dHksIGJ1ZikpOwotCQl0dHlfdW5sb2NrX3BhaXIodHR5LCBvX3R0eSk7CisJ CXR0eV91bmxvY2soKTsKIAkJbXV0ZXhfdW5sb2NrKCZ0dHlfbXV0ZXgpOwogCQlzY2hlZHVsZSgp OwogCX0KQEAgLTE3NzUsNyArMTc2OSw3IEBAIGludCB0dHlfcmVsZWFzZShzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBzdHJ1Y3QgZmlsZSAqZmlscCkKIAogCS8qIGNoZWNrIHdoZXRoZXIgYm90aCBzaWRl cyBhcmUgY2xvc2luZyAuLi4gKi8KIAlpZiAoIXR0eV9jbG9zaW5nIHx8IChvX3R0eSAmJiAhb190 dHlfY2xvc2luZykpIHsKLQkJdHR5X3VubG9ja19wYWlyKHR0eSwgb190dHkpOworCQl0dHlfdW5s b2NrKCk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMTc4OCwxNiArMTc4MiwxNCBAQCBpbnQgdHR5 X3JlbGVhc2Uoc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbHApCiAJdHR5X2xk aXNjX3JlbGVhc2UodHR5LCBvX3R0eSk7CiAJLyoKIAkgKiBUaGUgcmVsZWFzZV90dHkgZnVuY3Rp b24gdGFrZXMgY2FyZSBvZiB0aGUgZGV0YWlscyBvZiBjbGVhcmluZwotCSAqIHRoZSBzbG90cyBh bmQgcHJlc2VydmluZyB0aGUgdGVybWlvcyBzdHJ1Y3R1cmUuIFRoZSB0dHlfdW5sb2NrX3BhaXIK LQkgKiBzaG91bGQgYmUgc2FmZSBhcyB3ZSBrZWVwIGEga3JlZiB3aGlsZSB0aGUgdHR5IGlzIGxv Y2tlZCAoc28gdGhlCi0JICogdW5sb2NrIG5ldmVyIHVubG9ja3MgYSBmcmVlZCB0dHkpLgorCSAq IHRoZSBzbG90cyBhbmQgcHJlc2VydmluZyB0aGUgdGVybWlvcyBzdHJ1Y3R1cmUuCiAJICovCiAJ cmVsZWFzZV90dHkodHR5LCBpZHgpOwotCXR0eV91bmxvY2tfcGFpcih0dHksIG9fdHR5KTsKIAog CS8qIE1ha2UgdGhpcyBwdHkgbnVtYmVyIGF2YWlsYWJsZSBmb3IgcmVhbGxvY2F0aW9uICovCiAJ aWYgKGRldnB0cykKIAkJZGV2cHRzX2tpbGxfaW5kZXgoaW5vZGUsIGlkeCk7CisJdHR5X3VubG9j aygpOwogCXJldHVybiAwOwogfQogCkBAIC0xOTAxLDkgKzE4OTMsNiBAQCBzdGF0aWMgc3RydWN0 IHR0eV9kcml2ZXIgKnR0eV9sb29rdXBfZHJpdmVyKGRldl90IGRldmljZSwgc3RydWN0IGZpbGUg KmZpbHAsCiAgKglMb2NraW5nOiB0dHlfbXV0ZXggcHJvdGVjdHMgdHR5LCB0dHlfbG9va3VwX2Ry aXZlciBhbmQgdHR5X2luaXRfZGV2LgogICoJCSB0dHktPmNvdW50IHNob3VsZCBwcm90ZWN0IHRo ZSByZXN0LgogICoJCSAtPnNpZ2xvY2sgcHJvdGVjdHMgLT5zaWduYWwvLT5zaWdoYW5kCi0gKgot ICoJTm90ZTogdGhlIHR0eV91bmxvY2svbG9jayBjYXNlcyB3aXRob3V0IGEgcmVmIGFyZSBvbmx5 IHNhZmUgZHVlIHRvCi0gKgl0dHlfbXV0ZXgKICAqLwogCiBzdGF0aWMgaW50IHR0eV9vcGVuKHN0 cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxwKQpAQCAtMTkyNyw3ICsxOTE2LDgg QEAgcmV0cnlfb3BlbjoKIAlyZXR2YWwgPSAwOwogCiAJbXV0ZXhfbG9jaygmdHR5X211dGV4KTsK LQkvKiBUaGlzIGlzIHByb3RlY3RlZCBieSB0aGUgdHR5X211dGV4ICovCisJdHR5X2xvY2soKTsK KwogCXR0eSA9IHR0eV9vcGVuX2N1cnJlbnRfdHR5KGRldmljZSwgZmlscCk7CiAJaWYgKElTX0VS Uih0dHkpKSB7CiAJCXJldHZhbCA9IFBUUl9FUlIodHR5KTsKQEAgLTE5NDgsMTkgKzE5MzgsMTcg QEAgcmV0cnlfb3BlbjoKIAl9CiAKIAlpZiAodHR5KSB7Ci0JCXR0eV9sb2NrKHR0eSk7CiAJCXJl dHZhbCA9IHR0eV9yZW9wZW4odHR5KTsKLQkJaWYgKHJldHZhbCA8IDApIHsKLQkJCXR0eV91bmxv Y2sodHR5KTsKKwkJaWYgKHJldHZhbCkKIAkJCXR0eSA9IEVSUl9QVFIocmV0dmFsKTsKLQkJfQot CX0gZWxzZQkvKiBSZXR1cm5zIHdpdGggdGhlIHR0eV9sb2NrIGhlbGQgZm9yIG5vdyAqLworCX0g ZWxzZQogCQl0dHkgPSB0dHlfaW5pdF9kZXYoZHJpdmVyLCBpbmRleCk7CiAKIAltdXRleF91bmxv Y2soJnR0eV9tdXRleCk7CiAJaWYgKGRyaXZlcikKIAkJdHR5X2RyaXZlcl9rcmVmX3B1dChkcml2 ZXIpOwogCWlmIChJU19FUlIodHR5KSkgeworCQl0dHlfdW5sb2NrKCk7CiAJCXJldHZhbCA9IFBU Ul9FUlIodHR5KTsKIAkJZ290byBlcnJfZmlsZTsKIAl9CkBAIC0xOTg5LDcgKzE5NzcsNyBAQCBy ZXRyeV9vcGVuOgogCQlwcmludGsoS0VSTl9ERUJVRyAiJXM6IGVycm9yICVkIGluIG9wZW5pbmcg JXMuLi5cbiIsIF9fZnVuY19fLAogCQkJCXJldHZhbCwgdHR5LT5uYW1lKTsKICNlbmRpZgotCQl0 dHlfdW5sb2NrKHR0eSk7IC8qIG5lZWQgdG8gY2FsbCB0dHlfcmVsZWFzZSB3aXRob3V0IEJUTSAq LworCQl0dHlfdW5sb2NrKCk7IC8qIG5lZWQgdG8gY2FsbCB0dHlfcmVsZWFzZSB3aXRob3V0IEJU TSAqLwogCQl0dHlfcmVsZWFzZShpbm9kZSwgZmlscCk7CiAJCWlmIChyZXR2YWwgIT0gLUVSRVNU QVJUU1lTKQogCQkJcmV0dXJuIHJldHZhbDsKQEAgLTIwMDEsMTUgKzE5ODksMTcgQEAgcmV0cnlf b3BlbjoKIAkJLyoKIAkJICogTmVlZCB0byByZXNldCBmX29wIGluIGNhc2UgYSBoYW5ndXAgaGFw cGVuZWQuCiAJCSAqLworCQl0dHlfbG9jaygpOwogCQlpZiAoZmlscC0+Zl9vcCA9PSAmaHVuZ191 cF90dHlfZm9wcykKIAkJCWZpbHAtPmZfb3AgPSAmdHR5X2ZvcHM7CisJCXR0eV91bmxvY2soKTsK IAkJZ290byByZXRyeV9vcGVuOwogCX0KLQl0dHlfdW5sb2NrKHR0eSk7CisJdHR5X3VubG9jaygp OwogCiAKIAltdXRleF9sb2NrKCZ0dHlfbXV0ZXgpOwotCXR0eV9sb2NrKHR0eSk7CisJdHR5X2xv Y2soKTsKIAlzcGluX2xvY2tfaXJxKCZjdXJyZW50LT5zaWdoYW5kLT5zaWdsb2NrKTsKIAlpZiAo IW5vY3R0eSAmJgogCSAgICBjdXJyZW50LT5zaWduYWwtPmxlYWRlciAmJgpAQCAtMjAxNywxMCAr MjAwNywxMSBAQCByZXRyeV9vcGVuOgogCSAgICB0dHktPnNlc3Npb24gPT0gTlVMTCkKIAkJX19w cm9jX3NldF90dHkoY3VycmVudCwgdHR5KTsKIAlzcGluX3VubG9ja19pcnEoJmN1cnJlbnQtPnNp Z2hhbmQtPnNpZ2xvY2spOwotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJbXV0 ZXhfdW5sb2NrKCZ0dHlfbXV0ZXgpOwogCXJldHVybiAwOwogZXJyX3VubG9jazoKKwl0dHlfdW5s b2NrKCk7CiAJbXV0ZXhfdW5sb2NrKCZ0dHlfbXV0ZXgpOwogCS8qIGFmdGVyIGxvY2tzIHRvIGF2 b2lkIGRlYWRsb2NrICovCiAJaWYgKCFJU19FUlJfT1JfTlVMTChkcml2ZXIpKQpAQCAtMjEwMywx MyArMjA5NCwxMCBAQCBvdXQ6CiAKIHN0YXRpYyBpbnQgdHR5X2Zhc3luYyhpbnQgZmQsIHN0cnVj dCBmaWxlICpmaWxwLCBpbnQgb24pCiB7Ci0Jc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSA9IGZpbGVf dHR5KGZpbHApOwogCWludCByZXR2YWw7Ci0KLQl0dHlfbG9jayh0dHkpOworCXR0eV9sb2NrKCk7 CiAJcmV0dmFsID0gX190dHlfZmFzeW5jKGZkLCBmaWxwLCBvbik7Ci0JdHR5X3VubG9jayh0dHkp OwotCisJdHR5X3VubG9jaygpOwogCXJldHVybiByZXR2YWw7CiB9CiAKQEAgLTI5NDYsNyArMjkz NCw2IEBAIHZvaWQgaW5pdGlhbGl6ZV90dHlfc3RydWN0KHN0cnVjdCB0dHlfc3RydWN0ICp0dHks CiAJdHR5LT5wZ3JwID0gTlVMTDsKIAl0dHktPm92ZXJydW5fdGltZSA9IGppZmZpZXM7CiAJdHR5 X2J1ZmZlcl9pbml0KHR0eSk7Ci0JbXV0ZXhfaW5pdCgmdHR5LT5sZWdhY3lfbXV0ZXgpOwogCW11 dGV4X2luaXQoJnR0eS0+dGVybWlvc19tdXRleCk7CiAJbXV0ZXhfaW5pdCgmdHR5LT5sZGlzY19t dXRleCk7CiAJaW5pdF93YWl0cXVldWVfaGVhZCgmdHR5LT53cml0ZV93YWl0KTsKZGlmZiAtLWdp dCBhL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jIGIvZHJpdmVycy90dHkvdHR5X2xkaXNjLmMKaW5k ZXggYmE4YmUzOTZhNjIxLi45OTExZWI2YjM0Y2QgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5L3R0 eV9sZGlzYy5jCisrKyBiL2RyaXZlcnMvdHR5L3R0eV9sZGlzYy5jCkBAIC01NjgsNyArNTY4LDcg QEAgaW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGxkaXNjKQog CWlmIChJU19FUlIobmV3X2xkaXNjKSkKIAkJcmV0dXJuIFBUUl9FUlIobmV3X2xkaXNjKTsKIAot CXR0eV9sb2NrKHR0eSk7CisJdHR5X2xvY2soKTsKIAkvKgogCSAqCVdlIG5lZWQgdG8gbG9vayBh dCB0aGUgdHR5IGxvY2tpbmcgaGVyZSBmb3IgcHR5L3R0eSBwYWlycwogCSAqCXdoZW4gYm90aCBz aWRlcyB0cnkgdG8gY2hhbmdlIGluIHBhcmFsbGVsLgpAQCAtNTgyLDEyICs1ODIsMTIgQEAgaW50 IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgaW50IGxkaXNjKQogCSAqLwog CiAJaWYgKHR0eS0+bGRpc2MtPm9wcy0+bnVtID09IGxkaXNjKSB7Ci0JCXR0eV91bmxvY2sodHR5 KTsKKwkJdHR5X3VubG9jaygpOwogCQl0dHlfbGRpc2NfcHV0KG5ld19sZGlzYyk7CiAJCXJldHVy biAwOwogCX0KIAotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJLyoKIAkgKglQ cm9ibGVtOiBXaGF0IGRvIHdlIGRvIGlmIHRoaXMgYmxvY2tzID8KIAkgKglXZSBjb3VsZCBkZWFk bG9jayBoZXJlCkBAIC01OTUsNyArNTk1LDcgQEAgaW50IHR0eV9zZXRfbGRpc2Moc3RydWN0IHR0 eV9zdHJ1Y3QgKnR0eSwgaW50IGxkaXNjKQogCiAJdHR5X3dhaXRfdW50aWxfc2VudCh0dHksIDAp OwogCi0JdHR5X2xvY2sodHR5KTsKKwl0dHlfbG9jaygpOwogCW11dGV4X2xvY2soJnR0eS0+bGRp c2NfbXV0ZXgpOwogCiAJLyoKQEAgLTYwNSwxMCArNjA1LDEwIEBAIGludCB0dHlfc2V0X2xkaXNj KHN0cnVjdCB0dHlfc3RydWN0ICp0dHksIGludCBsZGlzYykKIAogCXdoaWxlICh0ZXN0X2JpdChU VFlfTERJU0NfQ0hBTkdJTkcsICZ0dHktPmZsYWdzKSkgewogCQltdXRleF91bmxvY2soJnR0eS0+ bGRpc2NfbXV0ZXgpOwotCQl0dHlfdW5sb2NrKHR0eSk7CisJCXR0eV91bmxvY2soKTsKIAkJd2Fp dF9ldmVudCh0dHlfbGRpc2Nfd2FpdCwKIAkJCXRlc3RfYml0KFRUWV9MRElTQ19DSEFOR0lORywg JnR0eS0+ZmxhZ3MpID09IDApOwotCQl0dHlfbG9jayh0dHkpOworCQl0dHlfbG9jaygpOwogCQlt dXRleF9sb2NrKCZ0dHktPmxkaXNjX211dGV4KTsKIAl9CiAKQEAgLTYyMyw3ICs2MjMsNyBAQCBp bnQgdHR5X3NldF9sZGlzYyhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LCBpbnQgbGRpc2MpCiAKIAlv X2xkaXNjID0gdHR5LT5sZGlzYzsKIAotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7 CiAJLyoKIAkgKglNYWtlIHN1cmUgd2UgZG9uJ3QgY2hhbmdlIHdoaWxlIHNvbWVvbmUgaG9sZHMg YQogCSAqCXJlZmVyZW5jZSB0byB0aGUgbGluZSBkaXNjaXBsaW5lLiBUaGUgVFRZX0xESVNDIGJp dApAQCAtNjUwLDcgKzY1MCw3IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0 ICp0dHksIGludCBsZGlzYykKIAogCXJldHZhbCA9IHR0eV9sZGlzY193YWl0X2lkbGUodHR5LCA1 ICogSFopOwogCi0JdHR5X2xvY2sodHR5KTsKKwl0dHlfbG9jaygpOwogCW11dGV4X2xvY2soJnR0 eS0+bGRpc2NfbXV0ZXgpOwogCiAJLyogaGFuZGxlIHdhaXQgaWRsZSBmYWlsdXJlIGxvY2tlZCAq LwpAQCAtNjY1LDcgKzY2NSw3IEBAIGludCB0dHlfc2V0X2xkaXNjKHN0cnVjdCB0dHlfc3RydWN0 ICp0dHksIGludCBsZGlzYykKIAkJY2xlYXJfYml0KFRUWV9MRElTQ19DSEFOR0lORywgJnR0eS0+ ZmxhZ3MpOwogCQltdXRleF91bmxvY2soJnR0eS0+bGRpc2NfbXV0ZXgpOwogCQl0dHlfbGRpc2Nf cHV0KG5ld19sZGlzYyk7Ci0JCXR0eV91bmxvY2sodHR5KTsKKwkJdHR5X3VubG9jaygpOwogCQly ZXR1cm4gLUVJTzsKIAl9CiAKQEAgLTcwOCw3ICs3MDgsNyBAQCBlbmFibGU6CiAJaWYgKG9fd29y aykKIAkJc2NoZWR1bGVfd29yaygmb190dHktPmJ1Zi53b3JrKTsKIAltdXRleF91bmxvY2soJnR0 eS0+bGRpc2NfbXV0ZXgpOwotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJcmV0 dXJuIHJldHZhbDsKIH0KIApAQCAtODE2LDExICs4MTYsMTEgQEAgdm9pZCB0dHlfbGRpc2NfaGFu Z3VwKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCiAJICogbmVlZCB0byB3YWl0IGZvciBhbm90aGVy IGZ1bmN0aW9uIHRha2luZyB0aGUgQlRNCiAJICovCiAJY2xlYXJfYml0KFRUWV9MRElTQywgJnR0 eS0+ZmxhZ3MpOwotCXR0eV91bmxvY2sodHR5KTsKKwl0dHlfdW5sb2NrKCk7CiAJY2FuY2VsX3dv cmtfc3luYygmdHR5LT5idWYud29yayk7CiAJbXV0ZXhfdW5sb2NrKCZ0dHktPmxkaXNjX211dGV4 KTsKIHJldHJ5OgotCXR0eV9sb2NrKHR0eSk7CisJdHR5X2xvY2soKTsKIAltdXRleF9sb2NrKCZ0 dHktPmxkaXNjX211dGV4KTsKIAogCS8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBhIGNsb3NlZCBs ZGlzYyBhbmQgd2Ugd2FudCB0bwpAQCAtODMxLDcgKzgzMSw3IEBAIHJldHJ5OgogCQlpZiAoYXRv bWljX3JlYWQoJnR0eS0+bGRpc2MtPnVzZXJzKSAhPSAxKSB7CiAJCQljaGFyIGN1cl9uW1RBU0tf Q09NTV9MRU5dLCB0dHlfbls2NF07CiAJCQlsb25nIHRpbWVvdXQgPSAzICogSFo7Ci0JCQl0dHlf dW5sb2NrKHR0eSk7CisJCQl0dHlfdW5sb2NrKCk7CiAKIAkJCXdoaWxlICh0dHlfbGRpc2Nfd2Fp dF9pZGxlKHR0eSwgdGltZW91dCkgPT0gLUVCVVNZKSB7CiAJCQkJdGltZW91dCA9IE1BWF9TQ0hF RFVMRV9USU1FT1VUOwpAQCAtODk0LDIzICs4OTQsNiBAQCBpbnQgdHR5X2xkaXNjX3NldHVwKHN0 cnVjdCB0dHlfc3RydWN0ICp0dHksIHN0cnVjdCB0dHlfc3RydWN0ICpvX3R0eSkKIAl0dHlfbGRp c2NfZW5hYmxlKHR0eSk7CiAJcmV0dXJuIDA7CiB9Ci0KLXN0YXRpYyB2b2lkIHR0eV9sZGlzY19r aWxsKHN0cnVjdCB0dHlfc3RydWN0ICp0dHkpCi17Ci0JbXV0ZXhfbG9jaygmdHR5LT5sZGlzY19t dXRleCk7Ci0JLyoKLQkgKiBOb3cga2lsbCBvZmYgdGhlIGxkaXNjCi0JICovCi0JdHR5X2xkaXNj X2Nsb3NlKHR0eSwgdHR5LT5sZGlzYyk7Ci0JdHR5X2xkaXNjX3B1dCh0dHktPmxkaXNjKTsKLQkv KiBGb3JjZSBhbiBvb3BzIGlmIHdlIG1lc3MgdGhpcyB1cCAqLwotCXR0eS0+bGRpc2MgPSBOVUxM OwotCi0JLyogRW5zdXJlIHRoZSBuZXh0IG9wZW4gcmVxdWVzdHMgdGhlIE5fVFRZIGxkaXNjICov Ci0JdHR5X3NldF90ZXJtaW9zX2xkaXNjKHR0eSwgTl9UVFkpOwotCW11dGV4X3VubG9jaygmdHR5 LT5sZGlzY19tdXRleCk7Ci19Ci0KIC8qKgogICoJdHR5X2xkaXNjX3JlbGVhc2UJCS0JcmVsZWFz ZSBsaW5lIGRpc2NpcGxpbmUKICAqCUB0dHk6IHR0eSBiZWluZyBzaHV0IGRvd24KQEAgLTkyOSwx OSArOTEyLDI3IEBAIHZvaWQgdHR5X2xkaXNjX3JlbGVhc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eSwgc3RydWN0IHR0eV9zdHJ1Y3QgKm9fdHR5KQogCSAqIHJhY2Ugd2l0aCB0aGUgc2V0X2xkaXNj IGNvZGUgcGF0aC4KIAkgKi8KIAotCXR0eV91bmxvY2tfcGFpcih0dHksIG9fdHR5KTsKKwl0dHlf dW5sb2NrKCk7CiAJdHR5X2xkaXNjX2hhbHQodHR5KTsKIAl0dHlfbGRpc2NfZmx1c2hfd29ya3Mo dHR5KTsKLQlpZiAob190dHkpIHsKLQkJdHR5X2xkaXNjX2hhbHQob190dHkpOwotCQl0dHlfbGRp c2NfZmx1c2hfd29ya3Mob190dHkpOwotCX0KLQl0dHlfbG9ja19wYWlyKHR0eSwgb190dHkpOwor CXR0eV9sb2NrKCk7CiAKKwltdXRleF9sb2NrKCZ0dHktPmxkaXNjX211dGV4KTsKKwkvKgorCSAq IE5vdyBraWxsIG9mZiB0aGUgbGRpc2MKKwkgKi8KKwl0dHlfbGRpc2NfY2xvc2UodHR5LCB0dHkt PmxkaXNjKTsKKwl0dHlfbGRpc2NfcHV0KHR0eS0+bGRpc2MpOworCS8qIEZvcmNlIGFuIG9vcHMg aWYgd2UgbWVzcyB0aGlzIHVwICovCisJdHR5LT5sZGlzYyA9IE5VTEw7CisKKwkvKiBFbnN1cmUg dGhlIG5leHQgb3BlbiByZXF1ZXN0cyB0aGUgTl9UVFkgbGRpc2MgKi8KKwl0dHlfc2V0X3Rlcm1p b3NfbGRpc2ModHR5LCBOX1RUWSk7CisJbXV0ZXhfdW5sb2NrKCZ0dHktPmxkaXNjX211dGV4KTsK IAotCXR0eV9sZGlzY19raWxsKHR0eSk7CisJLyogVGhpcyB3aWxsIG5lZWQgZG9pbmcgZGlmZmVy ZW50bHkgaWYgd2UgbmVlZCB0byBsb2NrICovCiAJaWYgKG9fdHR5KQotCQl0dHlfbGRpc2Nfa2ls bChvX3R0eSk7CisJCXR0eV9sZGlzY19yZWxlYXNlKG9fdHR5LCBOVUxMKTsKIAogCS8qIEFuZCB0 aGUgbWVtb3J5IHJlc291cmNlcyByZW1haW5pbmcgKGJ1ZmZlcnMsIHRlcm1pb3MpIHdpbGwgYmUK IAkgICBkaXNwb3NlZCBvZiB3aGVuIHRoZSBrcmVmIGhpdHMgemVybyAqLwpkaWZmIC0tZ2l0IGEv ZHJpdmVycy90dHkvdHR5X211dGV4LmMgYi9kcml2ZXJzL3R0eS90dHlfbXV0ZXguYwppbmRleCA2 N2ZlYWM5ZTZlYmIuLjlmZjk4NmMzMmEyMSAxMDA2NDQKLS0tIGEvZHJpdmVycy90dHkvdHR5X211 dGV4LmMKKysrIGIvZHJpdmVycy90dHkvdHR5X211dGV4LmMKQEAgLTQsNzAgKzQsMjkgQEAKICNp bmNsdWRlIDxsaW51eC9zZW1hcGhvcmUuaD4KICNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgogCi0v KiBMZWdhY3kgdHR5IG11dGV4IGdsdWUgKi8KLQotZW51bSB7Ci0JVFRZX01VVEVYX05PUk1BTCwK LQlUVFlfTVVURVhfTkVTVEVELAotfTsKKy8qCisgKiBUaGUgJ2JpZyB0dHkgbXV0ZXgnCisgKgor ICogVGhpcyBtdXRleCBpcyB0YWtlbiBhbmQgcmVsZWFzZWQgYnkgdHR5X2xvY2soKSBhbmQgdHR5 X3VubG9jaygpLAorICogcmVwbGFjaW5nIHRoZSBvbGRlciBiaWcga2VybmVsIGxvY2suCisgKiBJ dCBjYW4gbm8gbG9uZ2VyIGJlIHRha2VuIHJlY3Vyc2l2ZWx5LCBhbmQgZG9lcyBub3QgZ2V0Cisg KiByZWxlYXNlZCBpbXBsaWNpdGx5IHdoaWxlIHNsZWVwaW5nLgorICoKKyAqIERvbid0IHVzZSBp biBuZXcgY29kZS4KKyAqLworc3RhdGljIERFRklORV9NVVRFWChiaWdfdHR5X211dGV4KTsKIAog LyoKICAqIEdldHRpbmcgdGhlIGJpZyB0dHkgbXV0ZXguCiAgKi8KLQotc3RhdGljIHZvaWQgX19s b2NrZnVuYyB0dHlfbG9ja19uZXN0ZWQoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKLQkJCQkgICAg ICAgdW5zaWduZWQgaW50IHN1YmNsYXNzKQordm9pZCBfX2xvY2tmdW5jIHR0eV9sb2NrKHZvaWQp CiB7Ci0JaWYgKHR0eS0+bWFnaWMgIT0gVFRZX01BR0lDKSB7Ci0JCXByaW50ayhLRVJOX0VSUiAi TCBCYWQgJXBcbiIsIHR0eSk7Ci0JCVdBUk5fT04oMSk7Ci0JCXJldHVybjsKLQl9Ci0JdHR5X2ty ZWZfZ2V0KHR0eSk7Ci0JbXV0ZXhfbG9ja19uZXN0ZWQoJnR0eS0+bGVnYWN5X211dGV4LCBzdWJj bGFzcyk7Ci19Ci0KLXZvaWQgX19sb2NrZnVuYyB0dHlfbG9jayhzdHJ1Y3QgdHR5X3N0cnVjdCAq dHR5KQotewotCXJldHVybiB0dHlfbG9ja19uZXN0ZWQodHR5LCBUVFlfTVVURVhfTk9STUFMKTsK KwltdXRleF9sb2NrKCZiaWdfdHR5X211dGV4KTsKIH0KIEVYUE9SVF9TWU1CT0wodHR5X2xvY2sp OwogCi12b2lkIF9fbG9ja2Z1bmMgdHR5X3VubG9jayhzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5KQor dm9pZCBfX2xvY2tmdW5jIHR0eV91bmxvY2sodm9pZCkKIHsKLQlpZiAodHR5LT5tYWdpYyAhPSBU VFlfTUFHSUMpIHsKLQkJcHJpbnRrKEtFUk5fRVJSICJVIEJhZCAlcFxuIiwgdHR5KTsKLQkJV0FS Tl9PTigxKTsKLQkJcmV0dXJuOwotCX0KLQltdXRleF91bmxvY2soJnR0eS0+bGVnYWN5X211dGV4 KTsKLQl0dHlfa3JlZl9wdXQodHR5KTsKKwltdXRleF91bmxvY2soJmJpZ190dHlfbXV0ZXgpOwog fQogRVhQT1JUX1NZTUJPTCh0dHlfdW5sb2NrKTsKLQotLyoKLSAqIEdldHRpbmcgdGhlIGJpZyB0 dHkgbXV0ZXggZm9yIGEgcGFpciBvZiB0dHlzIHdpdGggbG9jayBvcmRlcmluZwotICogT24gYSBu b24gcHR5L3R0eSBwYWlyIHR0eTIgY2FuIGJlIE5VTEwgd2hpY2ggaXMganVzdCBmaW5lLgotICov Ci12b2lkIF9fbG9ja2Z1bmMgdHR5X2xvY2tfcGFpcihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAot CQkJCQlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5MikKLXsKLQlpZiAodHR5IDwgdHR5MikgewotCQl0 dHlfbG9jayh0dHkpOwotCQl0dHlfbG9ja19uZXN0ZWQodHR5MiwgVFRZX01VVEVYX05FU1RFRCk7 Ci0JfSBlbHNlIHsKLQkJaWYgKHR0eTIgJiYgdHR5MiAhPSB0dHkpCi0JCQl0dHlfbG9jayh0dHky KTsKLQkJdHR5X2xvY2tfbmVzdGVkKHR0eSwgVFRZX01VVEVYX05FU1RFRCk7Ci0JfQotfQotRVhQ T1JUX1NZTUJPTCh0dHlfbG9ja19wYWlyKTsKLQotdm9pZCBfX2xvY2tmdW5jIHR0eV91bmxvY2tf cGFpcihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAotCQkJCQkJc3RydWN0IHR0eV9zdHJ1Y3QgKnR0 eTIpCi17Ci0JdHR5X3VubG9jayh0dHkpOwotCWlmICh0dHkyICYmIHR0eTIgIT0gdHR5KQotCQl0 dHlfdW5sb2NrKHR0eTIpOwotfQotRVhQT1JUX1NZTUJPTCh0dHlfdW5sb2NrX3BhaXIpOwpkaWZm IC0tZ2l0IGEvZHJpdmVycy90dHkvdHR5X3BvcnQuYyBiL2RyaXZlcnMvdHR5L3R0eV9wb3J0LmMK aW5kZXggZDljY2E5NWE1NDUyLi5iZjZlMjM4MTQ2YWUgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvdHR5 L3R0eV9wb3J0LmMKKysrIGIvZHJpdmVycy90dHkvdHR5X3BvcnQuYwpAQCAtMjMwLDcgKzIzMCw3 IEBAIGludCB0dHlfcG9ydF9ibG9ja190aWxfcmVhZHkoc3RydWN0IHR0eV9wb3J0ICpwb3J0LAog CiAJLyogYmxvY2sgaWYgcG9ydCBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBjbG9zZWQgKi8K IAlpZiAodHR5X2h1bmdfdXBfcChmaWxwKSB8fCBwb3J0LT5mbGFncyAmIEFTWU5DX0NMT1NJTkcp IHsKLQkJd2FpdF9ldmVudF9pbnRlcnJ1cHRpYmxlX3R0eSh0dHksIHBvcnQtPmNsb3NlX3dhaXQs CisJCXdhaXRfZXZlbnRfaW50ZXJydXB0aWJsZV90dHkocG9ydC0+Y2xvc2Vfd2FpdCwKIAkJCQkh KHBvcnQtPmZsYWdzICYgQVNZTkNfQ0xPU0lORykpOwogCQlpZiAocG9ydC0+ZmxhZ3MgJiBBU1lO Q19IVVBfTk9USUZZKQogCQkJcmV0dXJuIC1FQUdBSU47CkBAIC0yOTYsOSArMjk2LDkgQEAgaW50 IHR0eV9wb3J0X2Jsb2NrX3RpbF9yZWFkeShzdHJ1Y3QgdHR5X3BvcnQgKnBvcnQsCiAJCQlyZXR2 YWwgPSAtRVJFU1RBUlRTWVM7CiAJCQlicmVhazsKIAkJfQotCQl0dHlfdW5sb2NrKHR0eSk7CisJ CXR0eV91bmxvY2soKTsKIAkJc2NoZWR1bGUoKTsKLQkJdHR5X2xvY2sodHR5KTsKKwkJdHR5X2xv Y2soKTsKIAl9CiAJZmluaXNoX3dhaXQoJnBvcnQtPm9wZW5fd2FpdCwgJndhaXQpOwogCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L3R0eS5oIGIvaW5jbHVkZS9saW51eC90dHkuaAppbmRleCA0 OTkwZWYyYjFmYjcuLjlmNDdhYjU0MGY2NSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC90dHku aAorKysgYi9pbmNsdWRlL2xpbnV4L3R0eS5oCkBAIC0yNjgsNyArMjY4LDYgQEAgc3RydWN0IHR0 eV9zdHJ1Y3QgewogCXN0cnVjdCBtdXRleCBsZGlzY19tdXRleDsKIAlzdHJ1Y3QgdHR5X2xkaXNj ICpsZGlzYzsKIAotCXN0cnVjdCBtdXRleCBsZWdhY3lfbXV0ZXg7CiAJc3RydWN0IG11dGV4IHRl cm1pb3NfbXV0ZXg7CiAJc3BpbmxvY2tfdCBjdHJsX2xvY2s7CiAJLyogVGVybWlvcyB2YWx1ZXMg YXJlIHByb3RlY3RlZCBieSB0aGUgdGVybWlvcyBtdXRleCAqLwpAQCAtNjA2LDEyICs2MDUsOCBA QCBleHRlcm4gbG9uZyB2dF9jb21wYXRfaW9jdGwoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAog LyogdHR5X211dGV4LmMgKi8KIC8qIGZ1bmN0aW9ucyBmb3IgcHJlcGFyYXRpb24gb2YgQktMIHJl bW92YWwgKi8KLWV4dGVybiB2b2lkIF9fbG9ja2Z1bmMgdHR5X2xvY2soc3RydWN0IHR0eV9zdHJ1 Y3QgKnR0eSk7Ci1leHRlcm4gdm9pZCBfX2xvY2tmdW5jIHR0eV91bmxvY2soc3RydWN0IHR0eV9z dHJ1Y3QgKnR0eSk7Ci1leHRlcm4gdm9pZCBfX2xvY2tmdW5jIHR0eV9sb2NrX3BhaXIoc3RydWN0 IHR0eV9zdHJ1Y3QgKnR0eSwKLQkJCQlzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5Mik7Ci1leHRlcm4g dm9pZCBfX2xvY2tmdW5jIHR0eV91bmxvY2tfcGFpcihzdHJ1Y3QgdHR5X3N0cnVjdCAqdHR5LAot CQkJCXN0cnVjdCB0dHlfc3RydWN0ICp0dHkyKTsKK2V4dGVybiB2b2lkIF9fbG9ja2Z1bmMgdHR5 X2xvY2sodm9pZCkgX19hY3F1aXJlcyh0dHlfbG9jayk7CitleHRlcm4gdm9pZCBfX2xvY2tmdW5j IHR0eV91bmxvY2sodm9pZCkgX19yZWxlYXNlcyh0dHlfbG9jayk7CiAKIC8qCiAgKiB0aGlzIHNo YWxsIGJlIGNhbGxlZCBvbmx5IGZyb20gd2hlcmUgQlRNIGlzIGhlbGQgKGxpa2UgY2xvc2UpCkBA IC02MjYsOSArNjIxLDkgQEAgZXh0ZXJuIHZvaWQgX19sb2NrZnVuYyB0dHlfdW5sb2NrX3BhaXIo c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIHN0YXRpYyBpbmxpbmUgdm9pZCB0dHlfd2FpdF91bnRp bF9zZW50X2Zyb21fY2xvc2Uoc3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwKIAkJbG9uZyB0aW1lb3V0 KQogewotCXR0eV91bmxvY2sodHR5KTsgLyogdHR5LT5vcHMtPmNsb3NlIGhvbGRzIHRoZSBCVE0s IGRyb3AgaXQgd2hpbGUgd2FpdGluZyAqLworCXR0eV91bmxvY2soKTsgLyogdHR5LT5vcHMtPmNs b3NlIGhvbGRzIHRoZSBCVE0sIGRyb3AgaXQgd2hpbGUgd2FpdGluZyAqLwogCXR0eV93YWl0X3Vu dGlsX3NlbnQodHR5LCB0aW1lb3V0KTsKLQl0dHlfbG9jayh0dHkpOworCXR0eV9sb2NrKCk7CiB9 CiAKIC8qCkBAIC02NDMsMTYgKzYzOCwxNiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgdHR5X3dhaXRf dW50aWxfc2VudF9mcm9tX2Nsb3NlKHN0cnVjdCB0dHlfc3RydWN0ICp0dHksCiAgKgogICogRG8g bm90IHVzZSBpbiBuZXcgY29kZS4KICAqLwotI2RlZmluZSB3YWl0X2V2ZW50X2ludGVycnVwdGli bGVfdHR5KHR0eSwgd3EsIGNvbmRpdGlvbikJCVwKKyNkZWZpbmUgd2FpdF9ldmVudF9pbnRlcnJ1 cHRpYmxlX3R0eSh3cSwgY29uZGl0aW9uKQkJCVwKICh7CQkJCQkJCQkJXAogCWludCBfX3JldCA9 IDA7CQkJCQkJCVwKIAlpZiAoIShjb25kaXRpb24pKSB7CQkJCQkJXAotCQlfX3dhaXRfZXZlbnRf aW50ZXJydXB0aWJsZV90dHkodHR5LCB3cSwgY29uZGl0aW9uLCBfX3JldCk7CVwKKwkJX193YWl0 X2V2ZW50X2ludGVycnVwdGlibGVfdHR5KHdxLCBjb25kaXRpb24sIF9fcmV0KTsJXAogCX0JCQkJ CQkJCVwKIAlfX3JldDsJCQkJCQkJCVwKIH0pCiAKLSNkZWZpbmUgX193YWl0X2V2ZW50X2ludGVy cnVwdGlibGVfdHR5KHR0eSwgd3EsIGNvbmRpdGlvbiwgcmV0KQkJXAorI2RlZmluZSBfX3dhaXRf ZXZlbnRfaW50ZXJydXB0aWJsZV90dHkod3EsIGNvbmRpdGlvbiwgcmV0KQkJXAogZG8gewkJCQkJ CQkJCVwKIAlERUZJTkVfV0FJVChfX3dhaXQpOwkJCQkJCVwKIAkJCQkJCQkJCVwKQEAgLTY2MSw5 ICs2NTYsOSBAQCBkbyB7CQkJCQkJCQkJXAogCQlpZiAoY29uZGl0aW9uKQkJCQkJCVwKIAkJCWJy ZWFrOwkJCQkJCVwKIAkJaWYgKCFzaWduYWxfcGVuZGluZyhjdXJyZW50KSkgewkJCQlcCi0JCQl0 dHlfdW5sb2NrKHR0eSk7CQkJCQlcCisJCQl0dHlfdW5sb2NrKCk7CQkJCQlcCiAJCQlzY2hlZHVs ZSgpOwkJCQkJXAotCQkJdHR5X2xvY2sodHR5KTsJCQkJCVwKKwkJCXR0eV9sb2NrKCk7CQkJCQlc CiAJCQljb250aW51ZTsJCQkJCVwKIAkJfQkJCQkJCQlcCiAJCXJldCA9IC1FUkVTVEFSVFNZUzsJ CQkJCVwKZGlmZiAtLWdpdCBhL25ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jIGIvbmV0L2JsdWV0 b290aC9yZmNvbW0vdHR5LmMKaW5kZXggYWE1ZDczYjc4NmFjLi5kMTgyMGZmMTRhZWUgMTAwNjQ0 Ci0tLSBhL25ldC9ibHVldG9vdGgvcmZjb21tL3R0eS5jCisrKyBiL25ldC9ibHVldG9vdGgvcmZj b21tL3R0eS5jCkBAIC03MTAsOSArNzEwLDkgQEAgc3RhdGljIGludCByZmNvbW1fdHR5X29wZW4o c3RydWN0IHR0eV9zdHJ1Y3QgKnR0eSwgc3RydWN0IGZpbGUgKmZpbHApCiAJCQlicmVhazsKIAkJ fQogCi0JCXR0eV91bmxvY2sodHR5KTsKKwkJdHR5X3VubG9jaygpOwogCQlzY2hlZHVsZSgpOwot CQl0dHlfbG9jayh0dHkpOworCQl0dHlfbG9jaygpOwogCX0KIAlzZXRfY3VycmVudF9zdGF0ZShU QVNLX1JVTk5JTkcpOwogCXJlbW92ZV93YWl0X3F1ZXVlKCZkZXYtPndhaXQsICZ3YWl0KTsK --001636b430e492232404c184c85c-- -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/