Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753708AbaBCVDh (ORCPT ); Mon, 3 Feb 2014 16:03:37 -0500 Received: from mail-ve0-f175.google.com ([209.85.128.175]:44075 "EHLO mail-ve0-f175.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752419AbaBCVDd (ORCPT ); Mon, 3 Feb 2014 16:03:33 -0500 MIME-Version: 1.0 In-Reply-To: <20140203102943.GF11829@infradead.org> References: <1391013467-7598-1-git-send-email-ilya.dryomov@inktank.com> <20140130075421.GA10050@infradead.org> <20140203102943.GF11829@infradead.org> Date: Mon, 3 Feb 2014 13:03:32 -0800 X-Google-Sender-Auth: wNIQT7fuqdr6VhA2SK5d-Yxvagw Message-ID: Subject: Re: [PATCH v2] ceph: fix posix ACL hooks From: Linus Torvalds To: Christoph Hellwig Cc: Ilya Dryomov , Sage Weil , Dave Jones , Linux Kernel Mailing List , ceph-devel@vger.kernel.org, linux-fsdevel , Al Viro , Guangliang Zhao , Li Wang , zheng.z.yan@intel.com Content-Type: multipart/mixed; boundary=001a1136aa9836aca104f186db54 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --001a1136aa9836aca104f186db54 Content-Type: text/plain; charset=UTF-8 On Mon, Feb 3, 2014 at 2:29 AM, Christoph Hellwig wrote: > On Thu, Jan 30, 2014 at 02:01:38PM -0800, Linus Torvalds wrote: >> In the end, all the original call-sites should have a dentry, and none >> of this is "fundamental". But you're right, it looks like an absolute >> nightmare to add the dentry pointer through the whole chain. Damn. > > It's not just ceph. 9p fundamentally needs it and I really want to > convert 9p to the new code so that we can get rid of the lower level > interfaces entirely and eventually move ACL dispatching entirely > into the VFS. Hmm. I spent some time actually seeing how painful it would be, and I think we can do it. The attached patch seems to work for me - it does *not* make any actual semantic changes, but it pushes the dentry pointer into the filesystems for the permission checking, and the vfs_{create,mkdir,mknot,symlink,link,rmdir,unlink,rename} helper functions. NOTE! It does *not* actually push them into the ACL functions, and in fact it doesn't even push it down to "generic_permission()" yet. But it would be a prerequisite for doing so. And interestingly, replacing the inode pointer with a dentry pointer ended up actually simplifying several of the call-sites, so while doing this patch I got the feeling that this was the better interface anyway, and we should have done this long ago. Now, to be honest, pushing it down one more level (to generic_permission()) will actually start causing some trouble. In particular, gfs2_permission() fundamentally does not have a dentry for several of the callers. But aside from being pretty large, this patch looks pretty good to me. And as I mentioned, I suspect it would actually be the right thing to do even if we don't go any futher. And modulo gfs2, it would make it trivial to push down the dentry pointer to generic_permission and then to the acl lookup code. What do you think? I guess this patch could be split up into two: one that does the "vfs_xyz()" helper functions, and another that does the inode_permission() change. I tied them together mainly because I started with the inode_permission() change, and that required the vfs_xyz() change. Linus --001a1136aa9836aca104f186db54 Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hr881a1d0 IGRyaXZlcnMvYmFzZS9kZXZ0bXBmcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA4 ICstCiBkcml2ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sbGl0ZS9maWxlLmMgICAgICAgICB8 ICAgNiArLQogLi4uL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sbGl0ZS9sbGl0ZV9pbnRlcm5hbC5o ICAgfCAgIDIgKy0KIGRyaXZlcnMvc3RhZ2luZy9sdXN0cmUvbHVzdHJlL2x2ZnMvbHZmc19saW51 eC5jICAgIHwgICA0ICstCiBmcy9hZnMvaW50ZXJuYWwuaCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogZnMvYWZzL3NlY3VyaXR5LmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL2JhZF9pbm9kZS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy9idHJmcy9pbm9kZS5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZnMvYnRyZnMvaW9jdGwuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTYgKy0tCiBmcy9jYWNoZWZpbGVzL25hbWVp LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMSArLQogZnMvY2VwaC9pbm9kZS5j ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL2NlcGgvc3Vw ZXIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy9jaWZz L2NpZnNmcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZnMv Y29kYS9jb2RhX2xpbnV4LmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0K IGZzL2NvZGEvZGlyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAy ICstCiBmcy9jb2RhL3Bpb2N0bC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgNCArLQogZnMvZWNyeXB0ZnMvaW5vZGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgMjYgKystLS0KIGZzL2V4ZWMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAyICstCiBmcy9mdXNlL2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogZnMvZ2ZzMi9pbm9kZS5jICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgMTEgKy0KIGZzL2hvc3Rmcy9ob3N0ZnNfa2Vybi5jICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy9pbnRlcm5hbC5oICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAtCiBmcy9rZXJuZnMvaW5vZGUuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZnMva2VybmZzL2tlcm5mcy1p bnRlcm5hbC5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL25hbWVpLmMgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTI2ICsrKysrKysrKysrKy0t LS0tLS0tLQogZnMvbmNwZnMvaW9jdGwuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDYgKy0KIGZzL25mcy9kaXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwgICAyICstCiBmcy9uZnNkL25mczRyZWNvdmVyLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB8ICAgNiArLQogZnMvbmZzZC9uZnNmaC5jICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL25mc2QvdmZzLmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHwgIDMyICsrLS0tLQogZnMvbmlsZnMyL2lub2RlLmMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL25pbGZzMi9uaWxmcy5oICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy9ub3RpZnkvZmFub3Rp ZnkvZmFub3RpZnlfdXNlci5jICAgICAgICAgICAgICAgICB8ICAgMiArLQogZnMvbm90aWZ5L2lu b3RpZnkvaW5vdGlmeV91c2VyLmMgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL29jZnMy L2ZpbGUuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy9v Y2ZzMi9maWxlLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQog ZnMvb2NmczIvcmVmY291bnR0cmVlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTUg KystCiBmcy9vcGVuLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAxNCArKy0KIGZzL3Byb2MvYmFzZS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwgICAyICstCiBmcy9wcm9jL2ZkLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB8ICAgMiArLQogZnMvcHJvYy9mZC5oICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgfCAgIDIgKy0KIGZzL3Byb2MvcHJvY19zeXNjdGwuYyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy9yZWlzZXJmcy94YXR0ci5jICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZnMvcmVpc2VyZnMveGF0dHIuaCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KIGZzL3VkZi9maWxlLmMgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBmcy91dGltZXMuYyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogZnMveGF0dHIuYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KIGluY2x1ZGUvbGlu dXgvZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIwICsrLS0KIGluY2x1 ZGUvbGludXgvbmZzX2ZzLmggICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBp cGMvbXF1ZXVlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMCAr LQoga2VybmVsL3N5cy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIG1tL21lbWNvbnRyb2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHwgICAyICstCiBuZXQvdW5peC9hZl91bml4LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArLQogdmlydC9rdm0vYXNzaWduZWQtZGV2LmMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAgIDIgKy0KIDU0IGZpbGVzIGNoYW5nZWQsIDIxMCBpbnNlcnRpb25zKCspLCAx OTIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9iYXNlL2RldnRtcGZzLmMgYi9k cml2ZXJzL2Jhc2UvZGV2dG1wZnMuYwppbmRleCAyNTc5OGRiMTQ1NTMuLmZiODFkZTlhNzhhMyAx MDA2NDQKLS0tIGEvZHJpdmVycy9iYXNlL2RldnRtcGZzLmMKKysrIGIvZHJpdmVycy9iYXNlL2Rl dnRtcGZzLmMKQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdGF0aWMgaW50IGRldl9ta2Rpcihjb25zdCBj aGFyICpuYW1lLCB1bW9kZV90IG1vZGUpCiAJaWYgKElTX0VSUihkZW50cnkpKQogCQlyZXR1cm4g UFRSX0VSUihkZW50cnkpOwogCi0JZXJyID0gdmZzX21rZGlyKHBhdGguZGVudHJ5LT5kX2lub2Rl LCBkZW50cnksIG1vZGUpOworCWVyciA9IHZmc19ta2RpcihwYXRoLmRlbnRyeSwgZGVudHJ5LCBt b2RlKTsKIAlpZiAoIWVycikKIAkJLyogbWFyayBhcyBrZXJuZWwtY3JlYXRlZCBpbm9kZSAqLwog CQlkZW50cnktPmRfaW5vZGUtPmlfcHJpdmF0ZSA9ICZ0aHJlYWQ7CkBAIC0yMDcsNyArMjA3LDcg QEAgc3RhdGljIGludCBoYW5kbGVfY3JlYXRlKGNvbnN0IGNoYXIgKm5vZGVuYW1lLCB1bW9kZV90 IG1vZGUsIGt1aWRfdCB1aWQsCiAJaWYgKElTX0VSUihkZW50cnkpKQogCQlyZXR1cm4gUFRSX0VS UihkZW50cnkpOwogCi0JZXJyID0gdmZzX21rbm9kKHBhdGguZGVudHJ5LT5kX2lub2RlLCBkZW50 cnksIG1vZGUsIGRldi0+ZGV2dCk7CisJZXJyID0gdmZzX21rbm9kKHBhdGguZGVudHJ5LCBkZW50 cnksIG1vZGUsIGRldi0+ZGV2dCk7CiAJaWYgKCFlcnIpIHsKIAkJc3RydWN0IGlhdHRyIG5ld2F0 dHJzOwogCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIGludCBkZXZfcm1kaXIoY29uc3QgY2hh ciAqbmFtZSkKIAkJcmV0dXJuIFBUUl9FUlIoZGVudHJ5KTsKIAlpZiAoZGVudHJ5LT5kX2lub2Rl KSB7CiAJCWlmIChkZW50cnktPmRfaW5vZGUtPmlfcHJpdmF0ZSA9PSAmdGhyZWFkKQotCQkJZXJy ID0gdmZzX3JtZGlyKHBhcmVudC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSk7CisJCQllcnIgPSB2 ZnNfcm1kaXIocGFyZW50LmRlbnRyeSwgZGVudHJ5KTsKIAkJZWxzZQogCQkJZXJyID0gLUVQRVJN OwogCX0gZWxzZSB7CkBAIC0zMjQsNyArMzI0LDcgQEAgc3RhdGljIGludCBoYW5kbGVfcmVtb3Zl KGNvbnN0IGNoYXIgKm5vZGVuYW1lLCBzdHJ1Y3QgZGV2aWNlICpkZXYpCiAJCQltdXRleF9sb2Nr KCZkZW50cnktPmRfaW5vZGUtPmlfbXV0ZXgpOwogCQkJbm90aWZ5X2NoYW5nZShkZW50cnksICZu ZXdhdHRycywgTlVMTCk7CiAJCQltdXRleF91bmxvY2soJmRlbnRyeS0+ZF9pbm9kZS0+aV9tdXRl eCk7Ci0JCQllcnIgPSB2ZnNfdW5saW5rKHBhcmVudC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwg TlVMTCk7CisJCQllcnIgPSB2ZnNfdW5saW5rKHBhcmVudC5kZW50cnksIGRlbnRyeSwgTlVMTCk7 CiAJCQlpZiAoIWVyciB8fCBlcnIgPT0gLUVOT0VOVCkKIAkJCQlkZWxldGVkID0gMTsKIAkJfQpk aWZmIC0tZ2l0IGEvZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvZmlsZS5jIGIv ZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvZmlsZS5jCmluZGV4IGMxMjgyMWFl ZGMyZi4uN2EyZTVmOWIyZTFkIDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbHVzdHJlL2x1 c3RyZS9sbGl0ZS9maWxlLmMKKysrIGIvZHJpdmVycy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxp dGUvZmlsZS5jCkBAIC0xOTUxLDggKzE5NTEsOCBAQCBzdGF0aWMgaW50IGxsX3N3YXBfbGF5b3V0 cyhzdHJ1Y3QgZmlsZSAqZmlsZTEsIHN0cnVjdCBmaWxlICpmaWxlMiwKIAlpZiAoIVNfSVNSRUco bGxzcy0+aW5vZGUyLT5pX21vZGUpKQogCQlHT1RPKGZyZWUsIHJjID0gLUVJTlZBTCk7CiAKLQlp ZiAoaW5vZGVfcGVybWlzc2lvbihsbHNzLT5pbm9kZTEsIE1BWV9XUklURSkgfHwKLQkgICAgaW5v ZGVfcGVybWlzc2lvbihsbHNzLT5pbm9kZTIsIE1BWV9XUklURSkpCisJaWYgKGlub2RlX3Blcm1p c3Npb24oZmlsZTEtPmZfZGVudHJ5LCBsbHNzLT5pbm9kZTEsIE1BWV9XUklURSkgfHwKKwkgICAg aW5vZGVfcGVybWlzc2lvbihmaWxlMi0+Zl9kZW50cnksIGxsc3MtPmlub2RlMiwgTUFZX1dSSVRF KSkKIAkJR09UTyhmcmVlLCByYyA9IC1FUEVSTSk7CiAKIAlpZiAobGxzcy0+aW5vZGUyLT5pX3Ni ICE9IGxsc3MtPmlub2RlMS0+aV9zYikKQEAgLTMwNzksNyArMzA3OSw3IEBAIHN0cnVjdCBwb3Np eF9hY2wgKiBsbF9nZXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCB0eXBlKQogfQogCiAK LWludCBsbF9pbm9kZV9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQor aW50IGxsX2lub2RlX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgbWFzaykKIHsKIAlpbnQgcmMgPSAwOwogCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sbGl0ZS9sbGl0ZV9pbnRlcm5hbC5oIGIvZHJpdmVy cy9zdGFnaW5nL2x1c3RyZS9sdXN0cmUvbGxpdGUvbGxpdGVfaW50ZXJuYWwuaAppbmRleCA3ZWU1 YzAyNzgzZjkuLmI3NjdlNDg0ZGZlOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9zdGFnaW5nL2x1c3Ry ZS9sdXN0cmUvbGxpdGUvbGxpdGVfaW50ZXJuYWwuaAorKysgYi9kcml2ZXJzL3N0YWdpbmcvbHVz dHJlL2x1c3RyZS9sbGl0ZS9sbGl0ZV9pbnRlcm5hbC5oCkBAIC03OTksNyArNzk5LDcgQEAgaW50 IGxsX2dldGF0dHIoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBkZW50cnkgKmRlLCBzdHJ1 Y3Qga3N0YXQgKnN0YXQpOwogc3RydWN0IGxsX2ZpbGVfZGF0YSAqbGxfZmlsZV9kYXRhX2dldCh2 b2lkKTsKIHN0cnVjdCBwb3NpeF9hY2wgKiBsbF9nZXRfYWNsKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGludCB0eXBlKTsKIAotaW50IGxsX2lub2RlX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9k ZSwgaW50IG1hc2spOworaW50IGxsX2lub2RlX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7CiAKIGludCBsbF9sb3Zfc2V0c3Ry aXBlX2VhX2luZm8oc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0IGZpbGUgKmZpbGUsCiAJCQkg ICAgIGludCBmbGFncywgc3RydWN0IGxvdl91c2VyX21kICpsdW0sCmRpZmYgLS1naXQgYS9kcml2 ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sdmZzL2x2ZnNfbGludXguYyBiL2RyaXZlcnMvc3Rh Z2luZy9sdXN0cmUvbHVzdHJlL2x2ZnMvbHZmc19saW51eC5jCmluZGV4IDQyOGZmZDhjMzdiNy4u YzRhYTI2MGRlZjE5IDEwMDY0NAotLS0gYS9kcml2ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9s dmZzL2x2ZnNfbGludXguYworKysgYi9kcml2ZXJzL3N0YWdpbmcvbHVzdHJlL2x1c3RyZS9sdmZz L2x2ZnNfbGludXguYwpAQCAtMjIyLDggKzIyMiw4IEBAIGludCBsdXN0cmVfcmVuYW1lKHN0cnVj dCBkZW50cnkgKmRpciwgc3RydWN0IHZmc21vdW50ICptbnQsCiAJaWYgKElTX0VSUihkY2hpbGRf bmV3KSkKIAkJR09UTyhwdXRfb2xkLCBlcnIgPSBQVFJfRVJSKGRjaGlsZF9uZXcpKTsKIAotCWVy ciA9IGxsX3Zmc19yZW5hbWUoZGlyLT5kX2lub2RlLCBkY2hpbGRfb2xkLCBtbnQsCi0JCQkgICAg ZGlyLT5kX2lub2RlLCBkY2hpbGRfbmV3LCBtbnQsIE5VTEwpOworCWVyciA9IGxsX3Zmc19yZW5h bWUoZGlyLCBkY2hpbGRfb2xkLCBtbnQsCisJCQkgICAgZGlyLCBkY2hpbGRfbmV3LCBtbnQsIE5V TEwpOwogCiAJZHB1dChkY2hpbGRfbmV3KTsKIHB1dF9vbGQ6CmRpZmYgLS1naXQgYS9mcy9hZnMv aW50ZXJuYWwuaCBiL2ZzL2Fmcy9pbnRlcm5hbC5oCmluZGV4IDY2MjFmODAwODEyMi4uNjNhMDNi NTU1ZmQzIDEwMDY0NAotLS0gYS9mcy9hZnMvaW50ZXJuYWwuaAorKysgYi9mcy9hZnMvaW50ZXJu YWwuaApAQCAtNjI2LDcgKzYyNiw3IEBAIGV4dGVybiB2b2lkIGFmc19jbGVhcl9wZXJtaXRzKHN0 cnVjdCBhZnNfdm5vZGUgKik7CiBleHRlcm4gdm9pZCBhZnNfY2FjaGVfcGVybWl0KHN0cnVjdCBh ZnNfdm5vZGUgKiwgc3RydWN0IGtleSAqLCBsb25nKTsKIGV4dGVybiB2b2lkIGFmc196YXBfcGVy bWl0cyhzdHJ1Y3QgcmN1X2hlYWQgKik7CiBleHRlcm4gc3RydWN0IGtleSAqYWZzX3JlcXVlc3Rf a2V5KHN0cnVjdCBhZnNfY2VsbCAqKTsKLWV4dGVybiBpbnQgYWZzX3Blcm1pc3Npb24oc3RydWN0 IGlub2RlICosIGludCk7CitleHRlcm4gaW50IGFmc19wZXJtaXNzaW9uKHN0cnVjdCBkZW50cnkg Kiwgc3RydWN0IGlub2RlICosIGludCk7CiAKIC8qCiAgKiBzZXJ2ZXIuYwpkaWZmIC0tZ2l0IGEv ZnMvYWZzL3NlY3VyaXR5LmMgYi9mcy9hZnMvc2VjdXJpdHkuYwppbmRleCA4ZDAxMDQyMmRjODku LmNjMzRhNDFiYWIwNCAxMDA2NDQKLS0tIGEvZnMvYWZzL3NlY3VyaXR5LmMKKysrIGIvZnMvYWZz L3NlY3VyaXR5LmMKQEAgLTI4NSw3ICsyODUsNyBAQCBzdGF0aWMgaW50IGFmc19jaGVja19wZXJt aXQoc3RydWN0IGFmc192bm9kZSAqdm5vZGUsIHN0cnVjdCBrZXkgKmtleSwKICAqIC0gQUZTIEFD THMgYXJlIGF0dGFjaGVkIHRvIGRpcmVjdG9yaWVzIG9ubHksIGFuZCBhIGZpbGUgaXMgY29udHJv bGxlZCBieSBpdHMKICAqICAgcGFyZW50IGRpcmVjdG9yeSdzIEFDTAogICovCi1pbnQgYWZzX3Bl cm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCitpbnQgYWZzX3Blcm1pc3Np b24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykK IHsKIAlzdHJ1Y3QgYWZzX3Zub2RlICp2bm9kZSA9IEFGU19GU19JKGlub2RlKTsKIAlhZnNfYWNj ZXNzX3QgdW5pbml0aWFsaXplZF92YXIoYWNjZXNzKTsKZGlmZiAtLWdpdCBhL2ZzL2JhZF9pbm9k ZS5jIGIvZnMvYmFkX2lub2RlLmMKaW5kZXggN2M5Mzk1MzAzMGZiLi5jZjYxODFiMTJhZGQgMTAw NjQ0Ci0tLSBhL2ZzL2JhZF9pbm9kZS5jCisrKyBiL2ZzL2JhZF9pbm9kZS5jCkBAIC0yMzAsNyAr MjMwLDcgQEAgc3RhdGljIGludCBiYWRfaW5vZGVfcmVhZGxpbmsoc3RydWN0IGRlbnRyeSAqZGVu dHJ5LCBjaGFyIF9fdXNlciAqYnVmZmVyLAogCXJldHVybiAtRUlPOwogfQogCi1zdGF0aWMgaW50 IGJhZF9pbm9kZV9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQorc3Rh dGljIGludCBiYWRfaW5vZGVfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQogewogCXJldHVybiAtRUlPOwogfQpkaWZmIC0tZ2l0 IGEvZnMvYnRyZnMvaW5vZGUuYyBiL2ZzL2J0cmZzL2lub2RlLmMKaW5kZXggNWM0YWI5YzE4OTQw Li41NDZhNjg3MmU4NDEgMTAwNjQ0Ci0tLSBhL2ZzL2J0cmZzL2lub2RlLmMKKysrIGIvZnMvYnRy ZnMvaW5vZGUuYwpAQCAtODgxNyw3ICs4ODE3LDcgQEAgc3RhdGljIGludCBidHJmc19zZXRfcGFn ZV9kaXJ0eShzdHJ1Y3QgcGFnZSAqcGFnZSkKIAlyZXR1cm4gX19zZXRfcGFnZV9kaXJ0eV9ub2J1 ZmZlcnMocGFnZSk7CiB9CiAKLXN0YXRpYyBpbnQgYnRyZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5v ZGUgKmlub2RlLCBpbnQgbWFzaykKK3N0YXRpYyBpbnQgYnRyZnNfcGVybWlzc2lvbihzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQogewogCXN0cnVj dCBidHJmc19yb290ICpyb290ID0gQlRSRlNfSShpbm9kZSktPnJvb3Q7CiAJdW1vZGVfdCBtb2Rl ID0gaW5vZGUtPmlfbW9kZTsKZGlmZiAtLWdpdCBhL2ZzL2J0cmZzL2lvY3RsLmMgYi9mcy9idHJm cy9pb2N0bC5jCmluZGV4IGIwMTM0ODkyZGM3MC4uZDA3ZmRjOWI4YzllIDEwMDY0NAotLS0gYS9m cy9idHJmcy9pb2N0bC5jCisrKyBiL2ZzL2J0cmZzL2lvY3RsLmMKQEAgLTcxNiw5ICs3MTYsMTAg QEAgc3RhdGljIGlubGluZSBpbnQgYnRyZnNfY2hlY2tfc3RpY2t5KHN0cnVjdCBpbm9kZSAqZGly LCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQogICogICAgIG5mc19hc3luY191bmxpbmsoKS4KICAqLwog Ci1zdGF0aWMgaW50IGJ0cmZzX21heV9kZWxldGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBk ZW50cnkgKnZpY3RpbSwgaW50IGlzZGlyKQorc3RhdGljIGludCBidHJmc19tYXlfZGVsZXRlKHN0 cnVjdCBkZW50cnkgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqdmljdGltLCBpbnQgaXNkaXIpCiB7 CiAJaW50IGVycm9yOworCXN0cnVjdCBpbm9kZSAqZGlyID0gcGFyZW50LT5kX2lub2RlOwogCiAJ aWYgKCF2aWN0aW0tPmRfaW5vZGUpCiAJCXJldHVybiAtRU5PRU5UOwpAQCAtNzI2LDcgKzcyNyw3 IEBAIHN0YXRpYyBpbnQgYnRyZnNfbWF5X2RlbGV0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0 IGRlbnRyeSAqdmljdGltLCBpbnQgaXNkaXIpCiAJQlVHX09OKHZpY3RpbS0+ZF9wYXJlbnQtPmRf aW5vZGUgIT0gZGlyKTsKIAlhdWRpdF9pbm9kZV9jaGlsZChkaXIsIHZpY3RpbSwgQVVESVRfVFlQ RV9DSElMRF9ERUxFVEUpOwogCi0JZXJyb3IgPSBpbm9kZV9wZXJtaXNzaW9uKGRpciwgTUFZX1dS SVRFIHwgTUFZX0VYRUMpOworCWVycm9yID0gaW5vZGVfcGVybWlzc2lvbihwYXJlbnQsIGRpciwg TUFZX1dSSVRFIHwgTUFZX0VYRUMpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCWlm IChJU19BUFBFTkQoZGlyKSkKQEAgLTc1MCwxMyArNzUxLDE0IEBAIHN0YXRpYyBpbnQgYnRyZnNf bWF5X2RlbGV0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqdmljdGltLCBpbnQg aXNkaXIpCiB9CiAKIC8qIGNvcHkgb2YgbWF5X2NyZWF0ZSBpbiBmcy9uYW1laS5jKCkgKi8KLXN0 YXRpYyBpbmxpbmUgaW50IGJ0cmZzX21heV9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVj dCBkZW50cnkgKmNoaWxkKQorc3RhdGljIGlubGluZSBpbnQgYnRyZnNfbWF5X2NyZWF0ZShzdHJ1 Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmNoaWxkKQogeworCXN0cnVjdCBpbm9k ZSAqZGlyID0gcGFyZW50LT5kX2lub2RlOwogCWlmIChjaGlsZC0+ZF9pbm9kZSkKIAkJcmV0dXJu IC1FRVhJU1Q7CiAJaWYgKElTX0RFQURESVIoZGlyKSkKIAkJcmV0dXJuIC1FTk9FTlQ7Ci0JcmV0 dXJuIGlub2RlX3Blcm1pc3Npb24oZGlyLCBNQVlfV1JJVEUgfCBNQVlfRVhFQyk7CisJcmV0dXJu IGlub2RlX3Blcm1pc3Npb24ocGFyZW50LCBkaXIsIE1BWV9XUklURSB8IE1BWV9FWEVDKTsKIH0K IAogLyoKQEAgLTc4Nyw3ICs3ODksNyBAQCBzdGF0aWMgbm9pbmxpbmUgaW50IGJ0cmZzX21rc3Vi dm9sKHN0cnVjdCBwYXRoICpwYXJlbnQsCiAJaWYgKGRlbnRyeS0+ZF9pbm9kZSkKIAkJZ290byBv dXRfZHB1dDsKIAotCWVycm9yID0gYnRyZnNfbWF5X2NyZWF0ZShkaXIsIGRlbnRyeSk7CisJZXJy b3IgPSBidHJmc19tYXlfY3JlYXRlKHBhcmVudC0+ZGVudHJ5LCBkZW50cnkpOwogCWlmIChlcnJv cikKIAkJZ290byBvdXRfZHB1dDsKIApAQCAtMjIxMywxMyArMjIxNSwxMyBAQCBzdGF0aWMgbm9p bmxpbmUgaW50IGJ0cmZzX2lvY3RsX3NuYXBfZGVzdHJveShzdHJ1Y3QgZmlsZSAqZmlsZSwKIAkJ aWYgKHJvb3QgPT0gZGVzdCkKIAkJCWdvdG8gb3V0X2RwdXQ7CiAKLQkJZXJyID0gaW5vZGVfcGVy bWlzc2lvbihpbm9kZSwgTUFZX1dSSVRFIHwgTUFZX0VYRUMpOworCQllcnIgPSBpbm9kZV9wZXJt aXNzaW9uKGRlbnRyeSwgaW5vZGUsIE1BWV9XUklURSB8IE1BWV9FWEVDKTsKIAkJaWYgKGVycikK IAkJCWdvdG8gb3V0X2RwdXQ7CiAJfQogCiAJLyogY2hlY2sgaWYgc3Vidm9sdW1lIG1heSBiZSBk ZWxldGVkIGJ5IGEgdXNlciAqLwotCWVyciA9IGJ0cmZzX21heV9kZWxldGUoZGlyLCBkZW50cnks IDEpOworCWVyciA9IGJ0cmZzX21heV9kZWxldGUocGFyZW50LCBkZW50cnksIDEpOwogCWlmIChl cnIpCiAJCWdvdG8gb3V0X2RwdXQ7CiAKZGlmZiAtLWdpdCBhL2ZzL2NhY2hlZmlsZXMvbmFtZWku YyBiL2ZzL2NhY2hlZmlsZXMvbmFtZWkuYwppbmRleCBjYTY1ZjM5ZGM4ZGMuLmM0YjY3MTI5MDll MyAxMDA2NDQKLS0tIGEvZnMvY2FjaGVmaWxlcy9uYW1laS5jCisrKyBiL2ZzL2NhY2hlZmlsZXMv bmFtZWkuYwpAQCAtMjk0LDcgKzI5NCw3IEBAIHN0YXRpYyBpbnQgY2FjaGVmaWxlc19idXJ5X29i amVjdChzdHJ1Y3QgY2FjaGVmaWxlc19jYWNoZSAqY2FjaGUsCiAJCWlmIChyZXQgPCAwKSB7CiAJ CQljYWNoZWZpbGVzX2lvX2Vycm9yKGNhY2hlLCAiVW5saW5rIHNlY3VyaXR5IGVycm9yIik7CiAJ CX0gZWxzZSB7Ci0JCQlyZXQgPSB2ZnNfdW5saW5rKGRpci0+ZF9pbm9kZSwgcmVwLCBOVUxMKTsK KwkJCXJldCA9IHZmc191bmxpbmsoZGlyLCByZXAsIE5VTEwpOwogCiAJCQlpZiAocHJlZW1wdGl2 ZSkKIAkJCQljYWNoZWZpbGVzX21hcmtfb2JqZWN0X2J1cmllZChjYWNoZSwgcmVwKTsKQEAgLTM5 NSw4ICszOTUsNyBAQCB0cnlfYWdhaW46CiAJaWYgKHJldCA8IDApIHsKIAkJY2FjaGVmaWxlc19p b19lcnJvcihjYWNoZSwgIlJlbmFtZSBzZWN1cml0eSBlcnJvciAlZCIsIHJldCk7CiAJfSBlbHNl IHsKLQkJcmV0ID0gdmZzX3JlbmFtZShkaXItPmRfaW5vZGUsIHJlcCwKLQkJCQkgY2FjaGUtPmdy YXZleWFyZC0+ZF9pbm9kZSwgZ3JhdmUsIE5VTEwpOworCQlyZXQgPSB2ZnNfcmVuYW1lKGRpciwg cmVwLCBjYWNoZS0+Z3JhdmV5YXJkLCBncmF2ZSwgTlVMTCk7CiAJCWlmIChyZXQgIT0gMCAmJiBy ZXQgIT0gLUVOT01FTSkKIAkJCWNhY2hlZmlsZXNfaW9fZXJyb3IoY2FjaGUsCiAJCQkJCSAgICAi UmVuYW1lIGZhaWxlZCB3aXRoIGVycm9yICVkIiwgcmV0KTsKQEAgLTUzNyw3ICs1MzYsNyBAQCBs b29rdXBfYWdhaW46CiAJCQlpZiAocmV0IDwgMCkKIAkJCQlnb3RvIGNyZWF0ZV9lcnJvcjsKIAkJ CXN0YXJ0ID0gamlmZmllczsKLQkJCXJldCA9IHZmc19ta2RpcihkaXItPmRfaW5vZGUsIG5leHQs IDApOworCQkJcmV0ID0gdmZzX21rZGlyKGRpciwgbmV4dCwgMCk7CiAJCQljYWNoZWZpbGVzX2hp c3QoY2FjaGVmaWxlc19ta2Rpcl9oaXN0b2dyYW0sIHN0YXJ0KTsKIAkJCWlmIChyZXQgPCAwKQog CQkJCWdvdG8gY3JlYXRlX2Vycm9yOwpAQCAtNTY2LDcgKzU2NSw3IEBAIGxvb2t1cF9hZ2FpbjoK IAkJCWlmIChyZXQgPCAwKQogCQkJCWdvdG8gY3JlYXRlX2Vycm9yOwogCQkJc3RhcnQgPSBqaWZm aWVzOwotCQkJcmV0ID0gdmZzX2NyZWF0ZShkaXItPmRfaW5vZGUsIG5leHQsIFNfSUZSRUcsIHRy dWUpOworCQkJcmV0ID0gdmZzX2NyZWF0ZShkaXIsIG5leHQsIFNfSUZSRUcsIHRydWUpOwogCQkJ Y2FjaGVmaWxlc19oaXN0KGNhY2hlZmlsZXNfY3JlYXRlX2hpc3RvZ3JhbSwgc3RhcnQpOwogCQkJ aWYgKHJldCA8IDApCiAJCQkJZ290byBjcmVhdGVfZXJyb3I7CkBAIC03NTUsNyArNzU0LDcgQEAg c3RydWN0IGRlbnRyeSAqY2FjaGVmaWxlc19nZXRfZGlyZWN0b3J5KHN0cnVjdCBjYWNoZWZpbGVz X2NhY2hlICpjYWNoZSwKIAkJcmV0ID0gc2VjdXJpdHlfcGF0aF9ta2RpcigmcGF0aCwgc3ViZGly LCAwNzAwKTsKIAkJaWYgKHJldCA8IDApCiAJCQlnb3RvIG1rZGlyX2Vycm9yOwotCQlyZXQgPSB2 ZnNfbWtkaXIoZGlyLT5kX2lub2RlLCBzdWJkaXIsIDA3MDApOworCQlyZXQgPSB2ZnNfbWtkaXIo ZGlyLCBzdWJkaXIsIDA3MDApOwogCQlpZiAocmV0IDwgMCkKIAkJCWdvdG8gbWtkaXJfZXJyb3I7 CiAKZGlmZiAtLWdpdCBhL2ZzL2NlcGgvaW5vZGUuYyBiL2ZzL2NlcGgvaW5vZGUuYwppbmRleCAz MmQ1MTlkOGEyZTIuLjA0ZGIxNzc0Y2IyZCAxMDA2NDQKLS0tIGEvZnMvY2VwaC9pbm9kZS5jCisr KyBiL2ZzL2NlcGgvaW5vZGUuYwpAQCAtMTg3NSw3ICsxODc1LDcgQEAgaW50IGNlcGhfZG9fZ2V0 YXR0cihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKICAqIENoZWNrIGlub2RlIHBlcm1p c3Npb25zLiAgV2UgdmVyaWZ5IHdlIGhhdmUgYSB2YWxpZCB2YWx1ZSBmb3IKICAqIHRoZSBBVVRI IGNhcCwgdGhlbiBjYWxsIHRoZSBnZW5lcmljIGhhbmRsZXIuCiAgKi8KLWludCBjZXBoX3Blcm1p c3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCitpbnQgY2VwaF9wZXJtaXNzaW9u KHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCiB7 CiAJaW50IGVycjsKIApkaWZmIC0tZ2l0IGEvZnMvY2VwaC9zdXBlci5oIGIvZnMvY2VwaC9zdXBl ci5oCmluZGV4IDE5NzkzYjU2ZDBhNy4uNjIxNWRjMzhiNjc2IDEwMDY0NAotLS0gYS9mcy9jZXBo L3N1cGVyLmgKKysrIGIvZnMvY2VwaC9zdXBlci5oCkBAIC03MTYsNyArNzE2LDcgQEAgZXh0ZXJu IHZvaWQgY2VwaF9xdWV1ZV9pbnZhbGlkYXRlKHN0cnVjdCBpbm9kZSAqaW5vZGUpOwogZXh0ZXJu IHZvaWQgY2VwaF9xdWV1ZV93cml0ZWJhY2soc3RydWN0IGlub2RlICppbm9kZSk7CiAKIGV4dGVy biBpbnQgY2VwaF9kb19nZXRhdHRyKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKTsKLWV4 dGVybiBpbnQgY2VwaF9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKTsK K2V4dGVybiBpbnQgY2VwaF9wZXJtaXNzaW9uKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2Rl ICppbm9kZSwgaW50IG1hc2spOwogZXh0ZXJuIGludCBjZXBoX3NldGF0dHIoc3RydWN0IGRlbnRy eSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmF0dHIpOwogZXh0ZXJuIGludCBjZXBoX2dldGF0dHIo c3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwKIAkJCXN0cnVjdCBr c3RhdCAqc3RhdCk7CmRpZmYgLS1naXQgYS9mcy9jaWZzL2NpZnNmcy5jIGIvZnMvY2lmcy9jaWZz ZnMuYwppbmRleCA4NDlmNjEzMmIzMjcuLmNhMzA0ODc4ZWY3YiAxMDA2NDQKLS0tIGEvZnMvY2lm cy9jaWZzZnMuYworKysgYi9mcy9jaWZzL2NpZnNmcy5jCkBAIC0yMTEsNyArMjExLDcgQEAgY2lm c19zdGF0ZnMoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qga3N0YXRmcyAqYnVmKQogCXJl dHVybiAwOwogfQogCi1zdGF0aWMgaW50IGNpZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBpbnQgbWFzaykKK3N0YXRpYyBpbnQgY2lmc19wZXJtaXNzaW9uKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCiB7CiAJc3RydWN0IGNpZnNf c2JfaW5mbyAqY2lmc19zYjsKIApkaWZmIC0tZ2l0IGEvZnMvY29kYS9jb2RhX2xpbnV4LmggYi9m cy9jb2RhL2NvZGFfbGludXguaAppbmRleCBlNzU1MGNiOWZiNzQuLmJlNjY2YWQ1MzcxNyAxMDA2 NDQKLS0tIGEvZnMvY29kYS9jb2RhX2xpbnV4LmgKKysrIGIvZnMvY29kYS9jb2RhX2xpbnV4LmgK QEAgLTM5LDcgKzM5LDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgY29k YV9pb2N0bF9vcGVyYXRpb25zOwogLyogb3BlcmF0aW9ucyBzaGFyZWQgb3ZlciBtb3JlIHRoYW4g b25lIGZpbGUgKi8KIGludCBjb2RhX29wZW4oc3RydWN0IGlub2RlICppLCBzdHJ1Y3QgZmlsZSAq Zik7CiBpbnQgY29kYV9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaSwgc3RydWN0IGZpbGUgKmYpOwot aW50IGNvZGFfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7CitpbnQg Y29kYV9wZXJtaXNzaW9uKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9k ZSwgaW50IG1hc2spOwogaW50IGNvZGFfcmV2YWxpZGF0ZV9pbm9kZShzdHJ1Y3QgaW5vZGUgKik7 CiBpbnQgY29kYV9nZXRhdHRyKHN0cnVjdCB2ZnNtb3VudCAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0 cnVjdCBrc3RhdCAqKTsKIGludCBjb2RhX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aWF0dHIgKik7CmRpZmYgLS1naXQgYS9mcy9jb2RhL2Rpci5jIGIvZnMvY29kYS9kaXIuYwppbmRl eCA1ZWZiYjVlZTBhZGMuLmMzY2U1MGFkNzI1ZSAxMDA2NDQKLS0tIGEvZnMvY29kYS9kaXIuYwor KysgYi9mcy9jb2RhL2Rpci5jCkBAIC0xMjgsNyArMTI4LDcgQEAgc3RhdGljIHN0cnVjdCBkZW50 cnkgKmNvZGFfbG9va3VwKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICplbnRyeSwg dW5zaWcKIH0KIAogCi1pbnQgY29kYV9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGlu dCBtYXNrKQoraW50IGNvZGFfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVj dCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQogewogCWludCBlcnJvcjsKIApkaWZmIC0tZ2l0IGEv ZnMvY29kYS9waW9jdGwuYyBiL2ZzL2NvZGEvcGlvY3RsLmMKaW5kZXggM2Y1ZGU5NmJiYjU4Li4y Yjc2MGI5N2ZlOWMgMTAwNjQ0Ci0tLSBhL2ZzL2NvZGEvcGlvY3RsLmMKKysrIGIvZnMvY29kYS9w aW9jdGwuYwpAQCAtMjQsNyArMjQsNyBAQAogI2luY2x1ZGUgImNvZGFfbGludXguaCIKIAogLyog cGlvY3RsIG9wcyAqLwotc3RhdGljIGludCBjb2RhX2lvY3RsX3Blcm1pc3Npb24oc3RydWN0IGlu b2RlICppbm9kZSwgaW50IG1hc2spOworc3RhdGljIGludCBjb2RhX2lvY3RsX3Blcm1pc3Npb24o c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7CiBz dGF0aWMgbG9uZyBjb2RhX3Bpb2N0bChzdHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNt ZCwKIAkJCXVuc2lnbmVkIGxvbmcgdXNlcl9kYXRhKTsKIApAQCAtNDEsNyArNDEsNyBAQCBjb25z dCBzdHJ1Y3QgZmlsZV9vcGVyYXRpb25zIGNvZGFfaW9jdGxfb3BlcmF0aW9ucyA9IHsKIH07CiAK IC8qIHRoZSBjb2RhIHBpb2N0bCBpbm9kZSBvcHMgKi8KLXN0YXRpYyBpbnQgY29kYV9pb2N0bF9w ZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQorc3RhdGljIGludCBjb2Rh X2lvY3RsX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlu b2RlLCBpbnQgbWFzaykKIHsKIAlyZXR1cm4gKG1hc2sgJiBNQVlfRVhFQykgPyAtRUFDQ0VTIDog MDsKIH0KZGlmZiAtLWdpdCBhL2ZzL2VjcnlwdGZzL2lub2RlLmMgYi9mcy9lY3J5cHRmcy9pbm9k ZS5jCmluZGV4IGIxNjdjYTQ4YjhlZS4uZjJkYzUxNmM2MjZhIDEwMDY0NAotLS0gYS9mcy9lY3J5 cHRmcy9pbm9kZS5jCisrKyBiL2ZzL2VjcnlwdGZzL2lub2RlLmMKQEAgLTE1Myw3ICsxNTMsNyBA QCBzdGF0aWMgaW50IGVjcnlwdGZzX2RvX3VubGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0 IGRlbnRyeSAqZGVudHJ5LAogCiAJZGdldChsb3dlcl9kZW50cnkpOwogCWxvd2VyX2Rpcl9kZW50 cnkgPSBsb2NrX3BhcmVudChsb3dlcl9kZW50cnkpOwotCXJjID0gdmZzX3VubGluayhsb3dlcl9k aXJfaW5vZGUsIGxvd2VyX2RlbnRyeSwgTlVMTCk7CisJcmMgPSB2ZnNfdW5saW5rKGxvd2VyX2Rp cl9kZW50cnksIGxvd2VyX2RlbnRyeSwgTlVMTCk7CiAJaWYgKHJjKSB7CiAJCXByaW50ayhLRVJO X0VSUiAiRXJyb3IgaW4gdmZzX3VubGluazsgcmMgPSBbJWRdXG4iLCByYyk7CiAJCWdvdG8gb3V0 X3VubG9jazsKQEAgLTE5OCw3ICsxOTgsNyBAQCBlY3J5cHRmc19kb19jcmVhdGUoc3RydWN0IGlu b2RlICpkaXJlY3RvcnlfaW5vZGUsCiAJCWlub2RlID0gRVJSX0NBU1QobG93ZXJfZGlyX2RlbnRy eSk7CiAJCWdvdG8gb3V0OwogCX0KLQlyYyA9IHZmc19jcmVhdGUobG93ZXJfZGlyX2RlbnRyeS0+ ZF9pbm9kZSwgbG93ZXJfZGVudHJ5LCBtb2RlLCB0cnVlKTsKKwlyYyA9IHZmc19jcmVhdGUobG93 ZXJfZGlyX2RlbnRyeSwgbG93ZXJfZGVudHJ5LCBtb2RlLCB0cnVlKTsKIAlpZiAocmMpIHsKIAkJ cHJpbnRrKEtFUk5fRVJSICIlczogRmFpbHVyZSB0byBjcmVhdGUgZGVudHJ5IGluIGxvd2VyIGZz OyAiCiAJCSAgICAgICAicmMgPSBbJWRdXG4iLCBfX2Z1bmNfXywgcmMpOwpAQCAtMjA4LDcgKzIw OCw3IEBAIGVjcnlwdGZzX2RvX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpcmVjdG9yeV9pbm9kZSwK IAlpbm9kZSA9IF9fZWNyeXB0ZnNfZ2V0X2lub2RlKGxvd2VyX2RlbnRyeS0+ZF9pbm9kZSwKIAkJ CQkgICAgIGRpcmVjdG9yeV9pbm9kZS0+aV9zYik7CiAJaWYgKElTX0VSUihpbm9kZSkpIHsKLQkJ dmZzX3VubGluayhsb3dlcl9kaXJfZGVudHJ5LT5kX2lub2RlLCBsb3dlcl9kZW50cnksIE5VTEwp OworCQl2ZnNfdW5saW5rKGxvd2VyX2Rpcl9kZW50cnksIGxvd2VyX2RlbnRyeSwgTlVMTCk7CiAJ CWdvdG8gb3V0X2xvY2s7CiAJfQogCWZzc3RhY2tfY29weV9hdHRyX3RpbWVzKGRpcmVjdG9yeV9p bm9kZSwgbG93ZXJfZGlyX2RlbnRyeS0+ZF9pbm9kZSk7CkBAIC00NzQsOCArNDc0LDcgQEAgc3Rh dGljIGludCBlY3J5cHRmc19saW5rKHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksIHN0cnVjdCBp bm9kZSAqZGlyLAogCWRnZXQobG93ZXJfb2xkX2RlbnRyeSk7CiAJZGdldChsb3dlcl9uZXdfZGVu dHJ5KTsKIAlsb3dlcl9kaXJfZGVudHJ5ID0gbG9ja19wYXJlbnQobG93ZXJfbmV3X2RlbnRyeSk7 Ci0JcmMgPSB2ZnNfbGluayhsb3dlcl9vbGRfZGVudHJ5LCBsb3dlcl9kaXJfZGVudHJ5LT5kX2lu b2RlLAotCQkgICAgICBsb3dlcl9uZXdfZGVudHJ5LCBOVUxMKTsKKwlyYyA9IHZmc19saW5rKGxv d2VyX29sZF9kZW50cnksIGxvd2VyX2Rpcl9kZW50cnksIGxvd2VyX25ld19kZW50cnksIE5VTEwp OwogCWlmIChyYyB8fCAhbG93ZXJfbmV3X2RlbnRyeS0+ZF9pbm9kZSkKIAkJZ290byBvdXRfbG9j azsKIAlyYyA9IGVjcnlwdGZzX2ludGVycG9zZShsb3dlcl9uZXdfZGVudHJ5LCBuZXdfZGVudHJ5 LCBkaXItPmlfc2IpOwpAQCAtNTIwLDggKzUxOSw3IEBAIHN0YXRpYyBpbnQgZWNyeXB0ZnNfc3lt bGluayhzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCQkJCQkJICBz dHJsZW4oc3ltbmFtZSkpOwogCWlmIChyYykKIAkJZ290byBvdXRfbG9jazsKLQlyYyA9IHZmc19z eW1saW5rKGxvd2VyX2Rpcl9kZW50cnktPmRfaW5vZGUsIGxvd2VyX2RlbnRyeSwKLQkJCSBlbmNv ZGVkX3N5bW5hbWUpOworCXJjID0gdmZzX3N5bWxpbmsobG93ZXJfZGlyX2RlbnRyeSwgbG93ZXJf ZGVudHJ5LCBlbmNvZGVkX3N5bW5hbWUpOwogCWtmcmVlKGVuY29kZWRfc3ltbmFtZSk7CiAJaWYg KHJjIHx8ICFsb3dlcl9kZW50cnktPmRfaW5vZGUpCiAJCWdvdG8gb3V0X2xvY2s7CkBAIC01NDYs NyArNTQ0LDcgQEAgc3RhdGljIGludCBlY3J5cHRmc19ta2RpcihzdHJ1Y3QgaW5vZGUgKmRpciwg c3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUKIAogCWxvd2VyX2RlbnRyeSA9IGVj cnlwdGZzX2RlbnRyeV90b19sb3dlcihkZW50cnkpOwogCWxvd2VyX2Rpcl9kZW50cnkgPSBsb2Nr X3BhcmVudChsb3dlcl9kZW50cnkpOwotCXJjID0gdmZzX21rZGlyKGxvd2VyX2Rpcl9kZW50cnkt PmRfaW5vZGUsIGxvd2VyX2RlbnRyeSwgbW9kZSk7CisJcmMgPSB2ZnNfbWtkaXIobG93ZXJfZGly X2RlbnRyeSwgbG93ZXJfZGVudHJ5LCBtb2RlKTsKIAlpZiAocmMgfHwgIWxvd2VyX2RlbnRyeS0+ ZF9pbm9kZSkKIAkJZ290byBvdXQ7CiAJcmMgPSBlY3J5cHRmc19pbnRlcnBvc2UobG93ZXJfZGVu dHJ5LCBkZW50cnksIGRpci0+aV9zYik7CkBAIC01NzIsNyArNTcwLDcgQEAgc3RhdGljIGludCBl Y3J5cHRmc19ybWRpcihzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5KQog CWRnZXQoZGVudHJ5KTsKIAlsb3dlcl9kaXJfZGVudHJ5ID0gbG9ja19wYXJlbnQobG93ZXJfZGVu dHJ5KTsKIAlkZ2V0KGxvd2VyX2RlbnRyeSk7Ci0JcmMgPSB2ZnNfcm1kaXIobG93ZXJfZGlyX2Rl bnRyeS0+ZF9pbm9kZSwgbG93ZXJfZGVudHJ5KTsKKwlyYyA9IHZmc19ybWRpcihsb3dlcl9kaXJf ZGVudHJ5LCBsb3dlcl9kZW50cnkpOwogCWRwdXQobG93ZXJfZGVudHJ5KTsKIAlpZiAoIXJjICYm IGRlbnRyeS0+ZF9pbm9kZSkKIAkJY2xlYXJfbmxpbmsoZGVudHJ5LT5kX2lub2RlKTsKQEAgLTU5 NCw3ICs1OTIsNyBAQCBlY3J5cHRmc19ta25vZChzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRl bnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUsIGRldl90IGRldgogCiAJbG93ZXJfZGVudHJ5ID0g ZWNyeXB0ZnNfZGVudHJ5X3RvX2xvd2VyKGRlbnRyeSk7CiAJbG93ZXJfZGlyX2RlbnRyeSA9IGxv Y2tfcGFyZW50KGxvd2VyX2RlbnRyeSk7Ci0JcmMgPSB2ZnNfbWtub2QobG93ZXJfZGlyX2RlbnRy eS0+ZF9pbm9kZSwgbG93ZXJfZGVudHJ5LCBtb2RlLCBkZXYpOworCXJjID0gdmZzX21rbm9kKGxv d2VyX2Rpcl9kZW50cnksIGxvd2VyX2RlbnRyeSwgbW9kZSwgZGV2KTsKIAlpZiAocmMgfHwgIWxv d2VyX2RlbnRyeS0+ZF9pbm9kZSkKIAkJZ290byBvdXQ7CiAJcmMgPSBlY3J5cHRmc19pbnRlcnBv c2UobG93ZXJfZGVudHJ5LCBkZW50cnksIGRpci0+aV9zYik7CkBAIC02MzksOCArNjM3LDggQEAg ZWNyeXB0ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAqb2xkX2Rpciwgc3RydWN0IGRlbnRyeSAqb2xk X2RlbnRyeSwKIAkJcmMgPSAtRU5PVEVNUFRZOwogCQlnb3RvIG91dF9sb2NrOwogCX0KLQlyYyA9 IHZmc19yZW5hbWUobG93ZXJfb2xkX2Rpcl9kZW50cnktPmRfaW5vZGUsIGxvd2VyX29sZF9kZW50 cnksCi0JCQlsb3dlcl9uZXdfZGlyX2RlbnRyeS0+ZF9pbm9kZSwgbG93ZXJfbmV3X2RlbnRyeSwK KwlyYyA9IHZmc19yZW5hbWUobG93ZXJfb2xkX2Rpcl9kZW50cnksIGxvd2VyX29sZF9kZW50cnks CisJCQlsb3dlcl9uZXdfZGlyX2RlbnRyeSwgbG93ZXJfbmV3X2RlbnRyeSwKIAkJCU5VTEwpOwog CWlmIChyYykKIAkJZ290byBvdXRfbG9jazsKQEAgLTg4NCw5ICs4ODIsOSBAQCBpbnQgZWNyeXB0 ZnNfdHJ1bmNhdGUoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBsb2ZmX3QgbmV3X2xlbmd0aCkKIH0K IAogc3RhdGljIGludAotZWNyeXB0ZnNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBp bnQgbWFzaykKK2VjcnlwdGZzX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1 Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKIHsKLQlyZXR1cm4gaW5vZGVfcGVybWlzc2lvbihl Y3J5cHRmc19pbm9kZV90b19sb3dlcihpbm9kZSksIG1hc2spOworCXJldHVybiBpbm9kZV9wZXJt aXNzaW9uKGVjcnlwdGZzX2RlbnRyeV90b19sb3dlcihkZW50cnkpLCBlY3J5cHRmc19pbm9kZV90 b19sb3dlcihpbm9kZSksIG1hc2spOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2ZzL2V4ZWMuYyBi L2ZzL2V4ZWMuYwppbmRleCBlMTUyOWI0Yzc5YjEuLjNkODY5NjhjNWZmYiAxMDA2NDQKLS0tIGEv ZnMvZXhlYy5jCisrKyBiL2ZzL2V4ZWMuYwpAQCAtMTEwMCw3ICsxMTAwLDcgQEAgRVhQT1JUX1NZ TUJPTChmbHVzaF9vbGRfZXhlYyk7CiAKIHZvaWQgd291bGRfZHVtcChzdHJ1Y3QgbGludXhfYmlu cHJtICpicHJtLCBzdHJ1Y3QgZmlsZSAqZmlsZSkKIHsKLQlpZiAoaW5vZGVfcGVybWlzc2lvbihm aWxlX2lub2RlKGZpbGUpLCBNQVlfUkVBRCkgPCAwKQorCWlmIChpbm9kZV9wZXJtaXNzaW9uKGZp bGUtPmZfcGF0aC5kZW50cnksIGZpbGVfaW5vZGUoZmlsZSksIE1BWV9SRUFEKSA8IDApCiAJCWJw cm0tPmludGVycF9mbGFncyB8PSBCSU5QUk1fRkxBR1NfRU5GT1JDRV9OT05EVU1QOwogfQogRVhQ T1JUX1NZTUJPTCh3b3VsZF9kdW1wKTsKZGlmZiAtLWdpdCBhL2ZzL2Z1c2UvZGlyLmMgYi9mcy9m dXNlL2Rpci5jCmluZGV4IDFkMTI5MmM1ODFjMy4uZGJiN2FlMDBlNjZiIDEwMDY0NAotLS0gYS9m cy9mdXNlL2Rpci5jCisrKyBiL2ZzL2Z1c2UvZGlyLmMKQEAgLTEwOTUsNyArMTA5NSw3IEBAIHN0 YXRpYyBpbnQgZnVzZV9wZXJtX2dldGF0dHIoc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2sp CiAgKiBhY2Nlc3MgcmVxdWVzdCBpcyBzZW50LiAgRXhlY3V0ZSBwZXJtaXNzaW9uIGlzIHN0aWxs IGNoZWNrZWQKICAqIGxvY2FsbHkgYmFzZWQgb24gZmlsZSBtb2RlLgogICovCi1zdGF0aWMgaW50 IGZ1c2VfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKK3N0YXRpYyBp bnQgZnVzZV9wZXJtaXNzaW9uKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICpp bm9kZSwgaW50IG1hc2spCiB7CiAJc3RydWN0IGZ1c2VfY29ubiAqZmMgPSBnZXRfZnVzZV9jb25u KGlub2RlKTsKIAlib29sIHJlZnJlc2hlZCA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvZnMvZ2ZzMi9p bm9kZS5jIGIvZnMvZ2ZzMi9pbm9kZS5jCmluZGV4IDVjNTI0MTgwYzk4ZS4uNzlkMTYyMDI5Y2Fl IDEwMDY0NAotLS0gYS9mcy9nZnMyL2lub2RlLmMKKysrIGIvZnMvZ2ZzMi9pbm9kZS5jCkBAIC0x ODkwLDggKzE4OTAsMTMgQEAgb3V0OgogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBpbnQgZ2Zz Ml92ZnNfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGludCBtYXNrKQoreworCXJldHVybiBnZnMyX3Blcm1pc3Npb24oaW5vZGUsIG1hc2spOwor fQorCiBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBnZnMyX2ZpbGVfaW9wcyA9IHsKLQku cGVybWlzc2lvbiA9IGdmczJfcGVybWlzc2lvbiwKKwkucGVybWlzc2lvbiA9IGdmczJfdmZzX3Bl cm1pc3Npb24sCiAJLnNldGF0dHIgPSBnZnMyX3NldGF0dHIsCiAJLmdldGF0dHIgPSBnZnMyX2dl dGF0dHIsCiAJLnNldHhhdHRyID0gZ2ZzMl9zZXR4YXR0ciwKQEAgLTE5MTMsNyArMTkxOCw3IEBA IGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIGdmczJfZGlyX2lvcHMgPSB7CiAJLnJtZGly ID0gZ2ZzMl91bmxpbmssCiAJLm1rbm9kID0gZ2ZzMl9ta25vZCwKIAkucmVuYW1lID0gZ2ZzMl9y ZW5hbWUsCi0JLnBlcm1pc3Npb24gPSBnZnMyX3Blcm1pc3Npb24sCisJLnBlcm1pc3Npb24gPSBn ZnMyX3Zmc19wZXJtaXNzaW9uLAogCS5zZXRhdHRyID0gZ2ZzMl9zZXRhdHRyLAogCS5nZXRhdHRy ID0gZ2ZzMl9nZXRhdHRyLAogCS5zZXR4YXR0ciA9IGdmczJfc2V0eGF0dHIsCkBAIC0xOTMwLDcg KzE5MzUsNyBAQCBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBnZnMyX3N5bWxpbmtfaW9w cyA9IHsKIAkucmVhZGxpbmsgPSBnZW5lcmljX3JlYWRsaW5rLAogCS5mb2xsb3dfbGluayA9IGdm czJfZm9sbG93X2xpbmssCiAJLnB1dF9saW5rID0ga2ZyZWVfcHV0X2xpbmssCi0JLnBlcm1pc3Np b24gPSBnZnMyX3Blcm1pc3Npb24sCisJLnBlcm1pc3Npb24gPSBnZnMyX3Zmc19wZXJtaXNzaW9u LAogCS5zZXRhdHRyID0gZ2ZzMl9zZXRhdHRyLAogCS5nZXRhdHRyID0gZ2ZzMl9nZXRhdHRyLAog CS5zZXR4YXR0ciA9IGdmczJfc2V0eGF0dHIsCmRpZmYgLS1naXQgYS9mcy9ob3N0ZnMvaG9zdGZz X2tlcm4uYyBiL2ZzL2hvc3Rmcy9ob3N0ZnNfa2Vybi5jCmluZGV4IGZlNjQ5ZDMyNWIxZi4uZWYx NTczMTg5ZmQ3IDEwMDY0NAotLS0gYS9mcy9ob3N0ZnMvaG9zdGZzX2tlcm4uYworKysgYi9mcy9o b3N0ZnMvaG9zdGZzX2tlcm4uYwpAQCAtNzU5LDcgKzc1OSw3IEBAIHN0YXRpYyBpbnQgaG9zdGZz X3JlbmFtZShzdHJ1Y3QgaW5vZGUgKmZyb21faW5vLCBzdHJ1Y3QgZGVudHJ5ICpmcm9tLAogCXJl dHVybiBlcnI7CiB9CiAKLXN0YXRpYyBpbnQgaG9zdGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2Rl ICppbm8sIGludCBkZXNpcmVkKQorc3RhdGljIGludCBob3N0ZnNfcGVybWlzc2lvbihzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vLCBpbnQgZGVzaXJlZCkKIHsKIAljaGFy ICpuYW1lOwogCWludCByID0gMCwgdyA9IDAsIHggPSAwLCBlcnI7CmRpZmYgLS1naXQgYS9mcy9p bnRlcm5hbC5oIGIvZnMvaW50ZXJuYWwuaAppbmRleCA0NjU3NDI0MDc0NjYuLjUyMTA4YzhmMzkx OSAxMDA2NDQKLS0tIGEvZnMvaW50ZXJuYWwuaAorKysgYi9mcy9pbnRlcm5hbC5oCkBAIC00Miw3 ICs0Miw2IEBAIGV4dGVybiB2b2lkIF9faW5pdCBjaHJkZXZfaW5pdCh2b2lkKTsKIC8qCiAgKiBu YW1laS5jCiAgKi8KLWV4dGVybiBpbnQgX19pbm9kZV9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAq LCBpbnQpOwogZXh0ZXJuIGludCB1c2VyX3BhdGhfbW91bnRwb2ludF9hdChpbnQsIGNvbnN0IGNo YXIgX191c2VyICosIHVuc2lnbmVkIGludCwgc3RydWN0IHBhdGggKik7CiBleHRlcm4gaW50IHZm c19wYXRoX2xvb2t1cChzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCB2ZnNtb3VudCAqLAogCQkJICAg Y29uc3QgY2hhciAqLCB1bnNpZ25lZCBpbnQsIHN0cnVjdCBwYXRoICopOwpkaWZmIC0tZ2l0IGEv ZnMva2VybmZzL2lub2RlLmMgYi9mcy9rZXJuZnMvaW5vZGUuYwppbmRleCBlNTUxMjZmODViZDIu LjlmMDg0ZmMxNmZjZiAxMDA2NDQKLS0tIGEvZnMva2VybmZzL2lub2RlLmMKKysrIGIvZnMva2Vy bmZzL2lub2RlLmMKQEAgLTM2MCw3ICszNjAsNyBAQCB2b2lkIGtlcm5mc19ldmljdF9pbm9kZShz dHJ1Y3QgaW5vZGUgKmlub2RlKQogCWtlcm5mc19wdXQoa24pOwogfQogCi1pbnQga2VybmZzX2lv cF9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQoraW50IGtlcm5mc19p b3BfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUs IGludCBtYXNrKQogewogCXN0cnVjdCBrZXJuZnNfbm9kZSAqa247CiAKZGlmZiAtLWdpdCBhL2Zz L2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaCBiL2ZzL2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaApp bmRleCBlYjUzNmI3NjM3NGEuLmY0MWJhMTI5NzhhOSAxMDA2NDQKLS0tIGEvZnMva2VybmZzL2tl cm5mcy1pbnRlcm5hbC5oCisrKyBiL2ZzL2tlcm5mcy9rZXJuZnMtaW50ZXJuYWwuaApAQCAtNzgs NyArNzgsNyBAQCBleHRlcm4gc3RydWN0IGttZW1fY2FjaGUgKmtlcm5mc19ub2RlX2NhY2hlOwog ICovCiBzdHJ1Y3QgaW5vZGUgKmtlcm5mc19nZXRfaW5vZGUoc3RydWN0IHN1cGVyX2Jsb2NrICpz Yiwgc3RydWN0IGtlcm5mc19ub2RlICprbik7CiB2b2lkIGtlcm5mc19ldmljdF9pbm9kZShzdHJ1 Y3QgaW5vZGUgKmlub2RlKTsKLWludCBrZXJuZnNfaW9wX3Blcm1pc3Npb24oc3RydWN0IGlub2Rl ICppbm9kZSwgaW50IG1hc2spOworaW50IGtlcm5mc19pb3BfcGVybWlzc2lvbihzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKTsKIGludCBrZXJuZnNf aW9wX3NldGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaWF0dHIgKmlhdHRyKTsK IGludCBrZXJuZnNfaW9wX2dldGF0dHIoc3RydWN0IHZmc21vdW50ICptbnQsIHN0cnVjdCBkZW50 cnkgKmRlbnRyeSwKIAkJICAgICAgIHN0cnVjdCBrc3RhdCAqc3RhdCk7CmRpZmYgLS1naXQgYS9m cy9uYW1laS5jIGIvZnMvbmFtZWkuYwppbmRleCBkNTgwZGYyZTY4MDQuLmE4ODViOTMyMjYzNyAx MDA2NDQKLS0tIGEvZnMvbmFtZWkuYworKysgYi9mcy9uYW1laS5jCkBAIC0zMzUsMTEgKzMzNSwx MSBAQCBpbnQgZ2VuZXJpY19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNr KQogICogZmxhZyBpbiBpbm9kZS0+aV9vcGZsYWdzLCB0aGF0IHNheXMgInRoaXMgaGFzIG5vdCBz cGVjaWFsCiAgKiBwZXJtaXNzaW9uIGZ1bmN0aW9uLCB1c2UgdGhlIGZhc3QgY2FzZSIuCiAgKi8K LXN0YXRpYyBpbmxpbmUgaW50IGRvX2lub2RlX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9k ZSwgaW50IG1hc2spCitzdGF0aWMgaW5saW5lIGludCBkb19pbm9kZV9wZXJtaXNzaW9uKHN0cnVj dCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCiB7CiAJaWYg KHVubGlrZWx5KCEoaW5vZGUtPmlfb3BmbGFncyAmIElPUF9GQVNUUEVSTSkpKSB7CiAJCWlmIChs aWtlbHkoaW5vZGUtPmlfb3AtPnBlcm1pc3Npb24pKQotCQkJcmV0dXJuIGlub2RlLT5pX29wLT5w ZXJtaXNzaW9uKGlub2RlLCBtYXNrKTsKKwkJCXJldHVybiBpbm9kZS0+aV9vcC0+cGVybWlzc2lv bihkZW50cnksIGlub2RlLCBtYXNrKTsKIAogCQkvKiBUaGlzIGdldHMgc2V0IG9uY2UgZm9yIHRo ZSBpbm9kZSBsaWZldGltZSAqLwogCQlzcGluX2xvY2soJmlub2RlLT5pX2xvY2spOwpAQCAtMzYx LDcgKzM2MSw3IEBAIHN0YXRpYyBpbmxpbmUgaW50IGRvX2lub2RlX3Blcm1pc3Npb24oc3RydWN0 IGlub2RlICppbm9kZSwgaW50IG1hc2spCiAgKiBUaGlzIGRvZXMgbm90IGNoZWNrIGZvciBhIHJl YWQtb25seSBmaWxlIHN5c3RlbS4gIFlvdSBwcm9iYWJseSB3YW50CiAgKiBpbm9kZV9wZXJtaXNz aW9uKCkuCiAgKi8KLWludCBfX2lub2RlX3Blcm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwg aW50IG1hc2spCitzdGF0aWMgaW50IF9faW5vZGVfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpk ZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQogewogCWludCByZXR2YWw7CiAK QEAgLTM3Myw3ICszNzMsNyBAQCBpbnQgX19pbm9kZV9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAq aW5vZGUsIGludCBtYXNrKQogCQkJcmV0dXJuIC1FQUNDRVM7CiAJfQogCi0JcmV0dmFsID0gZG9f aW5vZGVfcGVybWlzc2lvbihpbm9kZSwgbWFzayk7CisJcmV0dmFsID0gZG9faW5vZGVfcGVybWlz c2lvbihkZW50cnksIGlub2RlLCBtYXNrKTsKIAlpZiAocmV0dmFsKQogCQlyZXR1cm4gcmV0dmFs OwogCkBAIC00MTYsMTQgKzQxNiwxNCBAQCBzdGF0aWMgaW50IHNiX3Blcm1pc3Npb24oc3RydWN0 IHN1cGVyX2Jsb2NrICpzYiwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCiAgKgogICog V2hlbiBjaGVja2luZyBmb3IgTUFZX0FQUEVORCwgTUFZX1dSSVRFIG11c3QgYWxzbyBiZSBzZXQg aW4gQG1hc2suCiAgKi8KLWludCBpbm9kZV9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGludCBtYXNrKQoraW50IGlub2RlX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBz dHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKIHsKIAlpbnQgcmV0dmFsOwogCiAJcmV0dmFs ID0gc2JfcGVybWlzc2lvbihpbm9kZS0+aV9zYiwgaW5vZGUsIG1hc2spOwogCWlmIChyZXR2YWwp CiAJCXJldHVybiByZXR2YWw7Ci0JcmV0dXJuIF9faW5vZGVfcGVybWlzc2lvbihpbm9kZSwgbWFz ayk7CisJcmV0dXJuIF9faW5vZGVfcGVybWlzc2lvbihkZW50cnksIGlub2RlLCBtYXNrKTsKIH0K IAogLyoqCkBAIC03MjksNyArNzI5LDcgQEAgc3RhdGljIGlubGluZSBpbnQgbWF5X2ZvbGxvd19s aW5rKHN0cnVjdCBwYXRoICpsaW5rLCBzdHJ1Y3QgbmFtZWlkYXRhICpuZCkKICAqCiAgKiBPdGhl cndpc2UgcmV0dXJucyB0cnVlLgogICovCi1zdGF0aWMgYm9vbCBzYWZlX2hhcmRsaW5rX3NvdXJj ZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQorc3RhdGljIGJvb2wgc2FmZV9oYXJkbGlua19zb3VyY2Uo c3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQogewogCXVtb2RlX3Qg bW9kZSA9IGlub2RlLT5pX21vZGU7CiAKQEAgLTc0Niw3ICs3NDYsNyBAQCBzdGF0aWMgYm9vbCBz YWZlX2hhcmRsaW5rX3NvdXJjZShzdHJ1Y3QgaW5vZGUgKmlub2RlKQogCQlyZXR1cm4gZmFsc2U7 CiAKIAkvKiBIYXJkbGlua2luZyB0byB1bnJlYWRhYmxlIG9yIHVud3JpdGFibGUgc291cmNlcyBp cyBkYW5nZXJvdXMuICovCi0JaWYgKGlub2RlX3Blcm1pc3Npb24oaW5vZGUsIE1BWV9SRUFEIHwg TUFZX1dSSVRFKSkKKwlpZiAoaW5vZGVfcGVybWlzc2lvbihkZW50cnksIGlub2RlLCBNQVlfUkVB RCB8IE1BWV9XUklURSkpCiAJCXJldHVybiBmYWxzZTsKIAogCXJldHVybiB0cnVlOwpAQCAtNzc4 LDcgKzc3OCw3IEBAIHN0YXRpYyBpbnQgbWF5X2xpbmthdChzdHJ1Y3QgcGF0aCAqbGluaykKIAkv KiBTb3VyY2UgaW5vZGUgb3duZXIgKG9yIENBUF9GT1dORVIpIGNhbiBoYXJkbGluayBhbGwgdGhl eSBsaWtlLAogCSAqIG90aGVyd2lzZSwgaXQgbXVzdCBiZSBhIHNhZmUgc291cmNlLgogCSAqLwot CWlmICh1aWRfZXEoY3JlZC0+ZnN1aWQsIGlub2RlLT5pX3VpZCkgfHwgc2FmZV9oYXJkbGlua19z b3VyY2UoaW5vZGUpIHx8CisJaWYgKHVpZF9lcShjcmVkLT5mc3VpZCwgaW5vZGUtPmlfdWlkKSB8 fCBzYWZlX2hhcmRsaW5rX3NvdXJjZShsaW5rLT5kZW50cnksIGlub2RlKSB8fAogCSAgICBjYXBh YmxlKENBUF9GT1dORVIpKQogCQlyZXR1cm4gMDsKIApAQCAtMTQ0MiwxMyArMTQ0MiwxMyBAQCBz dGF0aWMgaW50IGxvb2t1cF9zbG93KHN0cnVjdCBuYW1laWRhdGEgKm5kLCBzdHJ1Y3QgcGF0aCAq cGF0aCkKIHN0YXRpYyBpbmxpbmUgaW50IG1heV9sb29rdXAoc3RydWN0IG5hbWVpZGF0YSAqbmQp CiB7CiAJaWYgKG5kLT5mbGFncyAmIExPT0tVUF9SQ1UpIHsKLQkJaW50IGVyciA9IGlub2RlX3Bl cm1pc3Npb24obmQtPmlub2RlLCBNQVlfRVhFQ3xNQVlfTk9UX0JMT0NLKTsKKwkJaW50IGVyciA9 IGlub2RlX3Blcm1pc3Npb24obmQtPnBhdGguZGVudHJ5LCBuZC0+aW5vZGUsIE1BWV9FWEVDfE1B WV9OT1RfQkxPQ0spOwogCQlpZiAoZXJyICE9IC1FQ0hJTEQpCiAJCQlyZXR1cm4gZXJyOwogCQlp ZiAodW5sYXp5X3dhbGsobmQsIE5VTEwpKQogCQkJcmV0dXJuIC1FQ0hJTEQ7CiAJfQotCXJldHVy biBpbm9kZV9wZXJtaXNzaW9uKG5kLT5pbm9kZSwgTUFZX0VYRUMpOworCXJldHVybiBpbm9kZV9w ZXJtaXNzaW9uKG5kLT5wYXRoLmRlbnRyeSwgbmQtPmlub2RlLCBNQVlfRVhFQyk7CiB9CiAKIHN0 YXRpYyBpbmxpbmUgaW50IGhhbmRsZV9kb3RzKHN0cnVjdCBuYW1laWRhdGEgKm5kLCBpbnQgdHlw ZSkKQEAgLTE3OTIsNyArMTc5Miw3IEBAIHN0YXRpYyBpbnQgcGF0aF9pbml0KGludCBkZmQsIGNv bnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBmbGFncywKIAkJaWYgKCpuYW1lKSB7CiAJCQlp ZiAoIWRfaXNfZGlyZWN0b3J5KHJvb3QpKQogCQkJCXJldHVybiAtRU5PVERJUjsKLQkJCXJldHZh bCA9IGlub2RlX3Blcm1pc3Npb24oaW5vZGUsIE1BWV9FWEVDKTsKKwkJCXJldHZhbCA9IGlub2Rl X3Blcm1pc3Npb24ocm9vdCwgaW5vZGUsIE1BWV9FWEVDKTsKIAkJCWlmIChyZXR2YWwpCiAJCQkJ cmV0dXJuIHJldHZhbDsKIAkJfQpAQCAtMjA3OCw3ICsyMDc4LDcgQEAgc3RydWN0IGRlbnRyeSAq bG9va3VwX29uZV9sZW4oY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRlbnRyeSAqYmFzZSwgaW50 IGxlbikKIAkJCXJldHVybiBFUlJfUFRSKGVycik7CiAJfQogCi0JZXJyID0gaW5vZGVfcGVybWlz c2lvbihiYXNlLT5kX2lub2RlLCBNQVlfRVhFQyk7CisJZXJyID0gaW5vZGVfcGVybWlzc2lvbihi YXNlLCBiYXNlLT5kX2lub2RlLCBNQVlfRVhFQyk7CiAJaWYgKGVycikKIAkJcmV0dXJuIEVSUl9Q VFIoZXJyKTsKIApAQCAtMjM2NSw4ICsyMzY1LDkgQEAgc3RhdGljIGlubGluZSBpbnQgY2hlY2tf c3RpY2t5KHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgaW5vZGUgKmlub2RlKQogICogMTAuIFdl IGRvbid0IGFsbG93IHJlbW92YWwgb2YgTkZTIHNpbGx5cmVuYW1lZCBmaWxlczsgaXQncyBoYW5k bGVkIGJ5CiAgKiAgICAgbmZzX2FzeW5jX3VubGluaygpLgogICovCi1zdGF0aWMgaW50IG1heV9k ZWxldGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKnZpY3RpbSwgYm9vbCBpc2Rp cikKK3N0YXRpYyBpbnQgbWF5X2RlbGV0ZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBk ZW50cnkgKnZpY3RpbSwgYm9vbCBpc2RpcikKIHsKKwlzdHJ1Y3QgaW5vZGUgKmRpciA9IHBhcmVu dC0+ZF9pbm9kZTsKIAlzdHJ1Y3QgaW5vZGUgKmlub2RlID0gdmljdGltLT5kX2lub2RlOwogCWlu dCBlcnJvcjsKIApAQCAtMjM3Nyw3ICsyMzc4LDcgQEAgc3RhdGljIGludCBtYXlfZGVsZXRlKHN0 cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICp2aWN0aW0sIGJvb2wgaXNkaXIpCiAJQlVH X09OKHZpY3RpbS0+ZF9wYXJlbnQtPmRfaW5vZGUgIT0gZGlyKTsKIAlhdWRpdF9pbm9kZV9jaGls ZChkaXIsIHZpY3RpbSwgQVVESVRfVFlQRV9DSElMRF9ERUxFVEUpOwogCi0JZXJyb3IgPSBpbm9k ZV9wZXJtaXNzaW9uKGRpciwgTUFZX1dSSVRFIHwgTUFZX0VYRUMpOworCWVycm9yID0gaW5vZGVf cGVybWlzc2lvbihwYXJlbnQsIGRpciwgTUFZX1dSSVRFIHwgTUFZX0VYRUMpOwogCWlmIChlcnJv cikKIAkJcmV0dXJuIGVycm9yOwogCWlmIChJU19BUFBFTkQoZGlyKSkKQEAgLTI0MDgsMTQgKzI0 MDksMTUgQEAgc3RhdGljIGludCBtYXlfZGVsZXRlKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3Qg ZGVudHJ5ICp2aWN0aW0sIGJvb2wgaXNkaXIpCiAgKiAgMy4gV2Ugc2hvdWxkIGhhdmUgd3JpdGUg YW5kIGV4ZWMgcGVybWlzc2lvbnMgb24gZGlyCiAgKiAgNC4gV2UgY2FuJ3QgZG8gaXQgaWYgZGly IGlzIGltbXV0YWJsZSAoZG9uZSBpbiBwZXJtaXNzaW9uKCkpCiAgKi8KLXN0YXRpYyBpbmxpbmUg aW50IG1heV9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmNoaWxkKQor c3RhdGljIGlubGluZSBpbnQgbWF5X2NyZWF0ZShzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVj dCBkZW50cnkgKmNoaWxkKQogeworCXN0cnVjdCBpbm9kZSAqZGlyID0gcGFyZW50LT5kX2lub2Rl OwogCWF1ZGl0X2lub2RlX2NoaWxkKGRpciwgY2hpbGQsIEFVRElUX1RZUEVfQ0hJTERfQ1JFQVRF KTsKIAlpZiAoY2hpbGQtPmRfaW5vZGUpCiAJCXJldHVybiAtRUVYSVNUOwogCWlmIChJU19ERUFE RElSKGRpcikpCiAJCXJldHVybiAtRU5PRU5UOwotCXJldHVybiBpbm9kZV9wZXJtaXNzaW9uKGRp ciwgTUFZX1dSSVRFIHwgTUFZX0VYRUMpOworCXJldHVybiBpbm9kZV9wZXJtaXNzaW9uKHBhcmVu dCwgZGlyLCBNQVlfV1JJVEUgfCBNQVlfRVhFQyk7CiB9CiAKIC8qCkBAIC0yNDYwLDEwICsyNDYy LDExIEBAIHZvaWQgdW5sb2NrX3JlbmFtZShzdHJ1Y3QgZGVudHJ5ICpwMSwgc3RydWN0IGRlbnRy eSAqcDIpCiAJfQogfQogCi1pbnQgdmZzX2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0 IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUsCitpbnQgdmZzX2NyZWF0ZShzdHJ1Y3QgZGVu dHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2RlLAogCQlib29s IHdhbnRfZXhjbCkKIHsKLQlpbnQgZXJyb3IgPSBtYXlfY3JlYXRlKGRpciwgZGVudHJ5KTsKKwlz dHJ1Y3QgaW5vZGUgKmRpciA9IHBhcmVudC0+ZF9pbm9kZTsKKwlpbnQgZXJyb3IgPSBtYXlfY3Jl YXRlKHBhcmVudCwgZGVudHJ5KTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApAQCAt MjUxMSw3ICsyNTE0LDcgQEAgc3RhdGljIGludCBtYXlfb3BlbihzdHJ1Y3QgcGF0aCAqcGF0aCwg aW50IGFjY19tb2RlLCBpbnQgZmxhZykKIAkJYnJlYWs7CiAJfQogCi0JZXJyb3IgPSBpbm9kZV9w ZXJtaXNzaW9uKGlub2RlLCBhY2NfbW9kZSk7CisJZXJyb3IgPSBpbm9kZV9wZXJtaXNzaW9uKGRl bnRyeSwgaW5vZGUsIGFjY19tb2RlKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIApA QCAtMjU2Nyw3ICsyNTcwLDcgQEAgc3RhdGljIGludCBtYXlfb19jcmVhdGUoc3RydWN0IHBhdGgg KmRpciwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCB1bW9kZV90IG1vZGUpCiAJaWYgKGVycm9yKQog CQlyZXR1cm4gZXJyb3I7CiAKLQllcnJvciA9IGlub2RlX3Blcm1pc3Npb24oZGlyLT5kZW50cnkt PmRfaW5vZGUsIE1BWV9XUklURSB8IE1BWV9FWEVDKTsKKwllcnJvciA9IGlub2RlX3Blcm1pc3Np b24oZGlyLT5kZW50cnksIGRpci0+ZGVudHJ5LT5kX2lub2RlLCBNQVlfV1JJVEUgfCBNQVlfRVhF Qyk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKQEAgLTI4MTIsOCArMjgxNSw3IEBA IHN0YXRpYyBpbnQgbG9va3VwX29wZW4oc3RydWN0IG5hbWVpZGF0YSAqbmQsIHN0cnVjdCBwYXRo ICpwYXRoLAogCQllcnJvciA9IHNlY3VyaXR5X3BhdGhfbWtub2QoJm5kLT5wYXRoLCBkZW50cnks IG1vZGUsIDApOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIG91dF9kcHV0OwotCQllcnJvciA9IHZm c19jcmVhdGUoZGlyLT5kX2lub2RlLCBkZW50cnksIG1vZGUsCi0JCQkJICAgbmQtPmZsYWdzICYg TE9PS1VQX0VYQ0wpOworCQllcnJvciA9IHZmc19jcmVhdGUoZGlyLCBkZW50cnksIG1vZGUsIG5k LT5mbGFncyAmIExPT0tVUF9FWENMKTsKIAkJaWYgKGVycm9yKQogCQkJZ290byBvdXRfZHB1dDsK IAl9CkBAIC0zMDc3LDEwICszMDc5LDEwIEBAIHN0YXRpYyBpbnQgZG9fdG1wZmlsZShpbnQgZGZk LCBzdHJ1Y3QgZmlsZW5hbWUgKnBhdGhuYW1lLAogCWlmICh1bmxpa2VseShlcnJvcikpCiAJCWdv dG8gb3V0OwogCS8qIHdlIHdhbnQgZGlyZWN0b3J5IHRvIGJlIHdyaXRhYmxlICovCi0JZXJyb3Ig PSBpbm9kZV9wZXJtaXNzaW9uKG5kLT5pbm9kZSwgTUFZX1dSSVRFIHwgTUFZX0VYRUMpOworCWRl bnRyeSA9IG5kLT5wYXRoLmRlbnRyeTsKKwllcnJvciA9IGlub2RlX3Blcm1pc3Npb24oZGVudHJ5 LCBuZC0+aW5vZGUsIE1BWV9XUklURSB8IE1BWV9FWEVDKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8g b3V0MjsKLQlkZW50cnkgPSBuZC0+cGF0aC5kZW50cnk7CiAJZGlyID0gZGVudHJ5LT5kX2lub2Rl OwogCWlmICghZGlyLT5pX29wLT50bXBmaWxlKSB7CiAJCWVycm9yID0gLUVPUE5PVFNVUFA7CkBA IC0zMzIzLDkgKzMzMjUsMTAgQEAgc3RydWN0IGRlbnRyeSAqdXNlcl9wYXRoX2NyZWF0ZShpbnQg ZGZkLCBjb25zdCBjaGFyIF9fdXNlciAqcGF0aG5hbWUsCiB9CiBFWFBPUlRfU1lNQk9MKHVzZXJf cGF0aF9jcmVhdGUpOwogCi1pbnQgdmZzX21rbm9kKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3Qg ZGVudHJ5ICpkZW50cnksIHVtb2RlX3QgbW9kZSwgZGV2X3QgZGV2KQoraW50IHZmc19ta25vZChz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2Rl LCBkZXZfdCBkZXYpCiB7Ci0JaW50IGVycm9yID0gbWF5X2NyZWF0ZShkaXIsIGRlbnRyeSk7CisJ c3RydWN0IGlub2RlICpkaXI7CisJaW50IGVycm9yID0gbWF5X2NyZWF0ZShwYXJlbnQsIGRlbnRy eSk7CiAKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKQEAgLTMzMzMsNiArMzMzNiw3IEBA IGludCB2ZnNfbWtub2Qoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwg dW1vZGVfdCBtb2RlLCBkZXZfdCBkZXYpCiAJaWYgKChTX0lTQ0hSKG1vZGUpIHx8IFNfSVNCTEso bW9kZSkpICYmICFjYXBhYmxlKENBUF9NS05PRCkpCiAJCXJldHVybiAtRVBFUk07CiAKKwlkaXIg PSBwYXJlbnQtPmRfaW5vZGU7CiAJaWYgKCFkaXItPmlfb3AtPm1rbm9kKQogCQlyZXR1cm4gLUVQ RVJNOwogCkBAIC0zMzkwLDE0ICszMzk0LDE0IEBAIHJldHJ5OgogCQlnb3RvIG91dDsKIAlzd2l0 Y2ggKG1vZGUgJiBTX0lGTVQpIHsKIAkJY2FzZSAwOiBjYXNlIFNfSUZSRUc6Ci0JCQllcnJvciA9 IHZmc19jcmVhdGUocGF0aC5kZW50cnktPmRfaW5vZGUsZGVudHJ5LG1vZGUsdHJ1ZSk7CisJCQll cnJvciA9IHZmc19jcmVhdGUocGF0aC5kZW50cnksZGVudHJ5LG1vZGUsdHJ1ZSk7CiAJCQlicmVh azsKIAkJY2FzZSBTX0lGQ0hSOiBjYXNlIFNfSUZCTEs6Ci0JCQllcnJvciA9IHZmc19ta25vZChw YXRoLmRlbnRyeS0+ZF9pbm9kZSxkZW50cnksbW9kZSwKKwkJCWVycm9yID0gdmZzX21rbm9kKHBh dGguZGVudHJ5LGRlbnRyeSxtb2RlLAogCQkJCQluZXdfZGVjb2RlX2RldihkZXYpKTsKIAkJCWJy ZWFrOwogCQljYXNlIFNfSUZJRk86IGNhc2UgU19JRlNPQ0s6Ci0JCQllcnJvciA9IHZmc19ta25v ZChwYXRoLmRlbnRyeS0+ZF9pbm9kZSxkZW50cnksbW9kZSwwKTsKKwkJCWVycm9yID0gdmZzX21r bm9kKHBhdGguZGVudHJ5LGRlbnRyeSxtb2RlLDApOwogCQkJYnJlYWs7CiAJfQogb3V0OgpAQCAt MzQxNCwxNCArMzQxOCwxNiBAQCBTWVNDQUxMX0RFRklORTMobWtub2QsIGNvbnN0IGNoYXIgX191 c2VyICosIGZpbGVuYW1lLCB1bW9kZV90LCBtb2RlLCB1bnNpZ25lZCwgZAogCXJldHVybiBzeXNf bWtub2RhdChBVF9GRENXRCwgZmlsZW5hbWUsIG1vZGUsIGRldik7CiB9CiAKLWludCB2ZnNfbWtk aXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgdW1vZGVfdCBtb2Rl KQoraW50IHZmc19ta2RpcihzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmRl bnRyeSwgdW1vZGVfdCBtb2RlKQogewotCWludCBlcnJvciA9IG1heV9jcmVhdGUoZGlyLCBkZW50 cnkpOwotCXVuc2lnbmVkIG1heF9saW5rcyA9IGRpci0+aV9zYi0+c19tYXhfbGlua3M7CisJc3Ry dWN0IGlub2RlICpkaXI7CisJdW5zaWduZWQgbWF4X2xpbmtzOworCWludCBlcnJvciA9IG1heV9j cmVhdGUocGFyZW50LCBkZW50cnkpOwogCiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAK KwlkaXIgPSBwYXJlbnQtPmRfaW5vZGU7CiAJaWYgKCFkaXItPmlfb3AtPm1rZGlyKQogCQlyZXR1 cm4gLUVQRVJNOwogCkBAIC0zNDMwLDYgKzM0MzYsNyBAQCBpbnQgdmZzX21rZGlyKHN0cnVjdCBp bm9kZSAqZGlyLCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHVtb2RlX3QgbW9kZSkKIAlpZiAoZXJy b3IpCiAJCXJldHVybiBlcnJvcjsKIAorCW1heF9saW5rcyA9IGRpci0+aV9zYi0+c19tYXhfbGlu a3M7CiAJaWYgKG1heF9saW5rcyAmJiBkaXItPmlfbmxpbmsgPj0gbWF4X2xpbmtzKQogCQlyZXR1 cm4gLUVNTElOSzsKIApAQCAtMzQ1NSw3ICszNDYyLDcgQEAgcmV0cnk6CiAJCW1vZGUgJj0gfmN1 cnJlbnRfdW1hc2soKTsKIAllcnJvciA9IHNlY3VyaXR5X3BhdGhfbWtkaXIoJnBhdGgsIGRlbnRy eSwgbW9kZSk7CiAJaWYgKCFlcnJvcikKLQkJZXJyb3IgPSB2ZnNfbWtkaXIocGF0aC5kZW50cnkt PmRfaW5vZGUsIGRlbnRyeSwgbW9kZSk7CisJCWVycm9yID0gdmZzX21rZGlyKHBhdGguZGVudHJ5 LCBkZW50cnksIG1vZGUpOwogCWRvbmVfcGF0aF9jcmVhdGUoJnBhdGgsIGRlbnRyeSk7CiAJaWYg KHJldHJ5X2VzdGFsZShlcnJvciwgbG9va3VwX2ZsYWdzKSkgewogCQlsb29rdXBfZmxhZ3MgfD0g TE9PS1VQX1JFVkFMOwpAQCAtMzQ5MywxMyArMzUwMCwxNSBAQCB2b2lkIGRlbnRyeV91bmhhc2go c3RydWN0IGRlbnRyeSAqZGVudHJ5KQogCXNwaW5fdW5sb2NrKCZkZW50cnktPmRfbG9jayk7CiB9 CiAKLWludCB2ZnNfcm1kaXIoc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKmRlbnRy eSkKK2ludCB2ZnNfcm1kaXIoc3RydWN0IGRlbnRyeSAqcGFyZW50LCBzdHJ1Y3QgZGVudHJ5ICpk ZW50cnkpCiB7Ci0JaW50IGVycm9yID0gbWF5X2RlbGV0ZShkaXIsIGRlbnRyeSwgMSk7CisJc3Ry dWN0IGlub2RlICpkaXI7CisJaW50IGVycm9yID0gbWF5X2RlbGV0ZShwYXJlbnQsIGRlbnRyeSwg MSk7CiAKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIAorCWRpciA9IHBhcmVudC0+ZF9p bm9kZTsKIAlpZiAoIWRpci0+aV9vcC0+cm1kaXIpCiAJCXJldHVybiAtRVBFUk07CiAKQEAgLTM1 NzEsNyArMzU4MCw3IEBAIHJldHJ5OgogCWVycm9yID0gc2VjdXJpdHlfcGF0aF9ybWRpcigmbmQu cGF0aCwgZGVudHJ5KTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gZXhpdDM7Ci0JZXJyb3IgPSB2ZnNf cm1kaXIobmQucGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSk7CisJZXJyb3IgPSB2ZnNfcm1k aXIobmQucGF0aC5kZW50cnksIGRlbnRyeSk7CiBleGl0MzoKIAlkcHV0KGRlbnRyeSk7CiBleGl0 MjoKQEAgLTM2MTAsMTAgKzM2MTksMTEgQEAgU1lTQ0FMTF9ERUZJTkUxKHJtZGlyLCBjb25zdCBj aGFyIF9fdXNlciAqLCBwYXRobmFtZSkKICAqIGJlIGFwcHJvcHJpYXRlIGZvciBjYWxsZXJzIHRo YXQgZXhwZWN0IHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0gbm90CiAgKiB0byBiZSBORlMgZXhw b3J0ZWQuCiAgKi8KLWludCB2ZnNfdW5saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9pbm9kZSkKK2ludCB2ZnNfdW5s aW5rKHN0cnVjdCBkZW50cnkgKnBhcmVudCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3Qg aW5vZGUgKipkZWxlZ2F0ZWRfaW5vZGUpCiB7CisJc3RydWN0IGlub2RlICpkaXIgPSBwYXJlbnQt PmRfaW5vZGU7CiAJc3RydWN0IGlub2RlICp0YXJnZXQgPSBkZW50cnktPmRfaW5vZGU7Ci0JaW50 IGVycm9yID0gbWF5X2RlbGV0ZShkaXIsIGRlbnRyeSwgMCk7CisJaW50IGVycm9yID0gbWF5X2Rl bGV0ZShwYXJlbnQsIGRlbnRyeSwgMCk7CiAKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsK QEAgLTM2OTAsNyArMzcwMCw3IEBAIHJldHJ5X2RlbGVnOgogCQllcnJvciA9IHNlY3VyaXR5X3Bh dGhfdW5saW5rKCZuZC5wYXRoLCBkZW50cnkpOwogCQlpZiAoZXJyb3IpCiAJCQlnb3RvIGV4aXQy OwotCQllcnJvciA9IHZmc191bmxpbmsobmQucGF0aC5kZW50cnktPmRfaW5vZGUsIGRlbnRyeSwg JmRlbGVnYXRlZF9pbm9kZSk7CisJCWVycm9yID0gdmZzX3VubGluayhuZC5wYXRoLmRlbnRyeSwg ZGVudHJ5LCAmZGVsZWdhdGVkX2lub2RlKTsKIGV4aXQyOgogCQlkcHV0KGRlbnRyeSk7CiAJfQpA QCAtMzc0MCwxMyArMzc1MCwxNSBAQCBTWVNDQUxMX0RFRklORTEodW5saW5rLCBjb25zdCBjaGFy IF9fdXNlciAqLCBwYXRobmFtZSkKIAlyZXR1cm4gZG9fdW5saW5rYXQoQVRfRkRDV0QsIHBhdGhu YW1lKTsKIH0KIAotaW50IHZmc19zeW1saW5rKHN0cnVjdCBpbm9kZSAqZGlyLCBzdHJ1Y3QgZGVu dHJ5ICpkZW50cnksIGNvbnN0IGNoYXIgKm9sZG5hbWUpCitpbnQgdmZzX3N5bWxpbmsoc3RydWN0 IGRlbnRyeSAqcGFyZW50LCBzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IGNoYXIgKm9sZG5h bWUpCiB7Ci0JaW50IGVycm9yID0gbWF5X2NyZWF0ZShkaXIsIGRlbnRyeSk7CisJc3RydWN0IGlu b2RlICpkaXI7CisJaW50IGVycm9yID0gbWF5X2NyZWF0ZShwYXJlbnQsIGRlbnRyeSk7CiAKIAlp ZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIAorCWRpciA9IHBhcmVudC0+ZF9pbm9kZTsKIAlp ZiAoIWRpci0+aV9vcC0+c3ltbGluaykKIAkJcmV0dXJuIC1FUEVSTTsKIApAQCAtMzc4MCw3ICsz NzkyLDcgQEAgcmV0cnk6CiAKIAllcnJvciA9IHNlY3VyaXR5X3BhdGhfc3ltbGluaygmcGF0aCwg ZGVudHJ5LCBmcm9tLT5uYW1lKTsKIAlpZiAoIWVycm9yKQotCQllcnJvciA9IHZmc19zeW1saW5r KHBhdGguZGVudHJ5LT5kX2lub2RlLCBkZW50cnksIGZyb20tPm5hbWUpOworCQllcnJvciA9IHZm c19zeW1saW5rKHBhdGguZGVudHJ5LCBkZW50cnksIGZyb20tPm5hbWUpOwogCWRvbmVfcGF0aF9j cmVhdGUoJnBhdGgsIGRlbnRyeSk7CiAJaWYgKHJldHJ5X2VzdGFsZShlcnJvciwgbG9va3VwX2Zs YWdzKSkgewogCQlsb29rdXBfZmxhZ3MgfD0gTE9PS1VQX1JFVkFMOwpAQCAtMzgxNSw4ICszODI3 LDkgQEAgU1lTQ0FMTF9ERUZJTkUyKHN5bWxpbmssIGNvbnN0IGNoYXIgX191c2VyICosIG9sZG5h bWUsIGNvbnN0IGNoYXIgX191c2VyICosIG5ld24KICAqIGJlIGFwcHJvcHJpYXRlIGZvciBjYWxs ZXJzIHRoYXQgZXhwZWN0IHRoZSB1bmRlcmx5aW5nIGZpbGVzeXN0ZW0gbm90CiAgKiB0byBiZSBO RlMgZXhwb3J0ZWQuCiAgKi8KLWludCB2ZnNfbGluayhzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5 LCBzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSwgc3RydWN0IGlu b2RlICoqZGVsZWdhdGVkX2lub2RlKQoraW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKm9sZF9k ZW50cnksIHN0cnVjdCBkZW50cnkgKm5ld19wYXJlbnQsIHN0cnVjdCBkZW50cnkgKm5ld19kZW50 cnksIHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9pbm9kZSkKIHsKKwlzdHJ1Y3QgaW5vZGUgKmRp ciA9IG5ld19wYXJlbnQtPmRfaW5vZGU7CiAJc3RydWN0IGlub2RlICppbm9kZSA9IG9sZF9kZW50 cnktPmRfaW5vZGU7CiAJdW5zaWduZWQgbWF4X2xpbmtzID0gZGlyLT5pX3NiLT5zX21heF9saW5r czsKIAlpbnQgZXJyb3I7CkBAIC0zODI0LDcgKzM4MzcsNyBAQCBpbnQgdmZzX2xpbmsoc3RydWN0 IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICpkaXIsIHN0cnVjdCBkZW50cnkgKm5l d19kZQogCWlmICghaW5vZGUpCiAJCXJldHVybiAtRU5PRU5UOwogCi0JZXJyb3IgPSBtYXlfY3Jl YXRlKGRpciwgbmV3X2RlbnRyeSk7CisJZXJyb3IgPSBtYXlfY3JlYXRlKG5ld19wYXJlbnQsIG5l d19kZW50cnkpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCkBAIC0zOTIxLDcgKzM5 MzQsNyBAQCByZXRyeToKIAllcnJvciA9IHNlY3VyaXR5X3BhdGhfbGluayhvbGRfcGF0aC5kZW50 cnksICZuZXdfcGF0aCwgbmV3X2RlbnRyeSk7CiAJaWYgKGVycm9yKQogCQlnb3RvIG91dF9kcHV0 OwotCWVycm9yID0gdmZzX2xpbmsob2xkX3BhdGguZGVudHJ5LCBuZXdfcGF0aC5kZW50cnktPmRf aW5vZGUsIG5ld19kZW50cnksICZkZWxlZ2F0ZWRfaW5vZGUpOworCWVycm9yID0gdmZzX2xpbmso b2xkX3BhdGguZGVudHJ5LCBuZXdfcGF0aC5kZW50cnksIG5ld19kZW50cnksICZkZWxlZ2F0ZWRf aW5vZGUpOwogb3V0X2RwdXQ6CiAJZG9uZV9wYXRoX2NyZWF0ZSgmbmV3X3BhdGgsIG5ld19kZW50 cnkpOwogCWlmIChkZWxlZ2F0ZWRfaW5vZGUpIHsKQEAgLTM5ODcsNyArNDAwMCw3IEBAIHN0YXRp YyBpbnQgdmZzX3JlbmFtZV9kaXIoc3RydWN0IGlub2RlICpvbGRfZGlyLCBzdHJ1Y3QgZGVudHJ5 ICpvbGRfZGVudHJ5LAogCSAqIHdlJ2xsIG5lZWQgdG8gZmxpcCAnLi4nLgogCSAqLwogCWlmIChu ZXdfZGlyICE9IG9sZF9kaXIpIHsKLQkJZXJyb3IgPSBpbm9kZV9wZXJtaXNzaW9uKG9sZF9kZW50 cnktPmRfaW5vZGUsIE1BWV9XUklURSk7CisJCWVycm9yID0gaW5vZGVfcGVybWlzc2lvbihvbGRf ZGVudHJ5LCBvbGRfZGVudHJ5LT5kX2lub2RlLCBNQVlfV1JJVEUpOwogCQlpZiAoZXJyb3IpCiAJ CQlyZXR1cm4gZXJyb3I7CiAJfQpAQCAtNDA5MSwyOCArNDEwNCwzMSBAQCBvdXQ6CiAgKiBiZSBh cHByb3ByaWF0ZSBmb3IgY2FsbGVycyB0aGF0IGV4cGVjdCB0aGUgdW5kZXJseWluZyBmaWxlc3lz dGVtIG5vdAogICogdG8gYmUgTkZTIGV4cG9ydGVkLgogICovCi1pbnQgdmZzX3JlbmFtZShzdHJ1 Y3QgaW5vZGUgKm9sZF9kaXIsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50cnksCi0JICAgICAgIHN0 cnVjdCBpbm9kZSAqbmV3X2Rpciwgc3RydWN0IGRlbnRyeSAqbmV3X2RlbnRyeSwKK2ludCB2ZnNf cmVuYW1lKHN0cnVjdCBkZW50cnkgKm9sZF9wYXJlbnQsIHN0cnVjdCBkZW50cnkgKm9sZF9kZW50 cnksCisJICAgICAgIHN0cnVjdCBkZW50cnkgKm5ld19wYXJlbnQsIHN0cnVjdCBkZW50cnkgKm5l d19kZW50cnksCiAJICAgICAgIHN0cnVjdCBpbm9kZSAqKmRlbGVnYXRlZF9pbm9kZSkKIHsKIAlp bnQgZXJyb3I7CisJc3RydWN0IGlub2RlICpvbGRfZGlyLCAqbmV3X2RpcjsKIAlpbnQgaXNfZGly ID0gZF9pc19kaXJlY3Rvcnkob2xkX2RlbnRyeSkgfHwgZF9pc19hdXRvZGlyKG9sZF9kZW50cnkp OwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKm9sZF9uYW1lOwogCiAJaWYgKG9sZF9kZW50cnktPmRf aW5vZGUgPT0gbmV3X2RlbnRyeS0+ZF9pbm9kZSkKICAJCXJldHVybiAwOwogIAotCWVycm9yID0g bWF5X2RlbGV0ZShvbGRfZGlyLCBvbGRfZGVudHJ5LCBpc19kaXIpOworCWVycm9yID0gbWF5X2Rl bGV0ZShvbGRfcGFyZW50LCBvbGRfZGVudHJ5LCBpc19kaXIpOwogCWlmIChlcnJvcikKIAkJcmV0 dXJuIGVycm9yOwogCiAJaWYgKCFuZXdfZGVudHJ5LT5kX2lub2RlKQotCQllcnJvciA9IG1heV9j cmVhdGUobmV3X2RpciwgbmV3X2RlbnRyeSk7CisJCWVycm9yID0gbWF5X2NyZWF0ZShuZXdfcGFy ZW50LCBuZXdfZGVudHJ5KTsKIAllbHNlCi0JCWVycm9yID0gbWF5X2RlbGV0ZShuZXdfZGlyLCBu ZXdfZGVudHJ5LCBpc19kaXIpOworCQllcnJvciA9IG1heV9kZWxldGUobmV3X3BhcmVudCwgbmV3 X2RlbnRyeSwgaXNfZGlyKTsKIAlpZiAoZXJyb3IpCiAJCXJldHVybiBlcnJvcjsKIAorCW9sZF9k aXIgPSBvbGRfcGFyZW50LT5kX2lub2RlOworCW5ld19kaXIgPSBuZXdfcGFyZW50LT5kX2lub2Rl OwogCWlmICghb2xkX2Rpci0+aV9vcC0+cmVuYW1lKQogCQlyZXR1cm4gLUVQRVJNOwogCkBAIC00 MjEzLDkgKzQyMjksOSBAQCByZXRyeV9kZWxlZzoKIAkJCQkgICAgICZuZXduZC5wYXRoLCBuZXdf ZGVudHJ5KTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gZXhpdDU7Ci0JZXJyb3IgPSB2ZnNfcmVuYW1l KG9sZF9kaXItPmRfaW5vZGUsIG9sZF9kZW50cnksCi0JCQkJICAgbmV3X2Rpci0+ZF9pbm9kZSwg bmV3X2RlbnRyeSwKLQkJCQkgICAmZGVsZWdhdGVkX2lub2RlKTsKKwllcnJvciA9IHZmc19yZW5h bWUob2xkX2Rpciwgb2xkX2RlbnRyeSwKKwkJCSAgIG5ld19kaXIsIG5ld19kZW50cnksCisJCQkg ICAmZGVsZWdhdGVkX2lub2RlKTsKIGV4aXQ1OgogCWRwdXQobmV3X2RlbnRyeSk7CiBleGl0NDoK ZGlmZiAtLWdpdCBhL2ZzL25jcGZzL2lvY3RsLmMgYi9mcy9uY3Bmcy9pb2N0bC5jCmluZGV4IDYw NDI2Y2NiM2I2NS4uMTI5NGViYjViNGNlIDEwMDY0NAotLS0gYS9mcy9uY3Bmcy9pb2N0bC5jCisr KyBiL2ZzL25jcGZzL2lvY3RsLmMKQEAgLTg3Miw3ICs4NzIsOCBAQCBsb25nIG5jcF9pb2N0bChz dHJ1Y3QgZmlsZSAqZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJ CQlpZiAocmV0KQogCQkJCWdvdG8gb3V0OwogCQkJbmVlZF9kcm9wX3dyaXRlID0gMTsKLQkJCXJl dCA9IGlub2RlX3Blcm1pc3Npb24oaW5vZGUsIE1BWV9XUklURSk7CisJCQkvLyBXaHkgbm90IGp1 c3QgY2hlY2sgZl9tb2RlICYgRk1PREVfV1JJVEU/CisJCQlyZXQgPSBpbm9kZV9wZXJtaXNzaW9u KGZpbHAtPmZfcGF0aC5kZW50cnksIGlub2RlLCBNQVlfV1JJVEUpOwogCQkJaWYgKHJldCkKIAkJ CQlnb3RvIG91dERyb3BXcml0ZTsKIAkJCWJyZWFrOwpAQCAtODg0LDcgKzg4NSw4IEBAIGxvbmcg bmNwX2lvY3RsKHN0cnVjdCBmaWxlICpmaWxwLCB1bnNpZ25lZCBpbnQgY21kLCB1bnNpZ25lZCBs b25nIGFyZykKIAkJY2FzZSBOQ1BfSU9DX0dFVE1PVU5UVUlENjQ6CiAJCWNhc2UgTkNQX0lPQ19H RVRST09UOgogCQljYXNlIE5DUF9JT0NfU0lHTl9XQU5URUQ6Ci0JCQlyZXQgPSBpbm9kZV9wZXJt aXNzaW9uKGlub2RlLCBNQVlfUkVBRCk7CisJCQkvLyBXaHkgbm90IGp1c3QgY2hlY2sgZl9tb2Rl ICYgRk1PREVfUkVBRD8KKwkJCXJldCA9IGlub2RlX3Blcm1pc3Npb24oZmlscC0+Zl9wYXRoLmRl bnRyeSwgaW5vZGUsIE1BWV9SRUFEKTsKIAkJCWlmIChyZXQpCiAJCQkJZ290byBvdXQ7CiAJCQli cmVhazsKZGlmZiAtLWdpdCBhL2ZzL25mcy9kaXIuYyBiL2ZzL25mcy9kaXIuYwppbmRleCBiZTM4 YjU3MzQ5NWEuLmQxMzIxNjY5M2QxYSAxMDA2NDQKLS0tIGEvZnMvbmZzL2Rpci5jCisrKyBiL2Zz L25mcy9kaXIuYwpAQCAtMjI2OSw3ICsyMjY5LDcgQEAgaW50IG5mc19tYXlfb3BlbihzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgcnBjX2NyZWQgKmNyZWQsIGludCBvcGVuZmxhZ3MpCiB9CiBF WFBPUlRfU1lNQk9MX0dQTChuZnNfbWF5X29wZW4pOwogCi1pbnQgbmZzX3Blcm1pc3Npb24oc3Ry dWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCitpbnQgbmZzX3Blcm1pc3Npb24oc3RydWN0IGRl bnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKIHsKIAlzdHJ1Y3Qg cnBjX2NyZWQgKmNyZWQ7CiAJaW50IHJlcyA9IDA7CmRpZmYgLS1naXQgYS9mcy9uZnNkL25mczRy ZWNvdmVyLmMgYi9mcy9uZnNkL25mczRyZWNvdmVyLmMKaW5kZXggOWMyNzFmNDI2MDRhLi42NjYy MjNiMGQwMGEgMTAwNjQ0Ci0tLSBhL2ZzL25mc2QvbmZzNHJlY292ZXIuYworKysgYi9mcy9uZnNk L25mczRyZWNvdmVyLmMKQEAgLTIwOSw3ICsyMDksNyBAQCBuZnNkNF9jcmVhdGVfY2xpZF9kaXIo c3RydWN0IG5mczRfY2xpZW50ICpjbHApCiAJCSAqIGFzIHdlbGwgYmUgZm9yZ2l2aW5nIGFuZCBq dXN0IHN1Y2NlZWQgc2lsZW50bHkuCiAJCSAqLwogCQlnb3RvIG91dF9wdXQ7Ci0Jc3RhdHVzID0g dmZzX21rZGlyKGRpci0+ZF9pbm9kZSwgZGVudHJ5LCBTX0lSV1hVKTsKKwlzdGF0dXMgPSB2ZnNf bWtkaXIoZGlyLCBkZW50cnksIFNfSVJXWFUpOwogb3V0X3B1dDoKIAlkcHV0KGRlbnRyeSk7CiBv dXRfdW5sb2NrOgpAQCAtMzIzLDcgKzMyMyw3IEBAIG5mc2Q0X3VubGlua19jbGlkX2RpcihjaGFy ICpuYW1lLCBpbnQgbmFtbGVuLCBzdHJ1Y3QgbmZzZF9uZXQgKm5uKQogCXN0YXR1cyA9IC1FTk9F TlQ7CiAJaWYgKCFkZW50cnktPmRfaW5vZGUpCiAJCWdvdG8gb3V0OwotCXN0YXR1cyA9IHZmc19y bWRpcihkaXItPmRfaW5vZGUsIGRlbnRyeSk7CisJc3RhdHVzID0gdmZzX3JtZGlyKGRpciwgZGVu dHJ5KTsKIG91dDoKIAlkcHV0KGRlbnRyeSk7CiBvdXRfdW5sb2NrOgpAQCAtMzgzLDcgKzM4Myw3 IEBAIHB1cmdlX29sZChzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmNoaWxk LCBzdHJ1Y3QgbmZzZF9uZXQgKm5uKQogCWlmIChuZnM0X2hhc19yZWNsYWltZWRfc3RhdGUoY2hp bGQtPmRfbmFtZS5uYW1lLCBubikpCiAJCXJldHVybiAwOwogCi0Jc3RhdHVzID0gdmZzX3JtZGly KHBhcmVudC0+ZF9pbm9kZSwgY2hpbGQpOworCXN0YXR1cyA9IHZmc19ybWRpcihwYXJlbnQsIGNo aWxkKTsKIAlpZiAoc3RhdHVzKQogCQlwcmludGsoImZhaWxlZCB0byByZW1vdmUgY2xpZW50IHJl Y292ZXJ5IGRpcmVjdG9yeSAlcGRcbiIsCiAJCQkJY2hpbGQpOwpkaWZmIC0tZ2l0IGEvZnMvbmZz ZC9uZnNmaC5jIGIvZnMvbmZzZC9uZnNmaC5jCmluZGV4IDNjMzdiMTYwZGNhZC4uOTc5YmUxOTAw ODBmIDEwMDY0NAotLS0gYS9mcy9uZnNkL25mc2ZoLmMKKysrIGIvZnMvbmZzZC9uZnNmaC5jCkBA IC0zOCw3ICszOCw3IEBAIHN0YXRpYyBpbnQgbmZzZF9hY2NlcHRhYmxlKHZvaWQgKmV4cHYsIHN0 cnVjdCBkZW50cnkgKmRlbnRyeSkKIAkJLyogbWFrZSBzdXJlIHBhcmVudHMgZ2l2ZSB4IHBlcm1p c3Npb24gdG8gdXNlciAqLwogCQlpbnQgZXJyOwogCQlwYXJlbnQgPSBkZ2V0X3BhcmVudCh0ZGVu dHJ5KTsKLQkJZXJyID0gaW5vZGVfcGVybWlzc2lvbihwYXJlbnQtPmRfaW5vZGUsIE1BWV9FWEVD KTsKKwkJZXJyID0gaW5vZGVfcGVybWlzc2lvbihwYXJlbnQsIHBhcmVudC0+ZF9pbm9kZSwgTUFZ X0VYRUMpOwogCQlpZiAoZXJyIDwgMCkgewogCQkJZHB1dChwYXJlbnQpOwogCQkJYnJlYWs7CmRp ZmYgLS1naXQgYS9mcy9uZnNkL3Zmcy5jIGIvZnMvbmZzZC92ZnMuYwppbmRleCAwMTdkM2NiNWU5 OWIuLmYwNDVjNDM1ZDQ5YSAxMDA2NDQKLS0tIGEvZnMvbmZzZC92ZnMuYworKysgYi9mcy9uZnNk L3Zmcy5jCkBAIC0xMjIwLDE4ICsxMjIwLDE4IEBAIG5mc2RfY3JlYXRlKHN0cnVjdCBzdmNfcnFz dCAqcnFzdHAsIHN0cnVjdCBzdmNfZmggKmZocCwKIAlob3N0X2VyciA9IDA7CiAJc3dpdGNoICh0 eXBlKSB7CiAJY2FzZSBTX0lGUkVHOgotCQlob3N0X2VyciA9IHZmc19jcmVhdGUoZGlycCwgZGNo aWxkLCBpYXAtPmlhX21vZGUsIHRydWUpOworCQlob3N0X2VyciA9IHZmc19jcmVhdGUoZGVudHJ5 LCBkY2hpbGQsIGlhcC0+aWFfbW9kZSwgdHJ1ZSk7CiAJCWlmICghaG9zdF9lcnIpCiAJCQluZnNk X2NoZWNrX2lnbm9yZV9yZXNpemluZyhpYXApOwogCQlicmVhazsKIAljYXNlIFNfSUZESVI6Ci0J CWhvc3RfZXJyID0gdmZzX21rZGlyKGRpcnAsIGRjaGlsZCwgaWFwLT5pYV9tb2RlKTsKKwkJaG9z dF9lcnIgPSB2ZnNfbWtkaXIoZGVudHJ5LCBkY2hpbGQsIGlhcC0+aWFfbW9kZSk7CiAJCWJyZWFr OwogCWNhc2UgU19JRkNIUjoKIAljYXNlIFNfSUZCTEs6CiAJY2FzZSBTX0lGSUZPOgogCWNhc2Ug U19JRlNPQ0s6Ci0JCWhvc3RfZXJyID0gdmZzX21rbm9kKGRpcnAsIGRjaGlsZCwgaWFwLT5pYV9t b2RlLCByZGV2KTsKKwkJaG9zdF9lcnIgPSB2ZnNfbWtub2QoZGVudHJ5LCBkY2hpbGQsIGlhcC0+ aWFfbW9kZSwgcmRldik7CiAJCWJyZWFrOwogCX0KIAlpZiAoaG9zdF9lcnIgPCAwKQpAQCAtMTM4 OCw3ICsxMzg4LDcgQEAgZG9fbmZzZF9jcmVhdGUoc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3Ry dWN0IHN2Y19maCAqZmhwLAogCQlnb3RvIG91dDsKIAl9CiAKLQlob3N0X2VyciA9IHZmc19jcmVh dGUoZGlycCwgZGNoaWxkLCBpYXAtPmlhX21vZGUsIHRydWUpOworCWhvc3RfZXJyID0gdmZzX2Ny ZWF0ZShkZW50cnksIGRjaGlsZCwgaWFwLT5pYV9tb2RlLCB0cnVlKTsKIAlpZiAoaG9zdF9lcnIg PCAwKSB7CiAJCWZoX2Ryb3Bfd3JpdGUoZmhwKTsKIAkJZ290byBvdXRfbmZzZXJyOwpAQCAtMTUy OCwxMSArMTUyOCwxMSBAQCBuZnNkX3N5bWxpbmsoc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3Ry dWN0IHN2Y19maCAqZmhwLAogCQllbHNlIHsKIAkJCXN0cm5jcHkocGF0aF9hbGxvY2VkLCBwYXRo LCBwbGVuKTsKIAkJCXBhdGhfYWxsb2NlZFtwbGVuXSA9IDA7Ci0JCQlob3N0X2VyciA9IHZmc19z eW1saW5rKGRlbnRyeS0+ZF9pbm9kZSwgZG5ldywgcGF0aF9hbGxvY2VkKTsKKwkJCWhvc3RfZXJy ID0gdmZzX3N5bWxpbmsoZGVudHJ5LCBkbmV3LCBwYXRoX2FsbG9jZWQpOwogCQkJa2ZyZWUocGF0 aF9hbGxvY2VkKTsKIAkJfQogCX0gZWxzZQotCQlob3N0X2VyciA9IHZmc19zeW1saW5rKGRlbnRy eS0+ZF9pbm9kZSwgZG5ldywgcGF0aCk7CisJCWhvc3RfZXJyID0gdmZzX3N5bWxpbmsoZGVudHJ5 LCBkbmV3LCBwYXRoKTsKIAllcnIgPSBuZnNlcnJubyhob3N0X2Vycik7CiAJaWYgKCFlcnIpCiAJ CWVyciA9IG5mc2Vycm5vKGNvbW1pdF9tZXRhZGF0YShmaHApKTsKQEAgLTE1NjAsNyArMTU2MCw2 IEBAIG5mc2RfbGluayhzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3Qgc3ZjX2ZoICpmZmhw LAogCQkJCWNoYXIgKm5hbWUsIGludCBsZW4sIHN0cnVjdCBzdmNfZmggKnRmaHApCiB7CiAJc3Ry dWN0IGRlbnRyeQkqZGRpciwgKmRuZXcsICpkb2xkOwotCXN0cnVjdCBpbm9kZQkqZGlycDsKIAlf X2JlMzIJCWVycjsKIAlpbnQJCWhvc3RfZXJyOwogCkBAIC0xNTg4LDcgKzE1ODcsNiBAQCBuZnNk X2xpbmsoc3RydWN0IHN2Y19ycXN0ICpycXN0cCwgc3RydWN0IHN2Y19maCAqZmZocCwKIAogCWZo X2xvY2tfbmVzdGVkKGZmaHAsIElfTVVURVhfUEFSRU5UKTsKIAlkZGlyID0gZmZocC0+ZmhfZGVu dHJ5OwotCWRpcnAgPSBkZGlyLT5kX2lub2RlOwogCiAJZG5ldyA9IGxvb2t1cF9vbmVfbGVuKG5h bWUsIGRkaXIsIGxlbik7CiAJaG9zdF9lcnIgPSBQVFJfRVJSKGRuZXcpOwpAQCAtMTYwMCw3ICsx NTk4LDcgQEAgbmZzZF9saW5rKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBzdmNfZmgg KmZmaHAsCiAJZXJyID0gbmZzZXJyX25vZW50OwogCWlmICghZG9sZC0+ZF9pbm9kZSkKIAkJZ290 byBvdXRfZHB1dDsKLQlob3N0X2VyciA9IHZmc19saW5rKGRvbGQsIGRpcnAsIGRuZXcsIE5VTEwp OworCWhvc3RfZXJyID0gdmZzX2xpbmsoZG9sZCwgZGRpciwgZG5ldywgTlVMTCk7CiAJaWYgKCFo b3N0X2VycikgewogCQllcnIgPSBuZnNlcnJubyhjb21taXRfbWV0YWRhdGEoZmZocCkpOwogCQlp ZiAoIWVycikKQEAgLTE2MzMsNyArMTYzMSw2IEBAIG5mc2RfcmVuYW1lKHN0cnVjdCBzdmNfcnFz dCAqcnFzdHAsIHN0cnVjdCBzdmNfZmggKmZmaHAsIGNoYXIgKmZuYW1lLCBpbnQgZmxlbiwKIAkJ CSAgICBzdHJ1Y3Qgc3ZjX2ZoICp0ZmhwLCBjaGFyICp0bmFtZSwgaW50IHRsZW4pCiB7CiAJc3Ry dWN0IGRlbnRyeQkqZmRlbnRyeSwgKnRkZW50cnksICpvZGVudHJ5LCAqbmRlbnRyeSwgKnRyYXA7 Ci0Jc3RydWN0IGlub2RlCSpmZGlyLCAqdGRpcjsKIAlfX2JlMzIJCWVycjsKIAlpbnQJCWhvc3Rf ZXJyOwogCkBAIC0xNjQ1LDEwICsxNjQyLDcgQEAgbmZzZF9yZW5hbWUoc3RydWN0IHN2Y19ycXN0 ICpycXN0cCwgc3RydWN0IHN2Y19maCAqZmZocCwgY2hhciAqZm5hbWUsIGludCBmbGVuLAogCQln b3RvIG91dDsKIAogCWZkZW50cnkgPSBmZmhwLT5maF9kZW50cnk7Ci0JZmRpciA9IGZkZW50cnkt PmRfaW5vZGU7Ci0KIAl0ZGVudHJ5ID0gdGZocC0+ZmhfZGVudHJ5OwotCXRkaXIgPSB0ZGVudHJ5 LT5kX2lub2RlOwogCiAJZXJyID0gbmZzZXJyX3Blcm07CiAJaWYgKCFmbGVuIHx8IGlzZG90ZW50 KGZuYW1lLCBmbGVuKSB8fCAhdGxlbiB8fCBpc2RvdGVudCh0bmFtZSwgdGxlbikpCkBAIC0xNjkz LDcgKzE2ODcsNyBAQCBuZnNkX3JlbmFtZShzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3Qg c3ZjX2ZoICpmZmhwLCBjaGFyICpmbmFtZSwgaW50IGZsZW4sCiAJaWYgKGZmaHAtPmZoX2V4cG9y dC0+ZXhfcGF0aC5kZW50cnkgIT0gdGZocC0+ZmhfZXhwb3J0LT5leF9wYXRoLmRlbnRyeSkKIAkJ Z290byBvdXRfZHB1dF9uZXc7CiAKLQlob3N0X2VyciA9IHZmc19yZW5hbWUoZmRpciwgb2RlbnRy eSwgdGRpciwgbmRlbnRyeSwgTlVMTCk7CisJaG9zdF9lcnIgPSB2ZnNfcmVuYW1lKGZkZW50cnks IG9kZW50cnksIHRkZW50cnksIG5kZW50cnksIE5VTEwpOwogCWlmICghaG9zdF9lcnIpIHsKIAkJ aG9zdF9lcnIgPSBjb21taXRfbWV0YWRhdGEodGZocCk7CiAJCWlmICghaG9zdF9lcnIpCkBAIC0x NzI5LDcgKzE3MjMsNiBAQCBuZnNkX3VubGluayhzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1 Y3Qgc3ZjX2ZoICpmaHAsIGludCB0eXBlLAogCQkJCWNoYXIgKmZuYW1lLCBpbnQgZmxlbikKIHsK IAlzdHJ1Y3QgZGVudHJ5CSpkZW50cnksICpyZGVudHJ5OwotCXN0cnVjdCBpbm9kZQkqZGlycDsK IAlfX2JlMzIJCWVycjsKIAlpbnQJCWhvc3RfZXJyOwogCkBAIC0xNzQ2LDcgKzE3MzksNiBAQCBu ZnNkX3VubGluayhzdHJ1Y3Qgc3ZjX3Jxc3QgKnJxc3RwLCBzdHJ1Y3Qgc3ZjX2ZoICpmaHAsIGlu dCB0eXBlLAogCiAJZmhfbG9ja19uZXN0ZWQoZmhwLCBJX01VVEVYX1BBUkVOVCk7CiAJZGVudHJ5 ID0gZmhwLT5maF9kZW50cnk7Ci0JZGlycCA9IGRlbnRyeS0+ZF9pbm9kZTsKIAogCXJkZW50cnkg PSBsb29rdXBfb25lX2xlbihmbmFtZSwgZGVudHJ5LCBmbGVuKTsKIAlob3N0X2VyciA9IFBUUl9F UlIocmRlbnRyeSk7CkBAIC0xNzYzLDkgKzE3NTUsOSBAQCBuZnNkX3VubGluayhzdHJ1Y3Qgc3Zj X3Jxc3QgKnJxc3RwLCBzdHJ1Y3Qgc3ZjX2ZoICpmaHAsIGludCB0eXBlLAogCQl0eXBlID0gcmRl bnRyeS0+ZF9pbm9kZS0+aV9tb2RlICYgU19JRk1UOwogCiAJaWYgKHR5cGUgIT0gU19JRkRJUikK LQkJaG9zdF9lcnIgPSB2ZnNfdW5saW5rKGRpcnAsIHJkZW50cnksIE5VTEwpOworCQlob3N0X2Vy ciA9IHZmc191bmxpbmsoZGVudHJ5LCByZGVudHJ5LCBOVUxMKTsKIAllbHNlCi0JCWhvc3RfZXJy ID0gdmZzX3JtZGlyKGRpcnAsIHJkZW50cnkpOworCQlob3N0X2VyciA9IHZmc19ybWRpcihkZW50 cnksIHJkZW50cnkpOwogCWlmICghaG9zdF9lcnIpCiAJCWhvc3RfZXJyID0gY29tbWl0X21ldGFk YXRhKGZocCk7CiAJZHB1dChyZGVudHJ5KTsKQEAgLTIwMzYsMTMgKzIwMjgsMTMgQEAgbmZzZF9w ZXJtaXNzaW9uKHN0cnVjdCBzdmNfcnFzdCAqcnFzdHAsIHN0cnVjdCBzdmNfZXhwb3J0ICpleHAs CiAJCXJldHVybiAwOwogCiAJLyogVGhpcyBhc3N1bWVzICBORlNEX01BWV97UkVBRCxXUklURSxF WEVDfSA9PSBNQVlfe1JFQUQsV1JJVEUsRVhFQ30gKi8KLQllcnIgPSBpbm9kZV9wZXJtaXNzaW9u KGlub2RlLCBhY2MgJiAoTUFZX1JFQUR8TUFZX1dSSVRFfE1BWV9FWEVDKSk7CisJZXJyID0gaW5v ZGVfcGVybWlzc2lvbihkZW50cnksIGlub2RlLCBhY2MgJiAoTUFZX1JFQUR8TUFZX1dSSVRFfE1B WV9FWEVDKSk7CiAKIAkvKiBBbGxvdyByZWFkIGFjY2VzcyB0byBiaW5hcmllcyBldmVuIHdoZW4g bW9kZSAxMTEgKi8KIAlpZiAoZXJyID09IC1FQUNDRVMgJiYgU19JU1JFRyhpbm9kZS0+aV9tb2Rl KSAmJgogCSAgICAgKGFjYyA9PSAoTkZTRF9NQVlfUkVBRCB8IE5GU0RfTUFZX09XTkVSX09WRVJS SURFKSB8fAogCSAgICAgIGFjYyA9PSAoTkZTRF9NQVlfUkVBRCB8IE5GU0RfTUFZX1JFQURfSUZf RVhFQykpKQotCQllcnIgPSBpbm9kZV9wZXJtaXNzaW9uKGlub2RlLCBNQVlfRVhFQyk7CisJCWVy ciA9IGlub2RlX3Blcm1pc3Npb24oZGVudHJ5LCBpbm9kZSwgTUFZX0VYRUMpOwogCiAJcmV0dXJu IGVycj8gbmZzZXJybm8oZXJyKSA6IDA7CiB9CmRpZmYgLS1naXQgYS9mcy9uaWxmczIvaW5vZGUu YyBiL2ZzL25pbGZzMi9pbm9kZS5jCmluZGV4IDdlMzUwYzU2MmUwZS4uNTM0OGIyZjE0Mzk1IDEw MDY0NAotLS0gYS9mcy9uaWxmczIvaW5vZGUuYworKysgYi9mcy9uaWxmczIvaW5vZGUuYwpAQCAt ODUwLDcgKzg1MCw3IEBAIG91dF9lcnI6CiAJcmV0dXJuIGVycjsKIH0KIAotaW50IG5pbGZzX3Bl cm1pc3Npb24oc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spCitpbnQgbmlsZnNfcGVybWlz c2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNr KQogewogCXN0cnVjdCBuaWxmc19yb290ICpyb290ID0gTklMRlNfSShpbm9kZSktPmlfcm9vdDsK IAlpZiAoKG1hc2sgJiBNQVlfV1JJVEUpICYmIHJvb3QgJiYKZGlmZiAtLWdpdCBhL2ZzL25pbGZz Mi9uaWxmcy5oIGIvZnMvbmlsZnMyL25pbGZzLmgKaW5kZXggOWJjNzJkZWMzZmE2Li4zZDVhYmQy MjhiOGMgMTAwNjQ0Ci0tLSBhL2ZzL25pbGZzMi9uaWxmcy5oCisrKyBiL2ZzL25pbGZzMi9uaWxm cy5oCkBAIC0yNzgsNyArMjc4LDcgQEAgZXh0ZXJuIHZvaWQgbmlsZnNfdHJ1bmNhdGUoc3RydWN0 IGlub2RlICopOwogZXh0ZXJuIHZvaWQgbmlsZnNfZXZpY3RfaW5vZGUoc3RydWN0IGlub2RlICop OwogZXh0ZXJuIGludCBuaWxmc19zZXRhdHRyKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlhdHRy ICopOwogZXh0ZXJuIHZvaWQgbmlsZnNfd3JpdGVfZmFpbGVkKHN0cnVjdCBhZGRyZXNzX3NwYWNl ICptYXBwaW5nLCBsb2ZmX3QgdG8pOwotaW50IG5pbGZzX3Blcm1pc3Npb24oc3RydWN0IGlub2Rl ICppbm9kZSwgaW50IG1hc2spOworaW50IG5pbGZzX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAq ZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7CiBpbnQgbmlsZnNfbG9hZF9p bm9kZV9ibG9jayhzdHJ1Y3QgaW5vZGUgKmlub2RlLCBzdHJ1Y3QgYnVmZmVyX2hlYWQgKipwYmgp OwogZXh0ZXJuIGludCBuaWxmc19pbm9kZV9kaXJ0eShzdHJ1Y3QgaW5vZGUgKik7CiBpbnQgbmls ZnNfc2V0X2ZpbGVfZGlydHkoc3RydWN0IGlub2RlICppbm9kZSwgdW5zaWduZWQgbnJfZGlydHkp OwpkaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYyBiL2ZzL25v dGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMKaW5kZXggYjYxNzVmYTExYmY4Li41ZjE1MWQ3 ODg3MzMgMTAwNjQ0Ci0tLSBhL2ZzL25vdGlmeS9mYW5vdGlmeS9mYW5vdGlmeV91c2VyLmMKKysr IGIvZnMvbm90aWZ5L2Zhbm90aWZ5L2Zhbm90aWZ5X3VzZXIuYwpAQCAtNDkwLDcgKzQ5MCw3IEBA IHN0YXRpYyBpbnQgZmFub3RpZnlfZmluZF9wYXRoKGludCBkZmQsIGNvbnN0IGNoYXIgX191c2Vy ICpmaWxlbmFtZSwKIAl9CiAKIAkvKiB5b3UgY2FuIG9ubHkgd2F0Y2ggYW4gaW5vZGUgaWYgeW91 IGhhdmUgcmVhZCBwZXJtaXNzaW9ucyBvbiBpdCAqLwotCXJldCA9IGlub2RlX3Blcm1pc3Npb24o cGF0aC0+ZGVudHJ5LT5kX2lub2RlLCBNQVlfUkVBRCk7CisJcmV0ID0gaW5vZGVfcGVybWlzc2lv bihwYXRoLT5kZW50cnksIHBhdGgtPmRlbnRyeS0+ZF9pbm9kZSwgTUFZX1JFQUQpOwogCWlmIChy ZXQpCiAJCXBhdGhfcHV0KHBhdGgpOwogb3V0OgpkaWZmIC0tZ2l0IGEvZnMvbm90aWZ5L2lub3Rp ZnkvaW5vdGlmeV91c2VyLmMgYi9mcy9ub3RpZnkvaW5vdGlmeS9pbm90aWZ5X3VzZXIuYwppbmRl eCA0OTczOTVjODI3NGIuLjRjMDIyZWIyNjZjNyAxMDA2NDQKLS0tIGEvZnMvbm90aWZ5L2lub3Rp ZnkvaW5vdGlmeV91c2VyLmMKKysrIGIvZnMvbm90aWZ5L2lub3RpZnkvaW5vdGlmeV91c2VyLmMK QEAgLTMzOCw3ICszMzgsNyBAQCBzdGF0aWMgaW50IGlub3RpZnlfZmluZF9pbm9kZShjb25zdCBj aGFyIF9fdXNlciAqZGlybmFtZSwgc3RydWN0IHBhdGggKnBhdGgsIHVucwogCWlmIChlcnJvcikK IAkJcmV0dXJuIGVycm9yOwogCS8qIHlvdSBjYW4gb25seSB3YXRjaCBhbiBpbm9kZSBpZiB5b3Ug aGF2ZSByZWFkIHBlcm1pc3Npb25zIG9uIGl0ICovCi0JZXJyb3IgPSBpbm9kZV9wZXJtaXNzaW9u KHBhdGgtPmRlbnRyeS0+ZF9pbm9kZSwgTUFZX1JFQUQpOworCWVycm9yID0gaW5vZGVfcGVybWlz c2lvbihwYXRoLT5kZW50cnksIHBhdGgtPmRlbnRyeS0+ZF9pbm9kZSwgTUFZX1JFQUQpOwogCWlm IChlcnJvcikKIAkJcGF0aF9wdXQocGF0aCk7CiAJcmV0dXJuIGVycm9yOwpkaWZmIC0tZ2l0IGEv ZnMvb2NmczIvZmlsZS5jIGIvZnMvb2NmczIvZmlsZS5jCmluZGV4IGQ3N2Q3MWVhZDhkMS4uNTYy ZDlkNzM0MzNkIDEwMDY0NAotLS0gYS9mcy9vY2ZzMi9maWxlLmMKKysrIGIvZnMvb2NmczIvZmls ZS5jCkBAIC0xMjY5LDcgKzEyNjksNyBAQCBiYWlsOgogCXJldHVybiBlcnI7CiB9CiAKLWludCBv Y2ZzMl9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQoraW50IG9jZnMy X3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBp bnQgbWFzaykKIHsKIAlpbnQgcmV0OwogCmRpZmYgLS1naXQgYS9mcy9vY2ZzMi9maWxlLmggYi9m cy9vY2ZzMi9maWxlLmgKaW5kZXggOTdiZjc2MWM5ZTdjLi5lMmJkYmNhZGQ2ZjQgMTAwNjQ0Ci0t LSBhL2ZzL29jZnMyL2ZpbGUuaAorKysgYi9mcy9vY2ZzMi9maWxlLmgKQEAgLTYxLDcgKzYxLDcg QEAgaW50IG9jZnMyX3plcm9fZXh0ZW5kKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBidWZm ZXJfaGVhZCAqZGlfYmgsCiBpbnQgb2NmczJfc2V0YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnks IHN0cnVjdCBpYXR0ciAqYXR0cik7CiBpbnQgb2NmczJfZ2V0YXR0cihzdHJ1Y3QgdmZzbW91bnQg Km1udCwgc3RydWN0IGRlbnRyeSAqZGVudHJ5LAogCQkgIHN0cnVjdCBrc3RhdCAqc3RhdCk7Ci1p bnQgb2NmczJfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzayk7CitpbnQg b2NmczJfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGludCBtYXNrKTsKIAogaW50IG9jZnMyX3Nob3VsZF91cGRhdGVfYXRpbWUoc3RydWN0IGlu b2RlICppbm9kZSwKIAkJCSAgICAgIHN0cnVjdCB2ZnNtb3VudCAqdmZzbW50KTsKZGlmZiAtLWdp dCBhL2ZzL29jZnMyL3JlZmNvdW50dHJlZS5jIGIvZnMvb2NmczIvcmVmY291bnR0cmVlLmMKaW5k ZXggNmJhNGJjYmM0Nzk2Li5hNWQ0MjliNjViZWYgMTAwNjQ0Ci0tLSBhL2ZzL29jZnMyL3JlZmNv dW50dHJlZS5jCisrKyBiL2ZzL29jZnMyL3JlZmNvdW50dHJlZS5jCkBAIC00MzUwLDEzICs0MzUw LDE1IEBAIG91dDoKICAqLwogCiAvKiBjb3BpZWQgZnJvbSBtYXlfY3JlYXRlIGluIFZGUy4gKi8K LXN0YXRpYyBpbmxpbmUgaW50IG9jZnMyX21heV9jcmVhdGUoc3RydWN0IGlub2RlICpkaXIsIHN0 cnVjdCBkZW50cnkgKmNoaWxkKQorc3RhdGljIGlubGluZSBpbnQgb2NmczJfbWF5X2NyZWF0ZShz dHJ1Y3QgZGVudHJ5ICpwYXJlbnQsIHN0cnVjdCBkZW50cnkgKmNoaWxkKQogeworCXN0cnVjdCBp bm9kZSAqZGlyID0gcGFyZW50LT5kX2lub2RlOworCiAJaWYgKGNoaWxkLT5kX2lub2RlKQogCQly ZXR1cm4gLUVFWElTVDsKIAlpZiAoSVNfREVBRERJUihkaXIpKQogCQlyZXR1cm4gLUVOT0VOVDsK LQlyZXR1cm4gaW5vZGVfcGVybWlzc2lvbihkaXIsIE1BWV9XUklURSB8IE1BWV9FWEVDKTsKKwly ZXR1cm4gaW5vZGVfcGVybWlzc2lvbihwYXJlbnQsIGRpciwgTUFZX1dSSVRFIHwgTUFZX0VYRUMp OwogfQogCiAvKioKQEAgLTQzNjcsMTYgKzQzNjksMTcgQEAgc3RhdGljIGlubGluZSBpbnQgb2Nm czJfbWF5X2NyZWF0ZShzdHJ1Y3QgaW5vZGUgKmRpciwgc3RydWN0IGRlbnRyeSAqY2hpbGQpCiAg KiBAbmV3X2RlbnRyeTogICAgICAgIHRhcmdldCBkZW50cnkKICAqIEBwcmVzZXJ2ZTogIGlmIHRy dWUsIHByZXNlcnZlIGFsbCBmaWxlIGF0dHJpYnV0ZXMKICAqLwotc3RhdGljIGludCBvY2ZzMl92 ZnNfcmVmbGluayhzdHJ1Y3QgZGVudHJ5ICpvbGRfZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmRpciwK K3N0YXRpYyBpbnQgb2NmczJfdmZzX3JlZmxpbmsoc3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwg c3RydWN0IGRlbnRyeSAqbmV3X3BhcmVudCwKIAkJCSAgICAgc3RydWN0IGRlbnRyeSAqbmV3X2Rl bnRyeSwgYm9vbCBwcmVzZXJ2ZSkKIHsKKwlzdHJ1Y3QgaW5vZGUgKmRpciA9IG5ld19wYXJlbnQt PmRfaW5vZGU7CiAJc3RydWN0IGlub2RlICppbm9kZSA9IG9sZF9kZW50cnktPmRfaW5vZGU7CiAJ aW50IGVycm9yOwogCiAJaWYgKCFpbm9kZSkKIAkJcmV0dXJuIC1FTk9FTlQ7CiAKLQllcnJvciA9 IG9jZnMyX21heV9jcmVhdGUoZGlyLCBuZXdfZGVudHJ5KTsKKwllcnJvciA9IG9jZnMyX21heV9j cmVhdGUobmV3X3BhcmVudCwgbmV3X2RlbnRyeSk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJy b3I7CiAKQEAgLTQ0MTAsNyArNDQxMyw3IEBAIHN0YXRpYyBpbnQgb2NmczJfdmZzX3JlZmxpbmso c3RydWN0IGRlbnRyeSAqb2xkX2RlbnRyeSwgc3RydWN0IGlub2RlICpkaXIsCiAJICogZmlsZS4K IAkgKi8KIAlpZiAoIXByZXNlcnZlKSB7Ci0JCWVycm9yID0gaW5vZGVfcGVybWlzc2lvbihpbm9k ZSwgTUFZX1JFQUQpOworCQllcnJvciA9IGlub2RlX3Blcm1pc3Npb24ob2xkX2RlbnRyeSwgaW5v ZGUsIE1BWV9SRUFEKTsKIAkJaWYgKGVycm9yKQogCQkJcmV0dXJuIGVycm9yOwogCX0KQEAgLTQ0 NTgsNyArNDQ2MSw3IEBAIGludCBvY2ZzMl9yZWZsaW5rX2lvY3RsKHN0cnVjdCBpbm9kZSAqaW5v ZGUsCiAJfQogCiAJZXJyb3IgPSBvY2ZzMl92ZnNfcmVmbGluayhvbGRfcGF0aC5kZW50cnksCi0J CQkJICBuZXdfcGF0aC5kZW50cnktPmRfaW5vZGUsCisJCQkJICBuZXdfcGF0aC5kZW50cnksCiAJ CQkJICBuZXdfZGVudHJ5LCBwcmVzZXJ2ZSk7CiBvdXRfZHB1dDoKIAlkb25lX3BhdGhfY3JlYXRl KCZuZXdfcGF0aCwgbmV3X2RlbnRyeSk7CmRpZmYgLS1naXQgYS9mcy9vcGVuLmMgYi9mcy9vcGVu LmMKaW5kZXggNGIzZTFlZGYyZmU0Li43ODhiZTRmYjg3ZjMgMTAwNjQ0Ci0tLSBhL2ZzL29wZW4u YworKysgYi9mcy9vcGVuLmMKQEAgLTY1LDEwICs2NSwxMiBAQCBpbnQgZG9fdHJ1bmNhdGUoc3Ry dWN0IGRlbnRyeSAqZGVudHJ5LCBsb2ZmX3QgbGVuZ3RoLCB1bnNpZ25lZCBpbnQgdGltZV9hdHRy cywKIAogbG9uZyB2ZnNfdHJ1bmNhdGUoc3RydWN0IHBhdGggKnBhdGgsIGxvZmZfdCBsZW5ndGgp CiB7CisJc3RydWN0IGRlbnRyeSAqZGVudHJ5OwogCXN0cnVjdCBpbm9kZSAqaW5vZGU7CiAJbG9u ZyBlcnJvcjsKIAotCWlub2RlID0gcGF0aC0+ZGVudHJ5LT5kX2lub2RlOworCWRlbnRyeSA9IHBh dGgtPmRlbnRyeTsKKwlpbm9kZSA9IGRlbnRyeS0+ZF9pbm9kZTsKIAogCS8qIEZvciBkaXJlY3Rv cmllcyBpdCdzIC1FSVNESVIsIGZvciBvdGhlciBub24tcmVndWxhcnMgLSAtRUlOVkFMICovCiAJ aWYgKFNfSVNESVIoaW5vZGUtPmlfbW9kZSkpCkBAIC04MCw3ICs4Miw3IEBAIGxvbmcgdmZzX3Ry dW5jYXRlKHN0cnVjdCBwYXRoICpwYXRoLCBsb2ZmX3QgbGVuZ3RoKQogCWlmIChlcnJvcikKIAkJ Z290byBvdXQ7CiAKLQllcnJvciA9IGlub2RlX3Blcm1pc3Npb24oaW5vZGUsIE1BWV9XUklURSk7 CisJZXJyb3IgPSBpbm9kZV9wZXJtaXNzaW9uKGRlbnRyeSwgaW5vZGUsIE1BWV9XUklURSk7CiAJ aWYgKGVycm9yKQogCQlnb3RvIG1udF9kcm9wX3dyaXRlX2FuZF9vdXQ7CiAKQEAgLTM0NCw3ICsz NDYsNyBAQCByZXRyeToKIAkJCWdvdG8gb3V0X3BhdGhfcmVsZWFzZTsKIAl9CiAKLQlyZXMgPSBp bm9kZV9wZXJtaXNzaW9uKGlub2RlLCBtb2RlIHwgTUFZX0FDQ0VTUyk7CisJcmVzID0gaW5vZGVf cGVybWlzc2lvbihwYXRoLmRlbnRyeSwgaW5vZGUsIG1vZGUgfCBNQVlfQUNDRVNTKTsKIAkvKiBT dVMgdjIgcmVxdWlyZXMgd2UgcmVwb3J0IGEgcmVhZCBvbmx5IGZzIHRvbyAqLwogCWlmIChyZXMg fHwgIShtb2RlICYgU19JV09USCkgfHwgc3BlY2lhbF9maWxlKGlub2RlLT5pX21vZGUpKQogCQln b3RvIG91dF9wYXRoX3JlbGVhc2U7CkBAIC0zODgsNyArMzkwLDcgQEAgcmV0cnk6CiAJaWYgKGVy cm9yKQogCQlnb3RvIG91dDsKIAotCWVycm9yID0gaW5vZGVfcGVybWlzc2lvbihwYXRoLmRlbnRy eS0+ZF9pbm9kZSwgTUFZX0VYRUMgfCBNQVlfQ0hESVIpOworCWVycm9yID0gaW5vZGVfcGVybWlz c2lvbihwYXRoLmRlbnRyeSwgcGF0aC5kZW50cnktPmRfaW5vZGUsIE1BWV9FWEVDIHwgTUFZX0NI RElSKTsKIAlpZiAoZXJyb3IpCiAJCWdvdG8gZHB1dF9hbmRfb3V0OwogCkBAIC00MjAsNyArNDIy LDcgQEAgU1lTQ0FMTF9ERUZJTkUxKGZjaGRpciwgdW5zaWduZWQgaW50LCBmZCkKIAlpZiAoIVNf SVNESVIoaW5vZGUtPmlfbW9kZSkpCiAJCWdvdG8gb3V0X3B1dGY7CiAKLQllcnJvciA9IGlub2Rl X3Blcm1pc3Npb24oaW5vZGUsIE1BWV9FWEVDIHwgTUFZX0NIRElSKTsKKwllcnJvciA9IGlub2Rl X3Blcm1pc3Npb24oZi5maWxlLT5mX3BhdGguZGVudHJ5LCBpbm9kZSwgTUFZX0VYRUMgfCBNQVlf Q0hESVIpOwogCWlmICghZXJyb3IpCiAJCXNldF9mc19wd2QoY3VycmVudC0+ZnMsICZmLmZpbGUt PmZfcGF0aCk7CiBvdXRfcHV0ZjoKQEAgLTQzOSw3ICs0NDEsNyBAQCByZXRyeToKIAlpZiAoZXJy b3IpCiAJCWdvdG8gb3V0OwogCi0JZXJyb3IgPSBpbm9kZV9wZXJtaXNzaW9uKHBhdGguZGVudHJ5 LT5kX2lub2RlLCBNQVlfRVhFQyB8IE1BWV9DSERJUik7CisJZXJyb3IgPSBpbm9kZV9wZXJtaXNz aW9uKHBhdGguZGVudHJ5LCBwYXRoLmRlbnRyeS0+ZF9pbm9kZSwgTUFZX0VYRUMgfCBNQVlfQ0hE SVIpOwogCWlmIChlcnJvcikKIAkJZ290byBkcHV0X2FuZF9vdXQ7CiAKZGlmZiAtLWdpdCBhL2Zz L3Byb2MvYmFzZS5jIGIvZnMvcHJvYy9iYXNlLmMKaW5kZXggNTE1MDcwNjUyNjNiLi5lYjQ3NTI4 NjM0NDIgMTAwNjQ0Ci0tLSBhL2ZzL3Byb2MvYmFzZS5jCisrKyBiL2ZzL3Byb2MvYmFzZS5jCkBA IC01OTYsNyArNTk2LDcgQEAgc3RhdGljIGJvb2wgaGFzX3BpZF9wZXJtaXNzaW9ucyhzdHJ1Y3Qg cGlkX25hbWVzcGFjZSAqcGlkLAogfQogCiAKLXN0YXRpYyBpbnQgcHJvY19waWRfcGVybWlzc2lv bihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKK3N0YXRpYyBpbnQgcHJvY19waWRfcGVy bWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBt YXNrKQogewogCXN0cnVjdCBwaWRfbmFtZXNwYWNlICpwaWQgPSBpbm9kZS0+aV9zYi0+c19mc19p bmZvOwogCXN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzazsKZGlmZiAtLWdpdCBhL2ZzL3Byb2MvZmQu YyBiL2ZzL3Byb2MvZmQuYwppbmRleCA5ODVlYTg4MWI1YmMuLjAyNjU5NGQ1YzgyMCAxMDA2NDQK LS0tIGEvZnMvcHJvYy9mZC5jCisrKyBiL2ZzL3Byb2MvZmQuYwpAQCAtMjgxLDcgKzI4MSw3IEBA IHN0YXRpYyBzdHJ1Y3QgZGVudHJ5ICpwcm9jX2xvb2t1cGZkKHN0cnVjdCBpbm9kZSAqZGlyLCBz dHJ1Y3QgZGVudHJ5ICpkZW50cnksCiAgKiAvcHJvYy9waWQvZmQgbmVlZHMgYSBzcGVjaWFsIHBl cm1pc3Npb24gaGFuZGxlciBzbyB0aGF0IGEgcHJvY2VzcyBjYW4gc3RpbGwKICAqIGFjY2VzcyAv cHJvYy9zZWxmL2ZkIGFmdGVyIGl0IGhhcyBleGVjdXRlZCBhIHNldHVpZCgpLgogICovCi1pbnQg cHJvY19mZF9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQoraW50IHBy b2NfZmRfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIHN0cnVjdCBpbm9kZSAqaW5v ZGUsIGludCBtYXNrKQogewogCWludCBydiA9IGdlbmVyaWNfcGVybWlzc2lvbihpbm9kZSwgbWFz ayk7CiAJaWYgKHJ2ID09IDApCmRpZmYgLS1naXQgYS9mcy9wcm9jL2ZkLmggYi9mcy9wcm9jL2Zk LmgKaW5kZXggN2MwNDdmMjU2YWUyLi4yOWE3MGMxNmZkNjcgMTAwNjQ0Ci0tLSBhL2ZzL3Byb2Mv ZmQuaAorKysgYi9mcy9wcm9jL2ZkLmgKQEAgLTksNyArOSw3IEBAIGV4dGVybiBjb25zdCBzdHJ1 Y3QgaW5vZGVfb3BlcmF0aW9ucyBwcm9jX2ZkX2lub2RlX29wZXJhdGlvbnM7CiBleHRlcm4gY29u c3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBwcm9jX2ZkaW5mb19vcGVyYXRpb25zOwogZXh0ZXJu IGNvbnN0IHN0cnVjdCBpbm9kZV9vcGVyYXRpb25zIHByb2NfZmRpbmZvX2lub2RlX29wZXJhdGlv bnM7CiAKLWV4dGVybiBpbnQgcHJvY19mZF9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUs IGludCBtYXNrKTsKK2V4dGVybiBpbnQgcHJvY19mZF9wZXJtaXNzaW9uKHN0cnVjdCBkZW50cnkg KmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2spOwogCiBzdGF0aWMgaW5saW5l IGludCBwcm9jX2ZkKHN0cnVjdCBpbm9kZSAqaW5vZGUpCiB7CmRpZmYgLS1naXQgYS9mcy9wcm9j L3Byb2Nfc3lzY3RsLmMgYi9mcy9wcm9jL3Byb2Nfc3lzY3RsLmMKaW5kZXggNzEyOTA0NjNhMWQz Li5hZmNmMWU4MGFiOTcgMTAwNjQ0Ci0tLSBhL2ZzL3Byb2MvcHJvY19zeXNjdGwuYworKysgYi9m cy9wcm9jL3Byb2Nfc3lzY3RsLmMKQEAgLTY4MCw3ICs2ODAsNyBAQCBzdGF0aWMgaW50IHByb2Nf c3lzX3JlYWRkaXIoc3RydWN0IGZpbGUgKmZpbGUsIHN0cnVjdCBkaXJfY29udGV4dCAqY3R4KQog CXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IHByb2Nfc3lzX3Blcm1pc3Npb24oc3RydWN0IGlu b2RlICppbm9kZSwgaW50IG1hc2spCitzdGF0aWMgaW50IHByb2Nfc3lzX3Blcm1pc3Npb24oc3Ry dWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUgKmlub2RlLCBpbnQgbWFzaykKIHsKIAkv KgogCSAqIHN5c2N0bCBlbnRyaWVzIHRoYXQgYXJlIG5vdCB3cml0ZWFibGUsCmRpZmYgLS1naXQg YS9mcy9yZWlzZXJmcy94YXR0ci5jIGIvZnMvcmVpc2VyZnMveGF0dHIuYwppbmRleCA1Y2RmYmQ2 MzhiNWMuLmZiZmVkMzJjYjJkNyAxMDA2NDQKLS0tIGEvZnMvcmVpc2VyZnMveGF0dHIuYworKysg Yi9mcy9yZWlzZXJmcy94YXR0ci5jCkBAIC05MzAsNyArOTMwLDcgQEAgc3RhdGljIGludCB4YXR0 cl9tb3VudF9jaGVjayhzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnMpCiAJcmV0dXJuIDA7CiB9CiAKLWlu dCByZWlzZXJmc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKQoraW50 IHJlaXNlcmZzX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBpbnQgbWFzaykKIHsKIAkvKgogCSAqIFdlIGRvbid0IGRvIHBlcm1pc3Npb24gY2hl Y2tzIG9uIHRoZSBpbnRlcm5hbCBvYmplY3RzLgpkaWZmIC0tZ2l0IGEvZnMvcmVpc2VyZnMveGF0 dHIuaCBiL2ZzL3JlaXNlcmZzL3hhdHRyLmgKaW5kZXggZjU5NjI2YzVkMzNiLi44ZDI5ZWQ5YTE5 ZDQgMTAwNjQ0Ci0tLSBhL2ZzL3JlaXNlcmZzL3hhdHRyLmgKKysrIGIvZnMvcmVpc2VyZnMveGF0 dHIuaApAQCAtMTUsNyArMTUsNyBAQCBpbnQgcmVpc2VyZnNfeGF0dHJfaW5pdChzdHJ1Y3Qgc3Vw ZXJfYmxvY2sgKnNiLCBpbnQgbW91bnRfZmxhZ3MpOwogaW50IHJlaXNlcmZzX2xvb2t1cF9wcml2 cm9vdChzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTsKIGludCByZWlzZXJmc19kZWxldGVfeGF0dHJz KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwogaW50IHJlaXNlcmZzX2Nob3duX3hhdHRycyhzdHJ1Y3Qg aW5vZGUgKmlub2RlLCBzdHJ1Y3QgaWF0dHIgKmF0dHJzKTsKLWludCByZWlzZXJmc19wZXJtaXNz aW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGludCBtYXNrKTsKK2ludCByZWlzZXJmc19wZXJtaXNz aW9uKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgc3RydWN0IGlub2RlICppbm9kZSwgaW50IG1hc2sp OwogCiAjaWZkZWYgQ09ORklHX1JFSVNFUkZTX0ZTX1hBVFRSCiAjZGVmaW5lIGhhc194YXR0cl9k aXIoaW5vZGUpIChSRUlTRVJGU19JKGlub2RlKS0+aV9mbGFncyAmIGlfaGFzX3hhdHRyX2RpcikK ZGlmZiAtLWdpdCBhL2ZzL3VkZi9maWxlLmMgYi9mcy91ZGYvZmlsZS5jCmluZGV4IGMwMmEyN2Ex OWM2ZC4uMGRhNGFhYmUyNWQ2IDEwMDY0NAotLS0gYS9mcy91ZGYvZmlsZS5jCisrKyBiL2ZzL3Vk Zi9maWxlLmMKQEAgLTE4Miw3ICsxODIsNyBAQCBsb25nIHVkZl9pb2N0bChzdHJ1Y3QgZmlsZSAq ZmlscCwgdW5zaWduZWQgaW50IGNtZCwgdW5zaWduZWQgbG9uZyBhcmcpCiAJbG9uZyBvbGRfYmxv Y2ssIG5ld19ibG9jazsKIAlpbnQgcmVzdWx0ID0gLUVJTlZBTDsKIAotCWlmIChpbm9kZV9wZXJt aXNzaW9uKGlub2RlLCBNQVlfUkVBRCkgIT0gMCkgeworCWlmIChpbm9kZV9wZXJtaXNzaW9uKGZp bHAtPmZfcGF0aC5kZW50cnksIGlub2RlLCBNQVlfUkVBRCkgIT0gMCkgewogCQl1ZGZfZGVidWco Im5vIHBlcm1pc3Npb24gdG8gYWNjZXNzIGlub2RlICVsdVxuIiwgaW5vZGUtPmlfaW5vKTsKIAkJ cmVzdWx0ID0gLUVQRVJNOwogCQlnb3RvIG91dDsKZGlmZiAtLWdpdCBhL2ZzL3V0aW1lcy5jIGIv ZnMvdXRpbWVzLmMKaW5kZXggYWExMzhkNjQ1NjBhLi5iN2YxN2RiNGYwOGMgMTAwNjQ0Ci0tLSBh L2ZzL3V0aW1lcy5jCisrKyBiL2ZzL3V0aW1lcy5jCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyBp bnQgdXRpbWVzX2NvbW1vbihzdHJ1Y3QgcGF0aCAqcGF0aCwgc3RydWN0IHRpbWVzcGVjICp0aW1l cykKIAkJCWdvdG8gbW50X2Ryb3Bfd3JpdGVfYW5kX291dDsKIAogCQlpZiAoIWlub2RlX293bmVy X29yX2NhcGFibGUoaW5vZGUpKSB7Ci0JCQllcnJvciA9IGlub2RlX3Blcm1pc3Npb24oaW5vZGUs IE1BWV9XUklURSk7CisJCQllcnJvciA9IGlub2RlX3Blcm1pc3Npb24ocGF0aC0+ZGVudHJ5LCBp bm9kZSwgTUFZX1dSSVRFKTsKIAkJCWlmIChlcnJvcikKIAkJCQlnb3RvIG1udF9kcm9wX3dyaXRl X2FuZF9vdXQ7CiAJCX0KZGlmZiAtLWdpdCBhL2ZzL3hhdHRyLmMgYi9mcy94YXR0ci5jCmluZGV4 IDMzNzdkZmYxODQwNC4uMDA1NzVlMDMzNTQ5IDEwMDY0NAotLS0gYS9mcy94YXR0ci5jCisrKyBi L2ZzL3hhdHRyLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIGJlY2F1c2UgZGlmZmVyZW50IG5hbWVz cGFjZXMgaGF2ZSB2ZXJ5IGRpZmZlcmVudCBydWxlcy4KICAqLwogc3RhdGljIGludAoteGF0dHJf cGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKmlub2RlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbWFz aykKK3hhdHRyX3Blcm1pc3Npb24oc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBzdHJ1Y3QgaW5vZGUg Kmlub2RlLCBjb25zdCBjaGFyICpuYW1lLCBpbnQgbWFzaykKIHsKIAkvKgogCSAqIFdlIGNhbiBu ZXZlciBzZXQgb3IgcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBvbiBhIHJlYWQtb25seQpA QCAtNzAsNyArNzAsNyBAQCB4YXR0cl9wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqaW5vZGUsIGNv bnN0IGNoYXIgKm5hbWUsIGludCBtYXNrKQogCQkJcmV0dXJuIC1FUEVSTTsKIAl9CiAKLQlyZXR1 cm4gaW5vZGVfcGVybWlzc2lvbihpbm9kZSwgbWFzayk7CisJcmV0dXJuIGlub2RlX3Blcm1pc3Np b24oZGVudHJ5LCBpbm9kZSwgbWFzayk7CiB9CiAKIC8qKgpAQCAtMTI1LDcgKzEyNSw3IEBAIHZm c19zZXR4YXR0cihzdHJ1Y3QgZGVudHJ5ICpkZW50cnksIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0 IHZvaWQgKnZhbHVlLAogCXN0cnVjdCBpbm9kZSAqaW5vZGUgPSBkZW50cnktPmRfaW5vZGU7CiAJ aW50IGVycm9yOwogCi0JZXJyb3IgPSB4YXR0cl9wZXJtaXNzaW9uKGlub2RlLCBuYW1lLCBNQVlf V1JJVEUpOworCWVycm9yID0geGF0dHJfcGVybWlzc2lvbihkZW50cnksIGlub2RlLCBuYW1lLCBN QVlfV1JJVEUpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCkBAIC0xODUsNyArMTg1 LDcgQEAgdmZzX2dldHhhdHRyX2FsbG9jKHN0cnVjdCBkZW50cnkgKmRlbnRyeSwgY29uc3QgY2hh ciAqbmFtZSwgY2hhciAqKnhhdHRyX3ZhbHVlLAogCWNoYXIgKnZhbHVlID0gKnhhdHRyX3ZhbHVl OwogCWludCBlcnJvcjsKIAotCWVycm9yID0geGF0dHJfcGVybWlzc2lvbihpbm9kZSwgbmFtZSwg TUFZX1JFQUQpOworCWVycm9yID0geGF0dHJfcGVybWlzc2lvbihkZW50cnksIGlub2RlLCBuYW1l LCBNQVlfUkVBRCk7CiAJaWYgKGVycm9yKQogCQlyZXR1cm4gZXJyb3I7CiAKQEAgLTIzMyw3ICsy MzMsNyBAQCB2ZnNfZ2V0eGF0dHIoc3RydWN0IGRlbnRyeSAqZGVudHJ5LCBjb25zdCBjaGFyICpu YW1lLCB2b2lkICp2YWx1ZSwgc2l6ZV90IHNpemUpCiAJc3RydWN0IGlub2RlICppbm9kZSA9IGRl bnRyeS0+ZF9pbm9kZTsKIAlpbnQgZXJyb3I7CiAKLQllcnJvciA9IHhhdHRyX3Blcm1pc3Npb24o aW5vZGUsIG5hbWUsIE1BWV9SRUFEKTsKKwllcnJvciA9IHhhdHRyX3Blcm1pc3Npb24oZGVudHJ5 LCBpbm9kZSwgbmFtZSwgTUFZX1JFQUQpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwog CkBAIC0yOTIsNyArMjkyLDcgQEAgdmZzX3JlbW92ZXhhdHRyKHN0cnVjdCBkZW50cnkgKmRlbnRy eSwgY29uc3QgY2hhciAqbmFtZSkKIAlpZiAoIWlub2RlLT5pX29wLT5yZW1vdmV4YXR0cikKIAkJ cmV0dXJuIC1FT1BOT1RTVVBQOwogCi0JZXJyb3IgPSB4YXR0cl9wZXJtaXNzaW9uKGlub2RlLCBu YW1lLCBNQVlfV1JJVEUpOworCWVycm9yID0geGF0dHJfcGVybWlzc2lvbihkZW50cnksIGlub2Rl LCBuYW1lLCBNQVlfV1JJVEUpOwogCWlmIChlcnJvcikKIAkJcmV0dXJuIGVycm9yOwogCmRpZmYg LS1naXQgYS9pbmNsdWRlL2xpbnV4L2ZzLmggYi9pbmNsdWRlL2xpbnV4L2ZzLmgKaW5kZXggMDlm NTUzYzU5ODEzLi4yMzUwZDhiMTBjMTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvZnMuaAor KysgYi9pbmNsdWRlL2xpbnV4L2ZzLmgKQEAgLTE0NDksMTQgKzE0NDksMTQgQEAgZXh0ZXJuIGJv b2wgaW5vZGVfb3duZXJfb3JfY2FwYWJsZShjb25zdCBzdHJ1Y3QgaW5vZGUgKmlub2RlKTsKIC8q CiAgKiBWRlMgaGVscGVyIGZ1bmN0aW9ucy4uCiAgKi8KLWV4dGVybiBpbnQgdmZzX2NyZWF0ZShz dHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAqLCB1bW9kZV90LCBib29sKTsKLWV4dGVybiBp bnQgdmZzX21rZGlyKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3QpOwot ZXh0ZXJuIGludCB2ZnNfbWtub2Qoc3RydWN0IGlub2RlICosIHN0cnVjdCBkZW50cnkgKiwgdW1v ZGVfdCwgZGV2X3QpOwotZXh0ZXJuIGludCB2ZnNfc3ltbGluayhzdHJ1Y3QgaW5vZGUgKiwgc3Ry dWN0IGRlbnRyeSAqLCBjb25zdCBjaGFyICopOwotZXh0ZXJuIGludCB2ZnNfbGluayhzdHJ1Y3Qg ZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAq Kik7Ci1leHRlcm4gaW50IHZmc19ybWRpcihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq KTsKLWV4dGVybiBpbnQgdmZzX3VubGluayhzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGRlbnRyeSAq LCBzdHJ1Y3QgaW5vZGUgKiopOwotZXh0ZXJuIGludCB2ZnNfcmVuYW1lKHN0cnVjdCBpbm9kZSAq LCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVj dCBpbm9kZSAqKik7CitleHRlcm4gaW50IHZmc19jcmVhdGUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1 Y3QgZGVudHJ5ICosIHVtb2RlX3QsIGJvb2wpOworZXh0ZXJuIGludCB2ZnNfbWtkaXIoc3RydWN0 IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3QpOworZXh0ZXJuIGludCB2ZnNfbWtu b2Qoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHVtb2RlX3QsIGRldl90KTsKK2V4 dGVybiBpbnQgdmZzX3N5bWxpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICosIGNv bnN0IGNoYXIgKik7CitleHRlcm4gaW50IHZmc19saW5rKHN0cnVjdCBkZW50cnkgKiwgc3RydWN0 IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqKik7CitleHRlcm4gaW50 IHZmc19ybWRpcihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBkZW50cnkgKik7CitleHRlcm4gaW50 IHZmc191bmxpbmsoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9k ZSAqKik7CitleHRlcm4gaW50IHZmc19yZW5hbWUoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgZGVu dHJ5ICosIHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3QgaW5vZGUgKiop OwogCiAvKgogICogVkZTIGRlbnRyeSBoZWxwZXIgZnVuY3Rpb25zLgpAQCAtMTU1Miw3ICsxNTUy LDcgQEAgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyB7CiBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyB7 CiAJc3RydWN0IGRlbnRyeSAqICgqbG9va3VwKSAoc3RydWN0IGlub2RlICosc3RydWN0IGRlbnRy eSAqLCB1bnNpZ25lZCBpbnQpOwogCXZvaWQgKiAoKmZvbGxvd19saW5rKSAoc3RydWN0IGRlbnRy eSAqLCBzdHJ1Y3QgbmFtZWlkYXRhICopOwotCWludCAoKnBlcm1pc3Npb24pIChzdHJ1Y3QgaW5v ZGUgKiwgaW50KTsKKwlpbnQgKCpwZXJtaXNzaW9uKSAoc3RydWN0IGRlbnRyeSAqLCBzdHJ1Y3Qg aW5vZGUgKiwgaW50KTsKIAlzdHJ1Y3QgcG9zaXhfYWNsICogKCpnZXRfYWNsKShzdHJ1Y3QgaW5v ZGUgKiwgaW50KTsKIAogCWludCAoKnJlYWRsaW5rKSAoc3RydWN0IGRlbnRyeSAqLCBjaGFyIF9f dXNlciAqLGludCk7CkBAIC0yMjgwLDcgKzIyODAsNyBAQCBleHRlcm4gdm9pZCBlbWVyZ2VuY3lf cmVtb3VudCh2b2lkKTsKIGV4dGVybiBzZWN0b3JfdCBibWFwKHN0cnVjdCBpbm9kZSAqLCBzZWN0 b3JfdCk7CiAjZW5kaWYKIGV4dGVybiBpbnQgbm90aWZ5X2NoYW5nZShzdHJ1Y3QgZGVudHJ5ICos IHN0cnVjdCBpYXR0ciAqLCBzdHJ1Y3QgaW5vZGUgKiopOwotZXh0ZXJuIGludCBpbm9kZV9wZXJt aXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOworZXh0ZXJuIGludCBpbm9kZV9wZXJtaXNzaW9u KHN0cnVjdCBkZW50cnkgKiwgc3RydWN0IGlub2RlICosIGludCk7CiBleHRlcm4gaW50IGdlbmVy aWNfcGVybWlzc2lvbihzdHJ1Y3QgaW5vZGUgKiwgaW50KTsKIAogc3RhdGljIGlubGluZSBib29s IGV4ZWN1dGVfb2soc3RydWN0IGlub2RlICppbm9kZSkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGlu dXgvbmZzX2ZzLmggYi9pbmNsdWRlL2xpbnV4L25mc19mcy5oCmluZGV4IDBhZTU4MDc0ODBmNC4u ZjBlMDU2Y2JlMTllIDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L25mc19mcy5oCisrKyBiL2lu Y2x1ZGUvbGludXgvbmZzX2ZzLmgKQEAgLTM0NSw3ICszNDUsNyBAQCBleHRlcm4gaW50IG5mc19w b3N0X29wX3VwZGF0ZV9pbm9kZV9mb3JjZV93Y2Moc3RydWN0IGlub2RlICppbm9kZSwgc3RydWN0 IG5mc19mYQogZXh0ZXJuIGludCBuZnNfZ2V0YXR0cihzdHJ1Y3QgdmZzbW91bnQgKiwgc3RydWN0 IGRlbnRyeSAqLCBzdHJ1Y3Qga3N0YXQgKik7CiBleHRlcm4gdm9pZCBuZnNfYWNjZXNzX2FkZF9j YWNoZShzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IG5mc19hY2Nlc3NfZW50cnkgKik7CiBleHRlcm4g dm9pZCBuZnNfYWNjZXNzX3NldF9tYXNrKHN0cnVjdCBuZnNfYWNjZXNzX2VudHJ5ICosIHUzMik7 Ci1leHRlcm4gaW50IG5mc19wZXJtaXNzaW9uKHN0cnVjdCBpbm9kZSAqLCBpbnQpOworZXh0ZXJu IGludCBuZnNfcGVybWlzc2lvbihzdHJ1Y3QgZGVudHJ5ICosIHN0cnVjdCBpbm9kZSAqLCBpbnQp OwogZXh0ZXJuIGludCBuZnNfb3BlbihzdHJ1Y3QgaW5vZGUgKiwgc3RydWN0IGZpbGUgKik7CiBl eHRlcm4gaW50IG5mc19yZWxlYXNlKHN0cnVjdCBpbm9kZSAqLCBzdHJ1Y3QgZmlsZSAqKTsKIGV4 dGVybiBpbnQgbmZzX2F0dHJpYnV0ZV90aW1lb3V0KHN0cnVjdCBpbm9kZSAqaW5vZGUpOwpkaWZm IC0tZ2l0IGEvaXBjL21xdWV1ZS5jIGIvaXBjL21xdWV1ZS5jCmluZGV4IGNjZjFmOWZkMjYzYS4u YTFjNzUxYjU4NThlIDEwMDY0NAotLS0gYS9pcGMvbXF1ZXVlLmMKKysrIGIvaXBjL21xdWV1ZS5j CkBAIC03MjgsNyArNzI4LDcgQEAgc3RhdGljIGludCBtcV9hdHRyX29rKHN0cnVjdCBpcGNfbmFt ZXNwYWNlICppcGNfbnMsIHN0cnVjdCBtcV9hdHRyICphdHRyKQogLyoKICAqIEludm9rZWQgd2hl biBjcmVhdGluZyBhIG5ldyBxdWV1ZSB2aWEgc3lzX21xX29wZW4KICAqLwotc3RhdGljIHN0cnVj dCBmaWxlICpkb19jcmVhdGUoc3RydWN0IGlwY19uYW1lc3BhY2UgKmlwY19ucywgc3RydWN0IGlu b2RlICpkaXIsCitzdGF0aWMgc3RydWN0IGZpbGUgKmRvX2NyZWF0ZShzdHJ1Y3QgaXBjX25hbWVz cGFjZSAqaXBjX25zLCBzdHJ1Y3QgZGVudHJ5ICpwYXJlbnQsCiAJCQlzdHJ1Y3QgcGF0aCAqcGF0 aCwgaW50IG9mbGFnLCB1bW9kZV90IG1vZGUsCiAJCQlzdHJ1Y3QgbXFfYXR0ciAqYXR0cikKIHsK QEAgLTc1NCw3ICs3NTQsNyBAQCBzdGF0aWMgc3RydWN0IGZpbGUgKmRvX2NyZWF0ZShzdHJ1Y3Qg aXBjX25hbWVzcGFjZSAqaXBjX25zLCBzdHJ1Y3QgaW5vZGUgKmRpciwKIAl9CiAKIAltb2RlICY9 IH5jdXJyZW50X3VtYXNrKCk7Ci0JcmV0ID0gdmZzX2NyZWF0ZShkaXIsIHBhdGgtPmRlbnRyeSwg bW9kZSwgdHJ1ZSk7CisJcmV0ID0gdmZzX2NyZWF0ZShwYXJlbnQsIHBhdGgtPmRlbnRyeSwgbW9k ZSwgdHJ1ZSk7CiAJcGF0aC0+ZGVudHJ5LT5kX2ZzZGF0YSA9IE5VTEw7CiAJaWYgKHJldCkKIAkJ cmV0dXJuIEVSUl9QVFIocmV0KTsKQEAgLTc3MCw3ICs3NzAsNyBAQCBzdGF0aWMgc3RydWN0IGZp bGUgKmRvX29wZW4oc3RydWN0IHBhdGggKnBhdGgsIGludCBvZmxhZykKIAlpZiAoKG9mbGFnICYg T19BQ0NNT0RFKSA9PSAoT19SRFdSIHwgT19XUk9OTFkpKQogCQlyZXR1cm4gRVJSX1BUUigtRUlO VkFMKTsKIAlhY2MgPSBvZmxhZzJhY2Nbb2ZsYWcgJiBPX0FDQ01PREVdOwotCWlmIChpbm9kZV9w ZXJtaXNzaW9uKHBhdGgtPmRlbnRyeS0+ZF9pbm9kZSwgYWNjKSkKKwlpZiAoaW5vZGVfcGVybWlz c2lvbihwYXRoLT5kZW50cnksIHBhdGgtPmRlbnRyeS0+ZF9pbm9kZSwgYWNjKSkKIAkJcmV0dXJu IEVSUl9QVFIoLUVBQ0NFUyk7CiAJcmV0dXJuIGRlbnRyeV9vcGVuKHBhdGgsIG9mbGFnLCBjdXJy ZW50X2NyZWQoKSk7CiB9CkBAIC04MjQsNyArODI0LDcgQEAgU1lTQ0FMTF9ERUZJTkU0KG1xX29w ZW4sIGNvbnN0IGNoYXIgX191c2VyICosIHVfbmFtZSwgaW50LCBvZmxhZywgdW1vZGVfdCwgbW9k ZSwKIAkJCQlnb3RvIG91dDsKIAkJCX0KIAkJCWF1ZGl0X2lub2RlX3BhcmVudF9oaWRkZW4obmFt ZSwgcm9vdCk7Ci0JCQlmaWxwID0gZG9fY3JlYXRlKGlwY19ucywgcm9vdC0+ZF9pbm9kZSwKKwkJ CWZpbHAgPSBkb19jcmVhdGUoaXBjX25zLCByb290LAogCQkJCQkJJnBhdGgsIG9mbGFnLCBtb2Rl LAogCQkJCQkJdV9hdHRyID8gJmF0dHIgOiBOVUxMKTsKIAkJfQpAQCAtODg2LDcgKzg4Niw3IEBA IFNZU0NBTExfREVGSU5FMShtcV91bmxpbmssIGNvbnN0IGNoYXIgX191c2VyICosIHVfbmFtZSkK IAkJZXJyID0gLUVOT0VOVDsKIAl9IGVsc2UgewogCQlpaG9sZChpbm9kZSk7Ci0JCWVyciA9IHZm c191bmxpbmsoZGVudHJ5LT5kX3BhcmVudC0+ZF9pbm9kZSwgZGVudHJ5LCBOVUxMKTsKKwkJZXJy ID0gdmZzX3VubGluayhkZW50cnktPmRfcGFyZW50LCBkZW50cnksIE5VTEwpOwogCX0KIAlkcHV0 KGRlbnRyeSk7CiAKZGlmZiAtLWdpdCBhL2tlcm5lbC9zeXMuYyBiL2tlcm5lbC9zeXMuYwppbmRl eCBjMGE1OGJlNzgwYTQuLjczNDZmOTI0MDU3MSAxMDA2NDQKLS0tIGEva2VybmVsL3N5cy5jCisr KyBiL2tlcm5lbC9zeXMuYwpAQCAtMTY1MCw3ICsxNjUwLDcgQEAgc3RhdGljIGludCBwcmN0bF9z ZXRfbW1fZXhlX2ZpbGUoc3RydWN0IG1tX3N0cnVjdCAqbW0sIHVuc2lnbmVkIGludCBmZCkKIAkg ICAgZXhlLmZpbGUtPmZfcGF0aC5tbnQtPm1udF9mbGFncyAmIE1OVF9OT0VYRUMpCiAJCWdvdG8g ZXhpdDsKIAotCWVyciA9IGlub2RlX3Blcm1pc3Npb24oaW5vZGUsIE1BWV9FWEVDKTsKKwllcnIg PSBpbm9kZV9wZXJtaXNzaW9uKGV4ZS5maWxlLT5mX3BhdGguZGVudHJ5LCBpbm9kZSwgTUFZX0VY RUMpOwogCWlmIChlcnIpCiAJCWdvdG8gZXhpdDsKIApkaWZmIC0tZ2l0IGEvbW0vbWVtY29udHJv bC5jIGIvbW0vbWVtY29udHJvbC5jCmluZGV4IDUzMzg1Y2Q0ZTZmMC4uNTk3NjQ4MTYwZDczIDEw MDY0NAotLS0gYS9tbS9tZW1jb250cm9sLmMKKysrIGIvbW0vbWVtY29udHJvbC5jCkBAIC02MTQ3 LDcgKzYxNDcsNyBAQCBzdGF0aWMgaW50IG1lbWNnX3dyaXRlX2V2ZW50X2NvbnRyb2woc3RydWN0 IGNncm91cF9zdWJzeXNfc3RhdGUgKmNzcywKIAogCS8qIHRoZSBwcm9jZXNzIG5lZWQgcmVhZCBw ZXJtaXNzaW9uIG9uIGNvbnRyb2wgZmlsZSAqLwogCS8qIEFWOiBzaG91bGRuJ3Qgd2UgY2hlY2sg dGhhdCBpdCdzIGJlZW4gb3BlbmVkIGZvciByZWFkIGluc3RlYWQ/ICovCi0JcmV0ID0gaW5vZGVf cGVybWlzc2lvbihmaWxlX2lub2RlKGNmaWxlLmZpbGUpLCBNQVlfUkVBRCk7CisJcmV0ID0gaW5v ZGVfcGVybWlzc2lvbihjZmlsZS5maWxlLT5mX3BhdGguZGVudHJ5LCBmaWxlX2lub2RlKGNmaWxl LmZpbGUpLCBNQVlfUkVBRCk7CiAJaWYgKHJldCA8IDApCiAJCWdvdG8gb3V0X3B1dF9jZmlsZTsK IApkaWZmIC0tZ2l0IGEvbmV0L3VuaXgvYWZfdW5peC5jIGIvbmV0L3VuaXgvYWZfdW5peC5jCmlu ZGV4IDI5ZmM4YmVlOTcwMi4uOTUwOWZiZjFkM2RmIDEwMDY0NAotLS0gYS9uZXQvdW5peC9hZl91 bml4LmMKKysrIGIvbmV0L3VuaXgvYWZfdW5peC5jCkBAIC03ODUsNyArNzg1LDcgQEAgc3RhdGlj IHN0cnVjdCBzb2NrICp1bml4X2ZpbmRfb3RoZXIoc3RydWN0IG5ldCAqbmV0LAogCQlpZiAoZXJy KQogCQkJZ290byBmYWlsOwogCQlpbm9kZSA9IHBhdGguZGVudHJ5LT5kX2lub2RlOwotCQllcnIg PSBpbm9kZV9wZXJtaXNzaW9uKGlub2RlLCBNQVlfV1JJVEUpOworCQllcnIgPSBpbm9kZV9wZXJt aXNzaW9uKHBhdGguZGVudHJ5LCBpbm9kZSwgTUFZX1dSSVRFKTsKIAkJaWYgKGVycikKIAkJCWdv dG8gcHV0X2ZhaWw7CiAKQEAgLTg0NSw3ICs4NDUsNyBAQCBzdGF0aWMgaW50IHVuaXhfbWtub2Qo Y29uc3QgY2hhciAqc3VuX3BhdGgsIHVtb2RlX3QgbW9kZSwgc3RydWN0IHBhdGggKnJlcykKIAkg Ki8KIAllcnIgPSBzZWN1cml0eV9wYXRoX21rbm9kKCZwYXRoLCBkZW50cnksIG1vZGUsIDApOwog CWlmICghZXJyKSB7Ci0JCWVyciA9IHZmc19ta25vZChwYXRoLmRlbnRyeS0+ZF9pbm9kZSwgZGVu dHJ5LCBtb2RlLCAwKTsKKwkJZXJyID0gdmZzX21rbm9kKHBhdGguZGVudHJ5LCBkZW50cnksIG1v ZGUsIDApOwogCQlpZiAoIWVycikgewogCQkJcmVzLT5tbnQgPSBtbnRnZXQocGF0aC5tbnQpOwog CQkJcmVzLT5kZW50cnkgPSBkZ2V0KGRlbnRyeSk7CmRpZmYgLS1naXQgYS92aXJ0L2t2bS9hc3Np Z25lZC1kZXYuYyBiL3ZpcnQva3ZtL2Fzc2lnbmVkLWRldi5jCmluZGV4IDhkYjQzNzAxMDE2Zi4u YzEyMDI0NjkyYzBkIDEwMDY0NAotLS0gYS92aXJ0L2t2bS9hc3NpZ25lZC1kZXYuYworKysgYi92 aXJ0L2t2bS9hc3NpZ25lZC1kZXYuYwpAQCAtNjM5LDcgKzYzOSw3IEBAIHN0YXRpYyBpbnQgcHJv YmVfc3lzZnNfcGVybWlzc2lvbnMoc3RydWN0IHBjaV9kZXYgKmRldikKIAogCQlpbm9kZSA9IHBh dGguZGVudHJ5LT5kX2lub2RlOwogCi0JCXIgPSBpbm9kZV9wZXJtaXNzaW9uKGlub2RlLCBNQVlf UkVBRCB8IE1BWV9XUklURSB8IE1BWV9BQ0NFU1MpOworCQlyID0gaW5vZGVfcGVybWlzc2lvbihw YXRoLmRlbnRyeSwgaW5vZGUsIE1BWV9SRUFEIHwgTUFZX1dSSVRFIHwgTUFZX0FDQ0VTUyk7CiAJ CXBhdGhfcHV0KCZwYXRoKTsKIAkJaWYgKHIpCiAJCQlyZXR1cm4gcjsK --001a1136aa9836aca104f186db54-- -- 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/