Return-Path: Message-ID: <1193591504.4724c2d09ef6b@imp.free.fr> Date: Sun, 28 Oct 2007 18:11:44 +0100 From: fabchevalier@free.fr To: BlueZ development , marcel@holtmann.org, johan.hedberg@nokia.com Subject: Resend: [Bluez-devel] [PATCH 3/3] move audio service to use common exceptions References: <1193591364.4724c2442a78f@imp.free.fr> In-Reply-To: <1193591364.4724c2442a78f@imp.free.fr> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="-MOQ119359150484ee32b650f4d224c93b9468ce1d7203" List-ID: This message is in MIME format. ---MOQ119359150484ee32b650f4d224c93b9468ce1d7203 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit > > This patch is for the audio service, and obviously depends on the common/ > stuff > :-) With patch attached this time :-) Fabien ---MOQ119359150484ee32b650f4d224c93b9468ce1d7203 Content-Type: text/x-patch; name="exceptions-rework-audio.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="exceptions-rework-audio.diff" ZGlmZiAteCBFbnRyaWVzIC11IC1yIC1OIHV0aWxzL2F1ZGlvL2RldmljZS5jIHV0aWxzMi9hdWRp by9kZXZpY2UuYwotLS0gdXRpbHMvYXVkaW8vZGV2aWNlLmMJMjAwNy0xMC0yNyAxNDo1Mjo0NS4w MDAwMDAwMDAgKzAwMDAKKysrIHV0aWxzMi9hdWRpby9kZXZpY2UuYwkyMDA3LTEwLTI3IDIxOjIx OjA4LjAwMDAwMDAwMCArMDAwMApAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgImxvZ2dpbmcu aCIKICNpbmNsdWRlICJ0ZXh0ZmlsZS5oIgogCi0jaW5jbHVkZSAiZXJyb3IuaCIKKyNpbmNsdWRl ICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRlICJpcGMuaCIKICNpbmNsdWRlICJkZXZpY2UuaCIK ICNpbmNsdWRlICJhdmR0cC5oIgpkaWZmIC14IEVudHJpZXMgLXUgLXIgLU4gdXRpbHMvYXVkaW8v ZXJyb3IuYyB1dGlsczIvYXVkaW8vZXJyb3IuYwotLS0gdXRpbHMvYXVkaW8vZXJyb3IuYwkyMDA3 LTEwLTI3IDE0OjQ2OjE5LjAwMDAwMDAwMCArMDAwMAorKysgdXRpbHMyL2F1ZGlvL2Vycm9yLmMJ MjAwNy0xMC0yNyAyMToyMTowOC4wMDAwMDAwMDAgKzAwMDAKQEAgLTMwLDgwICszMCw5IEBACiAK ICNpbmNsdWRlICJkYnVzLWhlbHBlci5oIgogCi0jaW5jbHVkZSAiZXJyb3IuaCIKKyNpbmNsdWRl ICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRlICJsb2dnaW5nLmgiCiAKICNkZWZpbmUgQVVESU9f RVJST1JfSU5URVJGQUNFICJvcmcuYmx1ZXouYXVkaW8uRXJyb3IiCiAKLS8qIEZJWE1FOiBSZW1v dmUgdGhlc2Ugb25jZSBnbG9iYWwgZXJyb3IgZnVuY3Rpb25zIGV4aXN0ICovCi1zdGF0aWMgREJ1 c0hhbmRsZXJSZXN1bHQgZXJyb3JfcmVwbHkoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNz YWdlICptc2csCi0JCQkJCWNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmRlc2NyKQotewot CURCdXNNZXNzYWdlICpkZXJyOwotCi0JaWYgKCFjb25uIHx8ICFtc2cpCi0JCXJldHVybiBEQlVT X0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7Ci0KLQlkZXJyID0gZGJ1c19tZXNzYWdlX25ld19lcnJv cihtc2csIG5hbWUsIGRlc2NyKTsKLQlpZiAoIWRlcnIpIHsKLQkJZXJyb3IoIlVuYWJsZSB0byBh bGxvY2F0ZSBuZXcgZXJyb3IgcmV0dXJuIik7Ci0JCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxU X05FRURfTUVNT1JZOwotCX0KLQotCXJldHVybiBkYnVzX2Nvbm5lY3Rpb25fc2VuZF9hbmRfdW5y ZWYoY29ubiwgZGVycik7Ci19Ci0KLURCdXNIYW5kbGVyUmVzdWx0IGVycl9pbnZhbGlkX2FyZ3Mo REJ1c0Nvbm5lY3Rpb24gKmNvbm4sCi0JCQkJCURCdXNNZXNzYWdlICptc2csIGNvbnN0IGNoYXIg KmRlc2NyKQotewotCXJldHVybiBlcnJvcl9yZXBseShjb25uLCBtc2csCi0JCQkJQVVESU9fRVJS T1JfSU5URVJGQUNFICIuSW52YWxpZEFyZ3VtZW50cyIsCi0JCQkJZGVzY3IgPyBkZXNjciA6ICJJ bnZhbGlkIGFyZ3VtZW50cyBpbiBtZXRob2QgY2FsbCIpOwotfQotCi1EQnVzSGFuZGxlclJlc3Vs dCBlcnJfYWxyZWFkeV9jb25uZWN0ZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdl ICptc2cpCi17Ci0JcmV0dXJuIGVycm9yX3JlcGx5KGNvbm4sIG1zZywKLQkJCQlBVURJT19FUlJP Ul9JTlRFUkZBQ0UgIi5BbHJlYWR5Q29ubmVjdGVkIiwKLQkJCQkJIkFscmVhZHkgY29ubmVjdGVk IHRvIGEgZGV2aWNlIik7Ci19Ci0KLURCdXNIYW5kbGVyUmVzdWx0IGVycl9ub3RfY29ubmVjdGVk KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJldHVybiBlcnJv cl9yZXBseShjb25uLCBtc2csCi0JCQkJQVVESU9fRVJST1JfSU5URVJGQUNFICIuTm90Q29ubmVj dGVkIiwKLQkJCQkJIk5vdCBjb25uZWN0ZWQgdG8gYW55IGRldmljZSIpOwotfQotCi1EQnVzSGFu ZGxlclJlc3VsdCBlcnJfbm90X3N1cHBvcnRlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwgREJ1c01l c3NhZ2UgKm1zZykKLXsKLQlyZXR1cm4gZXJyb3JfcmVwbHkoY29ubiwgbXNnLAotCQkJCUFVRElP X0VSUk9SX0lOVEVSRkFDRSAiLk5vdFN1cHBvcnRlZCIsCi0JCQkJIlRoZSBzZXJ2aWNlIGlzIG5v dCBzdXBwb3J0ZWQgYnkgdGhlIHJlbW90ZSBkZXZpY2UiKTsKLX0KLQotREJ1c0hhbmRsZXJSZXN1 bHQgZXJyX2Nvbm5lY3RfZmFpbGVkKERCdXNDb25uZWN0aW9uICpjb25uLAotCQkJCQlEQnVzTWVz c2FnZSAqbXNnLCBjb25zdCBjaGFyICplcnIpCi17Ci0JcmV0dXJuIGVycm9yX3JlcGx5KGNvbm4s IG1zZywKLQkJCQlBVURJT19FUlJPUl9JTlRFUkZBQ0UgIi5Db25uZWN0RmFpbGVkIiwgZXJyKTsK LX0KLQotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2RvZXNfbm90X2V4aXN0KERCdXNDb25uZWN0aW9u ICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKQotewotCXJldHVybiBlcnJvcl9yZXBseShjb25uLCBt c2csCi0JCQkJQVVESU9fRVJST1JfSU5URVJGQUNFICIuRG9lc05vdEV4aXN0IiwKLQkJCQkJCQki RG9lcyBub3QgZXhpc3QiKTsKLX0KLQotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX25vdF9hdmFpbGFi bGUoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpCi17Ci0JcmV0dXJuIGVy cm9yX3JlcGx5KGNvbm4sIG1zZywgQVVESU9fRVJST1JfSU5URVJGQUNFICIuTm90QXZhaWxhYmxl IiwKLQkJCQkiTm90IGF2YWlsYWJsZSIpOwotfQotCi1EQnVzSGFuZGxlclJlc3VsdCBlcnJfZmFp bGVkKERCdXNDb25uZWN0aW9uICpjb25uLAotCQkJCQlEQnVzTWVzc2FnZSAqbXNnLCBjb25zdCBj aGFyICpkc2MpCi17Ci0JcmV0dXJuIGVycm9yX3JlcGx5KGNvbm4sIG1zZywgQVVESU9fRVJST1Jf SU5URVJGQUNFICIuRmFpbGVkIiwgZHNjKTsKLX0KKy8qIFRvIGJlIGZpbGxlZCBvbmNlIGF1ZGlv IHNlcnZpY2Ugc3BlY2lmaWMgZXJyb3JzIGFyZSBkZWZpbmVkICovCmRpZmYgLXggRW50cmllcyAt dSAtciAtTiB1dGlscy9hdWRpby9lcnJvci5oIHV0aWxzMi9hdWRpby9lcnJvci5oCi0tLSB1dGls cy9hdWRpby9lcnJvci5oCTIwMDctMTAtMjMgMTc6MTc6NDcuMDAwMDAwMDAwICswMDAwCisrKyB1 dGlsczIvYXVkaW8vZXJyb3IuaAkyMDA3LTEwLTI3IDIxOjIxOjU0LjAwMDAwMDAwMCArMDAwMApA QCAtMjIsMTQgKzIyLDkgQEAKICAqCiAgKi8KIAotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2ludmFs aWRfYXJncyhEQnVzQ29ubmVjdGlvbiAqY29ubiwKLQkJCQkJREJ1c01lc3NhZ2UgKm1zZywgY29u c3QgY2hhciAqZGVzY3IpOwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2FscmVhZHlfY29ubmVjdGVk KERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAqbXNnKTsKLURCdXNIYW5kbGVyUmVz dWx0IGVycl9ub3RfY29ubmVjdGVkKERCdXNDb25uZWN0aW9uICpjb25uLCBEQnVzTWVzc2FnZSAq IG1zZyk7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJfbm90X3N1cHBvcnRlZChEQnVzQ29ubmVjdGlv biAqY29ubiwgREJ1c01lc3NhZ2UgKm1zZyk7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJfY29ubmVj dF9mYWlsZWQoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sCi0JCQkJCURCdXNNZXNzYWdlICptc2csIGNv bnN0IGNoYXIgKmVycik7Ci1EQnVzSGFuZGxlclJlc3VsdCBlcnJfZG9lc19ub3RfZXhpc3QoREJ1 c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cpOwotREJ1c0hhbmRsZXJSZXN1bHQg ZXJyX25vdF9hdmFpbGFibGUoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIERCdXNNZXNzYWdlICptc2cp OwotREJ1c0hhbmRsZXJSZXN1bHQgZXJyX2ZhaWxlZChEQnVzQ29ubmVjdGlvbiAqY29ubiwKLQkJ CQkJREJ1c01lc3NhZ2UgKm1zZywgY29uc3QgY2hhciAqZHNjKTsKKy8qKgorICBUaGlzIGZpbGUg bXVzdCBvbmx5IGNvbnRhaW4gZXJyb3JzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSBhdWRpbyBz ZXJ2aWNlLgorICBBcyBzdWNoIHRoZXkgd2lsbCBiZSBmb3VuZCBpbiB0aGUgb3JnLmJsdWV6LmF1 ZGlvLkVycm9yIG5hbWVzcGFjZS4KKyAgSWYgZXJyb3JzIGFyZSBub3Qgc3BlY2lmaWMgdG8gdGhl IGF1ZGlvIHNlcnZpY2UsIHRoZXkgbXVzdCBiZSBkZWNsYXJlZAorICBpbiBjb21tb24tZXJyb3Iu aCwgc28gdGhhdCBvdGhlciBzZXJ2aWNlcyBjYW4gdXNlIGl0CisqLwpkaWZmIC14IEVudHJpZXMg LXUgLXIgLU4gdXRpbHMvYXVkaW8vaGVhZHNldC5jIHV0aWxzMi9hdWRpby9oZWFkc2V0LmMKLS0t IHV0aWxzL2F1ZGlvL2hlYWRzZXQuYwkyMDA3LTEwLTI3IDE0OjMyOjUzLjAwMDAwMDAwMCArMDAw MAorKysgdXRpbHMyL2F1ZGlvL2hlYWRzZXQuYwkyMDA3LTEwLTI3IDIxOjQ1OjU3LjAwMDAwMDAw MCArMDAwMApAQCAtNTQsNyArNTQsNyBAQAogI2luY2x1ZGUgImxvZ2dpbmcuaCIKICNpbmNsdWRl ICJkZXZpY2UuaCIKICNpbmNsdWRlICJtYW5hZ2VyLmgiCi0jaW5jbHVkZSAiZXJyb3IuaCIKKyNp bmNsdWRlICJjb21tb24tZXJyb3IuaCIKICNpbmNsdWRlICJoZWFkc2V0LmgiCiAKICNkZWZpbmUg UklOR19JTlRFUlZBTCAzMDAwCkBAIC0zODQsNyArMzg0LDcgQEAKIHN0YXRpYyB2b2lkIHBlbmRp bmdfY29ubmVjdF9mYWlsZWQoc3RydWN0IHBlbmRpbmdfY29ubmVjdCAqYywgc3RydWN0IGRldmlj ZSAqZGV2KQogewogCWlmIChjLT5tc2cpCi0JCWVycl9jb25uZWN0X2ZhaWxlZChkZXYtPmNvbm4s IGMtPm1zZywgc3RyZXJyb3IoYy0+ZXJyKSk7CisJCWVycm9yX2Nvbm5lY3Rpb25fYXR0ZW1wdF9m YWlsZWQoZGV2LT5jb25uLCBjLT5tc2csIGMtPmVycik7CiAJaWYgKGMtPmNiKQogCQljLT5jYihO VUxMLCBjLT5jYl9kYXRhKTsKIAlwZW5kaW5nX2Nvbm5lY3RfZnJlZShjKTsKQEAgLTY4MCw3ICs2 ODAsNyBAQAogCiBmYWlsZWRfbm90X3N1cHBvcnRlZDoKIAlpZiAoYy0+bXNnKSB7Ci0JCWVycl9u b3Rfc3VwcG9ydGVkKGRldmljZS0+Y29ubiwgYy0+bXNnKTsKKwkJZXJyb3Jfbm90X3N1cHBvcnRl ZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7CiAJCWRidXNfbWVzc2FnZV91bnJlZihjLT5tc2cpOwog CQljLT5tc2cgPSBOVUxMOwogCX0KQEAgLTcyMSwxMCArNzIxLDEwIEBACiAJCWlmIChjLT5tc2cp IHsKIAkJCWlmIChkYnVzX2Vycm9yX2hhc19uYW1lKCZkZXJyLAogCQkJCQkJIm9yZy5ibHVlei5F cnJvci5Db25uZWN0aW9uQXR0ZW1wdEZhaWxlZCIpKQotCQkJCWVycl9jb25uZWN0X2ZhaWxlZChk ZXZpY2UtPmNvbm4sIGMtPm1zZywKLQkJCQkJc3RyZXJyb3IoRUhPU1RET1dOKSk7CisJCQkJZXJy b3JfY29ubmVjdGlvbl9hdHRlbXB0X2ZhaWxlZChkZXZpY2UtPmNvbm4sIGMtPm1zZywKKwkJCQkJ RUhPU1RET1dOKTsKIAkJCWVsc2UKLQkJCQllcnJfbm90X3N1cHBvcnRlZChkZXZpY2UtPmNvbm4s IGMtPm1zZyk7CisJCQkJZXJyb3Jfbm90X3N1cHBvcnRlZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7 CiAJCX0KIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJZ290byBmYWlsZWQ7CkBAIC03Mzgs MjEgKzczOCwyMSBAQAogCQllcnJvcigiVW5hYmxlIHRvIGdldCBhcmdzIGZyb20gcmVwbHk6ICVz IiwgZGVyci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJaWYgKGMtPm1z ZykKLQkJCWVycl9ub3Rfc3VwcG9ydGVkKGRldmljZS0+Y29ubiwgYy0+bXNnKTsKKwkJCWVycm9y X25vdF9zdXBwb3J0ZWQoZGV2aWNlLT5jb25uLCBjLT5tc2cpOwogCQlnb3RvIGZhaWxlZDsKIAl9 CiAKIAlpZiAoIWFycmF5KSB7CiAJCWVycm9yKCJnZXRfaGFuZGxlc19yZXBseTogVW5hYmxlIHRv IGdldCBoYW5kbGUgYXJyYXkgZnJvbSByZXBseSIpOwogCQlpZiAoYy0+bXNnKQotCQkJZXJyX25v dF9zdXBwb3J0ZWQoZGV2aWNlLT5jb25uLCBjLT5tc2cpOworCQkJZXJyb3Jfbm90X3N1cHBvcnRl ZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7CiAJCWdvdG8gZmFpbGVkOwogCX0KIAogCWlmIChhcnJh eV9sZW4gPCAxKSB7CiAJCWRlYnVnKCJObyByZWNvcmQgaGFuZGxlcyBmb3VuZCIpOwogCQlpZiAo Yy0+bXNnKQotCQkJZXJyX25vdF9zdXBwb3J0ZWQoZGV2aWNlLT5jb25uLCBjLT5tc2cpOworCQkJ ZXJyb3Jfbm90X3N1cHBvcnRlZChkZXZpY2UtPmNvbm4sIGMtPm1zZyk7CiAJCWdvdG8gZmFpbGVk OwogCX0KIApAQCAtNzY1LDcgKzc2NSw3IEBACiAJaWYgKCFtc2cpIHsKIAkJZXJyb3IoIlVuYWJs ZSB0byBhbGxvY2F0ZSBuZXcgbWV0aG9kIGNhbGwiKTsKIAkJaWYgKGMtPm1zZykKLQkJCWVycl9j b25uZWN0X2ZhaWxlZChkZXZpY2UtPmNvbm4sIGMtPm1zZywgc3RyZXJyb3IoRU5PTUVNKSk7CisJ CQllcnJvcl9vdXRfb2ZfbWVtb3J5KGRldmljZS0+Y29ubiwgYy0+bXNnKTsKIAkJZ290byBmYWls ZWQ7CiAJfQogCkBAIC03ODAsNyArNzgwLDcgQEAKIAlpZiAoIWRidXNfY29ubmVjdGlvbl9zZW5k X3dpdGhfcmVwbHkoZGV2aWNlLT5jb25uLCBtc2csICZwZW5kaW5nLCAtMSkpIHsKIAkJZXJyb3Io IlNlbmRpbmcgR2V0UmVtb3RlU2VydmljZVJlY29yZCBmYWlsZWQiKTsKIAkJaWYgKGMtPm1zZykK LQkJCWVycl9jb25uZWN0X2ZhaWxlZChkZXZpY2UtPmNvbm4sIGMtPm1zZywgc3RyZXJyb3IoRUlP KSk7CisJCQllcnJvcl9jb25uZWN0aW9uX2F0dGVtcHRfZmFpbGVkKGRldmljZS0+Y29ubiwgYy0+ bXNnLCBFSU8pOwogCQlnb3RvIGZhaWxlZDsKIAl9CiAKQEAgLTk0NSw3ICs5NDUsNyBAQAogCQly ZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9ORUVEX01FTU9SWTsKIAogCWlmIChocy0+c3RhdGUg PCBIRUFEU0VUX1NUQVRFX1BMQVlfSU5fUFJPR1JFU1MpCi0JCXJldHVybiBlcnJfbm90X2Nvbm5l Y3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cp OwogCiAJaGVhZHNldF9zZXRfc3RhdGUoZGV2aWNlLCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCk7 CiAJZGJ1c19jb25uZWN0aW9uX3NlbmRfYW5kX3VucmVmKGNvbm4sIHJlcGx5KTsKQEAgLTk4OCw3 ICs5ODgsNyBAQAogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9ORUVEX01FTU9SWTsKIAog CWlmIChocy0+c3RhdGUgPT0gSEVBRFNFVF9TVEFURV9ESVNDT05ORUNURUQpCi0JCXJldHVybiBl cnJfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90X2Nvbm5lY3Rl ZChjb25uLCBtc2cpOwogCiAJaGVhZHNldF9zZXRfc3RhdGUoZGV2aWNlLCBIRUFEU0VUX1NUQVRF X0RJU0NPTk5FQ1RFRCk7CiAJYmEyc3RyKCZkZXZpY2UtPmRzdCwgaHNfYWRkcmVzcyk7CkBAIC0x MDMwLDcgKzEwMzAsNyBAQAogCWludCBlcnI7CiAKIAlpZiAoaHMtPnN0YXRlID4gSEVBRFNFVF9T VEFURV9ESVNDT05ORUNURUQpCi0JCXJldHVybiBlcnJfYWxyZWFkeV9jb25uZWN0ZWQoY29ubiwg bXNnKTsKKwkJcmV0dXJuIGVycm9yX2FscmVhZHlfY29ubmVjdGVkKGNvbm4sIG1zZyk7CiAKIAlj ID0gZ190cnlfbmV3MChzdHJ1Y3QgcGVuZGluZ19jb25uZWN0LCAxKTsKIAlpZiAoIWMpIHsKQEAg LTEwNDgsNyArMTA0OCw3IEBACiAKIGVycm9yOgogCXBlbmRpbmdfY29ubmVjdF9mcmVlKGMpOwot CXJldHVybiBlcnJfY29ubmVjdF9mYWlsZWQoY29ubiwgbXNnLCBzdHJlcnJvcigtZXJyKSk7CisJ cmV0dXJuIGVycm9yX2Nvbm5lY3Rpb25fYXR0ZW1wdF9mYWlsZWQoY29ubiwgbXNnLCAtZXJyKTsK IH0KIAogc3RhdGljIGdib29sZWFuIHJpbmdfdGltZXJfY2IoZ3BvaW50ZXIgZGF0YSkKQEAgLTEw NjksNyArMTA2OSw3IEBACiAJREJ1c01lc3NhZ2UgKnJlcGx5ID0gTlVMTDsKIAogCWlmIChocy0+ c3RhdGUgPCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCkKLQkJcmV0dXJuIGVycl9ub3RfY29ubmVj dGVkKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9ub3RfY29ubmVjdGVkKGNvbm4sIG1zZyk7 CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICgh cmVwbHkpCkBAIC0xMDgyLDcgKzEwODIsNyBAQAogCiAJaWYgKGhlYWRzZXRfc2VuZChkZXZpY2Ut PmhlYWRzZXQsICJcclxuUklOR1xyXG4iKSAhPSBHX0lPX0VSUk9SX05PTkUpIHsKIAkJZGJ1c19t ZXNzYWdlX3VucmVmKHJlcGx5KTsKLQkJcmV0dXJuIGVycl9mYWlsZWQoY29ubiwgbXNnLCAiRmFp bGVkIik7CisJCXJldHVybiBlcnJvcl9mYWlsZWQoY29ubiwgbXNnLCAiRmFpbGVkIik7CiAJfQog CiAJaHMtPnJpbmdfdGltZXIgPSBnX3RpbWVvdXRfYWRkKFJJTkdfSU5URVJWQUwsIHJpbmdfdGlt ZXJfY2IsIGRldmljZSk7CkBAIC0xMTAyLDcgKzExMDIsNyBAQAogCURCdXNNZXNzYWdlICpyZXBs eSA9IE5VTEw7CiAKIAlpZiAoaHMtPnN0YXRlIDwgSEVBRFNFVF9TVEFURV9DT05ORUNURUQpCi0J CXJldHVybiBlcnJfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90 X2Nvbm5lY3RlZChjb25uLCBtc2cpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhv ZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtMTEzMSwxMCArMTEzMSwxMCBAQAogCWlu dCBlcnI7CiAKIAlpZiAoaHMtPnN0YXRlIDwgSEVBRFNFVF9TVEFURV9DT05ORUNURUQpCi0JCXJl dHVybiBlcnJfbm90X2Nvbm5lY3RlZChjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jfbm90X2Nv bm5lY3RlZChjb25uLCBtc2cpOwogCiAJaWYgKGhzLT5zdGF0ZSA+PSBIRUFEU0VUX1NUQVRFX1BM QVlfSU5fUFJPR1JFU1MpCi0JCXJldHVybiBlcnJfYWxyZWFkeV9jb25uZWN0ZWQoY29ubiwgbXNn KTsKKwkJcmV0dXJuIGVycm9yX2FscmVhZHlfY29ubmVjdGVkKGNvbm4sIG1zZyk7CiAKIAljID0g Z190cnlfbmV3MChzdHJ1Y3QgcGVuZGluZ19jb25uZWN0LCAxKTsKIAlpZiAoIWMpCkBAIC0xMTQ1 LDcgKzExNDUsNyBAQAogCWVyciA9IHNjb19jb25uZWN0KGRldmljZSwgYyk7CiAJaWYgKGVyciA8 IDApIHsKIAkJcGVuZGluZ19jb25uZWN0X2ZyZWUoYyk7Ci0JCXJldHVybiBlcnJfZmFpbGVkKGNv bm4sIG1zZywgc3RyZXJyb3IoLWVycikpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1z Zywgc3RyZXJyb3IoLWVycikpOwogCX0KIAogCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX0hB TkRMRUQ7CkBAIC0xMTYxLDcgKzExNjEsNyBAQAogCWRidXNfdWludDE2X3QgZ2FpbjsKIAogCWlm IChocy0+c3RhdGUgPCBIRUFEU0VUX1NUQVRFX0NPTk5FQ1RFRCB8fCBocy0+c3BfZ2FpbiA8IDAp Ci0JCXJldHVybiBlcnJfbm90X2F2YWlsYWJsZShjb25uLCBtc2cpOworCQlyZXR1cm4gZXJyb3Jf bm90X2F2YWlsYWJsZShjb25uLCBtc2cpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21l dGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJlcGx5KQpAQCAtMTE4Nyw3ICsxMTg3LDcgQEAKIAlk YnVzX3VpbnQxNl90IGdhaW47CiAKIAlpZiAoaHMtPnN0YXRlIDwgSEVBRFNFVF9TVEFURV9DT05O RUNURUQgfHwgaHMtPm1pY19nYWluIDwgMCkKLQkJcmV0dXJuIGVycl9ub3RfYXZhaWxhYmxlKGNv bm4sIG1zZyk7CisJCXJldHVybiBlcnJvcl9ub3RfYXZhaWxhYmxlKGNvbm4sIG1zZyk7CiAKIAly ZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkp CkBAIC0xMjE1LDIwICsxMjE1LDIwIEBACiAJY2hhciBzdHJbMTNdOwogCiAJaWYgKGhzLT5zdGF0 ZSA8IEhFQURTRVRfU1RBVEVfQ09OTkVDVEVEKQotCQlyZXR1cm4gZXJyX25vdF9jb25uZWN0ZWQo Y29ubiwgbXNnKTsKKwkJcmV0dXJuIGVycm9yX25vdF9jb25uZWN0ZWQoY29ubiwgbXNnKTsKIAog CWRidXNfZXJyb3JfaW5pdCgmZGVycik7CiAJZGJ1c19tZXNzYWdlX2dldF9hcmdzKG1zZywgJmRl cnIsIERCVVNfVFlQRV9VSU5UMTYsICZnYWluLAogCQkJCURCVVNfVFlQRV9JTlZBTElEKTsKIAog CWlmIChkYnVzX2Vycm9yX2lzX3NldCgmZGVycikpIHsKLQkJZXJyX2ludmFsaWRfYXJncyhjb25u LCBtc2csIGRlcnIubWVzc2FnZSk7CisJCWVycm9yX2ludmFsaWRfYXJndW1lbnRzKGNvbm4sIG1z ZywgZGVyci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJcmV0dXJuIERC VVNfSEFORExFUl9SRVNVTFRfSEFORExFRDsKIAl9CiAKIAlpZiAoZ2FpbiA+IDE1KQotCQlyZXR1 cm4gZXJyX2ludmFsaWRfYXJncyhjb25uLCBtc2csCisJCXJldHVybiBlcnJvcl9pbnZhbGlkX2Fy Z3VtZW50cyhjb25uLCBtc2csCiAJCQkJCSJNdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAx NSIpOwogCiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKQEAg LTEyNDIsNyArMTI0Miw3IEBACiAKIAlpZiAoaGVhZHNldF9zZW5kKGRldmljZS0+aGVhZHNldCwg c3RyKSAhPSBHX0lPX0VSUk9SX05PTkUpIHsKIAkJZGJ1c19tZXNzYWdlX3VucmVmKHJlcGx5KTsK LQkJcmV0dXJuIGVycl9mYWlsZWQoY29ubiwgbXNnLCAiVW5hYmxlIHRvIHNlbmQgdG8gaGVhZHNl dCIpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgIlVuYWJsZSB0byBzZW5kIHRv IGhlYWRzZXQiKTsKIAl9CiAKIGRvbmU6CmRpZmYgLXggRW50cmllcyAtdSAtciAtTiB1dGlscy9h dWRpby9tYW5hZ2VyLmMgdXRpbHMyL2F1ZGlvL21hbmFnZXIuYwotLS0gdXRpbHMvYXVkaW8vbWFu YWdlci5jCTIwMDctMTAtMjcgMTQ6NTE6NTguMDAwMDAwMDAwICswMDAwCisrKyB1dGlsczIvYXVk aW8vbWFuYWdlci5jCTIwMDctMTAtMjcgMjE6NDM6NTcuMDAwMDAwMDAwICswMDAwCkBAIC01Myw3 ICs1Myw3IEBACiAjaW5jbHVkZSAidGV4dGZpbGUuaCIKICNpbmNsdWRlICJpcGMuaCIKICNpbmNs dWRlICJkZXZpY2UuaCIKLSNpbmNsdWRlICJlcnJvci5oIgorI2luY2x1ZGUgImNvbW1vbi1lcnJv ci5oIgogI2luY2x1ZGUgImF2ZHRwLmgiCiAjaW5jbHVkZSAiYTJkcC5oIgogI2luY2x1ZGUgImhl YWRzZXQuaCIKQEAgLTMyNiw3ICszMjYsNyBAQAogCWlmIChkYnVzX2Vycm9yX2lzX3NldCgmZGVy cikpIHsKIAkJZXJyb3IoIlVuYWJsZSB0byBnZXQgbWVzc2FnZSBhcmdzIik7CiAJCXN1Y2Nlc3Mg PSBGQUxTRTsKLQkJZXJyX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csIGRlcnIubWVzc2Fn ZSk7CisJCWVycm9yX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csIGRlcnIubWVzc2FnZSk7 CiAJCWRidXNfZXJyb3JfZnJlZSgmZGVycik7CiAJCWdvdG8gZG9uZTsKIAl9CkBAIC0zMzUsMTQg KzMzNSwxNCBAQAogCWlmICghZGF0YS0+cmVjb3JkcykgewogCQlkZWJ1ZygiTm8gYXVkaW8gYXVk aW8gcmVsYXRlZCBzZXJ2aWNlIHJlY29yZHMgd2VyZSBmb3VuZCIpOwogCQlzdWNjZXNzID0gRkFM U0U7Ci0JCWVycl9ub3Rfc3VwcG9ydGVkKGNvbm5lY3Rpb24sIGRhdGEtPm1zZyk7CisJCWVycm9y X25vdF9zdXBwb3J0ZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnKTsKIAkJZ290byBkb25lOwogCX0K IAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKGRhdGEtPm1zZyk7CiAJ aWYgKCFyZXBseSkgewogCQlzdWNjZXNzID0gRkFMU0U7Ci0JCWVycl9mYWlsZWQoY29ubmVjdGlv biwgZGF0YS0+bXNnLCAiT3V0IG9mIG1lbW9yeSIpOworCQllcnJvcl9mYWlsZWQoY29ubmVjdGlv biwgZGF0YS0+bXNnLCAiT3V0IG9mIG1lbW9yeSIpOwogCQlnb3RvIGRvbmU7CiAJfQogCkBAIC0z OTQsMTAgKzM5NCwxMCBAQAogCQllcnJvcigiR2V0UmVtb3RlU2VydmljZVJlY29yZCBmYWlsZWQ6 ICVzIiwgZGVyci5tZXNzYWdlKTsKIAkJaWYgKGRidXNfZXJyb3JfaGFzX25hbWUoJmRlcnIsCiAJ CQkJCSJvcmcuYmx1ZXouRXJyb3IuQ29ubmVjdGlvbkF0dGVtcHRGYWlsZWQiKSkKLQkJCWVycl9j b25uZWN0X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCi0JCQkJc3RyZXJyb3IoRUhPU1RE T1dOKSk7CisJCQllcnJvcl9jb25uZWN0aW9uX2F0dGVtcHRfZmFpbGVkKGNvbm5lY3Rpb24sIGRh dGEtPm1zZywKKwkJCQlFSE9TVERPV04pOwogCQllbHNlCi0JCQllcnJfZmFpbGVkKGNvbm5lY3Rp b24sIGRhdGEtPm1zZywgZGVyci5tZXNzYWdlKTsKKwkJCWVycm9yX2ZhaWxlZChjb25uZWN0aW9u LCBkYXRhLT5tc2csIGRlcnIubWVzc2FnZSk7CiAJCWRidXNfZXJyb3JfZnJlZSgmZGVycik7CiAJ CWdvdG8gZmFpbGVkOwogCX0KQEAgLTQwNSw3ICs0MDUsNyBAQAogCWlmICghZGJ1c19tZXNzYWdl X2dldF9hcmdzKHJlcGx5LCBOVUxMLAogCQkJCURCVVNfVFlQRV9BUlJBWSwgREJVU19UWVBFX0JZ VEUsICZhcnJheSwgJmFycmF5X2xlbiwKIAkJCQlEQlVTX1RZUEVfSU5WQUxJRCkpIHsKLQkJZXJy X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCisJCWVycm9yX2ZhaWxlZChjb25uZWN0aW9u LCBkYXRhLT5tc2csCiAJCQkJIlVuYWJsZSB0byBnZXQgYXJncyBmcm9tIEdldFJlY29yZFJlcGx5 Iik7CiAJCWdvdG8gZmFpbGVkOwogCX0KQEAgLTQ1MSw3ICs0NTEsNyBAQAogCQkJCQkJIkdldFJl bW90ZVNlcnZpY2VSZWNvcmQiKTsKIAlpZiAoIW1zZykgewogCQllcnJvcigiVW5hYmxlIHRvIGFs bG9jYXRlIG5ldyBtZXRob2QgY2FsbCIpOwotCQllcnJfY29ubmVjdF9mYWlsZWQoY29ubmVjdGlv biwgZGF0YS0+bXNnLCBzdHJlcnJvcihFTk9NRU0pKTsKKwkJZXJyb3Jfb3V0X29mX21lbW9yeShj b25uZWN0aW9uLCBkYXRhLT5tc2cpOwogCQlmaW5pc2hfc2RwKGRhdGEsIEZBTFNFKTsKIAkJcmV0 dXJuOwogCX0KQEAgLTQ3MCw3ICs0NzAsNyBAQAogCiAJaWYgKCFkYnVzX2Nvbm5lY3Rpb25fc2Vu ZF93aXRoX3JlcGx5KGNvbm5lY3Rpb24sIG1zZywgJnBlbmRpbmcsIC0xKSkgewogCQllcnJvcigi U2VuZGluZyBHZXRSZW1vdGVTZXJ2aWNlUmVjb3JkIGZhaWxlZCIpOwotCQllcnJfY29ubmVjdF9m YWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCBzdHJlcnJvcihFSU8pKTsKKwkJZXJyb3JfY29u bmVjdGlvbl9hdHRlbXB0X2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csIEVJTyk7CiAJCWZp bmlzaF9zZHAoZGF0YSwgRkFMU0UpOwogCQlyZXR1cm47CiAJfQpAQCAtNTA4LDkgKzUwOCwxMCBA QAogCQllcnJvcigiR2V0UmVtb3RlU2VydmljZUhhbmRsZXMgZmFpbGVkOiAlcyIsIGRlcnIubWVz c2FnZSk7CiAJCWlmIChkYnVzX2Vycm9yX2hhc19uYW1lKCZkZXJyLAogCQkJCQkib3JnLmJsdWV6 LkVycm9yLkNvbm5lY3Rpb25BdHRlbXB0RmFpbGVkIikpCi0JCQllcnJfY29ubmVjdF9mYWlsZWQo Y29ubmVjdGlvbiwgZGF0YS0+bXNnLCBzdHJlcnJvcihFSE9TVERPV04pKTsKKwkJCWVycm9yX2Nv bm5lY3Rpb25fYXR0ZW1wdF9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCAKKwkJCQkJCUVI T1NURE9XTik7CiAJCWVsc2UKLQkJCWVycl9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLCBk ZXJyLm1lc3NhZ2UpOworCQkJZXJyb3JfZmFpbGVkKGNvbm5lY3Rpb24sIGRhdGEtPm1zZywgZGVy ci5tZXNzYWdlKTsKIAkJZGJ1c19lcnJvcl9mcmVlKCZkZXJyKTsKIAkJZ290byBmYWlsZWQ7CiAJ fQpAQCAtNTE5LDcgKzUyMCw3IEBACiAJCQkJREJVU19UWVBFX0FSUkFZLCBEQlVTX1RZUEVfVUlO VDMyLAogCQkJCSZhcnJheSwgJmFycmF5X2xlbiwKIAkJCQlEQlVTX1RZUEVfSU5WQUxJRCkpIHsK LQkJZXJyX2ZhaWxlZChjb25uZWN0aW9uLCBkYXRhLT5tc2csCisJCWVycm9yX2ZhaWxlZChjb25u ZWN0aW9uLCBkYXRhLT5tc2csCiAJCQkJIlVuYWJsZSB0byBnZXQgYXJncyBmcm9tIHJlcGx5Iik7 CiAJCWdvdG8gZmFpbGVkOwogCX0KQEAgLTU3MCw3ICs1NzEsNyBAQAogCQkJCQkJIm9yZy5ibHVl ei5BZGFwdGVyIiwKIAkJCQkJCSJHZXRSZW1vdGVTZXJ2aWNlSGFuZGxlcyIpOwogCWlmICghbXNn KSB7Ci0JCWVycl9mYWlsZWQoY29ubmVjdGlvbiwgZGF0YS0+bXNnLAorCQllcnJvcl9mYWlsZWQo Y29ubmVjdGlvbiwgZGF0YS0+bXNnLAogCQkJCSJDb3VsZCBub3QgY3JlYXRlIGEgbmV3IGRidXMg bWVzc2FnZSIpOwogCQlnb3RvIGZhaWxlZDsKIAl9CkBAIC01ODIsNyArNTgzLDcgQEAKIAkJCQkJ REJVU19UWVBFX0lOVkFMSUQpOwogCiAJaWYgKCFkYnVzX2Nvbm5lY3Rpb25fc2VuZF93aXRoX3Jl cGx5KGNvbm5lY3Rpb24sIG1zZywgJnBlbmRpbmcsIC0xKSkgewotCQllcnJfZmFpbGVkKGNvbm5l Y3Rpb24sIGRhdGEtPm1zZywKKwkJZXJyb3JfZmFpbGVkKGNvbm5lY3Rpb24sIGRhdGEtPm1zZywK IAkJCQkiU2VuZGluZyBHZXRSZW1vdGVTZXJ2aWNlSGFuZGxlcyBmYWlsZWQiKTsKIAkJZ290byBm YWlsZWQ7CiAJfQpAQCAtNzM1LDcgKzczNiw3IEBACiAJCQkJREJVU19UWVBFX0lOVkFMSUQpOwog CiAJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZkZXJyKSkgewotCQllcnJfaW52YWxpZF9hcmdzKGNv bm5lY3Rpb24sIG1zZywgZGVyci5tZXNzYWdlKTsKKwkJZXJyb3JfaW52YWxpZF9hcmd1bWVudHMo Y29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOwogCQlkYnVzX2Vycm9yX2ZyZWUoJmRlcnIp OwogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVEOwogCX0KQEAgLTgyNSwxOCAr ODI2LDE4IEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0X2FyZ3MobXNnLCAmZGVyciwKIAkJCQkJ REJVU19UWVBFX1NUUklORywgJnBhdGgsCiAJCQkJCURCVVNfVFlQRV9JTlZBTElEKSkgewotCQll cnJfaW52YWxpZF9hcmdzKGNvbm5lY3Rpb24sIG1zZywgZGVyci5tZXNzYWdlKTsKKwkJZXJyb3Jf aW52YWxpZF9hcmd1bWVudHMoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOwogCQlyZXR1 cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVEOwogCX0KIAlpZiAoZGJ1c19lcnJvcl9pc19z ZXQoJmRlcnIpKSB7Ci0JCWVycl9pbnZhbGlkX2FyZ3MoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1l c3NhZ2UpOworCQllcnJvcl9pbnZhbGlkX2FyZ3VtZW50cyhjb25uZWN0aW9uLCBtc2csIGRlcnIu bWVzc2FnZSk7CiAJCWRidXNfZXJyb3JfZnJlZSgmZGVycik7CiAJCXJldHVybiBEQlVTX0hBTkRM RVJfUkVTVUxUX0hBTkRMRUQ7CiAJfQogCiAJbWF0Y2ggPSBnX3NsaXN0X2ZpbmRfY3VzdG9tKGRl dmljZXMsIHBhdGgsIGRldmljZV9wYXRoX2NtcCk7CiAJaWYgKCFtYXRjaCkKLQkJcmV0dXJuIGVy cl9kb2VzX25vdF9leGlzdChjb25uZWN0aW9uLCBtc2cpOworCQlyZXR1cm4gZXJyb3JfZGV2aWNl X2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24sIG1zZyk7CiAKIAlyZXBseSA9IGRidXNfbWVzc2Fn ZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICghcmVwbHkpCkBAIC05MDYsNyArOTA3LDcg QEAKIAkJCQlEQlVTX1RZUEVfU1RSSU5HLCAmYWRkcmVzcywKIAkJCQlEQlVTX1RZUEVfSU5WQUxJ RCk7CiAJaWYgKGRidXNfZXJyb3JfaXNfc2V0KCZkZXJyKSkgewotCQllcnJfaW52YWxpZF9hcmdz KGNvbm5lY3Rpb24sIG1zZywgZGVyci5tZXNzYWdlKTsKKwkJZXJyb3JfaW52YWxpZF9hcmd1bWVu dHMoY29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOwogCQlkYnVzX2Vycm9yX2ZyZWUoJmRl cnIpOwogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVEOwogCX0KQEAgLTkxNSw3 ICs5MTYsNyBAQAogCWRldmljZSA9IG1hbmFnZXJfZmluZF9kZXZpY2UoJmJkYSwgTlVMTCwgRkFM U0UpOwogCiAJaWYgKCFkZXZpY2UpCi0JCXJldHVybiBlcnJfZG9lc19ub3RfZXhpc3QoY29ubiwg bXNnKTsKKwkJcmV0dXJuIGVycm9yX2RldmljZV9kb2VzX25vdF9leGlzdChjb25uLCBtc2cpOwog CiAJcmVwbHkgPSBkYnVzX21lc3NhZ2VfbmV3X21ldGhvZF9yZXR1cm4obXNnKTsKIAlpZiAoIXJl cGx5KQpAQCAtOTM0LDEyICs5MzUsMTIgQEAKIAlEQnVzTWVzc2FnZSAqcmVwbHk7CiAKIAlpZiAo IWRlZmF1bHRfZGV2KQotCQlyZXR1cm4gZXJyX2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24sIG1z Zyk7CisJCXJldHVybiBlcnJvcl9kZXZpY2VfZG9lc19ub3RfZXhpc3QoY29ubmVjdGlvbiwgbXNn KTsKIAogCWlmIChkZWZhdWx0X2Rldi0+aGVhZHNldCA9PSBOVUxMICYmCiAJCWRidXNfbWVzc2Fn ZV9pc19tZXRob2RfY2FsbChtc2csIEFVRElPX01BTkFHRVJfSU5URVJGQUNFLAogCQkJCQkJCSJE ZWZhdWx0SGVhZHNldCIpKQotCQlyZXR1cm4gZXJyX2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24s IG1zZyk7CisJCXJldHVybiBlcnJvcl9kZXZpY2VfZG9lc19ub3RfZXhpc3QoY29ubmVjdGlvbiwg bXNnKTsKIAogCXJlcGx5ID0gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7CiAJ aWYgKCFyZXBseSkKQEAgLTk2NSwxOCArOTY2LDE4IEBACiAJaWYgKCFkYnVzX21lc3NhZ2VfZ2V0 X2FyZ3MobXNnLCAmZGVyciwKIAkJCQkJREJVU19UWVBFX1NUUklORywgJnBhdGgsCiAJCQkJCURC VVNfVFlQRV9JTlZBTElEKSkgewotCQllcnJfaW52YWxpZF9hcmdzKGNvbm5lY3Rpb24sIG1zZywg ZGVyci5tZXNzYWdlKTsKKwkJZXJyb3JfaW52YWxpZF9hcmd1bWVudHMoY29ubmVjdGlvbiwgbXNn LCBkZXJyLm1lc3NhZ2UpOwogCQlyZXR1cm4gREJVU19IQU5ETEVSX1JFU1VMVF9IQU5ETEVEOwog CX0KIAlpZiAoZGJ1c19lcnJvcl9pc19zZXQoJmRlcnIpKSB7Ci0JCWVycl9pbnZhbGlkX2FyZ3Mo Y29ubmVjdGlvbiwgbXNnLCBkZXJyLm1lc3NhZ2UpOworCQllcnJvcl9pbnZhbGlkX2FyZ3VtZW50 cyhjb25uZWN0aW9uLCBtc2csIGRlcnIubWVzc2FnZSk7CiAJCWRidXNfZXJyb3JfZnJlZSgmZGVy cik7CiAJCXJldHVybiBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7CiAJfQogCiAJbWF0Y2gg PSBnX3NsaXN0X2ZpbmRfY3VzdG9tKGRldmljZXMsIHBhdGgsIGRldmljZV9wYXRoX2NtcCk7CiAJ aWYgKCFtYXRjaCkKLQkJcmV0dXJuIGVycl9kb2VzX25vdF9leGlzdChjb25uZWN0aW9uLCBtc2cp OworCQlyZXR1cm4gZXJyb3JfZGV2aWNlX2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24sIG1zZyk7 CiAKIAlyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybihtc2cpOwogCWlmICgh cmVwbHkpCkBAIC05OTgsNyArOTk5LDcgQEAKIAkJCQkJCURCVVNfVFlQRV9TVFJJTkcsICZkZXZp Y2UtPnBhdGgsCiAJCQkJCQlEQlVTX1RZUEVfSU5WQUxJRCk7CiAJZWxzZQotCQlyZXR1cm4gZXJy X2RvZXNfbm90X2V4aXN0KGNvbm5lY3Rpb24sIG1zZyk7CisJCXJldHVybiBlcnJvcl9kZXZpY2Vf ZG9lc19ub3RfZXhpc3QoY29ubmVjdGlvbiwgbXNnKTsKIAogCWRlZmF1bHRfZGV2ID0gZGV2aWNl OwogCWRldmljZV9zdG9yZShkZXZpY2UsIFRSVUUpOwpkaWZmIC14IEVudHJpZXMgLXUgLXIgLU4g dXRpbHMvYXVkaW8vc2luay5jIHV0aWxzMi9hdWRpby9zaW5rLmMKLS0tIHV0aWxzL2F1ZGlvL3Np bmsuYwkyMDA3LTEwLTI3IDE0OjQ1OjM4LjAwMDAwMDAwMCArMDAwMAorKysgdXRpbHMyL2F1ZGlv L3NpbmsuYwkyMDA3LTEwLTI3IDIxOjQ4OjM4LjAwMDAwMDAwMCArMDAwMApAQCAtNDAsNyArNDAs NyBAQAogI2luY2x1ZGUgImF2ZHRwLmgiCiAjaW5jbHVkZSAiZGV2aWNlLmgiCiAjaW5jbHVkZSAi YTJkcC5oIgotI2luY2x1ZGUgImVycm9yLmgiCisjaW5jbHVkZSAiY29tbW9uLWVycm9yLmgiCiAj aW5jbHVkZSAic2luay5oIgogCiAjZGVmaW5lIFNUUkVBTV9TRVRVUF9SRVRSWV9USU1FUiAyMDAw CkBAIC0xNDcsNyArMTQ3LDcgQEAKIAkJZGJ1c19jb25uZWN0aW9uX3NlbmRfYW5kX3VucmVmKHBl bmRpbmctPmNvbm4sIHJlcGx5KTsKIAl9IGVsc2UgewogCQlkZWJ1ZygiU3RyZWFtIHNldHVwIGZh aWxlZCwgYWZ0ZXIgWENBU0UgY29ubmVjdDpjb25uZWN0Iik7Ci0JCWVycl9mYWlsZWQocGVuZGlu Zy0+Y29ubiwgcGVuZGluZy0+bXNnLCAiU3RyZWFtIHNldHVwIGZhaWxlZCIpOworCQllcnJvcl9m YWlsZWQocGVuZGluZy0+Y29ubiwgcGVuZGluZy0+bXNnLCAiU3RyZWFtIHNldHVwIGZhaWxlZCIp OwogCX0KIAogCXNpbmstPmNvbm5lY3QgPSBOVUxMOwpAQCAtMTgyLDcgKzE4Miw3IEBACiAJCQkJ CXN0cmVhbV9zZXR1cF9yZXRyeSwgc2luayk7CiAJCX0gZWxzZSB7CiAJCQlzaW5rLT5jb25uZWN0 ID0gTlVMTDsKLQkJCWVycl9mYWlsZWQocGVuZGluZy0+Y29ubiwgcGVuZGluZy0+bXNnLCAiU3Ry ZWFtIHNldHVwIGZhaWxlZCIpOworCQkJZXJyb3JfZmFpbGVkKHBlbmRpbmctPmNvbm4sIHBlbmRp bmctPm1zZywgIlN0cmVhbSBzZXR1cCBmYWlsZWQiKTsKIAkJCXBlbmRpbmdfcmVxdWVzdF9mcmVl KHBlbmRpbmcpOwogCQkJZGVidWcoIlN0cmVhbSBzZXR1cCBmYWlsZWQgOiAlcyIsIGF2ZHRwX3N0 cmVycm9yKGVycikpOwogCQl9CkBAIC0yMDEsMTQgKzIwMSwxNCBAQAogCQlzaW5rLT5zZXNzaW9u ID0gYXZkdHBfZ2V0KCZkZXYtPnNyYywgJmRldi0+ZHN0KTsKIAogCWlmICghc2luay0+c2Vzc2lv bikKLQkJcmV0dXJuIGVycl9jb25uZWN0X2ZhaWxlZChjb25uLCBtc2csCisJCXJldHVybiBlcnJv cl9mYWlsZWQoY29ubiwgbXNnLAogCQkJCQkJIlVuYWJsZSB0byBnZXQgYSBzZXNzaW9uIik7CiAK IAlpZiAoc2luay0+Y29ubmVjdCB8fCBzaW5rLT5kaXNjb25uZWN0KQotCQlyZXR1cm4gZXJyX2Nv bm5lY3RfZmFpbGVkKGNvbm4sIG1zZywgIkNvbm5lY3QgaW4gcHJvZ3Jlc3MiKTsKKwkJcmV0dXJu IGVycm9yX2luX3Byb2dyZXNzKGNvbm4sIG1zZywgIkRldmljZSBjb25uZWN0aW9uIGFscmVhZHkg aW4gcHJvZ3Jlc3MiKTsKIAogCWlmIChzaW5rLT5zdGF0ZSA+PSBBVkRUUF9TVEFURV9PUEVOKQot CQlyZXR1cm4gZXJyX2FscmVhZHlfY29ubmVjdGVkKGNvbm4sIG1zZyk7CisJCXJldHVybiBlcnJv cl9hbHJlYWR5X2Nvbm5lY3RlZChjb25uLCBtc2cpOwogCiAJcGVuZGluZyA9IGdfbmV3MChzdHJ1 Y3QgcGVuZGluZ19yZXF1ZXN0LCAxKTsKIAlwZW5kaW5nLT5jb25uID0gZGJ1c19jb25uZWN0aW9u X3JlZihjb25uKTsKQEAgLTIyMyw4ICsyMjMsNyBAQAogCQlzaW5rLT5jb25uZWN0ID0gTlVMTDsK IAkJYXZkdHBfdW5yZWYoc2luay0+c2Vzc2lvbik7CiAJCXNpbmstPnNlc3Npb24gPSBOVUxMOwot CQlyZXR1cm4gZXJyX2Nvbm5lY3RfZmFpbGVkKGNvbm4sIG1zZywKLQkJCQkJCSJGYWlsZWQgdG8g cmVxdWVzdCBhIHN0cmVhbSIpOworCQlyZXR1cm4gZXJyb3JfZmFpbGVkKGNvbm4sIG1zZywgIkZh aWxlZCB0byByZXF1ZXN0IGEgc3RyZWFtIik7CiAJfQogCiAJZGVidWcoInN0cmVhbSBjcmVhdGlv biBpbiBwcm9ncmVzcyIpOwpAQCAtMjQzLDEwICsyNDIsMTAgQEAKIAlpbnQgZXJyOwogCiAJaWYg KCFzaW5rLT5zZXNzaW9uKQotCQlyZXR1cm4gZXJyX25vdF9jb25uZWN0ZWQoY29ubiwgbXNnKTsK KwkJcmV0dXJuIGVycm9yX25vdF9jb25uZWN0ZWQoY29ubiwgbXNnKTsKIAogCWlmIChzaW5rLT5j b25uZWN0IHx8IHNpbmstPmRpc2Nvbm5lY3QpCi0JCXJldHVybiBlcnJfZmFpbGVkKGNvbm4sIG1z Zywgc3RyZXJyb3IoRUJVU1kpKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBtc2csIHN0 cmVycm9yKEVCVVNZKSk7CiAKIAlpZiAoc2luay0+c3RhdGUgPCBBVkRUUF9TVEFURV9PUEVOKSB7 CiAJCURCdXNNZXNzYWdlICpyZXBseSA9IGRidXNfbWVzc2FnZV9uZXdfbWV0aG9kX3JldHVybiht c2cpOwpAQCAtMjU5LDcgKzI1OCw3IEBACiAKIAllcnIgPSBhdmR0cF9jbG9zZShzaW5rLT5zZXNz aW9uLCBzaW5rLT5zdHJlYW0pOwogCWlmIChlcnIgPCAwKQotCQlyZXR1cm4gZXJyX2ZhaWxlZChj b25uLCBtc2csIHN0cmVycm9yKC1lcnIpKTsKKwkJcmV0dXJuIGVycm9yX2ZhaWxlZChjb25uLCBt c2csIHN0cmVycm9yKC1lcnIpKTsKIAogCXBlbmRpbmcgPSBnX25ldzAoc3RydWN0IHBlbmRpbmdf cmVxdWVzdCwgMSk7CiAJcGVuZGluZy0+Y29ubiA9IGRidXNfY29ubmVjdGlvbl9yZWYoY29ubik7 Cg== ---MOQ119359150484ee32b650f4d224c93b9468ce1d7203--