Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Tue, 18 Jun 2002 19:33:52 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Tue, 18 Jun 2002 19:33:51 -0400 Received: from fmr03.intel.com ([143.183.121.5]:45817 "EHLO hermes.sc.intel.com") by vger.kernel.org with ESMTP id ; Tue, 18 Jun 2002 19:33:46 -0400 Message-Id: <200206182333.g5INXaP05417@unix-os.sc.intel.com> From: mgross Reply-To: mgross@unix-os.sc.intel.com Organization: SSG Intel To: Linux Kernel Mailing List Subject: Re: [PATCH] TCore patch for 2.5.22 Date: Tue, 18 Jun 2002 16:40:57 -0400 X-Mailer: KMail [version 1.3.1] Cc: Linus Torvalds , mark.gross@intel.com References: <200206142310.g5ENADP23772@unix-os.sc.intel.com> <200206182239.g5IMdrP04770@unix-os.sc.intel.com> In-Reply-To: <200206182239.g5IMdrP04770@unix-os.sc.intel.com> MIME-Version: 1.0 Content-Type: Multipart/Mixed; boundary="------------Boundary-00=_9G5XVGHSTR7YMBI3OIXT" Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 40054 Lines: 546 --------------Boundary-00=_9G5XVGHSTR7YMBI3OIXT Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 8bit Patch actually attached this time. --mgross On Tuesday 18 June 2002 03:47 pm, mgross wrote: > Attached is a re-base to the 2.5.22 kernel of the patch posted last week. > It also includes the clean up suggested by Vamsi Krishna. > > This patch has been tested on my SMP system and is stable. > I would like very much to see this feature added to the 2.5.x kernels and > more milage given to it. > > To use the core files from multi-threaded applications, created with this > patch you may need to strip the objects from /lib/libpthread. For my system > 'strip /lib/libpthread-0.9.so makes things good, YMMV. > > Please apply this patch. > > --mgross > > - > 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/ --------------Boundary-00=_9G5XVGHSTR7YMBI3OIXT Content-Type: text/x-diff; charset="iso-8859-1"; name="tcore-2522-061802.pat" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tcore-2522-061802.pat" ZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNS4yMi9hcmNoL2kzODYva2VybmVsL2kzODcu YyBsaW51eDI1MjIudGNvcmUvYXJjaC9pMzg2L2tlcm5lbC9pMzg3LmMKLS0tIGxpbnV4LTIuNS4y Mi9hcmNoL2kzODYva2VybmVsL2kzODcuYwlTdW4gSnVuIDE2IDIyOjMxOjM3IDIwMDIKKysrIGxp bnV4MjUyMi50Y29yZS9hcmNoL2kzODYva2VybmVsL2kzODcuYwlUdWUgSnVuIDE4IDE1OjE3OjEy IDIwMDIKQEAgLTUyOCwzICs1MjgsMzYgQEAKIAogCXJldHVybiBmcHZhbGlkOwogfQorCitpbnQg ZHVtcF90YXNrX2ZwdSggc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCB1c2VyX2kzODdf c3RydWN0ICpmcHUgKQoreworCWludCBmcHZhbGlkOworCisJZnB2YWxpZCA9IHRzay0+dXNlZF9t YXRoOworCWlmICggZnB2YWxpZCApIHsKKwkJaWYgKHRzayA9PSBjdXJyZW50KSB1bmxhenlfZnB1 KCB0c2sgKTsKKwkJaWYgKCBjcHVfaGFzX2Z4c3IgKSB7CisJCQljb3B5X2ZwdV9meHNhdmUoIHRz aywgZnB1ICk7CisJCX0gZWxzZSB7CisJCQljb3B5X2ZwdV9mc2F2ZSggdHNrLCBmcHUgKTsKKwkJ fQorCX0KKworCXJldHVybiBmcHZhbGlkOworfQorCitpbnQgZHVtcF90YXNrX2V4dGVuZGVkX2Zw dSggc3RydWN0IHRhc2tfc3RydWN0ICp0c2ssIHN0cnVjdCB1c2VyX2Z4c3Jfc3RydWN0ICpmcHUg KQoreworCWludCBmcHZhbGlkOworCQorCWZwdmFsaWQgPSB0c2stPnVzZWRfbWF0aCAmJiBjcHVf aGFzX2Z4c3I7CisJaWYgKCBmcHZhbGlkICkgeworCQlpZiAodHNrID09IGN1cnJlbnQpIHVubGF6 eV9mcHUoIHRzayApOworCQltZW1jcHkoIGZwdSwgJnRzay0+dGhyZWFkLmkzODcuZnhzYXZlLAor CQlzaXplb2Yoc3RydWN0IHVzZXJfZnhzcl9zdHJ1Y3QpICk7CisJfQorCQorCXJldHVybiBmcHZh bGlkOworfQorCisKZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNS4yMi9hcmNoL2kzODYv a2VybmVsL3Byb2Nlc3MuYyBsaW51eDI1MjIudGNvcmUvYXJjaC9pMzg2L2tlcm5lbC9wcm9jZXNz LmMKLS0tIGxpbnV4LTIuNS4yMi9hcmNoL2kzODYva2VybmVsL3Byb2Nlc3MuYwlTdW4gSnVuIDE2 IDIyOjMxOjIyIDIwMDIKKysrIGxpbnV4MjUyMi50Y29yZS9hcmNoL2kzODYva2VybmVsL3Byb2Nl c3MuYwlUdWUgSnVuIDE4IDE1OjE3OjEyIDIwMDIKQEAgLTYyNiw2ICs2MjYsMjQgQEAKIAogCWR1 bXAtPnVfZnB2YWxpZCA9IGR1bXBfZnB1IChyZWdzLCAmZHVtcC0+aTM4Nyk7CiB9CisvKiAKKyAq IENhcHR1cmUgdGhlIHVzZXIgc3BhY2UgcmVnaXN0ZXJzIGlmIHRoZSB0YXNrIGlzIG5vdCBydW5u aW5nIChpbiB1c2VyIHNwYWNlKQorICovCisjaW5jbHVkZSA8bGludXgvZWxmY29yZS5oPgoraW50 IGR1bXBfdGFza19yZWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdHNrLCAgZWxmX2dyZWdzZXRfdCAq cmVncykKK3sKKwlzdHJ1Y3QgcHRfcmVncyBwdHJlZ3M7CisJCisJcHRyZWdzID0gKihzdHJ1Y3Qg cHRfcmVncyAqKSgodW5zaWduZWQgbG9uZyl0c2stPnRocmVhZF9pbmZvICsgVEhSRUFEX1NJWkUg LSBzaXplb2Yoc3RydWN0IHB0X3JlZ3MpKTsKKwlwdHJlZ3MueGNzICY9IDB4ZmZmZjsKKwlwdHJl Z3MueGRzICY9IDB4ZmZmZjsKKwlwdHJlZ3MueGVzICY9IDB4ZmZmZjsKKwlwdHJlZ3MueHNzICY9 IDB4ZmZmZjsKKworCWVsZl9jb3JlX2NvcHlfcmVncyhyZWdzLCAmcHRyZWdzKTsKKworCXJldHVy biAxOworfQogCiAvKgogICogVGhpcyBzcGVjaWFsIG1hY3JvIGNhbiBiZSB1c2VkIHRvIGxvYWQg YSBkZWJ1Z2dpbmcgcmVnaXN0ZXIKZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNS4yMi9h cmNoL2lhNjQva2VybmVsL3Byb2Nlc3MuYyBsaW51eDI1MjIudGNvcmUvYXJjaC9pYTY0L2tlcm5l bC9wcm9jZXNzLmMKLS0tIGxpbnV4LTIuNS4yMi9hcmNoL2lhNjQva2VybmVsL3Byb2Nlc3MuYwlT dW4gSnVuIDE2IDIyOjMxOjMyIDIwMDIKKysrIGxpbnV4MjUyMi50Y29yZS9hcmNoL2lhNjQva2Vy bmVsL3Byb2Nlc3MuYwlUdWUgSnVuIDE4IDE1OjE3OjEyIDIwMDIKQEAgLTM3Miw2ICszNzIsMzEg QEAKIHZvaWQKIGRvX2NvcHlfcmVncyAoc3RydWN0IHVud19mcmFtZV9pbmZvICppbmZvLCB2b2lk ICphcmcpCiB7CisJZG9fY29weV90YXNrX3JlZ3MoY3VycmVudCwgaW5mbywgYXJnKTsKK30KKwor dm9pZAorZG9fZHVtcF9mcHUgKHN0cnVjdCB1bndfZnJhbWVfaW5mbyAqaW5mbywgdm9pZCAqYXJn KQoreworCWRvX2R1bXBfdGFza19mcHUoY3VycmVudCwgaW5mbywgYXJnKTsKK30KKwordm9pZAor aWE2NF9lbGZfY29yZV9jb3B5X3JlZ3MgKHN0cnVjdCBwdF9yZWdzICpwdCwgZWxmX2dyZWdzZXRf dCBkc3QpCit7CisJdW53X2luaXRfcnVubmluZyhkb19jb3B5X3JlZ3MsIGRzdCk7Cit9CisKK2lu dAorZHVtcF9mcHUgKHN0cnVjdCBwdF9yZWdzICpwdCwgZWxmX2ZwcmVnc2V0X3QgZHN0KQorewor CXVud19pbml0X3J1bm5pbmcoZG9fZHVtcF9mcHUsIGRzdCk7CisJcmV0dXJuIDE7CS8qIGYwLWYz MSBhcmUgYWx3YXlzIHZhbGlkIHNvIHdlIGFsd2F5cyByZXR1cm4gMSAqLworfQorCitzdGF0aWMg dm9pZAorZG9fY29weV90YXNrX3JlZ3MgKHN0cnVjdCB0YXNrX3N0cnVjdCAqdGFzaywgc3RydWN0 IHVud19mcmFtZV9pbmZvICppbmZvLCB2b2lkICphcmcpCit7CiAJdW5zaWduZWQgbG9uZyBtYXNr LCBzcCwgbmF0X2JpdHMgPSAwLCBpcCwgYXJfcm5hdCwgdXJic19lbmQsIGNmbTsKIAllbGZfZ3Jl Z190ICpkc3QgPSBhcmc7CiAJc3RydWN0IHB0X3JlZ3MgKnB0OwpAQCAtMzg2LDEyICs0MTEsMTIg QEAKIAl1bndfZ2V0X3NwKGluZm8sICZzcCk7CiAJcHQgPSAoc3RydWN0IHB0X3JlZ3MgKikgKHNw ICsgMTYpOwogCi0JdXJic19lbmQgPSBpYTY0X2dldF91c2VyX3Jic19lbmQoY3VycmVudCwgcHQs ICZjZm0pOworCXVyYnNfZW5kID0gaWE2NF9nZXRfdXNlcl9yYnNfZW5kKHRhc2ssIHB0LCAmY2Zt KTsKIAotCWlmIChpYTY0X3N5bmNfdXNlcl9yYnMoY3VycmVudCwgaW5mby0+c3csIHB0LT5hcl9i c3BzdG9yZSwgdXJic19lbmQpIDwgMCkKKwlpZiAoaWE2NF9zeW5jX3VzZXJfcmJzKHRhc2ssIGlu Zm8tPnN3LCBwdC0+YXJfYnNwc3RvcmUsIHVyYnNfZW5kKSA8IDApCiAJCXJldHVybjsKIAotCWlh NjRfcGVlayhjdXJyZW50LCBpbmZvLT5zdywgdXJic19lbmQsIChsb25nKSBpYTY0X3JzZV9ybmF0 X2FkZHIoKGxvbmcgKikgdXJic19lbmQpLAorCWlhNjRfcGVlayh0YXNrLCBpbmZvLT5zdywgdXJi c19lbmQsIChsb25nKSBpYTY0X3JzZV9ybmF0X2FkZHIoKGxvbmcgKikgdXJic19lbmQpLAogCQkg ICZhcl9ybmF0KTsKIAogCS8qCkBAIC00NDAsNyArNDY1LDcgQEAKIH0KIAogdm9pZAotZG9fZHVt cF9mcHUgKHN0cnVjdCB1bndfZnJhbWVfaW5mbyAqaW5mbywgdm9pZCAqYXJnKQorZG9fZHVtcF90 YXNrX2ZwdSAoc3RydWN0IHRhc2tfc3RydWN0ICp0YXNrLCBzdHJ1Y3QgdW53X2ZyYW1lX2luZm8g KmluZm8sIHZvaWQgKmFyZykKIHsKIAllbGZfZnByZWdfdCAqZHN0ID0gYXJnOwogCWludCBpOwpA QCAtNDU1LDIyICs0ODAsNDEgQEAKIAlmb3IgKGkgPSAyOyBpIDwgMzI7ICsraSkKIAkJdW53X2dl dF9mcihpbmZvLCBpLCBkc3QgKyBpKTsKIAotCWlhNjRfZmx1c2hfZnBoKGN1cnJlbnQpOwotCWlm ICgoY3VycmVudC0+dGhyZWFkLmZsYWdzICYgSUE2NF9USFJFQURfRlBIX1ZBTElEKSAhPSAwKQot CQltZW1jcHkoZHN0ICsgMzIsIGN1cnJlbnQtPnRocmVhZC5mcGgsIDk2KjE2KTsKKwlpYTY0X2Zs dXNoX2ZwaCh0YXNrKTsKKwlpZiAoKHRhc2stPnRocmVhZC5mbGFncyAmIElBNjRfVEhSRUFEX0ZQ SF9WQUxJRCkgIT0gMCkKKwkJbWVtY3B5KGRzdCArIDMyLCB0YXNrLT50aHJlYWQuZnBoLCA5Niox Nik7CiB9CiAKLXZvaWQKLWlhNjRfZWxmX2NvcmVfY29weV9yZWdzIChzdHJ1Y3QgcHRfcmVncyAq cHQsIGVsZl9ncmVnc2V0X3QgZHN0KQoraW50IGR1bXBfdGFza19yZWdzKHN0cnVjdCB0YXNrX3N0 cnVjdCAqdGFzaywgZWxmX2dyZWdzZXRfdCAqcmVncykKIHsKLQl1bndfaW5pdF9ydW5uaW5nKGRv X2NvcHlfcmVncywgZHN0KTsKKwlzdHJ1Y3QgdW53X2ZyYW1lX2luZm8gdGNvcmVfaW5mbzsKKwor CWlmKGN1cnJlbnQgPT0gdGFzaykgeworCQl1bndfaW5pdF9ydW5uaW5nKGRvX2NvcHlfcmVncywg cmVncyk7CisJfQorCWVsc2UgeworCQltZW1zZXQoJnRjb3JlX2luZm8sIDAsIHNpemVvZih0Y29y ZV9pbmZvKSk7CQorCQl1bndfaW5pdF9mcm9tX2Jsb2NrZWRfdGFzaygmdGNvcmVfaW5mbywgdGFz ayk7CisJCWRvX2NvcHlfdGFza19yZWdzKHRhc2ssICZ0Y29yZV9pbmZvLCByZWdzKTsKKwl9CisK KwlyZXR1cm4gMTsKIH0KIAotaW50Ci1kdW1wX2ZwdSAoc3RydWN0IHB0X3JlZ3MgKnB0LCBlbGZf ZnByZWdzZXRfdCBkc3QpCitpbnQgZHVtcF90YXNrX2ZwdSAoc3RydWN0IHRhc2tfc3RydWN0ICp0 YXNrLCBlbGZfZnByZWdzZXRfdCAqZHN0KQogewotCXVud19pbml0X3J1bm5pbmcoZG9fZHVtcF9m cHUsIGRzdCk7Ci0JcmV0dXJuIDE7CS8qIGYwLWYzMSBhcmUgYWx3YXlzIHZhbGlkIHNvIHdlIGFs d2F5cyByZXR1cm4gMSAqLworCXN0cnVjdCB1bndfZnJhbWVfaW5mbyB0Y29yZV9pbmZvOworCisJ aWYoY3VycmVudCA9PSB0YXNrKSB7CisJCXVud19pbml0X3J1bm5pbmcoZG9fZHVtcF9mcHUsIGRz dCk7CisJfQorCWVsc2UgeworCQltZW1zZXQoJnRjb3JlX2luZm8sIDAsIHNpemVvZih0Y29yZV9p bmZvKSk7CQorCQl1bndfaW5pdF9mcm9tX2Jsb2NrZWRfdGFzaygmdGNvcmVfaW5mbywgdGFzayk7 CisJCWRvX2R1bXBfdGFza19mcHUodGFzaywgJnRjb3JlX2luZm8sIGRzdCk7CisJfQorCisJcmV0 dXJuIDE7IAogfQogCiBhc21saW5rYWdlIGxvbmcKZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4 LTIuNS4yMi9mcy9iaW5mbXRfZWxmLmMgbGludXgyNTIyLnRjb3JlL2ZzL2JpbmZtdF9lbGYuYwot LS0gbGludXgtMi41LjIyL2ZzL2JpbmZtdF9lbGYuYwlTdW4gSnVuIDE2IDIyOjMxOjMxIDIwMDIK KysrIGxpbnV4MjUyMi50Y29yZS9mcy9iaW5mbXRfZWxmLmMJVHVlIEp1biAxOCAxNToxNzoxMiAy MDAyCkBAIC0xMyw2ICsxMyw3IEBACiAKICNpbmNsdWRlIDxsaW51eC9mcy5oPgogI2luY2x1ZGUg PGxpbnV4L3N0YXQuaD4KKyNpbmNsdWRlIDxsaW51eC9zY2hlZC5oPgogI2luY2x1ZGUgPGxpbnV4 L3RpbWUuaD4KICNpbmNsdWRlIDxsaW51eC9tbS5oPgogI2luY2x1ZGUgPGxpbnV4L21tYW4uaD4K QEAgLTMwLDYgKzMxLDcgQEAKICNpbmNsdWRlIDxsaW51eC9lbGZjb3JlLmg+CiAjaW5jbHVkZSA8 bGludXgvaW5pdC5oPgogI2luY2x1ZGUgPGxpbnV4L2hpZ2h1aWQuaD4KKyNpbmNsdWRlIDxsaW51 eC9zbXAuaD4KICNpbmNsdWRlIDxsaW51eC9zbXBfbG9jay5oPgogI2luY2x1ZGUgPGxpbnV4L2Nv bXBpbGVyLmg+CiAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPgpAQCAtOTYzLDcgKzk2NSw3IEBA CiAvKiAjZGVmaW5lIERFQlVHICovCiAKICNpZmRlZiBERUJVRwotc3RhdGljIHZvaWQgZHVtcF9y ZWdzKGNvbnN0IGNoYXIgKnN0ciwgZWxmX2dyZWdfdCAqcikKK3N0YXRpYyB2b2lkIGR1bXBfcmVn cyhjb25zdCBjaGFyICpzdHIsIGVsZl9ncmVnc2V0X3QgKnIpCiB7CiAJaW50IGk7CiAJc3RhdGlj IGNvbnN0IGNoYXIgKnJlZ3NbXSA9IHsgImVieCIsICJlY3giLCAiZWR4IiwgImVzaSIsICJlZGki LCAiZWJwIiwKQEAgLTEwMTEsNiArMTAxMywxNTggQEAKICNkZWZpbmUgRFVNUF9TRUVLKG9mZikJ XAogCWlmICghZHVtcF9zZWVrKGZpbGUsIChvZmYpKSkgXAogCQlnb3RvIGVuZF9jb3JlZHVtcDsK Kworc3RhdGljIGlubGluZSB2b2lkIGZpbGxfZWxmX2hlYWRlcihzdHJ1Y3QgZWxmaGRyICplbGYs IGludCBzZWdzKQoreworCW1lbWNweShlbGYtPmVfaWRlbnQsIEVMRk1BRywgU0VMRk1BRyk7CisJ ZWxmLT5lX2lkZW50W0VJX0NMQVNTXSA9IEVMRl9DTEFTUzsKKwllbGYtPmVfaWRlbnRbRUlfREFU QV0gPSBFTEZfREFUQTsKKwllbGYtPmVfaWRlbnRbRUlfVkVSU0lPTl0gPSBFVl9DVVJSRU5UOwor CW1lbXNldChlbGYtPmVfaWRlbnQrRUlfUEFELCAwLCBFSV9OSURFTlQtRUlfUEFEKTsKKworCWVs Zi0+ZV90eXBlID0gRVRfQ09SRTsKKwllbGYtPmVfbWFjaGluZSA9IEVMRl9BUkNIOworCWVsZi0+ ZV92ZXJzaW9uID0gRVZfQ1VSUkVOVDsKKwllbGYtPmVfZW50cnkgPSAwOworCWVsZi0+ZV9waG9m ZiA9IHNpemVvZihzdHJ1Y3QgZWxmaGRyKTsKKwllbGYtPmVfc2hvZmYgPSAwOworCWVsZi0+ZV9m bGFncyA9IDA7CisJZWxmLT5lX2Voc2l6ZSA9IHNpemVvZihzdHJ1Y3QgZWxmaGRyKTsKKwllbGYt PmVfcGhlbnRzaXplID0gc2l6ZW9mKHN0cnVjdCBlbGZfcGhkcik7CisJZWxmLT5lX3BobnVtID0g c2VnczsKKwllbGYtPmVfc2hlbnRzaXplID0gMDsKKwllbGYtPmVfc2hudW0gPSAwOworCWVsZi0+ ZV9zaHN0cm5keCA9IDA7CisJcmV0dXJuOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQgZmlsbF9l bGZfbm90ZV9waGRyKHN0cnVjdCBlbGZfcGhkciAqcGhkciwgaW50IHN6LCBvZmZfdCBvZmZzZXQp Cit7CisJcGhkci0+cF90eXBlID0gUFRfTk9URTsKKwlwaGRyLT5wX29mZnNldCA9IG9mZnNldDsK KwlwaGRyLT5wX3ZhZGRyID0gMDsKKwlwaGRyLT5wX3BhZGRyID0gMDsKKwlwaGRyLT5wX2ZpbGVz eiA9IHN6OworCXBoZHItPnBfbWVtc3ogPSAwOworCXBoZHItPnBfZmxhZ3MgPSAwOworCXBoZHIt PnBfYWxpZ24gPSAwOworCXJldHVybjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGZpbGxfbm90 ZShzdHJ1Y3QgbWVtZWxmbm90ZSAqbm90ZSwgY29uc3QgY2hhciAqbmFtZSwgaW50IHR5cGUsIAor CQl1bnNpZ25lZCBpbnQgc3osIHZvaWQgKmRhdGEpCit7CisJbm90ZS0+bmFtZSA9IG5hbWU7CisJ bm90ZS0+dHlwZSA9IHR5cGU7CisJbm90ZS0+ZGF0YXN6ID0gc3o7CisJbm90ZS0+ZGF0YSA9IGRh dGE7CisJcmV0dXJuOworfQorCisvKgorICogZmlsbCB1cCBhbGwgdGhlIGZpZWxkcyBpbiBwcnN0 YXR1cyBmcm9tIHRoZSBnaXZlbiB0YXNrIHN0cnVjdCwgZXhjZXB0IHJlZ2lzdGVycworICogd2hp Y2ggbmVlZCB0byBiZSBmaWxsZWQgdXAgc2VwZXJhdGVseS4KKyAqLworc3RhdGljIGlubGluZSB2 b2lkIGZpbGxfcHJzdGF0dXMoc3RydWN0IGVsZl9wcnN0YXR1cyAqcHJzdGF0dXMsIHN0cnVjdCB0 YXNrX3N0cnVjdCAqcCwgbG9uZyBzaWducikgCit7CisJcHJzdGF0dXMtPnByX2luZm8uc2lfc2ln bm8gPSBwcnN0YXR1cy0+cHJfY3Vyc2lnID0gc2lnbnI7CisJcHJzdGF0dXMtPnByX3NpZ3BlbmQg PSBwLT5wZW5kaW5nLnNpZ25hbC5zaWdbMF07CisJcHJzdGF0dXMtPnByX3NpZ2hvbGQgPSBwLT5i bG9ja2VkLnNpZ1swXTsKKwlwcnN0YXR1cy0+cHJfcGlkID0gcC0+cGlkOworCXByc3RhdHVzLT5w cl9wcGlkID0gcC0+cGFyZW50LT5waWQ7CisJcHJzdGF0dXMtPnByX3BncnAgPSBwLT5wZ3JwOwor CXByc3RhdHVzLT5wcl9zaWQgPSBwLT5zZXNzaW9uOworCXByc3RhdHVzLT5wcl91dGltZS50dl9z ZWMgPSBDVF9UT19TRUNTKHAtPnRpbWVzLnRtc191dGltZSk7CisJcHJzdGF0dXMtPnByX3V0aW1l LnR2X3VzZWMgPSBDVF9UT19VU0VDUyhwLT50aW1lcy50bXNfdXRpbWUpOworCXByc3RhdHVzLT5w cl9zdGltZS50dl9zZWMgPSBDVF9UT19TRUNTKHAtPnRpbWVzLnRtc19zdGltZSk7CisJcHJzdGF0 dXMtPnByX3N0aW1lLnR2X3VzZWMgPSBDVF9UT19VU0VDUyhwLT50aW1lcy50bXNfc3RpbWUpOwor CXByc3RhdHVzLT5wcl9jdXRpbWUudHZfc2VjID0gQ1RfVE9fU0VDUyhwLT50aW1lcy50bXNfY3V0 aW1lKTsKKwlwcnN0YXR1cy0+cHJfY3V0aW1lLnR2X3VzZWMgPSBDVF9UT19VU0VDUyhwLT50aW1l cy50bXNfY3V0aW1lKTsKKwlwcnN0YXR1cy0+cHJfY3N0aW1lLnR2X3NlYyA9IENUX1RPX1NFQ1Mo cC0+dGltZXMudG1zX2NzdGltZSk7CisJcHJzdGF0dXMtPnByX2NzdGltZS50dl91c2VjID0gQ1Rf VE9fVVNFQ1MocC0+dGltZXMudG1zX2NzdGltZSk7CisJcmV0dXJuOworfQorCitzdGF0aWMgaW5s aW5lIHZvaWQgZmlsbF9wc2luZm8oc3RydWN0IGVsZl9wcnBzaW5mbyAqcHNpbmZvLCBzdHJ1Y3Qg dGFza19zdHJ1Y3QgKnApCit7CisJaW50IGk7CisJCisJcHNpbmZvLT5wcl9waWQgPSBwLT5waWQ7 CisJcHNpbmZvLT5wcl9wcGlkID0gcC0+cGFyZW50LT5waWQ7CisJcHNpbmZvLT5wcl9wZ3JwID0g cC0+cGdycDsKKwlwc2luZm8tPnByX3NpZCA9IHAtPnNlc3Npb247CisKKwlpID0gcC0+c3RhdGUg PyBmZnoofnAtPnN0YXRlKSArIDEgOiAwOworCXBzaW5mby0+cHJfc3RhdGUgPSBpOworCXBzaW5m by0+cHJfc25hbWUgPSAoaSA8IDAgfHwgaSA+IDUpID8gJy4nIDogIlJTRFpURCJbaV07CisJcHNp bmZvLT5wcl96b21iID0gcHNpbmZvLT5wcl9zbmFtZSA9PSAnWic7CisJcHNpbmZvLT5wcl9uaWNl ID0gIHRhc2tfbmljZShwKTsKKwlwc2luZm8tPnByX2ZsYWcgPSBwLT5mbGFnczsKKwlwc2luZm8t PnByX3VpZCA9IE5FV19UT19PTERfVUlEKHAtPnVpZCk7CisJcHNpbmZvLT5wcl9naWQgPSBORVdf VE9fT0xEX0dJRChwLT5naWQpOworCXN0cm5jcHkocHNpbmZvLT5wcl9mbmFtZSwgcC0+Y29tbSwg c2l6ZW9mKHBzaW5mby0+cHJfZm5hbWUpKTsKKwlyZXR1cm47Cit9CisKKy8qIEhlcmUgaXMgdGhl IHN0cnVjdHVyZSBpbiB3aGljaCBzdGF0dXMgb2YgZWFjaCB0aHJlYWQgaXMgY2FwdHVyZWQuICov CitzdHJ1Y3QgZWxmX3RocmVhZF9zdGF0dXMKK3sKKwlzdHJ1Y3QgbGlzdF9oZWFkIGxpc3Q7CisJ c3RydWN0IGVsZl9wcnN0YXR1cyBwcnN0YXR1czsJLyogTlRfUFJTVEFUVVMgKi8KKwllbGZfZnBy ZWdzZXRfdCBmcHU7CQkvKiBOVF9QUkZQUkVHICovCisjaWZkZWYgRUxGX0NPUkVfQ09QWV9YRlBS RUdTCisJZWxmX2ZweHJlZ3NldF90IHhmcHU7CQkvKiBOVF9QUlhGUFJFRyAqLworI2VuZGlmCisJ c3RydWN0IG1lbWVsZm5vdGUgbm90ZXNbM107CisJaW50IG51bV9ub3RlczsKK307CisKKy8qCisg KiBJbiBvcmRlciB0byBhZGQgdGhlIHNwZWNpZmljIHRocmVhZCBpbmZvcm1hdGlvbiBmb3IgdGhl IGVsZiBmaWxlIGZvcm1hdCwKKyAqIHdlIG5lZWQgdG8ga2VlcCBhIGxpbmtlZCBsaXN0IG9mIGV2 ZXJ5IHRocmVhZHMgcHJfc3RhdHVzIGFuZCB0aGVuCisgKiBjcmVhdGUgYSBzaW5nbGUgc2VjdGlv biBmb3IgdGhlbSBpbiB0aGUgZmluYWwgY29yZSBmaWxlLgorICovCitzdGF0aWMgaW50IGVsZl9k dW1wX3RocmVhZF9zdGF0dXMobG9uZyBzaWduciwgc3RydWN0IHRhc2tfc3RydWN0ICogcCwgc3Ry dWN0IGxpc3RfaGVhZCAqIHRocmVhZF9saXN0KQoreworCisJc3RydWN0IGVsZl90aHJlYWRfc3Rh dHVzICp0OworCWludCBzeiA9IDA7CisKKwl0ID0ga21hbGxvYyhzaXplb2YoKnQpLCBHRlBfS0VS TkVMKTsKKwlpZiAoIXQpIHsKKwkJcHJpbnRrKEtFUk5fV0FSTklORyAiQ2Fubm90IGFsbG9jYXRl IG1lbW9yeSBmb3IgdGhyZWFkIHN0YXR1cy5cbiIpOworCQlyZXR1cm4gMDsKKwl9CisKKwlJTklU X0xJU1RfSEVBRCgmdC0+bGlzdCk7CisJdC0+bnVtX25vdGVzID0gMDsKKworCWZpbGxfcHJzdGF0 dXMoJnQtPnByc3RhdHVzLCBwLCBzaWducik7CisJZWxmX2NvcmVfY29weV90YXNrX3JlZ3MocCwg JnQtPnByc3RhdHVzLnByX3JlZyk7CQorCQorCWZpbGxfbm90ZSgmdC0+bm90ZXNbMF0sICJDT1JF IiwgTlRfUFJTVEFUVVMsIHNpemVvZih0LT5wcnN0YXR1cyksICYodC0+cHJzdGF0dXMpKTsKKwl0 LT5udW1fbm90ZXMrKzsKKwlzeiArPSBub3Rlc2l6ZSgmdC0+bm90ZXNbMF0pOworCisJaWYgKCh0 LT5wcnN0YXR1cy5wcl9mcHZhbGlkID0gZWxmX2NvcmVfY29weV90YXNrX2ZwcmVncyhwLCAmdC0+ ZnB1KSkpIHsKKwkJZmlsbF9ub3RlKCZ0LT5ub3Rlc1sxXSwgIkNPUkUiLCBOVF9QUkZQUkVHLCBz aXplb2YodC0+ZnB1KSwgJih0LT5mcHUpKTsKKwkJdC0+bnVtX25vdGVzKys7CisJCXN6ICs9IG5v dGVzaXplKCZ0LT5ub3Rlc1sxXSk7CisJfQorCisjaWZkZWYgRUxGX0NPUkVfQ09QWV9YRlBSRUdT CisJaWYgKGVsZl9jb3JlX2NvcHlfdGFza194ZnByZWdzKHAsICZ0LT54ZnB1KSkgeworCQlmaWxs X25vdGUoJnQtPm5vdGVzWzJdLCAiTElOVVgiLCBOVF9QUlhGUFJFRywgc2l6ZW9mKHQtPnhmcHUp LCAmKHQtPnhmcHUpKTsKKwkJdC0+bnVtX25vdGVzKys7CisJCXN6ICs9IG5vdGVzaXplKCZ0LT5u b3Rlc1syXSk7CisJfQorI2VuZGlmCQorCWxpc3RfYWRkKCZ0LT5saXN0LCB0aHJlYWRfbGlzdCk7 CisJcmV0dXJuIHN6OworfQorCisKKwogLyoKICAqIEFjdHVhbCBkdW1wZXIKICAqCkBAIC0xMDI5 LDEyICsxMTgzLDIzIEBACiAJc3RydWN0IGVsZmhkciBlbGY7CiAJb2ZmX3Qgb2Zmc2V0ID0gMCwg ZGF0YW9mZjsKIAl1bnNpZ25lZCBsb25nIGxpbWl0ID0gY3VycmVudC0+cmxpbVtSTElNSVRfQ09S RV0ucmxpbV9jdXI7Ci0JaW50IG51bW5vdGUgPSA0OwotCXN0cnVjdCBtZW1lbGZub3RlIG5vdGVz WzRdOworCWludCBudW1ub3RlID0gNTsKKwlzdHJ1Y3QgbWVtZWxmbm90ZSBub3Rlc1s1XTsKIAlz dHJ1Y3QgZWxmX3Byc3RhdHVzIHByc3RhdHVzOwkvKiBOVF9QUlNUQVRVUyAqLwotCWVsZl9mcHJl Z3NldF90IGZwdTsJCS8qIE5UX1BSRlBSRUcgKi8KIAlzdHJ1Y3QgZWxmX3BycHNpbmZvIHBzaW5m bzsJLyogTlRfUFJQU0lORk8gKi8KKyAJc3RydWN0IHRhc2tfc3RydWN0ICpwOworIAlMSVNUX0hF QUQodGhyZWFkX2xpc3QpOworIAlzdHJ1Y3QgbGlzdF9oZWFkICp0OworCWVsZl9mcHJlZ3NldF90 IGZwdTsKKyNpZmRlZiBFTEZfQ09SRV9DT1BZX1hGUFJFR1MKKwllbGZfZnB4cmVnc2V0X3QgeGZw dTsKKyNlbmRpZgorCWludCB0aHJlYWRfc3RhdHVzX3NpemUgPSAwOworCQogCisJLyogRmlyc3Qg cGF1c2UgYWxsIHJlbGF0ZWQgdGhyZWFkZWQgcHJvY2Vzc2VzICovCisJdGNvcmVfc3VzcGVuZF90 aHJlYWRzKCk7CisJCiAJLyogZmlyc3QgY29weSB0aGUgcGFyYW1ldGVycyBmcm9tIHVzZXIgc3Bh Y2UgKi8KIAltZW1zZXQoJnBzaW5mbywgMCwgc2l6ZW9mKHBzaW5mbykpOwogCXsKQEAgLTEwNTIs MjUgKzEyMTcsNDEgQEAKIAogCX0KIAotCW1lbXNldCgmcHJzdGF0dXMsIDAsIHNpemVvZihwcnN0 YXR1cykpOwotCS8qCi0JICogVGhpcyB0cmFuc2ZlcnMgdGhlIHJlZ2lzdGVycyBmcm9tIHJlZ3Mg aW50byB0aGUgc3RhbmRhcmQKLQkgKiBjb3JlZHVtcCBhcnJhbmdlbWVudCwgd2hhdGV2ZXIgdGhh dCBpcy4KLQkgKi8KLSNpZmRlZiBFTEZfQ09SRV9DT1BZX1JFR1MKLQlFTEZfQ09SRV9DT1BZX1JF R1MocHJzdGF0dXMucHJfcmVnLCByZWdzKQotI2Vsc2UKLQlpZiAoc2l6ZW9mKGVsZl9ncmVnc2V0 X3QpICE9IHNpemVvZihzdHJ1Y3QgcHRfcmVncykpCi0JewotCQlwcmludGsoInNpemVvZihlbGZf Z3JlZ3NldF90KSAoJWxkKSAhPSBzaXplb2Yoc3RydWN0IHB0X3JlZ3MpICglbGQpXG4iLAotCQkJ KGxvbmcpc2l6ZW9mKGVsZl9ncmVnc2V0X3QpLCAobG9uZylzaXplb2Yoc3RydWN0IHB0X3JlZ3Mp KTsKKwkvKiBjYXB0dXJlIHRoZSBzdGF0dXMgb2YgYWxsIG90aGVyIHRocmVhZHMgKi8KKwlpZiAo c2lnbnIpIHsKKwkJcmVhZF9sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKKwkJZm9yX2VhY2hfdGFzayhw KQorCQkJaWYgKGN1cnJlbnQtPm1tID09IHAtPm1tICYmIGN1cnJlbnQgIT0gcCkgeworCQkJCWlu dCBzeiA9IGVsZl9kdW1wX3RocmVhZF9zdGF0dXMoc2lnbnIsIHAsICZ0aHJlYWRfbGlzdCk7CisJ CQkJaWYgKCFzeikgeworCQkJCQlyZWFkX3VubG9jaygmdGFza2xpc3RfbG9jayk7CisJCQkJCWdv dG8gY2xlYW51cDsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQl0aHJlYWRfc3RhdHVzX3NpemUgKz0g c3o7CisJCQl9CisJCXJlYWRfdW5sb2NrKCZ0YXNrbGlzdF9sb2NrKTsKIAl9Ci0JZWxzZQotCQkq KHN0cnVjdCBwdF9yZWdzICopJnByc3RhdHVzLnByX3JlZyA9ICpyZWdzOwotI2VuZGlmCisJCisJ bWVtc2V0KCZwcnN0YXR1cywgMCwgc2l6ZW9mKHByc3RhdHVzKSk7CisJZmlsbF9wcnN0YXR1cygm cHJzdGF0dXMsIGN1cnJlbnQsIHNpZ25yKTsKKwllbGZfY29yZV9jb3B5X3JlZ3MoJnByc3RhdHVz LnByX3JlZywgcmVncyk7CisJCisJLyogV2Ugbm8gbG9uZ2VyIHN0b3AgYWxsIHZtIG9wZXJhdGlv bnMgKi8KIAotCS8qIG5vdyBzdG9wIGFsbCB2bSBvcGVyYXRpb25zICovCi0JZG93bl93cml0ZSgm Y3VycmVudC0+bW0tPm1tYXBfc2VtKTsKKwkvKiBUaGlzIGJlY2F1c2UgdGhvc2UgcHJvY2VzZXMg dGhhdCBjb3VsZCBwb3NzaWJseSAKKwkgKiBjaGFuZ2UgbWFwX2NvdW50IG9yIHRoZSBtbWFwIC8g dm1hIHBhZ2VzIGFyZSBub3cgc3VzcGVuZGVkLgorCSAqCisJICogT25seSBwdHJhY2UgY2FuIHRv dWNoIHRoZXNlIG1lbW9yeSBhZGRyZXNzLCBidXQgaXQgY2Fubm90IGNoYW5nZQorCSAqIHRoZSBt YXBfY291bnQgb3IgdGhlIHBhZ2VzLiAgU28gbm8gcG9zc2liaWxpdHkgb2YgY3Jhc2hpbmcgZXhp c3RzIHdoaWxlIGR1bXBpbmcKKwkgKiB0aGUgbW0tPnZtX25leHQgYXJlYXMgdG8gdGhlIGNvcmUg ZmlsZS4KKwkgKgorCSAqIEdyYWJiaW5nIG1tYXBfc2VtIGluIHRoaXMgZnVuY3Rpb24gaXMgcmlz a3kgV1JUIHRoZSB1c2Ugb2Ygc3VzcGVuZF90aHJlYWRzLgorCSAqIEFsdGhvdWdoIG5vIGxvY2tz IHVwcyBoYXZlIGJlZW4gaW5kdWNlZCwgaWYgb25lIG9mIHRoZSBzdXNwZW5kZWQgdGhyZWFkcyB3 YXMgCisJICogaW4gbGluZSBmb3IgdGhlIGN1cnJlbnQtPm1tYXBfc2VtIGFuZCBpZiBnZXRzIGl0 IHdoaWxlIG9uIHRoZSBQaGFudG9tIHJ1bnF1ZSwKKwkgKiB0aGVuIHdlIHdvdWxkIGRlYWQgbG9j ayBpbiB0aGlzIGZ1bmN0aW9uIGlmIHdlIGNvbnRpbnVlIHRvIGF0dGVtcHQgdG8gZG93bl93cml0 ZQorCSAqIGluIHRoaXMgZnVuY3Rpb24uCisJICovCiAJc2VncyA9IGN1cnJlbnQtPm1tLT5tYXBf Y291bnQ7CiAKICNpZmRlZiBERUJVRwpAQCAtMTA3OCwyNSArMTI1OSw3IEBACiAjZW5kaWYKIAog CS8qIFNldCB1cCBoZWFkZXIgKi8KLQltZW1jcHkoZWxmLmVfaWRlbnQsIEVMRk1BRywgU0VMRk1B Ryk7Ci0JZWxmLmVfaWRlbnRbRUlfQ0xBU1NdID0gRUxGX0NMQVNTOwotCWVsZi5lX2lkZW50W0VJ X0RBVEFdID0gRUxGX0RBVEE7Ci0JZWxmLmVfaWRlbnRbRUlfVkVSU0lPTl0gPSBFVl9DVVJSRU5U OwotCW1lbXNldChlbGYuZV9pZGVudCtFSV9QQUQsIDAsIEVJX05JREVOVC1FSV9QQUQpOwotCi0J ZWxmLmVfdHlwZSA9IEVUX0NPUkU7Ci0JZWxmLmVfbWFjaGluZSA9IEVMRl9BUkNIOwotCWVsZi5l X3ZlcnNpb24gPSBFVl9DVVJSRU5UOwotCWVsZi5lX2VudHJ5ID0gMDsKLQllbGYuZV9waG9mZiA9 IHNpemVvZihlbGYpOwotCWVsZi5lX3Nob2ZmID0gMDsKLQllbGYuZV9mbGFncyA9IDA7Ci0JZWxm LmVfZWhzaXplID0gc2l6ZW9mKGVsZik7Ci0JZWxmLmVfcGhlbnRzaXplID0gc2l6ZW9mKHN0cnVj dCBlbGZfcGhkcik7Ci0JZWxmLmVfcGhudW0gPSBzZWdzKzE7CQkvKiBJbmNsdWRlIG5vdGVzICov Ci0JZWxmLmVfc2hlbnRzaXplID0gMDsKLQllbGYuZV9zaG51bSA9IDA7Ci0JZWxmLmVfc2hzdHJu ZHggPSAwOworCWZpbGxfZWxmX2hlYWRlcigmZWxmLCBzZWdzKzEpOyAvKiBpbmNsdWRpbmcgbm90 ZXMgc2VjdGlvbiovCiAKIAlmcyA9IGdldF9mcygpOwogCXNldF9mcyhLRVJORUxfRFMpOwpAQCAt MTExMyw2NCArMTI3NiwzNCBAQAogCSAqIHdpdGggaW5mbyBmcm9tIHRoZWlyIC9wcm9jLgogCSAq LwogCi0Jbm90ZXNbMF0ubmFtZSA9ICJDT1JFIjsKLQlub3Rlc1swXS50eXBlID0gTlRfUFJTVEFU VVM7Ci0Jbm90ZXNbMF0uZGF0YXN6ID0gc2l6ZW9mKHByc3RhdHVzKTsKLQlub3Rlc1swXS5kYXRh ID0gJnByc3RhdHVzOwotCXByc3RhdHVzLnByX2luZm8uc2lfc2lnbm8gPSBwcnN0YXR1cy5wcl9j dXJzaWcgPSBzaWducjsKLQlwcnN0YXR1cy5wcl9zaWdwZW5kID0gY3VycmVudC0+cGVuZGluZy5z aWduYWwuc2lnWzBdOwotCXByc3RhdHVzLnByX3NpZ2hvbGQgPSBjdXJyZW50LT5ibG9ja2VkLnNp Z1swXTsKLQlwc2luZm8ucHJfcGlkID0gcHJzdGF0dXMucHJfcGlkID0gY3VycmVudC0+cGlkOwot CXBzaW5mby5wcl9wcGlkID0gcHJzdGF0dXMucHJfcHBpZCA9IGN1cnJlbnQtPnBhcmVudC0+cGlk OwotCXBzaW5mby5wcl9wZ3JwID0gcHJzdGF0dXMucHJfcGdycCA9IGN1cnJlbnQtPnBncnA7Ci0J cHNpbmZvLnByX3NpZCA9IHByc3RhdHVzLnByX3NpZCA9IGN1cnJlbnQtPnNlc3Npb247Ci0JcHJz dGF0dXMucHJfdXRpbWUudHZfc2VjID0gQ1RfVE9fU0VDUyhjdXJyZW50LT50aW1lcy50bXNfdXRp bWUpOwotCXByc3RhdHVzLnByX3V0aW1lLnR2X3VzZWMgPSBDVF9UT19VU0VDUyhjdXJyZW50LT50 aW1lcy50bXNfdXRpbWUpOwotCXByc3RhdHVzLnByX3N0aW1lLnR2X3NlYyA9IENUX1RPX1NFQ1Mo Y3VycmVudC0+dGltZXMudG1zX3N0aW1lKTsKLQlwcnN0YXR1cy5wcl9zdGltZS50dl91c2VjID0g Q1RfVE9fVVNFQ1MoY3VycmVudC0+dGltZXMudG1zX3N0aW1lKTsKLQlwcnN0YXR1cy5wcl9jdXRp bWUudHZfc2VjID0gQ1RfVE9fU0VDUyhjdXJyZW50LT50aW1lcy50bXNfY3V0aW1lKTsKLQlwcnN0 YXR1cy5wcl9jdXRpbWUudHZfdXNlYyA9IENUX1RPX1VTRUNTKGN1cnJlbnQtPnRpbWVzLnRtc19j dXRpbWUpOwotCXByc3RhdHVzLnByX2NzdGltZS50dl9zZWMgPSBDVF9UT19TRUNTKGN1cnJlbnQt PnRpbWVzLnRtc19jc3RpbWUpOwotCXByc3RhdHVzLnByX2NzdGltZS50dl91c2VjID0gQ1RfVE9f VVNFQ1MoY3VycmVudC0+dGltZXMudG1zX2NzdGltZSk7CisJZmlsbF9ub3RlKCZub3Rlc1swXSwg IkNPUkUiLCBOVF9QUlNUQVRVUywgc2l6ZW9mKHByc3RhdHVzKSwgJnByc3RhdHVzKTsKKyAJCisJ ZmlsbF9wc2luZm8oJnBzaW5mbywgY3VycmVudCk7CisJZmlsbF9ub3RlKCZub3Rlc1sxXSwgIkNP UkUiLCBOVF9QUlBTSU5GTywgc2l6ZW9mKHBzaW5mbyksICZwc2luZm8pOworCQorCWZpbGxfbm90 ZSgmbm90ZXNbMl0sICJDT1JFIiwgTlRfVEFTS1NUUlVDVCwgc2l6ZW9mKCpjdXJyZW50KSwgY3Vy cmVudCk7CisgIAorICAJLyogVHJ5IHRvIGR1bXAgdGhlIEZQVS4gKi8KKwlpZiAoKHByc3RhdHVz LnByX2ZwdmFsaWQgPSBlbGZfY29yZV9jb3B5X3Rhc2tfZnByZWdzKGN1cnJlbnQsICZmcHUpKSkg eworCQlmaWxsX25vdGUoJm5vdGVzWzNdLCAiQ09SRSIsIE5UX1BSRlBSRUcsIHNpemVvZihmcHUp LCAmZnB1KTsKKwl9IGVsc2UgeworCQktLW51bW5vdGU7CisgCX0KKyNpZmRlZiBFTEZfQ09SRV9D T1BZX1hGUFJFR1MKKwlpZiAoZWxmX2NvcmVfY29weV90YXNrX3hmcHJlZ3MoY3VycmVudCwgJnhm cHUpKSB7CisJCWZpbGxfbm90ZSgmbm90ZXNbNF0sICJMSU5VWCIsIE5UX1BSWEZQUkVHLCBzaXpl b2YoeGZwdSksICZ4ZnB1KTsKKwl9IGVsc2UgeworCQktLW51bW5vdGU7CisJfQorI2Vsc2UKKwlu dW1ub3RlIC0tOworI2VuZGlmCQogCiAjaWZkZWYgREVCVUcKIAlkdW1wX3JlZ3MoIlBhc3NlZCBp biByZWdzIiwgKGVsZl9ncmVnX3QgKilyZWdzKTsKIAlkdW1wX3JlZ3MoInByc3RhdHVzIHJlZ3Mi LCAoZWxmX2dyZWdfdCAqKSZwcnN0YXR1cy5wcl9yZWcpOwogI2VuZGlmCiAKLQlub3Rlc1sxXS5u YW1lID0gIkNPUkUiOwotCW5vdGVzWzFdLnR5cGUgPSBOVF9QUlBTSU5GTzsKLQlub3Rlc1sxXS5k YXRhc3ogPSBzaXplb2YocHNpbmZvKTsKLQlub3Rlc1sxXS5kYXRhID0gJnBzaW5mbzsKLQlpID0g Y3VycmVudC0+c3RhdGUgPyBmZnoofmN1cnJlbnQtPnN0YXRlKSArIDEgOiAwOwotCXBzaW5mby5w cl9zdGF0ZSA9IGk7Ci0JcHNpbmZvLnByX3NuYW1lID0gKGkgPCAwIHx8IGkgPiA1KSA/ICcuJyA6 ICJSU0RaVEQiW2ldOwotCXBzaW5mby5wcl96b21iID0gcHNpbmZvLnByX3NuYW1lID09ICdaJzsK LQlwc2luZm8ucHJfbmljZSA9IHRhc2tfbmljZShjdXJyZW50KTsKLQlwc2luZm8ucHJfZmxhZyA9 IGN1cnJlbnQtPmZsYWdzOwotCXBzaW5mby5wcl91aWQgPSBORVdfVE9fT0xEX1VJRChjdXJyZW50 LT51aWQpOwotCXBzaW5mby5wcl9naWQgPSBORVdfVE9fT0xEX0dJRChjdXJyZW50LT5naWQpOwot CXN0cm5jcHkocHNpbmZvLnByX2ZuYW1lLCBjdXJyZW50LT5jb21tLCBzaXplb2YocHNpbmZvLnBy X2ZuYW1lKSk7Ci0KLQlub3Rlc1syXS5uYW1lID0gIkNPUkUiOwotCW5vdGVzWzJdLnR5cGUgPSBO VF9UQVNLU1RSVUNUOwotCW5vdGVzWzJdLmRhdGFzeiA9IHNpemVvZigqY3VycmVudCk7Ci0Jbm90 ZXNbMl0uZGF0YSA9IGN1cnJlbnQ7Ci0KLQkvKiBUcnkgdG8gZHVtcCB0aGUgRlBVLiAqLwotCXBy c3RhdHVzLnByX2ZwdmFsaWQgPSBkdW1wX2ZwdSAocmVncywgJmZwdSk7Ci0JaWYgKCFwcnN0YXR1 cy5wcl9mcHZhbGlkKQotCXsKLQkJbnVtbm90ZS0tOwotCX0KLQllbHNlCi0JewotCQlub3Rlc1sz XS5uYW1lID0gIkNPUkUiOwotCQlub3Rlc1szXS50eXBlID0gTlRfUFJGUFJFRzsKLQkJbm90ZXNb M10uZGF0YXN6ID0gc2l6ZW9mKGZwdSk7Ci0JCW5vdGVzWzNdLmRhdGEgPSAmZnB1OwotCX0KLQkK IAkvKiBXcml0ZSBub3RlcyBwaGRyIGVudHJ5ICovCiAJewogCQlzdHJ1Y3QgZWxmX3BoZHIgcGhk cjsKQEAgLTExNzgsMTcgKzEzMTEsMTEgQEAKIAogCQlmb3IoaSA9IDA7IGkgPCBudW1ub3RlOyBp KyspCiAJCQlzeiArPSBub3Rlc2l6ZSgmbm90ZXNbaV0pOworCQkKKwkJc3ogKz0gdGhyZWFkX3N0 YXR1c19zaXplOwogCi0JCXBoZHIucF90eXBlID0gUFRfTk9URTsKLQkJcGhkci5wX29mZnNldCA9 IG9mZnNldDsKLQkJcGhkci5wX3ZhZGRyID0gMDsKLQkJcGhkci5wX3BhZGRyID0gMDsKLQkJcGhk ci5wX2ZpbGVzeiA9IHN6OwotCQlwaGRyLnBfbWVtc3ogPSAwOwotCQlwaGRyLnBfZmxhZ3MgPSAw OwotCQlwaGRyLnBfYWxpZ24gPSAwOwotCi0JCW9mZnNldCArPSBwaGRyLnBfZmlsZXN6OworCQlm aWxsX2VsZl9ub3RlX3BoZHIoJnBoZHIsIHN6LCBvZmZzZXQpOworCQlvZmZzZXQgKz0gc3o7CiAJ CURVTVBfV1JJVEUoJnBoZHIsIHNpemVvZihwaGRyKSk7CiAJfQogCkBAIC0xMjE3LDEwICsxMzQ0 LDE5IEBACiAJCURVTVBfV1JJVEUoJnBoZHIsIHNpemVvZihwaGRyKSk7CiAJfQogCisgCS8qIHdy aXRlIG91dCB0aGUgbm90ZXMgc2VjdGlvbiAqLwogCWZvcihpID0gMDsgaSA8IG51bW5vdGU7IGkr KykKIAkJaWYgKCF3cml0ZW5vdGUoJm5vdGVzW2ldLCBmaWxlKSkKIAkJCWdvdG8gZW5kX2NvcmVk dW1wOwogCisJLyogd3JpdGUgb3V0IHRoZSB0aHJlYWQgc3RhdHVzIG5vdGVzIHNlY3Rpb24gKi8K KwlsaXN0X2Zvcl9lYWNoKHQsICZ0aHJlYWRfbGlzdCkgeworCQlzdHJ1Y3QgZWxmX3RocmVhZF9z dGF0dXMgKnRtcCA9IGxpc3RfZW50cnkodCwgc3RydWN0IGVsZl90aHJlYWRfc3RhdHVzLCBsaXN0 KTsKKwkJZm9yIChpID0gMDsgaSA8IHRtcC0+bnVtX25vdGVzOyBpKyspCisJCQlpZiAoIXdyaXRl bm90ZSgmdG1wLT5ub3Rlc1tpXSwgZmlsZSkpCisJCQkJZ290byBlbmRfY29yZWR1bXA7CisJfQor IAogCURVTVBfU0VFSyhkYXRhb2ZmKTsKIAogCWZvcih2bWEgPSBjdXJyZW50LT5tbS0+bW1hcDsg dm1hICE9IE5VTEw7IHZtYSA9IHZtYS0+dm1fbmV4dCkgewpAQCAtMTI2NCwxMSArMTQwMCwyMSBA QAogCQkgICAgICAgKG9mZl90KSBmaWxlLT5mX3Bvcywgb2Zmc2V0KTsKIAl9CiAKLSBlbmRfY29y ZWR1bXA6CitlbmRfY29yZWR1bXA6CiAJc2V0X2ZzKGZzKTsKLQl1cF93cml0ZSgmY3VycmVudC0+ bW0tPm1tYXBfc2VtKTsKKworY2xlYW51cDoKKwl3aGlsZSghbGlzdF9lbXB0eSgmdGhyZWFkX2xp c3QpKSB7CisJCXN0cnVjdCBsaXN0X2hlYWQgKnRtcCA9IHRocmVhZF9saXN0Lm5leHQ7CisJCWxp c3RfZGVsKHRtcCk7CisJCWtmcmVlKGxpc3RfZW50cnkodG1wLCBzdHJ1Y3QgZWxmX3RocmVhZF9z dGF0dXMsIGxpc3QpKTsKKwl9CisKKwl0Y29yZV9yZXN1bWVfdGhyZWFkcygpOworCiAJcmV0dXJu IGhhc19kdW1wZWQ7CiB9CisKICNlbmRpZgkJLyogVVNFX0VMRl9DT1JFX0RVTVAgKi8KIAogc3Rh dGljIGludCBfX2luaXQgaW5pdF9lbGZfYmluZm10KHZvaWQpCmRpZmYgLXVyTiAtWCBkb250ZGlm ZiBsaW51eC0yLjUuMjIvaW5jbHVkZS9hc20taTM4Ni9lbGYuaCBsaW51eDI1MjIudGNvcmUvaW5j bHVkZS9hc20taTM4Ni9lbGYuaAotLS0gbGludXgtMi41LjIyL2luY2x1ZGUvYXNtLWkzODYvZWxm LmgJU3VuIEp1biAxNiAyMjozMTozNCAyMDAyCisrKyBsaW51eDI1MjIudGNvcmUvaW5jbHVkZS9h c20taTM4Ni9lbGYuaAlUdWUgSnVuIDE4IDE1OjE3OjEyIDIwMDIKQEAgLTk5LDYgKzk5LDE2IEBA CiAKICNpZmRlZiBfX0tFUk5FTF9fCiAjZGVmaW5lIFNFVF9QRVJTT05BTElUWShleCwgaWJjczIp IHNldF9wZXJzb25hbGl0eSgoaWJjczIpP1BFUl9TVlI0OlBFUl9MSU5VWCkKKworCitleHRlcm4g aW50IGR1bXBfdGFza19yZWdzIChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgZWxmX2dyZWdzZXRfdCAq KTsKK2V4dGVybiBpbnQgZHVtcF90YXNrX2ZwdSAoc3RydWN0IHRhc2tfc3RydWN0ICosIGVsZl9m cHJlZ3NldF90ICopOworZXh0ZXJuIGludCBkdW1wX3Rhc2tfZXh0ZW5kZWRfZnB1IChzdHJ1Y3Qg dGFza19zdHJ1Y3QgKiwgc3RydWN0IHVzZXJfZnhzcl9zdHJ1Y3QgKik7CisKKyNkZWZpbmUgRUxG X0NPUkVfQ09QWV9UQVNLX1JFR1ModHNrLCBlbGZfcmVncykgZHVtcF90YXNrX3JlZ3ModHNrLCBl bGZfcmVncykKKyNkZWZpbmUgRUxGX0NPUkVfQ09QWV9GUFJFR1ModHNrLCBlbGZfZnByZWdzKSBk dW1wX3Rhc2tfZnB1KHRzaywgZWxmX2ZwcmVncykKKyNkZWZpbmUgRUxGX0NPUkVfQ09QWV9YRlBS RUdTKHRzaywgZWxmX3hmcHJlZ3MpIGR1bXBfdGFza19leHRlbmRlZF9mcHUodHNrLCBlbGZfeGZw cmVncykKKwogI2VuZGlmCiAKICNlbmRpZgpkaWZmIC11ck4gLVggZG9udGRpZmYgbGludXgtMi41 LjIyL2luY2x1ZGUvYXNtLWlhNjQvZWxmLmggbGludXgyNTIyLnRjb3JlL2luY2x1ZGUvYXNtLWlh NjQvZWxmLmgKLS0tIGxpbnV4LTIuNS4yMi9pbmNsdWRlL2FzbS1pYTY0L2VsZi5oCVN1biBKdW4g MTYgMjI6MzE6MzQgMjAwMgorKysgbGludXgyNTIyLnRjb3JlL2luY2x1ZGUvYXNtLWlhNjQvZWxm LmgJVHVlIEp1biAxOCAxNToxNzoxMiAyMDAyCkBAIC02NSwxMiArNjUsMTYgQEAKICNkZWZpbmUg RUxGX05HUkVHCTEyOAkvKiB3ZSByZWFsbHkgbmVlZCBqdXN0IDcyIGJ1dCBsZXQncyBsZWF2ZSBz b21lIGhlYWRyb29tLi4uICovCiAjZGVmaW5lIEVMRl9ORlBSRUcJMTI4CS8qIGYwIGFuZCBmMSBj b3VsZCBiZSBvbWl0dGVkLCBidXQgc28gd2hhdC4uLiAqLwogCit0eXBlZGVmIHVuc2lnbmVkIGxv bmcgZWxmX2ZweHJlZ3NldF90OworCiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZWxmX2dyZWdfdDsK IHR5cGVkZWYgZWxmX2dyZWdfdCBlbGZfZ3JlZ3NldF90W0VMRl9OR1JFR107CiAKIHR5cGVkZWYg c3RydWN0IGlhNjRfZnByZWcgZWxmX2ZwcmVnX3Q7CiB0eXBlZGVmIGVsZl9mcHJlZ190IGVsZl9m cHJlZ3NldF90W0VMRl9ORlBSRUddOwogCisKKwogc3RydWN0IHB0X3JlZ3M7CS8qIGZvcndhcmQg ZGVjbGFyYXRpb24uLi4gKi8KIGV4dGVybiB2b2lkIGlhNjRfZWxmX2NvcmVfY29weV9yZWdzIChz dHJ1Y3QgcHRfcmVncyAqc3JjLCBlbGZfZ3JlZ3NldF90IGRzdCk7CiAjZGVmaW5lIEVMRl9DT1JF X0NPUFlfUkVHUyhfZGVzdCxfcmVncykJaWE2NF9lbGZfY29yZV9jb3B5X3JlZ3MoX3JlZ3MsIF9k ZXN0KTsKQEAgLTg4LDYgKzkyLDE0IEBACiBzdHJ1Y3QgZWxmNjRfaGRyOwogZXh0ZXJuIHZvaWQg aWE2NF9zZXRfcGVyc29uYWxpdHkgKHN0cnVjdCBlbGY2NF9oZHIgKmVsZl9leCwgaW50IGliY3My X2ludGVycHJldGVyKTsKICNkZWZpbmUgU0VUX1BFUlNPTkFMSVRZKGV4LCBpYmNzMikJaWE2NF9z ZXRfcGVyc29uYWxpdHkoJihleCksIGliY3MyKQorCitleHRlcm4gaW50IGR1bXBfdGFza19yZWdz KHN0cnVjdCB0YXNrX3N0cnVjdCAqLCBlbGZfZ3JlZ3NldF90ICopOworZXh0ZXJuIGludCBkdW1w X3Rhc2tfZnB1IChzdHJ1Y3QgdGFza19zdHJ1Y3QgKiwgZWxmX2ZwcmVnc2V0X3QgKik7CisKKyNk ZWZpbmUgRUxGX0NPUkVfQ09QWV9UQVNLX1JFR1ModHNrLCBlbGZfZ3JlZ3MpIGR1bXBfdGFza19y ZWdzKHRzaywgZWxmX2dyZWdzKQorI2RlZmluZSBFTEZfQ09SRV9DT1BZX0ZQUkVHUyh0c2ssIGVs Zl9mcHJlZ3MpIGR1bXBfdGFza19mcHUodHNrLCBlbGZfZnByZWdzKQorCisKICNlbmRpZgogCiAj ZW5kaWYgLyogX0FTTV9JQTY0X0VMRl9IICovCmRpZmYgLXVyTiAtWCBkb250ZGlmZiBsaW51eC0y LjUuMjIvaW5jbHVkZS9saW51eC9lbGYuaCBsaW51eDI1MjIudGNvcmUvaW5jbHVkZS9saW51eC9l bGYuaAotLS0gbGludXgtMi41LjIyL2luY2x1ZGUvbGludXgvZWxmLmgJU3VuIEp1biAxNiAyMjoz MToyNiAyMDAyCisrKyBsaW51eDI1MjIudGNvcmUvaW5jbHVkZS9saW51eC9lbGYuaAlUdWUgSnVu IDE4IDE1OjE3OjEyIDIwMDIKQEAgLTU3Niw2ICs1NzYsOSBAQAogI2RlZmluZSBOVF9QUlBTSU5G TwkzCiAjZGVmaW5lIE5UX1RBU0tTVFJVQ1QJNAogI2RlZmluZSBOVF9QUkZQWFJFRwkyMAorI2Rl ZmluZSBOVF9QUlhGUFJFRyAgICAgMHg0NmU2MmI3ZgkvKiBub3RlIG5hbWUgbXVzdCBiZSAiTElO VVgiIGFzIHBlciBHREIgKi8KKwkJCQkJLyogZnJvbSBnZGI1LjEvaW5jbHVkZS9lbGYvY29tbW9u LmggKi8KKwogCiAvKiBOb3RlIGhlYWRlciBpbiBhIFBUX05PVEUgc2VjdGlvbiAqLwogdHlwZWRl ZiBzdHJ1Y3QgZWxmMzJfbm90ZSB7CkBAIC02MDYsNiArNjA5LDUgQEAKICNkZWZpbmUgZWxmX25v dGUJZWxmNjRfbm90ZQogCiAjZW5kaWYKLQogCiAjZW5kaWYgLyogX0xJTlVYX0VMRl9IICovCmRp ZmYgLXVyTiAtWCBkb250ZGlmZiBsaW51eC0yLjUuMjIvaW5jbHVkZS9saW51eC9lbGZjb3JlLmgg bGludXgyNTIyLnRjb3JlL2luY2x1ZGUvbGludXgvZWxmY29yZS5oCi0tLSBsaW51eC0yLjUuMjIv aW5jbHVkZS9saW51eC9lbGZjb3JlLmgJU3VuIEp1biAxNiAyMjozMTozMiAyMDAyCisrKyBsaW51 eDI1MjIudGNvcmUvaW5jbHVkZS9saW51eC9lbGZjb3JlLmgJVHVlIEp1biAxOCAxNToxNzoxMiAy MDAyCkBAIC04Niw0ICs4Niw0OCBAQAogI2RlZmluZSBQUkFSR1NaIEVMRl9QUkFSR1NaIAogI2Vu ZGlmCiAKKyNpZmRlZiBfX0tFUk5FTF9fCitzdGF0aWMgaW5saW5lIHZvaWQgZWxmX2NvcmVfY29w eV9yZWdzKGVsZl9ncmVnc2V0X3QgKmVsZnJlZ3MsIHN0cnVjdCBwdF9yZWdzICpyZWdzKQorewor I2lmZGVmIEVMRl9DT1JFX0NPUFlfUkVHUworCUVMRl9DT1JFX0NPUFlfUkVHUygoKmVsZnJlZ3Mp LCByZWdzKQorI2Vsc2UKKwlpZiAoc2l6ZW9mKGVsZl9ncmVnc2V0X3QpICE9IHNpemVvZihzdHJ1 Y3QgcHRfcmVncykpIHsKKwkJcHJpbnRrKCJzaXplb2YoZWxmX2dyZWdzZXRfdCkgKCVsZCkgIT0g c2l6ZW9mKHN0cnVjdCBwdF9yZWdzKSAoJWxkKVxuIiwKKwkJCShsb25nKXNpemVvZihlbGZfZ3Jl Z3NldF90KSwgKGxvbmcpc2l6ZW9mKHN0cnVjdCBwdF9yZWdzKSk7CisJfSBlbHNlCisJCSooc3Ry dWN0IHB0X3JlZ3MgKillbGZyZWdzID0gKnJlZ3M7CisjZW5kaWYKK30KKworc3RhdGljIGlubGlu ZSBpbnQgZWxmX2NvcmVfY29weV90YXNrX3JlZ3Moc3RydWN0IHRhc2tfc3RydWN0ICp0LCBlbGZf Z3JlZ3NldF90KiBlbGZyZWdzKQoreworI2lmZGVmIEVMRl9DT1JFX0NPUFlfVEFTS19SRUdTCisJ CisJcmV0dXJuIEVMRl9DT1JFX0NPUFlfVEFTS19SRUdTKHQsIGVsZnJlZ3MpOworI2VuZGlmCisJ cmV0dXJuIDA7Cit9CisKK2V4dGVybiBpbnQgZHVtcF9mcHUgKHN0cnVjdCBwdF9yZWdzICosIGVs Zl9mcHJlZ3NldF90ICopOworCitzdGF0aWMgaW5saW5lIGludCBlbGZfY29yZV9jb3B5X3Rhc2tf ZnByZWdzKHN0cnVjdCB0YXNrX3N0cnVjdCAqdCwgZWxmX2ZwcmVnc2V0X3QgKmZwdSkKK3sKKyNp ZmRlZiBFTEZfQ09SRV9DT1BZX0ZQUkVHUworCXJldHVybiBFTEZfQ09SRV9DT1BZX0ZQUkVHUyh0 LCBmcHUpOworI2Vsc2UKKwlyZXR1cm4gZHVtcF9mcHUoTlVMTCwgZnB1KTsKKyNlbmRpZgorfQor CisjaWZkZWYgRUxGX0NPUkVfQ09QWV9YRlBSRUdTCitzdGF0aWMgaW5saW5lIGludCBlbGZfY29y ZV9jb3B5X3Rhc2tfeGZwcmVncyhzdHJ1Y3QgdGFza19zdHJ1Y3QgKnQsIGVsZl9mcHhyZWdzZXRf dCAqeGZwdSkKK3sKKwlyZXR1cm4gRUxGX0NPUkVfQ09QWV9YRlBSRUdTKHQsIHhmcHUpOworfQor I2VuZGlmCisKKyNlbmRpZiAvKiBfX0tFUk5FTF9fICovCisKKwogI2VuZGlmIC8qIF9MSU5VWF9F TEZDT1JFX0ggKi8KZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxpbnV4LTIuNS4yMi9pbmNsdWRlL2xp bnV4L3NjaGVkLmggbGludXgyNTIyLnRjb3JlL2luY2x1ZGUvbGludXgvc2NoZWQuaAotLS0gbGlu dXgtMi41LjIyL2luY2x1ZGUvbGludXgvc2NoZWQuaAlTdW4gSnVuIDE2IDIyOjMxOjI1IDIwMDIK KysrIGxpbnV4MjUyMi50Y29yZS9pbmNsdWRlL2xpbnV4L3NjaGVkLmgJVHVlIEp1biAxOCAxNTox NzoxMiAyMDAyCkBAIC0xMzIsNiArMTMyLDE0IEBACiAKICNpbmNsdWRlIDxsaW51eC9zcGlubG9j ay5oPgogCisKKy8qIGZ1bmN0aW9ucyBmb3IgcGF1c2luZyBhbmQgcmVzdW1taW5nIGZ1bmN0aW9u cyAKKyAqIGNvbW1vbiBtbSdzIHdpdGhvdXQgdXNpbmcgc2lnbmFscy4gIFRoZXNlIGFyZSB1c2Vk CisgKiBieSB0aGUgbXVsdGl0aHJlYWRlZCBlbGYgY29yZSBkdW1wIGNvZGUgaW4gYmluZm10X2Vs Zi5jKi8KK2V4dGVybiB2b2lkIHRjb3JlX3N1c3BlbmRfdGhyZWFkcyggdm9pZCApOworZXh0ZXJu IHZvaWQgdGNvcmVfcmVzdW1lX3RocmVhZHMoIHZvaWQgKTsKKworCiAvKgogICogVGhpcyBzZXJp YWxpemVzICJzY2hlZHVsZSgpIiBhbmQgYWxzbyBwcm90ZWN0cwogICogdGhlIHJ1bi1xdWV1ZSBm cm9tIGRlbGV0aW9ucy9tb2RpZmljYXRpb25zIChidXQKZGlmZiAtdXJOIC1YIGRvbnRkaWZmIGxp bnV4LTIuNS4yMi9rZXJuZWwvc2NoZWQuYyBsaW51eDI1MjIudGNvcmUva2VybmVsL3NjaGVkLmMK LS0tIGxpbnV4LTIuNS4yMi9rZXJuZWwvc2NoZWQuYwlTdW4gSnVuIDE2IDIyOjMxOjI3IDIwMDIK KysrIGxpbnV4MjUyMi50Y29yZS9rZXJuZWwvc2NoZWQuYwlUdWUgSnVuIDE4IDE1OjI1OjM0IDIw MDIKQEAgLTE0NCw3ICsxNDQsOCBAQAogCWxpc3RfdCBtaWdyYXRpb25fcXVldWU7CiB9IF9fX19j YWNoZWxpbmVfYWxpZ25lZDsKIAotc3RhdGljIHN0cnVjdCBydW5xdWV1ZSBydW5xdWV1ZXNbTlJf Q1BVU10gX19jYWNoZWxpbmVfYWxpZ25lZDsKK3N0YXRpYyBzdHJ1Y3QgcnVucXVldWUgcnVucXVl dWVzW05SX0NQVVMgKyAxXSBfX2NhY2hlbGluZV9hbGlnbmVkOworI2RlZmluZSBQSEFOVE9NX0NQ VSBOUl9DUFVTCiAKICNkZWZpbmUgY3B1X3JxKGNwdSkJCShydW5xdWV1ZXMgKyAoY3B1KSkKICNk ZWZpbmUgdGhpc19ycSgpCQljcHVfcnEoc21wX3Byb2Nlc3Nvcl9pZCgpKQpAQCAtMjc1LDYgKzI3 Niw5IEBACiAjaWZkZWYgQ09ORklHX1NNUAogCWludCBuZWVkX3Jlc2NoZWQsIG5ycG9sbGluZzsK IAorCWlmKCB1bmxpa2VseSghcC0+Y3B1c19hbGxvd2VkKSApCisJCQlyZXR1cm47CisJCQkKIAlw cmVlbXB0X2Rpc2FibGUoKTsKIAkvKiBtaW5pbWlzZSB0aGUgY2hhbmNlIG9mIHNlbmRpbmcgYW4g aW50ZXJydXB0IHRvIHBvbGxfaWRsZSgpICovCiAJbnJwb2xsaW5nID0gdGVzdF90c2tfdGhyZWFk X2ZsYWcocCxUSUZfUE9MTElOR19OUkZMQUcpOwpAQCAtMzcxLDcgKzM3NSw3IEBACiAJCS8qCiAJ CSAqIElmIHN5bmMgaXMgc2V0LCBhIHJlc2NoZWRfdGFzaygpIGlzIGEgTk9PUAogCQkgKi8KLQkJ aWYgKHAtPnByaW8gPCBycS0+Y3Vyci0+cHJpbykKKwkJaWYgKHAtPmNwdXNfYWxsb3dlZCAmJiAo cC0+cHJpbyA8IHJxLT5jdXJyLT5wcmlvKSApCiAJCQlyZXNjaGVkX3Rhc2socnEtPmN1cnIpOwog CQlzdWNjZXNzID0gMTsKIAl9CkBAIC0xMDU3LDYgKzEwNjEsMTMyIEBACiAKIHZvaWQgc2NoZWR1 bGluZ19mdW5jdGlvbnNfZW5kX2hlcmUodm9pZCkgeyB9CiAKKy8qCisgKiBuZWVkZWQgZm9yIGFj Y3VyYXRlIGNvcmUgZHVtcHMgb2YgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb25zLgorICogc2Vl IGJpbmZtdF9lbGYuYyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAqLworc3RhdGljIHZvaWQgcmVz Y2hlZHVsZV9vdGhlcl9jcHVzKHZvaWQpCit7CisjaWZkZWYgQ09ORklHX1NNUAorCWludCBpLCBj cHU7CisJc3RydWN0IHRhc2tfc3RydWN0ICpwOworCisJZm9yKGk9MDsgaTwgc21wX251bV9jcHVz OyBpKyspIHsKKwkJY3B1ID0gY3B1X2xvZ2ljYWxfbWFwKGkpOworCQlwID0gY3B1X2N1cnIoY3B1 KTsKKwkJaWYgKHAtPnRocmVhZF9pbmZvLT5jcHUhPSBzbXBfcHJvY2Vzc29yX2lkKCkpIHsKKwkJ CXNldF90c2tfbmVlZF9yZXNjaGVkKHApOworCQkJc21wX3NlbmRfcmVzY2hlZHVsZShwLT50aHJl YWRfaW5mby0+Y3B1KTsKKwkJfQorCX0KKyNlbmRpZgkKKwlyZXR1cm47Cit9CisKKworLyogZnVu Y3Rpb25zIGZvciBwYXVzaW5nIGFuZCByZXN1bW1pbmcgZnVuY3Rpb25zIHdpdGggb3V0IHVzaW5n IHNpZ25hbHMgKi8KK3ZvaWQgdGNvcmVfc3VzcGVuZF90aHJlYWRzKHZvaWQpCit7CisJdW5zaWdu ZWQgbG9uZyBmbGFnczsKKwlydW5xdWV1ZV90ICpwaGFudG9tUTsKKwl0YXNrX3QgKnRocmVhZHNb TlJfQ1BVU10sICpwOworCWludCBpLCBPbkNQVUNvdW50ID0gMDsKKworLy8KKy8vIGdyYWIgYWxs IHRoZSBycV9sb2Nrcy4KKy8vIGN1cnJlbnQgaXMgdGhlIHByb2Nlc3MgZHVtcGluZyBjb3JlCisv LyAgCisKKwlkb3duX3dyaXRlKCZjdXJyZW50LT5tbS0+bW1hcF9zZW0pOworCS8vIGF2b2lkIHBv dGVudGlhbCByYWNlIG9uID4yIHdheSBTTVAgaWYgMyBvciBtb3JlIHRocmVhZCBwcm9jcworCS8v IGR1bXAgY29yZSBhdCB0aGUgc2FtZSB0aW1lLgorCQorCWxvY2FsX2lycV9zYXZlKGZsYWdzKTsK KworCWZvcihpPTA7IGk8IHNtcF9udW1fY3B1czsgaSsrKSB7CisJCXNwaW5fbG9jaygmY3B1X3Jx KGkpLT5sb2NrKTsKKwl9CisKKwljdXJyZW50LT5jcHVzX2FsbG93ZWQgPSAxVUwgPDwgY3VycmVu dC0+dGhyZWFkX2luZm8tPmNwdTsKKwkvLyBwcmV2ZW50IG1pZ3JhaW9uIG9mIGR1bXBpbmcgcHJv Y2VzcyBtYWtpbmcgbGlmZSBjb21wbGljYXRlZC4KKworCXBoYW50b21RID0gY3B1X3JxKFBIQU5U T01fQ1BVKTsgCisJc3Bpbl9sb2NrKCZwaGFudG9tUS0+bG9jayk7CisJCisJcmVzY2hlZHVsZV9v dGhlcl9jcHVzKCk7CisJLy8gdGhpcyBpcyBhbiBvcHRpb25hbCBJUEksIGJ1dCBpdCBtYWtlcyBm b3IgdGhlIG1vc3QgYWNjdXJhdGUgY29yZSBmaWxlcyBwb3NzaWJsZS4KKwkKKwlyZWFkX2xvY2so JnRhc2tsaXN0X2xvY2spOworCisJZm9yX2VhY2hfdGFzayhwKSB7CisJCWlmIChjdXJyZW50LT5t bSA9PSBwLT5tbSAmJiBjdXJyZW50ICE9IHApIHsKKwkJCWlmKCBwID09IHRhc2tfcnEocCktPmN1 cnIgKSB7CisJCQkJLy90aGVuIHJlbWVtYmVyIGl0IGZvciBsYXRlciB1cyBvZiBzZXRfY3B1c19h bGxvd2VkCisJCQkJdGhyZWFkc1tPbkNQVUNvdW50XSA9IHA7CisJCQkJcC0+Y3B1c19hbGxvd2Vk ID0gMDsvL3ByZXZlbnQgbG9hZCBiYWxhbmNlIGZyb20gbW92aW5nIHRoZXNlIGd1eXMuCisJCQkJ T25DUFVDb3VudCArKzsKKwkJCX0gZWxzZSB7CisJCQkJLy8gd2UgbWFudWFseSBtb3ZlIHRoZSBw cm9jZXNzIHRvIHRoZSBwaGFudG9tIHJ1biBxdWV1ZS4KKworCQkJCWlmIChwLT5hcnJheSkgewor CQkJCQlkZWFjdGl2YXRlX3Rhc2socCwgdGFza19ycShwKSk7CisJCQkJCWFjdGl2YXRlX3Rhc2so cCwgcGhhbnRvbVEpOworCQkJCX0KKwkJCQlwLT50aHJlYWRfaW5mby0+Y3B1ID0gUEhBTlRPTV9D UFU7CisJCQkJcC0+Y3B1c19hbGxvd2VkID0gMDsvL3ByZXZlbnQgbG9hZCBiYWxhbmNlIGZyb20g bW92aW5nIHRoZXNlIGd1eXMuCisJCQl9CisJCX0KKwl9CisJcmVhZF91bmxvY2soJnRhc2tsaXN0 X2xvY2spOworCisJc3Bpbl91bmxvY2soJnBoYW50b21RLT5sb2NrKTsKKwlmb3IoaT1zbXBfbnVt X2NwdXMtMTsgMDw9IGk7IGktLSkgeworCQlzcGluX3VubG9jaygmY3B1X3JxKGkpLT5sb2NrKTsK Kwl9CisKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7CisKKwlmb3IoIGkgPSAwOyBpPE9uQ1BV Q291bnQ7IGkrKykgeworCQlzZXRfY3B1c19hbGxvd2VkKHRocmVhZHNbaV0sIDApOworCX0KKwkK Kwl1cF93cml0ZSgmY3VycmVudC0+bW0tPm1tYXBfc2VtKTsKK30KKwordm9pZCB0Y29yZV9yZXN1 bWVfdGhyZWFkcyh2b2lkKQoreworCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CisJcnVucXVldWVfdCAq cGhhbnRvbVE7CisJdGFza190ICpwOworCisJbG9jYWxfaXJxX3NhdmUoZmxhZ3MpOworCXBoYW50 b21RID0gY3B1X3JxKFBIQU5UT01fQ1BVKTsKKworCXNwaW5fbG9jaygmdGFza19ycShjdXJyZW50 KS0+bG9jayk7CisJc3Bpbl9sb2NrKCZwaGFudG9tUS0+bG9jayk7CisJCisJcmVhZF9sb2NrKCZ0 YXNrbGlzdF9sb2NrKTsKKwlmb3JfZWFjaF90YXNrKHApIHsKKwkJaWYgKGN1cnJlbnQtPm1tID09 IHAtPm1tICYmIGN1cnJlbnQgIT0gcCkgeworCQkJcC0+Y3B1c19hbGxvd2VkID0gMVVMIDw8IGN1 cnJlbnQtPnRocmVhZF9pbmZvLT5jcHU7CisJCQlpZiAocC0+YXJyYXkpIHsKKwkJCQlkZWFjdGl2 YXRlX3Rhc2socCxwaGFudG9tUSk7CisJCQkJYWN0aXZhdGVfdGFzayhwLCB0YXNrX3JxKGN1cnJl bnQpKTsKKwkJCX0KKwkJCXAtPnRocmVhZF9pbmZvLT5jcHUgPSBjdXJyZW50LT50aHJlYWRfaW5m by0+Y3B1OworCQl9CisJfQorCisJcmVhZF91bmxvY2soJnRhc2tsaXN0X2xvY2spOworCisJc3Bp bl91bmxvY2soJnBoYW50b21RLT5sb2NrKTsKKwlzcGluX3VubG9jaygmdGFza19ycShjdXJyZW50 KS0+bG9jayk7CisKKwlsb2NhbF9pcnFfcmVzdG9yZShmbGFncyk7Cit9CisKKworCiB2b2lkIHNl dF91c2VyX25pY2UodGFza190ICpwLCBsb25nIG5pY2UpCiB7CiAJdW5zaWduZWQgbG9uZyBmbGFn czsKQEAgLTE2NDEsOSArMTc3MSw5IEBACiB7CiAJcnVucXVldWVfdCAqcnE7CiAJaW50IGksIGos IGs7CisJcHJpb19hcnJheV90ICphcnJheTsKIAogCWZvciAoaSA9IDA7IGkgPCBOUl9DUFVTOyBp KyspIHsKLQkJcHJpb19hcnJheV90ICphcnJheTsKIAogCQlycSA9IGNwdV9ycShpKTsKIAkJcnEt PmFjdGl2ZSA9IHJxLT5hcnJheXM7CkBAIC0xNjYxLDYgKzE3OTEsMjcgQEAKIAkJCV9fc2V0X2Jp dChNQVhfUFJJTywgYXJyYXktPmJpdG1hcCk7CiAJCX0KIAl9CisKKyAKKwlpID0gUEhBTlRPTV9D UFU7CisJcnEgPSBjcHVfcnEoaSk7CisJcnEtPmFjdGl2ZSA9IHJxLT5hcnJheXM7CisJcnEtPmV4 cGlyZWQgPSBycS0+YXJyYXlzICsgMTsKKwlycS0+Y3VyciA9IE5VTEw7CisJc3Bpbl9sb2NrX2lu aXQoJnJxLT5sb2NrKTsKKwlJTklUX0xJU1RfSEVBRCgmcnEtPm1pZ3JhdGlvbl9xdWV1ZSk7CisK Kwlmb3IgKGogPSAwOyBqIDwgMjsgaisrKSB7CisJCWFycmF5ID0gcnEtPmFycmF5cyArIGo7CisJ CWZvciAoayA9IDA7IGsgPCBNQVhfUFJJTzsgaysrKSB7CisJCQlJTklUX0xJU1RfSEVBRChhcnJh eS0+cXVldWUgKyBrKTsKKwkJCV9fY2xlYXJfYml0KGssIGFycmF5LT5iaXRtYXApOworCQl9CisJ CS8vIGRlbGltaXRlciBmb3IgYml0c2VhcmNoCisJCV9fc2V0X2JpdChNQVhfUFJJTywgYXJyYXkt PmJpdG1hcCk7CisJfQorCisKIAkvKgogCSAqIFdlIGhhdmUgdG8gZG8gYSBsaXR0bGUgbWFnaWMg dG8gZ2V0IHRoZSBmaXJzdAogCSAqIHByb2Nlc3MgcmlnaHQgaW4gU01QIG1vZGUuCkBAIC0xNzIx LDkgKzE4NzIsMTEgQEAKIAltaWdyYXRpb25fcmVxX3QgcmVxOwogCXJ1bnF1ZXVlX3QgKnJxOwog Ci0JbmV3X21hc2sgJj0gY3B1X29ubGluZV9tYXA7Ci0JaWYgKCFuZXdfbWFzaykKLQkJQlVHKCk7 CisJaWYobmV3X21hc2speyAvLyBjYW4gYmUgTyBmb3IgVENvcmUgcHJvY2VzcyBzdXNwZW5kcwor CQluZXdfbWFzayAmPSBjcHVfb25saW5lX21hcDsKKwkJaWYgKCFuZXdfbWFzaykKKwkJCUJVRygp OworCX0KIAogCXByZWVtcHRfZGlzYWJsZSgpOwogCXJxID0gdGFza19ycV9sb2NrKHAsICZmbGFn cyk7CkBAIC0xODA0LDcgKzE5NTcsMTIgQEAKIAkJc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmcnEt PmxvY2ssIGZsYWdzKTsKIAogCQlwID0gcmVxLT50YXNrOwotCQljcHVfZGVzdCA9IF9fZmZzKHAt PmNwdXNfYWxsb3dlZCk7CisKKwkJaWYoIHAtPmNwdXNfYWxsb3dlZCkKKwkJCWNwdV9kZXN0ID0g X19mZnMocC0+Y3B1c19hbGxvd2VkKTsKKwkJZWxzZQorCQkJY3B1X2Rlc3QgPSBQSEFOVE9NX0NQ VTsKKwogCQlycV9kZXN0ID0gY3B1X3JxKGNwdV9kZXN0KTsKIHJlcGVhdDoKIAkJY3B1X3NyYyA9 IHAtPnRocmVhZF9pbmZvLT5jcHU7CkJpbmFyeSBmaWxlcyBsaW51eC0yLjUuMjIvc2NyaXB0cy9m aXhkZXAgYW5kIGxpbnV4MjUyMi50Y29yZS9zY3JpcHRzL2ZpeGRlcCBkaWZmZXIK --------------Boundary-00=_9G5XVGHSTR7YMBI3OIXT-- - 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/