From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: MIME-Version: 1.0 In-Reply-To: <2d5a2c101003040032g70434725ne3ad56042a080ed9@mail.gmail.com> References: <2d5a2c101003021309o34b63249ub5940f67112eab6a@mail.gmail.com> <20100303033233.GA20411@jh-x301> <2d5a2c101003030025v40b2ca4ma985e5a544d7e707@mail.gmail.com> <20100304035014.GA26956@jh-x301> <2d5a2c101003040032g70434725ne3ad56042a080ed9@mail.gmail.com> Date: Thu, 4 Mar 2010 16:29:32 +0200 Message-ID: <2d5a2c101003040629m39a89b32he5112bcf6e0d2047@mail.gmail.com> Subject: Re: [PATCH] Fix using invalid data from previous headset connection From: Luiz Augusto von Dentz To: Luiz Augusto von Dentz , linux-bluetooth@vger.kernel.org Content-Type: multipart/mixed; boundary=0016367fb6c17409200480fa6dab Sender: linux-bluetooth-owner@vger.kernel.org List-ID: --0016367fb6c17409200480fa6dab Content-Type: text/plain; charset=ISO-8859-1 Hi Johan, On Thu, Mar 4, 2010 at 10:32 AM, Luiz Augusto von Dentz wrote: > Hi Johan, > > On Thu, Mar 4, 2010 at 5:50 AM, Johan Hedberg wrote: >> Hi Luiz, >> >> On Wed, Mar 03, 2010, Luiz Augusto von Dentz wrote: >>> > First of all could we just call a "session" what the HFP spec calls it, >>> > i.e. a Service Level Connection, e.g. hs->slc? Or do you have some >>> > better suggestion? >>> >>> I suggested session since it represents the connection itself, even >>> the at comands buffer is in the new structure so I guess it doesn't >>> really represents slc, maybe connection is more suitable since there >>> could be only one. >> >> True, though "connection" is longer than "session" and we should try to >> use something that's short and clean. IMHO "slc" isn't totally bad even >> though the data is already used before the SLC establishment is fully >> completed. You could think of it as "data needed for SLC establishment >> and state handling" in which case the name would be kind of justified. > > Yep, I will update the name to slc. > >>> > Secondly you need to be careful when doing one-to-one replacements of >>> > existing hs->foo statements with hs->session->foo statements. What if >>> > hs->session is NULL? Are there some valid use cases when a function that >>> > can access hs->session could get called while hs->session is NULL? >>> >>> Afaik no there aren't, the session represent the lifetime of the >>> rfcomm connection and the only thing that are accessible are the gains >>> via dbus interface but we protect them by checking the state and if by >>> some reason we don't have a session then there is probably a bug so >>> checking hs->session would probably hide those. >> >> There's also the telephony driver that can call into headset.c. However, >> I suppose that case could also be considered a bug in the driver if it >> does these calls while there's no connection. It's probably still a good >> idea to check if the current drivers (particularly telephony-maemo.c) do >> anything like this. > > I will give telephony-maemo a try, so far I didn't experience any problem. Attached is a new version no using slc instead of session, so far no problem with any telephony driver. -- Luiz Augusto von Dentz Computer Engineer --0016367fb6c17409200480fa6dab Content-Type: text/x-patch; charset=US-ASCII; name="0010-Fix-using-invalid-data-from-previous-headset-connect.patch" Content-Disposition: attachment; filename="0010-Fix-using-invalid-data-from-previous-headset-connect.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g6dmvpqe0 RnJvbSA4NDFjMjlkZmFkZDVlN2M4ZjY2ZTgyNjY5YmI2YzlhNGYxNzE0Y2M3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBMdWl6IEF1Z3VzdG8gVm9uIERlbnR6IDxsdWl6LmRlbnR6LXZv bkBub2tpYS5jb20+CkRhdGU6IFRodSwgNCBNYXIgMjAxMCAxMDo0NToxMyArMDIwMApTdWJqZWN0 OiBbUEFUQ0ggMTAvMTFdIEZpeCB1c2luZyBpbnZhbGlkIGRhdGEgZnJvbSBwcmV2aW91cyBoZWFk c2V0IGNvbm5lY3Rpb24KCkRhdGEgZnJvbSBwcmV2aW91cyBjb25uZWN0aW9uIHNob3VsZCBiZSBy ZXNldCBvbmNlIGRpc2Nvbm5lY3RlZCwgdG8gZml4CnRoaXMgYSBuZXcgc3RydWN0dXJlIGlzIGlu dHJvZHVjZWQgY2FsbGVkIGhlYWRzZXRfc2xjIHdoaWNoIHJlcHJlc2VudHMKdGhlIFNlcnZpY2Ug TGV2ZWwgQ29ubmVjdGlvbiBhbmQgaG9sZCB0aGUgY29ubmVjdGlvbiBkYXRhIHdoaWNoIGlzIGZy ZWVkCndoZW4gZGlzY29ubmVjdGVkLgotLS0KIGF1ZGlvL2hlYWRzZXQuYyB8ICAxODcgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxl cyBjaGFuZ2VkLCAxMDYgaW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvYXVkaW8vaGVhZHNldC5jIGIvYXVkaW8vaGVhZHNldC5jCmluZGV4IDcwMDJhM2EuLjE1ZDM2 NzIgMTAwNjQ0Ci0tLSBhL2F1ZGlvL2hlYWRzZXQuYworKysgYi9hdWRpby9oZWFkc2V0LmMKQEAg LTEyOCw2ICsxMjgsMjUgQEAgc3RydWN0IHBlbmRpbmdfY29ubmVjdCB7CiAJdWludDE2X3Qgc3Zj bGFzczsKIH07CiAKK3N0cnVjdCBoZWFkc2V0X3NsYyB7CisJY2hhciBidWZbQlVGX1NJWkVdOwor CWludCBkYXRhX3N0YXJ0OworCWludCBkYXRhX2xlbmd0aDsKKworCWdib29sZWFuIGNsaV9hY3Rp dmU7CisJZ2Jvb2xlYW4gY21lX2VuYWJsZWQ7CisJZ2Jvb2xlYW4gY3dhX2VuYWJsZWQ7CisJZ2Jv b2xlYW4gcGVuZGluZ19yaW5nOworCWdib29sZWFuIGluYmFuZF9yaW5nOworCWdib29sZWFuIG5y ZWM7CisJZ2Jvb2xlYW4gbnJlY19yZXE7CisKKwlpbnQgc3BfZ2FpbjsKKwlpbnQgbWljX2dhaW47 CisKKwl1bnNpZ25lZCBpbnQgaGZfZmVhdHVyZXM7Cit9OworCiBzdHJ1Y3QgaGVhZHNldCB7CiAJ dWludDMyX3QgaHNwX2hhbmRsZTsKIAl1aW50MzJfdCBoZnBfaGFuZGxlOwpAQCAtMTQ0LDI4ICsx NjMsMTQgQEAgc3RydWN0IGhlYWRzZXQgewogCiAJZ3VpbnQgZGNfdGltZXI7CiAKLQljaGFyIGJ1 ZltCVUZfU0laRV07Ci0JaW50IGRhdGFfc3RhcnQ7Ci0JaW50IGRhdGFfbGVuZ3RoOwotCiAJZ2Jv b2xlYW4gaGZwX2FjdGl2ZTsKIAlnYm9vbGVhbiBzZWFyY2hfaGZwOwotCWdib29sZWFuIGNsaV9h Y3RpdmU7Ci0JZ2Jvb2xlYW4gY21lX2VuYWJsZWQ7Ci0JZ2Jvb2xlYW4gY3dhX2VuYWJsZWQ7Ci0J Z2Jvb2xlYW4gcGVuZGluZ19yaW5nOwotCWdib29sZWFuIGluYmFuZF9yaW5nOwotCWdib29sZWFu IG5yZWM7Ci0JZ2Jvb2xlYW4gbnJlY19yZXE7CiAKIAloZWFkc2V0X3N0YXRlX3Qgc3RhdGU7CiAJ c3RydWN0IHBlbmRpbmdfY29ubmVjdCAqcGVuZGluZzsKIAotCWludCBzcF9nYWluOwotCWludCBt aWNfZ2FpbjsKLQotCXVuc2lnbmVkIGludCBoZl9mZWF0dXJlczsKIAloZWFkc2V0X2xvY2tfdCBs b2NrOworCXN0cnVjdCBoZWFkc2V0X3NsYyAqc2xjOwogfTsKIAogc3RydWN0IGV2ZW50IHsKQEAg LTMzOCwxNCArMzQzLDE1IEBAIHN0YXRpYyBpbnQgaGVhZHNldF9zZW5kKHN0cnVjdCBoZWFkc2V0 ICpocywgY2hhciAqZm9ybWF0LCAuLi4pCiBzdGF0aWMgaW50IHN1cHBvcnRlZF9mZWF0dXJlcyhz dHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3Qg aGVhZHNldCAqaHMgPSBkZXZpY2UtPmhlYWRzZXQ7CisJc3RydWN0IGhlYWRzZXRfc2xjICpzbGMg PSBocy0+c2xjOwogCWludCBlcnI7CiAKIAlpZiAoc3RybGVuKGJ1ZikgPCA5KQogCQlyZXR1cm4g LUVJTlZBTDsKIAotCWhzLT5oZl9mZWF0dXJlcyA9IHN0cnRvdWwoJmJ1Zls4XSwgTlVMTCwgMTAp OworCXNsYy0+aGZfZmVhdHVyZXMgPSBzdHJ0b3VsKCZidWZbOF0sIE5VTEwsIDEwKTsKIAotCXBy aW50X2hmX2ZlYXR1cmVzKGhzLT5oZl9mZWF0dXJlcyk7CisJcHJpbnRfaGZfZmVhdHVyZXMoc2xj LT5oZl9mZWF0dXJlcyk7CiAKIAllcnIgPSBoZWFkc2V0X3NlbmQoaHMsICJcclxuK0JSU0Y6ICV1 XHJcbiIsIGFnLmZlYXR1cmVzKTsKIAlpZiAoZXJyIDwgMCkKQEAgLTUzNCwxMCArNTQwLDEyIEBA IHN0YXRpYyB2b2lkIHNlbmRfZm9yZWFjaF9oZWFkc2V0KEdTTGlzdCAqZGV2aWNlcywKIAogc3Rh dGljIGludCBjbGlfY21wKHN0cnVjdCBoZWFkc2V0ICpocykKIHsKKwlzdHJ1Y3QgaGVhZHNldF9z bGMgKnNsYyA9IGhzLT5zbGM7CisKIAlpZiAoIWhzLT5oZnBfYWN0aXZlKQogCQlyZXR1cm4gLTE7 CiAKLQlpZiAoaHMtPmNsaV9hY3RpdmUpCisJaWYgKHNsYy0+Y2xpX2FjdGl2ZSkKIAkJcmV0dXJu IDA7CiAJZWxzZQogCQlyZXR1cm4gLTE7CkBAIC01NjAsNiArNTY4LDcgQEAgc3RhdGljIHZvaWQg c2NvX2Nvbm5lY3RfY2IoR0lPQ2hhbm5lbCAqY2hhbiwgR0Vycm9yICplcnIsIGdwb2ludGVyIHVz ZXJfZGF0YSkKIAlpbnQgc2s7CiAJc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2ID0gdXNlcl9kYXRh OwogCXN0cnVjdCBoZWFkc2V0ICpocyA9IGRldi0+aGVhZHNldDsKKwlzdHJ1Y3QgaGVhZHNldF9z bGMgKnNsYyA9IGhzLT5zbGM7CiAJc3RydWN0IHBlbmRpbmdfY29ubmVjdCAqcCA9IGhzLT5wZW5k aW5nOwogCiAJaWYgKGVycikgewpAQCAtNTk5LDEyICs2MDgsMTIgQEAgc3RhdGljIHZvaWQgc2Nv X2Nvbm5lY3RfY2IoR0lPQ2hhbm5lbCAqY2hhbiwgR0Vycm9yICplcnIsIGdwb2ludGVyIHVzZXJf ZGF0YSkKIAogCWhlYWRzZXRfc2V0X3N0YXRlKGRldiwgSEVBRFNFVF9TVEFURV9QTEFZSU5HKTsK IAotCWlmIChocy0+cGVuZGluZ19yaW5nKSB7CisJaWYgKHNsYy0+cGVuZGluZ19yaW5nKSB7CiAJ CXJpbmdfdGltZXJfY2IoTlVMTCk7CiAJCWFnLnJpbmdfdGltZXIgPSBnX3RpbWVvdXRfYWRkX3Nl Y29uZHMoUklOR19JTlRFUlZBTCwKIAkJCQkJCXJpbmdfdGltZXJfY2IsCiAJCQkJCQlOVUxMKTsK LQkJaHMtPnBlbmRpbmdfcmluZyA9IEZBTFNFOworCQlzbGMtPnBlbmRpbmdfcmluZyA9IEZBTFNF OwogCX0KIH0KIApAQCAtNjg0LDkgKzY5MywxMCBAQCBzdGF0aWMgdm9pZCBoZnBfc2xjX2NvbXBs ZXRlKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldikKIHN0YXRpYyBpbnQgdGVsZXBob255X2dlbmVy aWNfcnNwKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldmljZSwgY21lX2Vycm9yX3QgZXJyKQogewog CXN0cnVjdCBoZWFkc2V0ICpocyA9IGRldmljZS0+aGVhZHNldDsKKwlzdHJ1Y3QgaGVhZHNldF9z bGMgKnNsYyA9IGhzLT5zbGM7CiAKIAlpZiAoZXJyICE9IENNRV9FUlJPUl9OT05FKSB7Ci0JCWlm IChocy0+Y21lX2VuYWJsZWQpCisJCWlmIChzbGMtPmNtZV9lbmFibGVkKQogCQkJcmV0dXJuIGhl YWRzZXRfc2VuZChocywgIlxyXG4rQ01FIEVSUk9SOiAlZFxyXG4iLCBlcnIpOwogCQllbHNlCiAJ CQlyZXR1cm4gaGVhZHNldF9zZW5kKGhzLCAiXHJcbkVSUk9SXHJcbiIpOwpAQCAtNjk5LDYgKzcw OSw3IEBAIGludCB0ZWxlcGhvbnlfZXZlbnRfcmVwb3J0aW5nX3JzcCh2b2lkICp0ZWxlcGhvbnlf ZGV2aWNlLCBjbWVfZXJyb3JfdCBlcnIpCiB7CiAJc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2aWNl ID0gdGVsZXBob255X2RldmljZTsKIAlzdHJ1Y3QgaGVhZHNldCAqaHMgPSBkZXZpY2UtPmhlYWRz ZXQ7CisJc3RydWN0IGhlYWRzZXRfc2xjICpzbGMgPSBocy0+c2xjOwogCWludCByZXQ7CiAKIAlp ZiAoZXJyICE9IENNRV9FUlJPUl9OT05FKQpAQCAtNzExLDcgKzcyMiw3IEBAIGludCB0ZWxlcGhv bnlfZXZlbnRfcmVwb3J0aW5nX3JzcCh2b2lkICp0ZWxlcGhvbnlfZGV2aWNlLCBjbWVfZXJyb3Jf dCBlcnIpCiAJaWYgKGhzLT5zdGF0ZSAhPSBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RJTkcpCiAJCXJl dHVybiAwOwogCi0JaWYgKGhzLT5oZl9mZWF0dXJlcyAmIEhGX0ZFQVRVUkVfQ0FMTF9XQUlUSU5H X0FORF8zV0FZICYmCisJaWYgKHNsYy0+aGZfZmVhdHVyZXMgJiBIRl9GRUFUVVJFX0NBTExfV0FJ VElOR19BTkRfM1dBWSAmJgogCQkJYWcuZmVhdHVyZXMgJiBBR19GRUFUVVJFX1RIUkVFX1dBWV9D QUxMSU5HKQogCQlyZXR1cm4gMDsKIApAQCAtODY1LDExICs4NzYsMTIgQEAgc3RhdGljIGludCB0 ZXJtaW5hdGVfY2FsbChzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmJ1 ZikKIHN0YXRpYyBpbnQgY2xpX25vdGlmaWNhdGlvbihzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXZp Y2UsIGNvbnN0IGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgaGVhZHNldCAqaHMgPSBkZXZpY2UtPmhl YWRzZXQ7CisJc3RydWN0IGhlYWRzZXRfc2xjICpzbGMgPSBocy0+c2xjOwogCiAJaWYgKHN0cmxl bihidWYpIDwgOSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlocy0+Y2xpX2FjdGl2ZSA9IGJ1Zls4 XSA9PSAnMScgPyBUUlVFIDogRkFMU0U7CisJc2xjLT5jbGlfYWN0aXZlID0gYnVmWzhdID09ICcx JyA/IFRSVUUgOiBGQUxTRTsKIAogCXJldHVybiBoZWFkc2V0X3NlbmQoaHMsICJcclxuT0tcclxu Iik7CiB9CkBAIC05MzcsNiArOTQ5LDcgQEAgc3RhdGljIGludCBkaWFsX251bWJlcihzdHJ1Y3Qg YXVkaW9fZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmJ1ZikKIHN0YXRpYyBpbnQgc2lnbmFs X2dhaW5fc2V0dGluZyhzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXZpY2UsIGNvbnN0IGNoYXIgKmJ1 ZikKIHsKIAlzdHJ1Y3QgaGVhZHNldCAqaHMgPSBkZXZpY2UtPmhlYWRzZXQ7CisJc3RydWN0IGhl YWRzZXRfc2xjICpzbGMgPSBocy0+c2xjOwogCWNvbnN0IGNoYXIgKnByb3BlcnR5OwogCWNvbnN0 IGNoYXIgKm5hbWU7CiAJZGJ1c191aW50MTZfdCBnYWluOwpAQCAtOTU1LDE4ICs5NjgsMTggQEAg c3RhdGljIGludCBzaWduYWxfZ2Fpbl9zZXR0aW5nKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldmlj ZSwgY29uc3QgY2hhciAqYnVmKQogCiAJc3dpdGNoIChidWZbNV0pIHsKIAljYXNlIEhFQURTRVRf R0FJTl9TUEVBS0VSOgotCQlpZiAoaHMtPnNwX2dhaW4gPT0gZ2FpbikKKwkJaWYgKHNsYy0+c3Bf Z2FpbiA9PSBnYWluKQogCQkJZ290byBvazsKIAkJbmFtZSA9ICJTcGVha2VyR2FpbkNoYW5nZWQi OwogCQlwcm9wZXJ0eSA9ICJTcGVha2VyR2FpbiI7Ci0JCWhzLT5zcF9nYWluID0gZ2FpbjsKKwkJ c2xjLT5zcF9nYWluID0gZ2FpbjsKIAkJYnJlYWs7CiAJY2FzZSBIRUFEU0VUX0dBSU5fTUlDUk9Q SE9ORToKLQkJaWYgKGhzLT5taWNfZ2FpbiA9PSBnYWluKQorCQlpZiAoc2xjLT5taWNfZ2FpbiA9 PSBnYWluKQogCQkJZ290byBvazsKIAkJbmFtZSA9ICJNaWNyb3Bob25lR2FpbkNoYW5nZWQiOwog CQlwcm9wZXJ0eSA9ICJNaWNyb3Bob25lR2FpbiI7Ci0JCWhzLT5taWNfZ2FpbiA9IGdhaW47CisJ CXNsYy0+bWljX2dhaW4gPSBnYWluOwogCQlicmVhazsKIAlkZWZhdWx0OgogCQllcnJvcigiVW5r bm93biBnYWluIHNldHRpbmciKTsKQEAgLTEwMzAsMTUgKzEwNDMsMTYgQEAgc3RhdGljIGludCBs aXN0X2N1cnJlbnRfY2FsbHMoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFy ICpidWYpCiBzdGF0aWMgaW50IGV4dGVuZGVkX2Vycm9ycyhzdHJ1Y3QgYXVkaW9fZGV2aWNlICpk ZXZpY2UsIGNvbnN0IGNoYXIgKmJ1ZikKIHsKIAlzdHJ1Y3QgaGVhZHNldCAqaHMgPSBkZXZpY2Ut PmhlYWRzZXQ7CisJc3RydWN0IGhlYWRzZXRfc2xjICpzbGMgPSBocy0+c2xjOwogCiAJaWYgKHN0 cmxlbihidWYpIDwgOSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKIAlpZiAoYnVmWzhdID09ICcxJykg ewotCQlocy0+Y21lX2VuYWJsZWQgPSBUUlVFOworCQlzbGMtPmNtZV9lbmFibGVkID0gVFJVRTsK IAkJZGVidWcoIkNNRSBlcnJvcnMgZW5hYmxlZCBmb3IgaGVhZHNldCAlcCIsIGhzKTsKIAl9IGVs c2UgewotCQlocy0+Y21lX2VuYWJsZWQgPSBGQUxTRTsKKwkJc2xjLT5jbWVfZW5hYmxlZCA9IEZB TFNFOwogCQlkZWJ1ZygiQ01FIGVycm9ycyBkaXNhYmxlZCBmb3IgaGVhZHNldCAlcCIsIGhzKTsK IAl9CiAKQEAgLTEwNDgsMTUgKzEwNjIsMTYgQEAgc3RhdGljIGludCBleHRlbmRlZF9lcnJvcnMo c3RydWN0IGF1ZGlvX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpidWYpCiBzdGF0aWMgaW50 IGNhbGxfd2FpdGluZ19ub3RpZnkoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2aWNlLCBjb25zdCBj aGFyICpidWYpCiB7CiAJc3RydWN0IGhlYWRzZXQgKmhzID0gZGV2aWNlLT5oZWFkc2V0OworCXN0 cnVjdCBoZWFkc2V0X3NsYyAqc2xjID0gaHMtPnNsYzsKIAogCWlmIChzdHJsZW4oYnVmKSA8IDkp CiAJCXJldHVybiAtRUlOVkFMOwogCiAJaWYgKGJ1Zls4XSA9PSAnMScpIHsKLQkJaHMtPmN3YV9l bmFibGVkID0gVFJVRTsKKwkJc2xjLT5jd2FfZW5hYmxlZCA9IFRSVUU7CiAJCWRlYnVnKCJDYWxs IHdhaXRpbmcgbm90aWZpY2F0aW9uIGVuYWJsZWQgZm9yIGhlYWRzZXQgJXAiLCBocyk7CiAJfSBl bHNlIHsKLQkJaHMtPmN3YV9lbmFibGVkID0gRkFMU0U7CisJCXNsYy0+Y3dhX2VuYWJsZWQgPSBG QUxTRTsKIAkJZGVidWcoIkNhbGwgd2FpdGluZyBub3RpZmljYXRpb24gZGlzYWJsZWQgZm9yIGhl YWRzZXQgJXAiLCBocyk7CiAJfQogCkBAIC0xMDc3LDkgKzEwOTIsMTAgQEAgaW50IHRlbGVwaG9u eV9ucl9hbmRfZWNfcnNwKHZvaWQgKnRlbGVwaG9ueV9kZXZpY2UsIGNtZV9lcnJvcl90IGVycikK IHsKIAlzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXZpY2UgPSB0ZWxlcGhvbnlfZGV2aWNlOwogCXN0 cnVjdCBoZWFkc2V0ICpocyA9IGRldmljZS0+aGVhZHNldDsKKwlzdHJ1Y3QgaGVhZHNldF9zbGMg KnNsYyA9IGhzLT5zbGM7CiAKIAlpZiAoZXJyID09IENNRV9FUlJPUl9OT05FKQotCQlocy0+bnJl YyA9IGhzLT5ucmVjX3JlcTsKKwkJc2xjLT5ucmVjID0gaHMtPnNsYy0+bnJlY19yZXE7CiAKIAly ZXR1cm4gdGVsZXBob255X2dlbmVyaWNfcnNwKHRlbGVwaG9ueV9kZXZpY2UsIGVycik7CiB9CkBA IC0xMTIzLDE2ICsxMTM5LDE3IEBAIHN0YXRpYyBpbnQgb3BlcmF0b3Jfc2VsZWN0aW9uKHN0cnVj dCBhdWRpb19kZXZpY2UgKmRldmljZSwgY29uc3QgY2hhciAqYnVmKQogc3RhdGljIGludCBucl9h bmRfZWMoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpidWYpCiB7CiAJ c3RydWN0IGhlYWRzZXQgKmhzID0gZGV2aWNlLT5oZWFkc2V0OworCXN0cnVjdCBoZWFkc2V0X3Ns YyAqc2xjID0gaHMtPnNsYzsKIAogCWlmIChzdHJsZW4oYnVmKSA8IDkpCiAJCXJldHVybiAtRUlO VkFMOwogCiAJaWYgKGJ1Zls4XSA9PSAnMCcpCi0JCWhzLT5ucmVjX3JlcSA9IEZBTFNFOworCQlz bGMtPm5yZWNfcmVxID0gRkFMU0U7CiAJZWxzZQotCQlocy0+bnJlY19yZXEgPSBUUlVFOworCQlz bGMtPm5yZWNfcmVxID0gVFJVRTsKIAotCXRlbGVwaG9ueV9ucl9hbmRfZWNfcmVxKGRldmljZSwg aHMtPm5yZWNfcmVxKTsKKwl0ZWxlcGhvbnlfbnJfYW5kX2VjX3JlcShkZXZpY2UsIHNsYy0+bnJl Y19yZXEpOwogCiAJcmV0dXJuIDA7CiB9CkBAIC0xMjE0LDYgKzEyMzEsNyBAQCBzdGF0aWMgZ2Jv b2xlYW4gcmZjb21tX2lvX2NiKEdJT0NoYW5uZWwgKmNoYW4sIEdJT0NvbmRpdGlvbiBjb25kLAog CQkJCXN0cnVjdCBhdWRpb19kZXZpY2UgKmRldmljZSkKIHsKIAlzdHJ1Y3QgaGVhZHNldCAqaHM7 CisJc3RydWN0IGhlYWRzZXRfc2xjICpzbGM7CiAJdW5zaWduZWQgY2hhciBidWZbQlVGX1NJWkVd OwogCWdzaXplIGJ5dGVzX3JlYWQgPSAwOwogCWdzaXplIGZyZWVfc3BhY2U7CkBAIC0xMjIyLDYg KzEyNDAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gcmZjb21tX2lvX2NiKEdJT0NoYW5uZWwgKmNoYW4s IEdJT0NvbmRpdGlvbiBjb25kLAogCQlyZXR1cm4gRkFMU0U7CiAKIAlocyA9IGRldmljZS0+aGVh ZHNldDsKKwlzbGMgPSBocy0+c2xjOwogCiAJaWYgKGNvbmQgJiAoR19JT19FUlIgfCBHX0lPX0hV UCkpIHsKIAkJZGVidWcoIkVSUiBvciBIVVAgb24gUkZDT01NIHNvY2tldCIpOwpAQCAtMTIzMiw3 ICsxMjUxLDggQEAgc3RhdGljIGdib29sZWFuIHJmY29tbV9pb19jYihHSU9DaGFubmVsICpjaGFu LCBHSU9Db25kaXRpb24gY29uZCwKIAkJCQkmYnl0ZXNfcmVhZCkgIT0gR19JT19FUlJPUl9OT05F KQogCQlyZXR1cm4gVFJVRTsKIAotCWZyZWVfc3BhY2UgPSBzaXplb2YoaHMtPmJ1ZikgLSBocy0+ ZGF0YV9zdGFydCAtIGhzLT5kYXRhX2xlbmd0aCAtIDE7CisJZnJlZV9zcGFjZSA9IHNpemVvZihz bGMtPmJ1ZikgLSBzbGMtPmRhdGFfc3RhcnQgLQorCQkJc2xjLT5kYXRhX2xlbmd0aCAtIDE7CiAK IAlpZiAoZnJlZV9zcGFjZSA8IGJ5dGVzX3JlYWQpIHsKIAkJLyogVmVyeSBsaWtlbHkgdGhhdCB0 aGUgSFMgaXMgc2VuZGluZyB1cyBnYXJiYWdlIHNvCkBAIC0xMjQxLDQ1ICsxMjYxLDQ1IEBAIHN0 YXRpYyBnYm9vbGVhbiByZmNvbW1faW9fY2IoR0lPQ2hhbm5lbCAqY2hhbiwgR0lPQ29uZGl0aW9u IGNvbmQsCiAJCWdvdG8gZmFpbGVkOwogCX0KIAotCW1lbWNweSgmaHMtPmJ1Zltocy0+ZGF0YV9z dGFydF0sIGJ1ZiwgYnl0ZXNfcmVhZCk7Ci0JaHMtPmRhdGFfbGVuZ3RoICs9IGJ5dGVzX3JlYWQ7 CisJbWVtY3B5KCZzbGMtPmJ1ZltzbGMtPmRhdGFfc3RhcnRdLCBidWYsIGJ5dGVzX3JlYWQpOwor CXNsYy0+ZGF0YV9sZW5ndGggKz0gYnl0ZXNfcmVhZDsKIAogCS8qIE1ha2Ugc3VyZSB0aGUgZGF0 YSBpcyBudWxsIHRlcm1pbmF0ZWQgc28gd2UgY2FuIHVzZSBzdHJpbmcKIAkgKiBmdW5jdGlvbnMg Ki8KLQlocy0+YnVmW2hzLT5kYXRhX3N0YXJ0ICsgaHMtPmRhdGFfbGVuZ3RoXSA9ICdcMCc7CisJ c2xjLT5idWZbc2xjLT5kYXRhX3N0YXJ0ICsgc2xjLT5kYXRhX2xlbmd0aF0gPSAnXDAnOwogCi0J d2hpbGUgKGhzLT5kYXRhX2xlbmd0aCA+IDApIHsKKwl3aGlsZSAoc2xjLT5kYXRhX2xlbmd0aCA+ IDApIHsKIAkJY2hhciAqY3I7CiAJCWludCBlcnI7CiAJCW9mZl90IGNtZF9sZW47CiAKLQkJY3Ig PSBzdHJjaHIoJmhzLT5idWZbaHMtPmRhdGFfc3RhcnRdLCAnXHInKTsKKwkJY3IgPSBzdHJjaHIo JnNsYy0+YnVmW3NsYy0+ZGF0YV9zdGFydF0sICdccicpOwogCQlpZiAoIWNyKQogCQkJYnJlYWs7 CiAKLQkJY21kX2xlbiA9IDEgKyAob2ZmX3QpIGNyIC0gKG9mZl90KSAmaHMtPmJ1Zltocy0+ZGF0 YV9zdGFydF07CisJCWNtZF9sZW4gPSAxICsgKG9mZl90KSBjciAtIChvZmZfdCkgJnNsYy0+YnVm W3NsYy0+ZGF0YV9zdGFydF07CiAJCSpjciA9ICdcMCc7CiAKIAkJaWYgKGNtZF9sZW4gPiAxKQot CQkJZXJyID0gaGFuZGxlX2V2ZW50KGRldmljZSwgJmhzLT5idWZbaHMtPmRhdGFfc3RhcnRdKTsK KwkJCWVyciA9IGhhbmRsZV9ldmVudChkZXZpY2UsICZzbGMtPmJ1ZltzbGMtPmRhdGFfc3RhcnRd KTsKIAkJZWxzZQogCQkJLyogU2lsZW50bHkgc2tpcCBlbXB0eSBjb21tYW5kcyAqLwogCQkJZXJy ID0gMDsKIAogCQlpZiAoZXJyID09IC1FSU5WQUwpIHsKIAkJCWVycm9yKCJCYWRseSBmb3JtYXRl ZCBvciB1bnJlY29nbml6ZWQgY29tbWFuZDogJXMiLAotCQkJCQkmaHMtPmJ1Zltocy0+ZGF0YV9z dGFydF0pOworCQkJCQkmc2xjLT5idWZbc2xjLT5kYXRhX3N0YXJ0XSk7CiAJCQllcnIgPSBoZWFk c2V0X3NlbmQoaHMsICJcclxuRVJST1JcclxuIik7CiAJCX0gZWxzZSBpZiAoZXJyIDwgMCkKIAkJ CWVycm9yKCJFcnJvciBoYW5kbGluZyBjb21tYW5kICVzOiAlcyAoJWQpIiwKLQkJCQkJCSZocy0+ YnVmW2hzLT5kYXRhX3N0YXJ0XSwKKwkJCQkJCSZzbGMtPmJ1ZltzbGMtPmRhdGFfc3RhcnRdLAog CQkJCQkJc3RyZXJyb3IoLWVyciksIC1lcnIpOwogCi0JCWhzLT5kYXRhX3N0YXJ0ICs9IGNtZF9s ZW47Ci0JCWhzLT5kYXRhX2xlbmd0aCAtPSBjbWRfbGVuOworCQlzbGMtPmRhdGFfc3RhcnQgKz0g Y21kX2xlbjsKKwkJc2xjLT5kYXRhX2xlbmd0aCAtPSBjbWRfbGVuOwogCi0JCWlmICghaHMtPmRh dGFfbGVuZ3RoKQotCQkJaHMtPmRhdGFfc3RhcnQgPSAwOworCQlpZiAoIXNsYy0+ZGF0YV9sZW5n dGgpCisJCQlzbGMtPmRhdGFfc3RhcnQgPSAwOwogCX0KIAogCXJldHVybiBUUlVFOwpAQCAtMTMz Nyw2ICsxMzU3LDkgQEAgdm9pZCBoZWFkc2V0X2Nvbm5lY3RfY2IoR0lPQ2hhbm5lbCAqY2hhbiwg R0Vycm9yICplcnIsIGdwb2ludGVyIHVzZXJfZGF0YSkKIAogCWRlYnVnKCIlczogQ29ubmVjdGVk IHRvICVzIiwgZGV2LT5wYXRoLCBoc19hZGRyZXNzKTsKIAorCWhzLT5zbGMgPSBnX25ldzAoc3Ry dWN0IGhlYWRzZXRfc2xjLCAxKTsKKwlocy0+c2xjLT5ucmVjID0gVFJVRTsKKwogCS8qIEluIEhG UCBtb2RlIHdhaXQgZm9yIFNlcnZpY2UgTGV2ZWwgQ29ubmVjdGlvbiAqLwogCWlmIChocy0+aGZw X2FjdGl2ZSkKIAkJcmV0dXJuOwpAQCAtMTgxMSwxMCArMTgzNCwxMSBAQCBzdGF0aWMgREJ1c01l c3NhZ2UgKmhzX2dldF9zcGVha2VyX2dhaW4oREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCiB7CiAJc3Ry dWN0IGF1ZGlvX2RldmljZSAqZGV2aWNlID0gZGF0YTsKIAlzdHJ1Y3QgaGVhZHNldCAqaHMgPSBk ZXZpY2UtPmhlYWRzZXQ7CisJc3RydWN0IGhlYWRzZXRfc2xjICpzbGMgPSBocy0+c2xjOwogCURC dXNNZXNzYWdlICpyZXBseTsKIAlkYnVzX3VpbnQxNl90IGdhaW47CiAKLQlpZiAoaHMtPnN0YXRl IDwgSEVBRFNFVF9TVEFURV9DT05ORUNURUQgfHwgaHMtPnNwX2dhaW4gPCAwKQorCWlmIChocy0+ c3RhdGUgPCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCkKIAkJcmV0dXJuIGdfZGJ1c19jcmVhdGVf ZXJyb3IobXNnLCBFUlJPUl9JTlRFUkZBQ0UgIi5Ob3RBdmFpbGFibGUiLAogCQkJCQkJIk9wZXJh dGlvbiBub3QgQXZhaWxhYmxlIik7CiAKQEAgLTE4MjIsNyArMTg0Niw3IEBAIHN0YXRpYyBEQnVz TWVzc2FnZSAqaHNfZ2V0X3NwZWFrZXJfZ2FpbihEQnVzQ29ubmVjdGlvbiAqY29ubiwKIAlpZiAo IXJlcGx5KQogCQlyZXR1cm4gTlVMTDsKIAotCWdhaW4gPSAoZGJ1c191aW50MTZfdCkgaHMtPnNw X2dhaW47CisJZ2FpbiA9IChkYnVzX3VpbnQxNl90KSBzbGMtPnNwX2dhaW47CiAKIAlkYnVzX21l c3NhZ2VfYXBwZW5kX2FyZ3MocmVwbHksIERCVVNfVFlQRV9VSU5UMTYsICZnYWluLAogCQkJCQlE QlVTX1RZUEVfSU5WQUxJRCk7CkBAIC0xODM2LDEwICsxODYwLDExIEBAIHN0YXRpYyBEQnVzTWVz c2FnZSAqaHNfZ2V0X21pY19nYWluKERCdXNDb25uZWN0aW9uICpjb25uLAogewogCXN0cnVjdCBh dWRpb19kZXZpY2UgKmRldmljZSA9IGRhdGE7CiAJc3RydWN0IGhlYWRzZXQgKmhzID0gZGV2aWNl LT5oZWFkc2V0OworCXN0cnVjdCBoZWFkc2V0X3NsYyAqc2xjID0gaHMtPnNsYzsKIAlEQnVzTWVz c2FnZSAqcmVwbHk7CiAJZGJ1c191aW50MTZfdCBnYWluOwogCi0JaWYgKGhzLT5zdGF0ZSA8IEhF QURTRVRfU1RBVEVfQ09OTkVDVEVEIHx8IGhzLT5taWNfZ2FpbiA8IDApCisJaWYgKGhzLT5zdGF0 ZSA8IEhFQURTRVRfU1RBVEVfQ09OTkVDVEVEIHx8IHNsYyA9PSBOVUxMKQogCQlyZXR1cm4gZ19k YnVzX2NyZWF0ZV9lcnJvcihtc2csIEVSUk9SX0lOVEVSRkFDRSAiLk5vdEF2YWlsYWJsZSIsCiAJ CQkJCQkiT3BlcmF0aW9uIG5vdCBBdmFpbGFibGUiKTsKIApAQCAtMTg0Nyw3ICsxODcyLDcgQEAg c3RhdGljIERCdXNNZXNzYWdlICpoc19nZXRfbWljX2dhaW4oREJ1c0Nvbm5lY3Rpb24gKmNvbm4s CiAJaWYgKCFyZXBseSkKIAkJcmV0dXJuIE5VTEw7CiAKLQlnYWluID0gKGRidXNfdWludDE2X3Qp IGhzLT5taWNfZ2FpbjsKKwlnYWluID0gKGRidXNfdWludDE2X3QpIHNsYy0+bWljX2dhaW47CiAK IAlkYnVzX21lc3NhZ2VfYXBwZW5kX2FyZ3MocmVwbHksIERCVVNfVFlQRV9VSU5UMTYsICZnYWlu LAogCQkJCQlEQlVTX1RZUEVfSU5WQUxJRCk7CkBAIC0xODYyLDYgKzE4ODcsNyBAQCBzdGF0aWMg REJ1c01lc3NhZ2UgKmhzX3NldF9nYWluKERCdXNDb25uZWN0aW9uICpjb25uLAogewogCXN0cnVj dCBhdWRpb19kZXZpY2UgKmRldmljZSA9IGRhdGE7CiAJc3RydWN0IGhlYWRzZXQgKmhzID0gZGV2 aWNlLT5oZWFkc2V0OworCXN0cnVjdCBoZWFkc2V0X3NsYyAqc2xjID0gaHMtPnNsYzsKIAlEQnVz TWVzc2FnZSAqcmVwbHk7CiAJaW50IGVycjsKIApAQCAtMTg5MSwxNCArMTkxNywxNCBAQCBzdGF0 aWMgREJ1c01lc3NhZ2UgKmhzX3NldF9nYWluKERCdXNDb25uZWN0aW9uICpjb25uLAogCiBkb25l OgogCWlmICh0eXBlID09IEhFQURTRVRfR0FJTl9TUEVBS0VSKSB7Ci0JCWhzLT5zcF9nYWluID0g Z2FpbjsKKwkJc2xjLT5zcF9nYWluID0gZ2FpbjsKIAkJZ19kYnVzX2VtaXRfc2lnbmFsKGNvbm4s IGRldmljZS0+cGF0aCwKIAkJCQkJQVVESU9fSEVBRFNFVF9JTlRFUkZBQ0UsCiAJCQkJCSJTcGVh a2VyR2FpbkNoYW5nZWQiLAogCQkJCQlEQlVTX1RZUEVfVUlOVDE2LCAmZ2FpbiwKIAkJCQkJREJV U19UWVBFX0lOVkFMSUQpOwogCX0gZWxzZSB7Ci0JCWhzLT5taWNfZ2FpbiA9IGdhaW47CisJCXNs Yy0+bWljX2dhaW4gPSBnYWluOwogCQlnX2RidXNfZW1pdF9zaWduYWwoY29ubiwgZGV2aWNlLT5w YXRoLAogCQkJCQlBVURJT19IRUFEU0VUX0lOVEVSRkFDRSwKIAkJCQkJIk1pY3JvcGhvbmVHYWlu Q2hhbmdlZCIsCkBAIC0xOTc1LDExICsyMDAxLDEzIEBAIHN0YXRpYyBEQnVzTWVzc2FnZSAqaHNf Z2V0X3Byb3BlcnRpZXMoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCiAKIAkvKiBTcGVha2VyR2FpbiAq LwogCWRpY3RfYXBwZW5kX2VudHJ5KCZkaWN0LCAiU3BlYWtlckdhaW4iLAotCQkJCURCVVNfVFlQ RV9VSU5UMTYsICZkZXZpY2UtPmhlYWRzZXQtPnNwX2dhaW4pOworCQkJCURCVVNfVFlQRV9VSU5U MTYsCisJCQkJJmRldmljZS0+aGVhZHNldC0+c2xjLT5zcF9nYWluKTsKIAogCS8qIE1pY3JvcGhv bmVHYWluICovCiAJZGljdF9hcHBlbmRfZW50cnkoJmRpY3QsICJNaWNyb3Bob25lR2FpbiIsCi0J CQkJREJVU19UWVBFX1VJTlQxNiwgJmRldmljZS0+aGVhZHNldC0+bWljX2dhaW4pOworCQkJCURC VVNfVFlQRV9VSU5UMTYsCisJCQkJJmRldmljZS0+aGVhZHNldC0+c2xjLT5taWNfZ2Fpbik7CiAK IGRvbmU6CiAJZGJ1c19tZXNzYWdlX2l0ZXJfY2xvc2VfY29udGFpbmVyKCZpdGVyLCAmZGljdCk7 CkBAIC0yMTE4LDEwICsyMTQ2LDggQEAgc3RhdGljIGludCBoZWFkc2V0X2Nsb3NlX3JmY29tbShz dHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXYpCiAJCWhzLT5yZmNvbW0gPSBOVUxMOwogCX0KIAotCWhz LT5kYXRhX3N0YXJ0ID0gMDsKLQlocy0+ZGF0YV9sZW5ndGggPSAwOwotCi0JaHMtPm5yZWMgPSBU UlVFOworCWdfZnJlZShocy0+c2xjKTsKKwlocy0+c2xjID0gTlVMTDsKIAogCXJldHVybiAwOwog fQpAQCAtMjE3NiwxMiArMjIwMiw3IEBAIHN0cnVjdCBoZWFkc2V0ICpoZWFkc2V0X2luaXQoc3Ry dWN0IGF1ZGlvX2RldmljZSAqZGV2LCB1aW50MTZfdCBzdmMsCiAKIAlocyA9IGdfbmV3MChzdHJ1 Y3QgaGVhZHNldCwgMSk7CiAJaHMtPnJmY29tbV9jaCA9IC0xOwotCWhzLT5zcF9nYWluID0gLTE7 Ci0JaHMtPm1pY19nYWluID0gLTE7CiAJaHMtPnNlYXJjaF9oZnAgPSBzZXJ2ZXJfaXNfZW5hYmxl ZCgmZGV2LT5zcmMsIEhBTkRTRlJFRV9TVkNMQVNTX0lEKTsKLQlocy0+aGZwX2FjdGl2ZSA9IEZB TFNFOwotCWhzLT5jbGlfYWN0aXZlID0gRkFMU0U7Ci0JaHMtPm5yZWMgPSBUUlVFOwogCiAJcmVj b3JkID0gYnRkX2RldmljZV9nZXRfcmVjb3JkKGRldi0+YnRkX2RldiwgdXVpZHN0cik7CiAJaWYg KCFyZWNvcmQpCkBAIC0yNDI0LDE4ICsyNDQ1LDE5IEBAIGludCBoZWFkc2V0X2Nvbm5lY3RfcmZj b21tKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldiwgR0lPQ2hhbm5lbCAqaW8pCiBpbnQgaGVhZHNl dF9jb25uZWN0X3NjbyhzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXYsIEdJT0NoYW5uZWwgKmlvKQog ewogCXN0cnVjdCBoZWFkc2V0ICpocyA9IGRldi0+aGVhZHNldDsKKwlzdHJ1Y3QgaGVhZHNldF9z bGMgKnNsYyA9IGhzLT5zbGM7CiAKIAlpZiAoaHMtPnNjbykKIAkJcmV0dXJuIC1FSVNDT05OOwog CiAJaHMtPnNjbyA9IGdfaW9fY2hhbm5lbF9yZWYoaW8pOwogCi0JaWYgKGhzLT5wZW5kaW5nX3Jp bmcpIHsKKwlpZiAoc2xjLT5wZW5kaW5nX3JpbmcpIHsKIAkJcmluZ190aW1lcl9jYihOVUxMKTsK IAkJYWcucmluZ190aW1lciA9IGdfdGltZW91dF9hZGRfc2Vjb25kcyhSSU5HX0lOVEVSVkFMLAog CQkJCQkJcmluZ190aW1lcl9jYiwKIAkJCQkJCU5VTEwpOwotCQlocy0+cGVuZGluZ19yaW5nID0g RkFMU0U7CisJCXNsYy0+cGVuZGluZ19yaW5nID0gRkFMU0U7CiAJfQogCiAJcmV0dXJuIDA7CkBA IC0yNDU0LDYgKzI0NzYsNyBAQCBzdGF0aWMgdm9pZCBkaXNjb25uZWN0X2NiKHN0cnVjdCBidGRf ZGV2aWNlICpidGRfZGV2LCBnYm9vbGVhbiByZW1vdmFsLAogdm9pZCBoZWFkc2V0X3NldF9zdGF0 ZShzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXYsIGhlYWRzZXRfc3RhdGVfdCBzdGF0ZSkKIHsKIAlz dHJ1Y3QgaGVhZHNldCAqaHMgPSBkZXYtPmhlYWRzZXQ7CisJc3RydWN0IGhlYWRzZXRfc2xjICpz bGMgPSBocy0+c2xjOwogCWdib29sZWFuIHZhbHVlOwogCWNvbnN0IGNoYXIgKnN0YXRlX3N0cjsK IAloZWFkc2V0X3N0YXRlX3Qgb2xkX3N0YXRlID0gaHMtPnN0YXRlOwpAQCAtMjQ5OSw5ICsyNTIy LDkgQEAgdm9pZCBoZWFkc2V0X3NldF9zdGF0ZShzdHJ1Y3QgYXVkaW9fZGV2aWNlICpkZXYsIGhl YWRzZXRfc3RhdGVfdCBzdGF0ZSkKIAkJCQkJREJVU19UWVBFX1NUUklORywgJnN0YXRlX3N0cik7 CiAJCWlmIChocy0+c3RhdGUgPCBzdGF0ZSkgewogCQkJaWYgKGFnLmZlYXR1cmVzICYgQUdfRkVB VFVSRV9JTkJBTkRfUklOR1RPTkUpCi0JCQkJaHMtPmluYmFuZF9yaW5nID0gVFJVRTsKKwkJCQlz bGMtPmluYmFuZF9yaW5nID0gVFJVRTsKIAkJCWVsc2UKLQkJCQlocy0+aW5iYW5kX3JpbmcgPSBG QUxTRTsKKwkJCQlzbGMtPmluYmFuZF9yaW5nID0gRkFMU0U7CiAJCQlnX2RidXNfZW1pdF9zaWdu YWwoZGV2LT5jb25uLCBkZXYtPnBhdGgsCiAJCQkJCQlBVURJT19IRUFEU0VUX0lOVEVSRkFDRSwK IAkJCQkJCSJDb25uZWN0ZWQiLApAQCAtMjU0NiwxMCArMjU2OSwxMCBAQCB2b2lkIGhlYWRzZXRf c2V0X3N0YXRlKHN0cnVjdCBhdWRpb19kZXZpY2UgKmRldiwgaGVhZHNldF9zdGF0ZV90IHN0YXRl KQogCQkJCQlBVURJT19IRUFEU0VUX0lOVEVSRkFDRSwgIlBsYXlpbmciLAogCQkJCQlEQlVTX1RZ UEVfQk9PTEVBTiwgJnZhbHVlKTsKIAotCQlpZiAoaHMtPnNwX2dhaW4gPj0gMCkKLQkJCWhlYWRz ZXRfc2VuZChocywgIlxyXG4rVkdTPSV1XHJcbiIsIGhzLT5zcF9nYWluKTsKLQkJaWYgKGhzLT5t aWNfZ2FpbiA+PSAwKQotCQkJaGVhZHNldF9zZW5kKGhzLCAiXHJcbitWR009JXVcclxuIiwgaHMt Pm1pY19nYWluKTsKKwkJaWYgKHNsYy0+c3BfZ2FpbiA+PSAwKQorCQkJaGVhZHNldF9zZW5kKGhz LCAiXHJcbitWR1M9JXVcclxuIiwgc2xjLT5zcF9nYWluKTsKKwkJaWYgKHNsYy0+bWljX2dhaW4g Pj0gMCkKKwkJCWhlYWRzZXRfc2VuZChocywgIlxyXG4rVkdNPSV1XHJcbiIsIHNsYy0+bWljX2dh aW4pOwogCQlicmVhazsKIAl9CiAKQEAgLTI2NTgsNyArMjY4MSw3IEBAIGdib29sZWFuIGhlYWRz ZXRfZ2V0X25yZWMoc3RydWN0IGF1ZGlvX2RldmljZSAqZGV2KQogewogCXN0cnVjdCBoZWFkc2V0 ICpocyA9IGRldi0+aGVhZHNldDsKIAotCXJldHVybiBocy0+bnJlYzsKKwlyZXR1cm4gaHMtPnNs Yy0+bnJlYzsKIH0KIAogZ2Jvb2xlYW4gaGVhZHNldF9nZXRfc2NvX2hjaShzdHJ1Y3QgYXVkaW9f ZGV2aWNlICpkZXYpCkBAIC0yNzE1LDYgKzI3MzgsNyBAQCBpbnQgdGVsZXBob255X2luY29taW5n X2NhbGxfaW5kKGNvbnN0IGNoYXIgKm51bWJlciwgaW50IHR5cGUpCiB7CiAJc3RydWN0IGF1ZGlv X2RldmljZSAqZGV2OwogCXN0cnVjdCBoZWFkc2V0ICpoczsKKwlzdHJ1Y3QgaGVhZHNldF9zbGMg KnNsYzsKIAogCWlmICghYWN0aXZlX2RldmljZXMpCiAJCXJldHVybiAtRU5PREVWOwpAQCAtMjcy Miw2ICsyNzQ2LDcgQEAgaW50IHRlbGVwaG9ueV9pbmNvbWluZ19jYWxsX2luZChjb25zdCBjaGFy ICpudW1iZXIsIGludCB0eXBlKQogCS8qIEdldCB0aGUgbGF0ZXN0IGNvbm5lY3RlZCBkZXZpY2Ug Ki8KIAlkZXYgPSBhY3RpdmVfZGV2aWNlcy0+ZGF0YTsKIAlocyA9IGRldi0+aGVhZHNldDsKKwlz bGMgPSBocy0+c2xjOwogCiAJaWYgKGFnLnJpbmdfdGltZXIpIHsKIAkJZGVidWcoInRlbGVwaG9u eV9pbmNvbWluZ19jYWxsX2luZDogYWxyZWFkeSBjYWxsaW5nIik7CkBAIC0yNzMwLDE2ICsyNzU1 LDE2IEBAIGludCB0ZWxlcGhvbnlfaW5jb21pbmdfY2FsbF9pbmQoY29uc3QgY2hhciAqbnVtYmVy LCBpbnQgdHlwZSkKIAogCS8qIFdpdGggSFNQIDEuMiB0aGUgUklORyBtZXNzYWdlcyBzaG91bGQg Km5vdCogYmUgc2VudCBpZiBpbmJhbmQKIAkgKiByaW5ndG9uZSBpcyBiZWluZyB1c2VkICovCi0J aWYgKCFocy0+aGZwX2FjdGl2ZSAmJiBocy0+aW5iYW5kX3JpbmcpCisJaWYgKCFocy0+aGZwX2Fj dGl2ZSAmJiBzbGMtPmluYmFuZF9yaW5nKQogCQlyZXR1cm4gMDsKIAogCWdfZnJlZShhZy5udW1i ZXIpOwogCWFnLm51bWJlciA9IGdfc3RyZHVwKG51bWJlcik7CiAJYWcubnVtYmVyX3R5cGUgPSB0 eXBlOwogCi0JaWYgKGhzLT5pbmJhbmRfcmluZyAmJiBocy0+aGZwX2FjdGl2ZSAmJgorCWlmIChz bGMtPmluYmFuZF9yaW5nICYmIGhzLT5oZnBfYWN0aXZlICYmCiAJCQkJCWhzLT5zdGF0ZSAhPSBI RUFEU0VUX1NUQVRFX1BMQVlJTkcpIHsKLQkJaHMtPnBlbmRpbmdfcmluZyA9IFRSVUU7CisJCXNs Yy0+cGVuZGluZ19yaW5nID0gVFJVRTsKIAkJcmV0dXJuIDA7CiAJfQogCkBAIC0yNzY1LDEwICsy NzkwLDEwIEBAIGludCB0ZWxlcGhvbnlfY2FsbGluZ19zdG9wcGVkX2luZCh2b2lkKQogCS8qIElu IGNhc2UgU0NPIGlzbid0IGZ1bGx5IHVwIHlldCAqLwogCWRldiA9IGFjdGl2ZV9kZXZpY2VzLT5k YXRhOwogCi0JaWYgKCFkZXYtPmhlYWRzZXQtPnBlbmRpbmdfcmluZyAmJiAhYWcucmluZ190aW1l cikKKwlpZiAoIWRldi0+aGVhZHNldC0+c2xjLT5wZW5kaW5nX3JpbmcgJiYgIWFnLnJpbmdfdGlt ZXIpCiAJCXJldHVybiAtRUlOVkFMOwogCi0JZGV2LT5oZWFkc2V0LT5wZW5kaW5nX3JpbmcgPSBG QUxTRTsKKwlkZXYtPmhlYWRzZXQtPnNsYy0+cGVuZGluZ19yaW5nID0gRkFMU0U7CiAKIAlyZXR1 cm4gMDsKIH0KQEAgLTI4MjYsNyArMjg1MSw3IEBAIHN0YXRpYyBpbnQgY3dhX2NtcChzdHJ1Y3Qg aGVhZHNldCAqaHMpCiAJaWYgKCFocy0+aGZwX2FjdGl2ZSkKIAkJcmV0dXJuIC0xOwogCi0JaWYg KGhzLT5jd2FfZW5hYmxlZCkKKwlpZiAoaHMtPnNsYy0+Y3dhX2VuYWJsZWQpCiAJCXJldHVybiAw OwogCWVsc2UKIAkJcmV0dXJuIC0xOwotLSAKMS42LjMuMwoK --0016367fb6c17409200480fa6dab--