From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S938739AbcJXRza (ORCPT ); Mon, 24 Oct 2016 13:55:30 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:33286 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S938676AbcJXRzZ (ORCPT ); Mon, 24 Oct 2016 13:55:25 -0400 MIME-Version: 1.0 In-Reply-To: References: <201610122230.DID43237.FSOHFFQOJOtVML@I-love.SAKURA.ne.jp> <1477249607.3561.2.camel@perches.com> <20161024140845.GA626@swordfish> From: Linus Torvalds Date: Mon, 24 Oct 2016 10:55:24 -0700 X-Google-Sender-Auth: GD5oK7se3x0pSF8xNPzlF7rSrak Message-ID: Subject: Re: linux.git: printk() problem To: Sergey Senozhatsky Cc: Joe Perches , Geert Uytterhoeven , Tetsuo Handa , Linux Kernel Mailing List , Petr Mladek , Sergey Senozhatsky Content-Type: multipart/mixed; boundary=94eb2c033370adccd0053fa0189d Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --94eb2c033370adccd0053fa0189d Content-Type: text/plain; charset=UTF-8 On Mon, Oct 24, 2016 at 10:54 AM, Linus Torvalds wrote: > > Note the "totally untested" part. It compiles for me. But it may do > unspeakably stupid things. Caveat applior. Well, it is hard to apply a patch that I didn't even attach. Blush. Linus --94eb2c033370adccd0053fa0189d Content-Type: text/plain; charset=US-ASCII; name="patch.diff" Content-Disposition: attachment; filename="patch.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iuod5suh0 IGtlcm5lbC9wcmludGsvcHJpbnRrLmMgfCAyNDkgKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDUyIGluc2VydGlvbnMoKyks IDE5NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9rZXJuZWwvcHJpbnRrL3ByaW50ay5jIGIv a2VybmVsL3ByaW50ay9wcmludGsuYwppbmRleCBkZTA4ZmM5MGJhYWYuLjZkZjRkM2Y2YzI3NiAx MDA2NDQKLS0tIGEva2VybmVsL3ByaW50ay9wcmludGsuYworKysgYi9rZXJuZWwvcHJpbnRrL3By aW50ay5jCkBAIC0zNjcsNyArMzY3LDYgQEAgREVDTEFSRV9XQUlUX1FVRVVFX0hFQUQobG9nX3dh aXQpOwogLyogdGhlIG5leHQgcHJpbnRrIHJlY29yZCB0byByZWFkIGJ5IHN5c2xvZyhSRUFEKSBv ciAvcHJvYy9rbXNnICovCiBzdGF0aWMgdTY0IHN5c2xvZ19zZXE7CiBzdGF0aWMgdTMyIHN5c2xv Z19pZHg7Ci1zdGF0aWMgZW51bSBsb2dfZmxhZ3Mgc3lzbG9nX3ByZXY7CiBzdGF0aWMgc2l6ZV90 IHN5c2xvZ19wYXJ0aWFsOwogCiAvKiBpbmRleCBhbmQgc2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBm aXJzdCByZWNvcmQgc3RvcmVkIGluIHRoZSBidWZmZXIgKi8KQEAgLTM4MSw3ICszODAsNiBAQCBz dGF0aWMgdTMyIGxvZ19uZXh0X2lkeDsKIC8qIHRoZSBuZXh0IHByaW50ayByZWNvcmQgdG8gd3Jp dGUgdG8gdGhlIGNvbnNvbGUgKi8KIHN0YXRpYyB1NjQgY29uc29sZV9zZXE7CiBzdGF0aWMgdTMy IGNvbnNvbGVfaWR4Owotc3RhdGljIGVudW0gbG9nX2ZsYWdzIGNvbnNvbGVfcHJldjsKIAogLyog dGhlIG5leHQgcHJpbnRrIHJlY29yZCB0byByZWFkIGFmdGVyIHRoZSBsYXN0ICdjbGVhcicgY29t bWFuZCAqLwogc3RhdGljIHU2NCBjbGVhcl9zZXE7CkBAIC02NTAsMjcgKzY0OCwxNSBAQCBzdGF0 aWMgdm9pZCBhcHBlbmRfY2hhcihjaGFyICoqcHAsIGNoYXIgKmUsIGNoYXIgYykKIH0KIAogc3Rh dGljIHNzaXplX3QgbXNnX3ByaW50X2V4dF9oZWFkZXIoY2hhciAqYnVmLCBzaXplX3Qgc2l6ZSwK LQkJCQkgICAgc3RydWN0IHByaW50a19sb2cgKm1zZywgdTY0IHNlcSwKLQkJCQkgICAgZW51bSBs b2dfZmxhZ3MgcHJldl9mbGFncykKKwkJCQkgICAgc3RydWN0IHByaW50a19sb2cgKm1zZywgdTY0 IHNlcSkKIHsKIAl1NjQgdHNfdXNlYyA9IG1zZy0+dHNfbnNlYzsKLQljaGFyIGNvbnQgPSAnLSc7 CiAKIAlkb19kaXYodHNfdXNlYywgMTAwMCk7CiAKLQkvKgotCSAqIElmIHdlIGNvdWxkbid0IG1l cmdlIGNvbnRpbnVhdGlvbiBsaW5lIGZyYWdtZW50cyBkdXJpbmcgdGhlIHByaW50LAotCSAqIGV4 cG9ydCB0aGUgc3RvcmVkIGZsYWdzIHRvIGFsbG93IGFuIG9wdGlvbmFsIGV4dGVybmFsIG1lcmdl IG9mIHRoZQotCSAqIHJlY29yZHMuIE1lcmdpbmcgdGhlIHJlY29yZHMgaXNuJ3QgYWx3YXlzIG5l Y2Nlc3NhcmlseSBjb3JyZWN0LCBsaWtlCi0JICogd2hlbiB3ZSBoaXQgYSByYWNlIGR1cmluZyBw cmludGluZy4gSW4gbW9zdCBjYXNlcyB0aG91Z2gsIGl0IHByb2R1Y2VzCi0JICogYmV0dGVyIHJl YWRhYmxlIG91dHB1dC4gJ2MnIGluIHRoZSByZWNvcmQgZmxhZ3MgbWFyayB0aGUgZmlyc3QKLQkg KiBmcmFnbWVudCBvZiBhIGxpbmUsICcrJyB0aGUgZm9sbG93aW5nLgotCSAqLwotCWlmIChtc2ct PmZsYWdzICYgTE9HX0NPTlQpCi0JCWNvbnQgPSAocHJldl9mbGFncyAmIExPR19DT05UKSA/ICcr JyA6ICdjJzsKLQogCXJldHVybiBzY25wcmludGYoYnVmLCBzaXplLCAiJXUsJWxsdSwlbGx1LCVj OyIsCi0JCSAgICAgICAobXNnLT5mYWNpbGl0eSA8PCAzKSB8IG1zZy0+bGV2ZWwsIHNlcSwgdHNf dXNlYywgY29udCk7CisJCSAgICAgICAobXNnLT5mYWNpbGl0eSA8PCAzKSB8IG1zZy0+bGV2ZWws IHNlcSwgdHNfdXNlYywKKwkJICAgICAgIG1zZy0+ZmxhZ3MgJiBMT0dfQ09OVCA/ICdjJyA6ICct Jyk7CiB9CiAKIHN0YXRpYyBzc2l6ZV90IG1zZ19wcmludF9leHRfYm9keShjaGFyICpidWYsIHNp emVfdCBzaXplLApAQCAtNzI1LDcgKzcxMSw2IEBAIHN0YXRpYyBzc2l6ZV90IG1zZ19wcmludF9l eHRfYm9keShjaGFyICpidWYsIHNpemVfdCBzaXplLAogc3RydWN0IGRldmttc2dfdXNlciB7CiAJ dTY0IHNlcTsKIAl1MzIgaWR4OwotCWVudW0gbG9nX2ZsYWdzIHByZXY7CiAJc3RydWN0IHJhdGVs aW1pdF9zdGF0ZSByczsKIAlzdHJ1Y3QgbXV0ZXggbG9jazsKIAljaGFyIGJ1ZltDT05TT0xFX0VY VF9MT0dfTUFYXTsKQEAgLTc5NCw3ICs3NzksNyBAQCBzdGF0aWMgc3NpemVfdCBkZXZrbXNnX3dy aXRlKHN0cnVjdCBraW9jYiAqaW9jYiwgc3RydWN0IGlvdl9pdGVyICpmcm9tKQogCXJldHVybiBy ZXQ7CiB9CiAKLXN0YXRpYyB2b2lkIGNvbnRfZmx1c2godm9pZCk7CitzdGF0aWMgdm9pZCBkZWZl cnJlZF9jb250X2ZsdXNoKHZvaWQpOwogCiBzdGF0aWMgc3NpemVfdCBkZXZrbXNnX3JlYWQoc3Ry dWN0IGZpbGUgKmZpbGUsIGNoYXIgX191c2VyICpidWYsCiAJCQkgICAgc2l6ZV90IGNvdW50LCBs b2ZmX3QgKnBwb3MpCkBAIC04MTEsNyArNzk2LDYgQEAgc3RhdGljIHNzaXplX3QgZGV2a21zZ19y ZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFyIF9fdXNlciAqYnVmLAogCWlmIChyZXQpCiAJCXJl dHVybiByZXQ7CiAJcmF3X3NwaW5fbG9ja19pcnEoJmxvZ2J1Zl9sb2NrKTsKLQljb250X2ZsdXNo KCk7CiAJd2hpbGUgKHVzZXItPnNlcSA9PSBsb2dfbmV4dF9zZXEpIHsKIAkJaWYgKGZpbGUtPmZf ZmxhZ3MgJiBPX05PTkJMT0NLKSB7CiAJCQlyZXQgPSAtRUFHQUlOOwpAQCAtODM4LDEyICs4MjIs MTEgQEAgc3RhdGljIHNzaXplX3QgZGV2a21zZ19yZWFkKHN0cnVjdCBmaWxlICpmaWxlLCBjaGFy IF9fdXNlciAqYnVmLAogCiAJbXNnID0gbG9nX2Zyb21faWR4KHVzZXItPmlkeCk7CiAJbGVuID0g bXNnX3ByaW50X2V4dF9oZWFkZXIodXNlci0+YnVmLCBzaXplb2YodXNlci0+YnVmKSwKLQkJCQkg ICBtc2csIHVzZXItPnNlcSwgdXNlci0+cHJldik7CisJCQkJICAgbXNnLCB1c2VyLT5zZXEpOwog CWxlbiArPSBtc2dfcHJpbnRfZXh0X2JvZHkodXNlci0+YnVmICsgbGVuLCBzaXplb2YodXNlci0+ YnVmKSAtIGxlbiwKIAkJCQkgIGxvZ19kaWN0KG1zZyksIG1zZy0+ZGljdF9sZW4sCiAJCQkJICBs b2dfdGV4dChtc2cpLCBtc2ctPnRleHRfbGVuKTsKIAotCXVzZXItPnByZXYgPSBtc2ctPmZsYWdz OwogCXVzZXItPmlkeCA9IGxvZ19uZXh0KHVzZXItPmlkeCk7CiAJdXNlci0+c2VxKys7CiAJcmF3 X3NwaW5fdW5sb2NrX2lycSgmbG9nYnVmX2xvY2spOwpAQCAtODYwLDYgKzg0Myw3IEBAIHN0YXRp YyBzc2l6ZV90IGRldmttc2dfcmVhZChzdHJ1Y3QgZmlsZSAqZmlsZSwgY2hhciBfX3VzZXIgKmJ1 ZiwKIAlyZXQgPSBsZW47CiBvdXQ6CiAJbXV0ZXhfdW5sb2NrKCZ1c2VyLT5sb2NrKTsKKwlkZWZl cnJlZF9jb250X2ZsdXNoKCk7CiAJcmV0dXJuIHJldDsKIH0KIApAQCAtODc0LDcgKzg1OCw2IEBA IHN0YXRpYyBsb2ZmX3QgZGV2a21zZ19sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBv ZmZzZXQsIGludCB3aGVuY2UpCiAJCXJldHVybiAtRVNQSVBFOwogCiAJcmF3X3NwaW5fbG9ja19p cnEoJmxvZ2J1Zl9sb2NrKTsKLQljb250X2ZsdXNoKCk7CiAJc3dpdGNoICh3aGVuY2UpIHsKIAlj YXNlIFNFRUtfU0VUOgogCQkvKiB0aGUgZmlyc3QgcmVjb3JkICovCkBAIC05MTMsNyArODk2LDYg QEAgc3RhdGljIHVuc2lnbmVkIGludCBkZXZrbXNnX3BvbGwoc3RydWN0IGZpbGUgKmZpbGUsIHBv bGxfdGFibGUgKndhaXQpCiAJcG9sbF93YWl0KGZpbGUsICZsb2dfd2FpdCwgd2FpdCk7CiAKIAly YXdfc3Bpbl9sb2NrX2lycSgmbG9nYnVmX2xvY2spOwotCWNvbnRfZmx1c2goKTsKIAlpZiAodXNl ci0+c2VxIDwgbG9nX25leHRfc2VxKSB7CiAJCS8qIHJldHVybiBlcnJvciB3aGVuIGRhdGEgaGFz IHZhbmlzaGVkIHVuZGVybmVhdGggdXMgKi8KIAkJaWYgKHVzZXItPnNlcSA8IGxvZ19maXJzdF9z ZXEpCkBAIC05MjIsNiArOTA0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBkZXZrbXNnX3BvbGwo c3RydWN0IGZpbGUgKmZpbGUsIHBvbGxfdGFibGUgKndhaXQpCiAJCQlyZXQgPSBQT0xMSU58UE9M TFJETk9STTsKIAl9CiAJcmF3X3NwaW5fdW5sb2NrX2lycSgmbG9nYnVmX2xvY2spOworCWRlZmVy cmVkX2NvbnRfZmx1c2goKTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xMjI2LDI2ICsxMjA5LDEy IEBAIHN0YXRpYyBzaXplX3QgcHJpbnRfcHJlZml4KGNvbnN0IHN0cnVjdCBwcmludGtfbG9nICpt c2csIGJvb2wgc3lzbG9nLCBjaGFyICpidWYpCiAJcmV0dXJuIGxlbjsKIH0KIAotc3RhdGljIHNp emVfdCBtc2dfcHJpbnRfdGV4dChjb25zdCBzdHJ1Y3QgcHJpbnRrX2xvZyAqbXNnLCBlbnVtIGxv Z19mbGFncyBwcmV2LAotCQkJICAgICBib29sIHN5c2xvZywgY2hhciAqYnVmLCBzaXplX3Qgc2l6 ZSkKK3N0YXRpYyBzaXplX3QgbXNnX3ByaW50X3RleHQoY29uc3Qgc3RydWN0IHByaW50a19sb2cg Km1zZywgYm9vbCBzeXNsb2csIGNoYXIgKmJ1Ziwgc2l6ZV90IHNpemUpCiB7CiAJY29uc3QgY2hh ciAqdGV4dCA9IGxvZ190ZXh0KG1zZyk7CiAJc2l6ZV90IHRleHRfc2l6ZSA9IG1zZy0+dGV4dF9s ZW47Ci0JYm9vbCBwcmVmaXggPSB0cnVlOwotCWJvb2wgbmV3bGluZSA9IHRydWU7CiAJc2l6ZV90 IGxlbiA9IDA7CiAKLQlpZiAoKHByZXYgJiBMT0dfQ09OVCkgJiYgIShtc2ctPmZsYWdzICYgTE9H X1BSRUZJWCkpCi0JCXByZWZpeCA9IGZhbHNlOwotCi0JaWYgKG1zZy0+ZmxhZ3MgJiBMT0dfQ09O VCkgewotCQlpZiAoKHByZXYgJiBMT0dfQ09OVCkgJiYgIShwcmV2ICYgTE9HX05FV0xJTkUpKQot CQkJcHJlZml4ID0gZmFsc2U7Ci0KLQkJaWYgKCEobXNnLT5mbGFncyAmIExPR19ORVdMSU5FKSkK LQkJCW5ld2xpbmUgPSBmYWxzZTsKLQl9Ci0KIAlkbyB7CiAJCWNvbnN0IGNoYXIgKm5leHQgPSBt ZW1jaHIodGV4dCwgJ1xuJywgdGV4dF9zaXplKTsKIAkJc2l6ZV90IHRleHRfbGVuOwpAQCAtMTI2 MywyMiArMTIzMiwxNyBAQCBzdGF0aWMgc2l6ZV90IG1zZ19wcmludF90ZXh0KGNvbnN0IHN0cnVj dCBwcmludGtfbG9nICptc2csIGVudW0gbG9nX2ZsYWdzIHByZXYsCiAJCQkgICAgdGV4dF9sZW4g KyAxID49IHNpemUgLSBsZW4pCiAJCQkJYnJlYWs7CiAKLQkJCWlmIChwcmVmaXgpCi0JCQkJbGVu ICs9IHByaW50X3ByZWZpeChtc2csIHN5c2xvZywgYnVmICsgbGVuKTsKKwkJCWxlbiArPSBwcmlu dF9wcmVmaXgobXNnLCBzeXNsb2csIGJ1ZiArIGxlbik7CiAJCQltZW1jcHkoYnVmICsgbGVuLCB0 ZXh0LCB0ZXh0X2xlbik7CiAJCQlsZW4gKz0gdGV4dF9sZW47Ci0JCQlpZiAobmV4dCB8fCBuZXds aW5lKQotCQkJCWJ1ZltsZW4rK10gPSAnXG4nOworCQkJYnVmW2xlbisrXSA9ICdcbic7CiAJCX0g ZWxzZSB7CiAJCQkvKiBTWVNMT0dfQUNUSU9OXyogYnVmZmVyIHNpemUgb25seSBjYWxjdWxhdGlv biAqLwotCQkJaWYgKHByZWZpeCkKLQkJCQlsZW4gKz0gcHJpbnRfcHJlZml4KG1zZywgc3lzbG9n LCBOVUxMKTsKKwkJCWxlbiArPSBwcmludF9wcmVmaXgobXNnLCBzeXNsb2csIE5VTEwpOwogCQkJ bGVuICs9IHRleHRfbGVuOwotCQkJaWYgKG5leHQgfHwgbmV3bGluZSkKLQkJCQlsZW4rKzsKKwkJ CWxlbisrOwogCQl9CiAKLQkJcHJlZml4ID0gdHJ1ZTsKIAkJdGV4dCA9IG5leHQ7CiAJfSB3aGls ZSAodGV4dCk7CiAKQEAgLTEzMDAsMTIgKzEyNjQsMTAgQEAgc3RhdGljIGludCBzeXNsb2dfcHJp bnQoY2hhciBfX3VzZXIgKmJ1ZiwgaW50IHNpemUpCiAJCXNpemVfdCBza2lwOwogCiAJCXJhd19z cGluX2xvY2tfaXJxKCZsb2didWZfbG9jayk7Ci0JCWNvbnRfZmx1c2goKTsKIAkJaWYgKHN5c2xv Z19zZXEgPCBsb2dfZmlyc3Rfc2VxKSB7CiAJCQkvKiBtZXNzYWdlcyBhcmUgZ29uZSwgbW92ZSB0 byBmaXJzdCBvbmUgKi8KIAkJCXN5c2xvZ19zZXEgPSBsb2dfZmlyc3Rfc2VxOwogCQkJc3lzbG9n X2lkeCA9IGxvZ19maXJzdF9pZHg7Ci0JCQlzeXNsb2dfcHJldiA9IDA7CiAJCQlzeXNsb2dfcGFy dGlhbCA9IDA7CiAJCX0KIAkJaWYgKHN5c2xvZ19zZXEgPT0gbG9nX25leHRfc2VxKSB7CkBAIC0x MzE1LDEzICsxMjc3LDExIEBAIHN0YXRpYyBpbnQgc3lzbG9nX3ByaW50KGNoYXIgX191c2VyICpi dWYsIGludCBzaXplKQogCiAJCXNraXAgPSBzeXNsb2dfcGFydGlhbDsKIAkJbXNnID0gbG9nX2Zy b21faWR4KHN5c2xvZ19pZHgpOwotCQluID0gbXNnX3ByaW50X3RleHQobXNnLCBzeXNsb2dfcHJl diwgdHJ1ZSwgdGV4dCwKLQkJCQkgICBMT0dfTElORV9NQVggKyBQUkVGSVhfTUFYKTsKKwkJbiA9 IG1zZ19wcmludF90ZXh0KG1zZywgdHJ1ZSwgdGV4dCwgTE9HX0xJTkVfTUFYICsgUFJFRklYX01B WCk7CiAJCWlmIChuIC0gc3lzbG9nX3BhcnRpYWwgPD0gc2l6ZSkgewogCQkJLyogbWVzc2FnZSBm aXRzIGludG8gYnVmZmVyLCBtb3ZlIGZvcndhcmQgKi8KIAkJCXN5c2xvZ19pZHggPSBsb2dfbmV4 dChzeXNsb2dfaWR4KTsKIAkJCXN5c2xvZ19zZXErKzsKLQkJCXN5c2xvZ19wcmV2ID0gbXNnLT5m bGFnczsKIAkJCW4gLT0gc3lzbG9nX3BhcnRpYWw7CiAJCQlzeXNsb2dfcGFydGlhbCA9IDA7CiAJ CX0gZWxzZSBpZiAoIWxlbil7CkBAIC0xMzYwLDEyICsxMzIwLDEwIEBAIHN0YXRpYyBpbnQgc3lz bG9nX3ByaW50X2FsbChjaGFyIF9fdXNlciAqYnVmLCBpbnQgc2l6ZSwgYm9vbCBjbGVhcikKIAkJ cmV0dXJuIC1FTk9NRU07CiAKIAlyYXdfc3Bpbl9sb2NrX2lycSgmbG9nYnVmX2xvY2spOwotCWNv bnRfZmx1c2goKTsKIAlpZiAoYnVmKSB7CiAJCXU2NCBuZXh0X3NlcTsKIAkJdTY0IHNlcTsKIAkJ dTMyIGlkeDsKLQkJZW51bSBsb2dfZmxhZ3MgcHJldjsKIAogCQkvKgogCQkgKiBGaW5kIGZpcnN0 IHJlY29yZCB0aGF0IGZpdHMsIGluY2x1ZGluZyBhbGwgZm9sbG93aW5nIHJlY29yZHMsCkBAIC0x MzczLDEyICsxMzMxLDEwIEBAIHN0YXRpYyBpbnQgc3lzbG9nX3ByaW50X2FsbChjaGFyIF9fdXNl ciAqYnVmLCBpbnQgc2l6ZSwgYm9vbCBjbGVhcikKIAkJICovCiAJCXNlcSA9IGNsZWFyX3NlcTsK IAkJaWR4ID0gY2xlYXJfaWR4OwotCQlwcmV2ID0gMDsKIAkJd2hpbGUgKHNlcSA8IGxvZ19uZXh0 X3NlcSkgewogCQkJc3RydWN0IHByaW50a19sb2cgKm1zZyA9IGxvZ19mcm9tX2lkeChpZHgpOwog Ci0JCQlsZW4gKz0gbXNnX3ByaW50X3RleHQobXNnLCBwcmV2LCB0cnVlLCBOVUxMLCAwKTsKLQkJ CXByZXYgPSBtc2ctPmZsYWdzOworCQkJbGVuICs9IG1zZ19wcmludF90ZXh0KG1zZywgdHJ1ZSwg TlVMTCwgMCk7CiAJCQlpZHggPSBsb2dfbmV4dChpZHgpOwogCQkJc2VxKys7CiAJCX0KQEAgLTEz ODYsMTIgKzEzNDIsMTAgQEAgc3RhdGljIGludCBzeXNsb2dfcHJpbnRfYWxsKGNoYXIgX191c2Vy ICpidWYsIGludCBzaXplLCBib29sIGNsZWFyKQogCQkvKiBtb3ZlIGZpcnN0IHJlY29yZCBmb3J3 YXJkIHVudGlsIGxlbmd0aCBmaXRzIGludG8gdGhlIGJ1ZmZlciAqLwogCQlzZXEgPSBjbGVhcl9z ZXE7CiAJCWlkeCA9IGNsZWFyX2lkeDsKLQkJcHJldiA9IDA7CiAJCXdoaWxlIChsZW4gPiBzaXpl ICYmIHNlcSA8IGxvZ19uZXh0X3NlcSkgewogCQkJc3RydWN0IHByaW50a19sb2cgKm1zZyA9IGxv Z19mcm9tX2lkeChpZHgpOwogCi0JCQlsZW4gLT0gbXNnX3ByaW50X3RleHQobXNnLCBwcmV2LCB0 cnVlLCBOVUxMLCAwKTsKLQkJCXByZXYgPSBtc2ctPmZsYWdzOworCQkJbGVuIC09IG1zZ19wcmlu dF90ZXh0KG1zZywgdHJ1ZSwgTlVMTCwgMCk7CiAJCQlpZHggPSBsb2dfbmV4dChpZHgpOwogCQkJ c2VxKys7CiAJCX0KQEAgLTE0MDQsNyArMTM1OCw3IEBAIHN0YXRpYyBpbnQgc3lzbG9nX3ByaW50 X2FsbChjaGFyIF9fdXNlciAqYnVmLCBpbnQgc2l6ZSwgYm9vbCBjbGVhcikKIAkJCXN0cnVjdCBw cmludGtfbG9nICptc2cgPSBsb2dfZnJvbV9pZHgoaWR4KTsKIAkJCWludCB0ZXh0bGVuOwogCi0J CQl0ZXh0bGVuID0gbXNnX3ByaW50X3RleHQobXNnLCBwcmV2LCB0cnVlLCB0ZXh0LAorCQkJdGV4 dGxlbiA9IG1zZ19wcmludF90ZXh0KG1zZywgdHJ1ZSwgdGV4dCwKIAkJCQkJCSBMT0dfTElORV9N QVggKyBQUkVGSVhfTUFYKTsKIAkJCWlmICh0ZXh0bGVuIDwgMCkgewogCQkJCWxlbiA9IHRleHRs ZW47CkBAIC0xNDEyLDcgKzEzNjYsNiBAQCBzdGF0aWMgaW50IHN5c2xvZ19wcmludF9hbGwoY2hh ciBfX3VzZXIgKmJ1ZiwgaW50IHNpemUsIGJvb2wgY2xlYXIpCiAJCQl9CiAJCQlpZHggPSBsb2df bmV4dChpZHgpOwogCQkJc2VxKys7Ci0JCQlwcmV2ID0gbXNnLT5mbGFnczsKIAogCQkJcmF3X3Nw aW5fdW5sb2NrX2lycSgmbG9nYnVmX2xvY2spOwogCQkJaWYgKGNvcHlfdG9fdXNlcihidWYgKyBs ZW4sIHRleHQsIHRleHRsZW4pKQpAQCAtMTQyNSw3ICsxMzc4LDYgQEAgc3RhdGljIGludCBzeXNs b2dfcHJpbnRfYWxsKGNoYXIgX191c2VyICpidWYsIGludCBzaXplLCBib29sIGNsZWFyKQogCQkJ CS8qIG1lc3NhZ2VzIGFyZSBnb25lLCBtb3ZlIHRvIG5leHQgb25lICovCiAJCQkJc2VxID0gbG9n X2ZpcnN0X3NlcTsKIAkJCQlpZHggPSBsb2dfZmlyc3RfaWR4OwotCQkJCXByZXYgPSAwOwogCQkJ fQogCQl9CiAJfQpAQCAtMTUyMiwxMiArMTQ3NCwxMCBAQCBpbnQgZG9fc3lzbG9nKGludCB0eXBl LCBjaGFyIF9fdXNlciAqYnVmLCBpbnQgbGVuLCBpbnQgc291cmNlKQogCS8qIE51bWJlciBvZiBj aGFycyBpbiB0aGUgbG9nIGJ1ZmZlciAqLwogCWNhc2UgU1lTTE9HX0FDVElPTl9TSVpFX1VOUkVB RDoKIAkJcmF3X3NwaW5fbG9ja19pcnEoJmxvZ2J1Zl9sb2NrKTsKLQkJY29udF9mbHVzaCgpOwog CQlpZiAoc3lzbG9nX3NlcSA8IGxvZ19maXJzdF9zZXEpIHsKIAkJCS8qIG1lc3NhZ2VzIGFyZSBn b25lLCBtb3ZlIHRvIGZpcnN0IG9uZSAqLwogCQkJc3lzbG9nX3NlcSA9IGxvZ19maXJzdF9zZXE7 CiAJCQlzeXNsb2dfaWR4ID0gbG9nX2ZpcnN0X2lkeDsKLQkJCXN5c2xvZ19wcmV2ID0gMDsKIAkJ CXN5c2xvZ19wYXJ0aWFsID0gMDsKIAkJfQogCQlpZiAoc291cmNlID09IFNZU0xPR19GUk9NX1BS T0MpIHsKQEAgLTE1NDAsMTYgKzE0OTAsMTQgQEAgaW50IGRvX3N5c2xvZyhpbnQgdHlwZSwgY2hh ciBfX3VzZXIgKmJ1ZiwgaW50IGxlbiwgaW50IHNvdXJjZSkKIAkJfSBlbHNlIHsKIAkJCXU2NCBz ZXEgPSBzeXNsb2dfc2VxOwogCQkJdTMyIGlkeCA9IHN5c2xvZ19pZHg7Ci0JCQllbnVtIGxvZ19m bGFncyBwcmV2ID0gc3lzbG9nX3ByZXY7CiAKIAkJCWVycm9yID0gMDsKIAkJCXdoaWxlIChzZXEg PCBsb2dfbmV4dF9zZXEpIHsKIAkJCQlzdHJ1Y3QgcHJpbnRrX2xvZyAqbXNnID0gbG9nX2Zyb21f aWR4KGlkeCk7CiAKLQkJCQllcnJvciArPSBtc2dfcHJpbnRfdGV4dChtc2csIHByZXYsIHRydWUs IE5VTEwsIDApOworCQkJCWVycm9yICs9IG1zZ19wcmludF90ZXh0KG1zZywgdHJ1ZSwgTlVMTCwg MCk7CiAJCQkJaWR4ID0gbG9nX25leHQoaWR4KTsKIAkJCQlzZXErKzsKLQkJCQlwcmV2ID0gbXNn LT5mbGFnczsKIAkJCX0KIAkJCWVycm9yIC09IHN5c2xvZ19wYXJ0aWFsOwogCQl9CkBAIC0xNTYz LDYgKzE1MTEsNyBAQCBpbnQgZG9fc3lzbG9nKGludCB0eXBlLCBjaGFyIF9fdXNlciAqYnVmLCBp bnQgbGVuLCBpbnQgc291cmNlKQogCQllcnJvciA9IC1FSU5WQUw7CiAJCWJyZWFrOwogCX0KKwlk ZWZlcnJlZF9jb250X2ZsdXNoKCk7CiBvdXQ6CiAJcmV0dXJuIGVycm9yOwogfQpAQCAtMTY1MCw0 NiArMTU5OSw0MSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcHJpbnRrX2RlbGF5KHZvaWQpCiBzdGF0 aWMgc3RydWN0IGNvbnQgewogCWNoYXIgYnVmW0xPR19MSU5FX01BWF07CiAJc2l6ZV90IGxlbjsJ CQkvKiBsZW5ndGggPT0gMCBtZWFucyB1bnVzZWQgYnVmZmVyICovCi0Jc2l6ZV90IGNvbnM7CQkJ LyogYnl0ZXMgd3JpdHRlbiB0byBjb25zb2xlICovCiAJc3RydWN0IHRhc2tfc3RydWN0ICpvd25l cjsJLyogdGFzayBvZiBmaXJzdCBwcmludCovCiAJdTY0IHRzX25zZWM7CQkJLyogdGltZSBvZiBm aXJzdCBwcmludCAqLwogCXU4IGxldmVsOwkJCS8qIGxvZyBsZXZlbCBvZiBmaXJzdCBtZXNzYWdl ICovCiAJdTggZmFjaWxpdHk7CQkJLyogbG9nIGZhY2lsaXR5IG9mIGZpcnN0IG1lc3NhZ2UgKi8K IAllbnVtIGxvZ19mbGFncyBmbGFnczsJCS8qIHByZWZpeCwgbmV3bGluZSBmbGFncyAqLwotCWJv b2wgZmx1c2hlZDoxOwkJCS8qIGJ1ZmZlciBzZWFsZWQgYW5kIGNvbW1pdHRlZCAqLwogfSBjb250 OwogCi1zdGF0aWMgdm9pZCBjb250X2ZsdXNoKHZvaWQpCitzdGF0aWMgYm9vbCBjb250X2ZsdXNo KHZvaWQpCiB7Ci0JaWYgKGNvbnQuZmx1c2hlZCkKLQkJcmV0dXJuOwotCWlmIChjb250LmxlbiA9 PSAwKQorCWlmICghY29udC5sZW4pCisJCXJldHVybiBmYWxzZTsKKworCWxvZ19zdG9yZShjb250 LmZhY2lsaXR5LCBjb250LmxldmVsLCBjb250LmZsYWdzLCBjb250LnRzX25zZWMsCisJCSAgTlVM TCwgMCwgY29udC5idWYsIGNvbnQubGVuKTsKKwljb250LmxlbiA9IDA7CisJcmV0dXJuIHRydWU7 Cit9CisKK3N0YXRpYyB2b2lkIGZsdXNoX3RpbWVyKHVuc2lnbmVkIGxvbmcgZGF0YSkKK3sKKwlp ZiAoY29udF9mbHVzaCgpKQorCQl3YWtlX3VwX2tsb2dkKCk7Cit9CisKK3N0YXRpYyB2b2lkIGRl ZmVycmVkX2NvbnRfZmx1c2godm9pZCkKK3sKKwlzdGF0aWMgREVGSU5FX1RJTUVSKHRpbWVyLCBm bHVzaF90aW1lciwgMCwgMCk7CisKKwlpZiAoIWNvbnQubGVuKQogCQlyZXR1cm47Ci0JaWYgKGNv bnQuY29ucykgewotCQkvKgotCQkgKiBJZiBhIGZyYWdtZW50IG9mIHRoaXMgbGluZSB3YXMgZGly ZWN0bHkgZmx1c2hlZCB0byB0aGUKLQkJICogY29uc29sZTsgd2FpdCBmb3IgdGhlIGNvbnNvbGUg dG8gcGljayB1cCB0aGUgcmVzdCBvZiB0aGUKLQkJICogbGluZS4gTE9HX05PQ09OUyBzdXBwcmVz c2VzIGEgZHVwbGljYXRlZCBvdXRwdXQuCi0JCSAqLwotCQlsb2dfc3RvcmUoY29udC5mYWNpbGl0 eSwgY29udC5sZXZlbCwgY29udC5mbGFncyB8IExPR19OT0NPTlMsCi0JCQkgIGNvbnQudHNfbnNl YywgTlVMTCwgMCwgY29udC5idWYsIGNvbnQubGVuKTsKLQkJY29udC5mbHVzaGVkID0gdHJ1ZTsK LQl9IGVsc2UgewotCQkvKgotCQkgKiBJZiBubyBmcmFnbWVudCBvZiB0aGlzIGxpbmUgZXZlciBy ZWFjaGVkIHRoZSBjb25zb2xlLAotCQkgKiBqdXN0IHN1Ym1pdCBpdCB0byB0aGUgc3RvcmUgYW5k IGZyZWUgdGhlIGJ1ZmZlci4KLQkJICovCi0JCWxvZ19zdG9yZShjb250LmZhY2lsaXR5LCBjb250 LmxldmVsLCBjb250LmZsYWdzLCAwLAotCQkJICBOVUxMLCAwLCBjb250LmJ1ZiwgY29udC5sZW4p OwotCQljb250LmxlbiA9IDA7Ci0JfQorCW1vZF90aW1lcigmdGltZXIsIGppZmZpZXMgKyBIWi8x MCk7CiB9CiAKIHN0YXRpYyBib29sIGNvbnRfYWRkKGludCBmYWNpbGl0eSwgaW50IGxldmVsLCBl bnVtIGxvZ19mbGFncyBmbGFncywgY29uc3QgY2hhciAqdGV4dCwgc2l6ZV90IGxlbikKIHsKLQlp ZiAoY29udC5sZW4gJiYgY29udC5mbHVzaGVkKQotCQlyZXR1cm4gZmFsc2U7Ci0KIAkvKgogCSAq IElmIGV4dCBjb25zb2xlcyBhcmUgcHJlc2VudCwgZmx1c2ggYW5kIHNraXAgaW4ta2VybmVsCiAJ ICogY29udGludWF0aW9uLiAgU2VlIG5yX2V4dF9jb25zb2xlX2RyaXZlcnMgZGVmaW5pdGlvbi4g IEFsc28sIGlmCkBAIC0xNzA2LDggKzE2NTAsNiBAQCBzdGF0aWMgYm9vbCBjb250X2FkZChpbnQg ZmFjaWxpdHksIGludCBsZXZlbCwgZW51bSBsb2dfZmxhZ3MgZmxhZ3MsIGNvbnN0IGNoYXIgKgog CQljb250Lm93bmVyID0gY3VycmVudDsKIAkJY29udC50c19uc2VjID0gbG9jYWxfY2xvY2soKTsK IAkJY29udC5mbGFncyA9IGZsYWdzOwotCQljb250LmNvbnMgPSAwOwotCQljb250LmZsdXNoZWQg PSBmYWxzZTsKIAl9CiAKIAltZW1jcHkoY29udC5idWYgKyBjb250LmxlbiwgdGV4dCwgbGVuKTsK QEAgLTE3MjYsMzQgKzE2NjgsNiBAQCBzdGF0aWMgYm9vbCBjb250X2FkZChpbnQgZmFjaWxpdHks IGludCBsZXZlbCwgZW51bSBsb2dfZmxhZ3MgZmxhZ3MsIGNvbnN0IGNoYXIgKgogCXJldHVybiB0 cnVlOwogfQogCi1zdGF0aWMgc2l6ZV90IGNvbnRfcHJpbnRfdGV4dChjaGFyICp0ZXh0LCBzaXpl X3Qgc2l6ZSkKLXsKLQlzaXplX3QgdGV4dGxlbiA9IDA7Ci0Jc2l6ZV90IGxlbjsKLQotCWlmIChj b250LmNvbnMgPT0gMCAmJiAoY29uc29sZV9wcmV2ICYgTE9HX05FV0xJTkUpKSB7Ci0JCXRleHRs ZW4gKz0gcHJpbnRfdGltZShjb250LnRzX25zZWMsIHRleHQpOwotCQlzaXplIC09IHRleHRsZW47 Ci0JfQotCi0JbGVuID0gY29udC5sZW4gLSBjb250LmNvbnM7Ci0JaWYgKGxlbiA+IDApIHsKLQkJ aWYgKGxlbisxID4gc2l6ZSkKLQkJCWxlbiA9IHNpemUtMTsKLQkJbWVtY3B5KHRleHQgKyB0ZXh0 bGVuLCBjb250LmJ1ZiArIGNvbnQuY29ucywgbGVuKTsKLQkJdGV4dGxlbiArPSBsZW47Ci0JCWNv bnQuY29ucyA9IGNvbnQubGVuOwotCX0KLQotCWlmIChjb250LmZsdXNoZWQpIHsKLQkJaWYgKGNv bnQuZmxhZ3MgJiBMT0dfTkVXTElORSkKLQkJCXRleHRbdGV4dGxlbisrXSA9ICdcbic7Ci0JCS8q IGdvdCBldmVyeXRoaW5nLCByZWxlYXNlIGJ1ZmZlciAqLwotCQljb250LmxlbiA9IDA7Ci0JfQot CXJldHVybiB0ZXh0bGVuOwotfQotCiBzdGF0aWMgc2l6ZV90IGxvZ19vdXRwdXQoaW50IGZhY2ls aXR5LCBpbnQgbGV2ZWwsIGVudW0gbG9nX2ZsYWdzIGxmbGFncywgY29uc3QgY2hhciAqZGljdCwg c2l6ZV90IGRpY3RsZW4sIGNoYXIgKnRleHQsIHNpemVfdCB0ZXh0X2xlbikKIHsKIAkvKgpAQCAt MTk5OSwxMSArMTkxMyw5IEBAIHN0YXRpYyB1NjQgc3lzbG9nX3NlcTsKIHN0YXRpYyB1MzIgc3lz bG9nX2lkeDsKIHN0YXRpYyB1NjQgY29uc29sZV9zZXE7CiBzdGF0aWMgdTMyIGNvbnNvbGVfaWR4 Owotc3RhdGljIGVudW0gbG9nX2ZsYWdzIHN5c2xvZ19wcmV2Owogc3RhdGljIHU2NCBsb2dfZmly c3Rfc2VxOwogc3RhdGljIHUzMiBsb2dfZmlyc3RfaWR4Owogc3RhdGljIHU2NCBsb2dfbmV4dF9z ZXE7Ci1zdGF0aWMgZW51bSBsb2dfZmxhZ3MgY29uc29sZV9wcmV2Owogc3RhdGljIHN0cnVjdCBj b250IHsKIAlzaXplX3QgbGVuOwogCXNpemVfdCBjb25zOwpAQCAtMjAxNSwxNyArMTkyNywxNiBA QCBzdGF0aWMgY2hhciAqbG9nX2RpY3QoY29uc3Qgc3RydWN0IHByaW50a19sb2cgKm1zZykgeyBy ZXR1cm4gTlVMTDsgfQogc3RhdGljIHN0cnVjdCBwcmludGtfbG9nICpsb2dfZnJvbV9pZHgodTMy IGlkeCkgeyByZXR1cm4gTlVMTDsgfQogc3RhdGljIHUzMiBsb2dfbmV4dCh1MzIgaWR4KSB7IHJl dHVybiAwOyB9CiBzdGF0aWMgc3NpemVfdCBtc2dfcHJpbnRfZXh0X2hlYWRlcihjaGFyICpidWYs IHNpemVfdCBzaXplLAotCQkJCSAgICBzdHJ1Y3QgcHJpbnRrX2xvZyAqbXNnLCB1NjQgc2VxLAot CQkJCSAgICBlbnVtIGxvZ19mbGFncyBwcmV2X2ZsYWdzKSB7IHJldHVybiAwOyB9CisJCQkJICAg IHN0cnVjdCBwcmludGtfbG9nICptc2csCisJCQkJICAgIHU2NCBzZXEpIHsgcmV0dXJuIDA7IH0K IHN0YXRpYyBzc2l6ZV90IG1zZ19wcmludF9leHRfYm9keShjaGFyICpidWYsIHNpemVfdCBzaXpl LAogCQkJCSAgY2hhciAqZGljdCwgc2l6ZV90IGRpY3RfbGVuLAogCQkJCSAgY2hhciAqdGV4dCwg c2l6ZV90IHRleHRfbGVuKSB7IHJldHVybiAwOyB9CiBzdGF0aWMgdm9pZCBjYWxsX2NvbnNvbGVf ZHJpdmVycyhpbnQgbGV2ZWwsCiAJCQkJIGNvbnN0IGNoYXIgKmV4dF90ZXh0LCBzaXplX3QgZXh0 X2xlbiwKIAkJCQkgY29uc3QgY2hhciAqdGV4dCwgc2l6ZV90IGxlbikge30KLXN0YXRpYyBzaXpl X3QgbXNnX3ByaW50X3RleHQoY29uc3Qgc3RydWN0IHByaW50a19sb2cgKm1zZywgZW51bSBsb2df ZmxhZ3MgcHJldiwKK3N0YXRpYyBzaXplX3QgbXNnX3ByaW50X3RleHQoY29uc3Qgc3RydWN0IHBy aW50a19sb2cgKm1zZywKIAkJCSAgICAgYm9vbCBzeXNsb2csIGNoYXIgKmJ1Ziwgc2l6ZV90IHNp emUpIHsgcmV0dXJuIDA7IH0KLXN0YXRpYyBzaXplX3QgY29udF9wcmludF90ZXh0KGNoYXIgKnRl eHQsIHNpemVfdCBzaXplKSB7IHJldHVybiAwOyB9CiBzdGF0aWMgYm9vbCBzdXBwcmVzc19tZXNz YWdlX3ByaW50aW5nKGludCBsZXZlbCkgeyByZXR1cm4gZmFsc2U7IH0KIAogLyogU3RpbGwgbmVl ZHMgdG8gYmUgZGVmaW5lZCBmb3IgdXNlcnMgKi8KQEAgLTIyOTYsNDIgKzIyMDcsNiBAQCBzdGF0 aWMgaW5saW5lIGludCBjYW5fdXNlX2NvbnNvbGUodm9pZCkKIAlyZXR1cm4gY3B1X29ubGluZShy YXdfc21wX3Byb2Nlc3Nvcl9pZCgpKSB8fCBoYXZlX2NhbGxhYmxlX2NvbnNvbGUoKTsKIH0KIAot c3RhdGljIHZvaWQgY29uc29sZV9jb250X2ZsdXNoKGNoYXIgKnRleHQsIHNpemVfdCBzaXplKQot ewotCXVuc2lnbmVkIGxvbmcgZmxhZ3M7Ci0Jc2l6ZV90IGxlbjsKLQotCXJhd19zcGluX2xvY2tf aXJxc2F2ZSgmbG9nYnVmX2xvY2ssIGZsYWdzKTsKLQotCWlmICghY29udC5sZW4pCi0JCWdvdG8g b3V0OwotCi0JaWYgKHN1cHByZXNzX21lc3NhZ2VfcHJpbnRpbmcoY29udC5sZXZlbCkpIHsKLQkJ Y29udC5jb25zID0gY29udC5sZW47Ci0JCWlmIChjb250LmZsdXNoZWQpCi0JCQljb250LmxlbiA9 IDA7Ci0JCWdvdG8gb3V0OwotCX0KLQotCS8qCi0JICogV2Ugc3RpbGwgcXVldWUgZWFybGllciBy ZWNvcmRzLCBsaWtlbHkgYmVjYXVzZSB0aGUgY29uc29sZSB3YXMKLQkgKiBidXN5LiBUaGUgZWFy bGllciBvbmVzIG5lZWQgdG8gYmUgcHJpbnRlZCBiZWZvcmUgdGhpcyBvbmUsIHdlCi0JICogZGlk IG5vdCBmbHVzaCBhbnkgZnJhZ21lbnQgc28gZmFyLCBzbyBqdXN0IGxldCBpdCBxdWV1ZSB1cC4K LQkgKi8KLQlpZiAoY29uc29sZV9zZXEgPCBsb2dfbmV4dF9zZXEgJiYgIWNvbnQuY29ucykKLQkJ Z290byBvdXQ7Ci0KLQlsZW4gPSBjb250X3ByaW50X3RleHQodGV4dCwgc2l6ZSk7Ci0JcmF3X3Nw aW5fdW5sb2NrKCZsb2didWZfbG9jayk7Ci0Jc3RvcF9jcml0aWNhbF90aW1pbmdzKCk7Ci0JY2Fs bF9jb25zb2xlX2RyaXZlcnMoY29udC5sZXZlbCwgTlVMTCwgMCwgdGV4dCwgbGVuKTsKLQlzdGFy dF9jcml0aWNhbF90aW1pbmdzKCk7Ci0JbG9jYWxfaXJxX3Jlc3RvcmUoZmxhZ3MpOwotCXJldHVy bjsKLW91dDoKLQlyYXdfc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9nYnVmX2xvY2ssIGZsYWdz KTsKLX0KLQogLyoqCiAgKiBjb25zb2xlX3VubG9jayAtIHVubG9jayB0aGUgY29uc29sZSBzeXN0 ZW0KICAqCkBAIC0yMzg1LDkgKzIyNjAsNiBAQCB2b2lkIGNvbnNvbGVfdW5sb2NrKHZvaWQpCiAJ CXJldHVybjsKIAl9CiAKLQkvKiBmbHVzaCBidWZmZXJlZCBtZXNzYWdlIGZyYWdtZW50IGltbWVk aWF0ZWx5IHRvIGNvbnNvbGUgKi8KLQljb25zb2xlX2NvbnRfZmx1c2godGV4dCwgc2l6ZW9mKHRl eHQpKTsKLQogCWZvciAoOzspIHsKIAkJc3RydWN0IHByaW50a19sb2cgKm1zZzsKIAkJc2l6ZV90 IGV4dF9sZW4gPSAwOwpAQCAtMjQwNyw3ICsyMjc5LDYgQEAgdm9pZCBjb25zb2xlX3VubG9jayh2 b2lkKQogCQkJLyogbWVzc2FnZXMgYXJlIGdvbmUsIG1vdmUgdG8gZmlyc3Qgb25lICovCiAJCQlj b25zb2xlX3NlcSA9IGxvZ19maXJzdF9zZXE7CiAJCQljb25zb2xlX2lkeCA9IGxvZ19maXJzdF9p ZHg7Ci0JCQljb25zb2xlX3ByZXYgPSAwOwogCQl9IGVsc2UgewogCQkJbGVuID0gMDsKIAkJfQpA QCAtMjQxNyw4ICsyMjg4LDcgQEAgdm9pZCBjb25zb2xlX3VubG9jayh2b2lkKQogCiAJCW1zZyA9 IGxvZ19mcm9tX2lkeChjb25zb2xlX2lkeCk7CiAJCWxldmVsID0gbXNnLT5sZXZlbDsKLQkJaWYg KChtc2ctPmZsYWdzICYgTE9HX05PQ09OUykgfHwKLQkJCQlzdXBwcmVzc19tZXNzYWdlX3ByaW50 aW5nKGxldmVsKSkgeworCQlpZiAoc3VwcHJlc3NfbWVzc2FnZV9wcmludGluZyhsZXZlbCkpIHsK IAkJCS8qCiAJCQkgKiBTa2lwIHJlY29yZCB3ZSBoYXZlIGJ1ZmZlcmVkIGFuZCBhbHJlYWR5IHBy aW50ZWQKIAkJCSAqIGRpcmVjdGx5IHRvIHRoZSBjb25zb2xlIHdoZW4gd2UgcmVjZWl2ZWQgaXQs IGFuZApAQCAtMjQyNiwyMiArMjI5NiwxNCBAQCB2b2lkIGNvbnNvbGVfdW5sb2NrKHZvaWQpCiAJ CQkgKi8KIAkJCWNvbnNvbGVfaWR4ID0gbG9nX25leHQoY29uc29sZV9pZHgpOwogCQkJY29uc29s ZV9zZXErKzsKLQkJCS8qCi0JCQkgKiBXZSB3aWxsIGdldCBoZXJlIGFnYWluIHdoZW4gd2UgcmVn aXN0ZXIgYSBuZXcKLQkJCSAqIENPTl9QUklOVEJVRkZFUiBjb25zb2xlLiBDbGVhciB0aGUgZmxh ZyBzbyB3ZQotCQkJICogd2lsbCBwcm9wZXJseSBkdW1wIGV2ZXJ5dGhpbmcgbGF0ZXIuCi0JCQkg Ki8KLQkJCW1zZy0+ZmxhZ3MgJj0gfkxPR19OT0NPTlM7Ci0JCQljb25zb2xlX3ByZXYgPSBtc2ct PmZsYWdzOwogCQkJZ290byBza2lwOwogCQl9CiAKLQkJbGVuICs9IG1zZ19wcmludF90ZXh0KG1z ZywgY29uc29sZV9wcmV2LCBmYWxzZSwKLQkJCQkgICAgICB0ZXh0ICsgbGVuLCBzaXplb2YodGV4 dCkgLSBsZW4pOworCQlsZW4gKz0gbXNnX3ByaW50X3RleHQobXNnLCBmYWxzZSwgdGV4dCArIGxl biwgc2l6ZW9mKHRleHQpIC0gbGVuKTsKIAkJaWYgKG5yX2V4dF9jb25zb2xlX2RyaXZlcnMpIHsK IAkJCWV4dF9sZW4gPSBtc2dfcHJpbnRfZXh0X2hlYWRlcihleHRfdGV4dCwKIAkJCQkJCXNpemVv ZihleHRfdGV4dCksCi0JCQkJCQltc2csIGNvbnNvbGVfc2VxLCBjb25zb2xlX3ByZXYpOworCQkJ CQkJbXNnLCBjb25zb2xlX3NlcSk7CiAJCQlleHRfbGVuICs9IG1zZ19wcmludF9leHRfYm9keShl eHRfdGV4dCArIGV4dF9sZW4sCiAJCQkJCQlzaXplb2YoZXh0X3RleHQpIC0gZXh0X2xlbiwKIAkJ CQkJCWxvZ19kaWN0KG1zZyksIG1zZy0+ZGljdF9sZW4sCkBAIC0yNDQ5LDcgKzIzMTEsNiBAQCB2 b2lkIGNvbnNvbGVfdW5sb2NrKHZvaWQpCiAJCX0KIAkJY29uc29sZV9pZHggPSBsb2dfbmV4dChj b25zb2xlX2lkeCk7CiAJCWNvbnNvbGVfc2VxKys7Ci0JCWNvbnNvbGVfcHJldiA9IG1zZy0+Zmxh Z3M7CiAJCXJhd19zcGluX3VubG9jaygmbG9nYnVmX2xvY2spOwogCiAJCXN0b3BfY3JpdGljYWxf dGltaW5ncygpOwkvKiBkb24ndCB0cmFjZSBwcmludCBsYXRlbmN5ICovCkBAIC0yNDgzLDcgKzIz NDQsNyBAQCB2b2lkIGNvbnNvbGVfdW5sb2NrKHZvaWQpCiAJaWYgKHJldHJ5ICYmIGNvbnNvbGVf dHJ5bG9jaygpKQogCQlnb3RvIGFnYWluOwogCi0JaWYgKHdha2Vfa2xvZ2QpCisJaWYgKHdha2Vf a2xvZ2QgfHwgY29udC5sZW4pCiAJCXdha2VfdXBfa2xvZ2QoKTsKIH0KIEVYUE9SVF9TWU1CT0wo Y29uc29sZV91bmxvY2spOwpAQCAtMjc0NCw3ICsyNjA1LDYgQEAgdm9pZCByZWdpc3Rlcl9jb25z b2xlKHN0cnVjdCBjb25zb2xlICpuZXdjb24pCiAJCXJhd19zcGluX2xvY2tfaXJxc2F2ZSgmbG9n YnVmX2xvY2ssIGZsYWdzKTsKIAkJY29uc29sZV9zZXEgPSBzeXNsb2dfc2VxOwogCQljb25zb2xl X2lkeCA9IHN5c2xvZ19pZHg7Ci0JCWNvbnNvbGVfcHJldiA9IHN5c2xvZ19wcmV2OwogCQlyYXdf c3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbG9nYnVmX2xvY2ssIGZsYWdzKTsKIAkJLyoKIAkJICog V2UncmUgYWJvdXQgdG8gcmVwbGF5IHRoZSBsb2cgYnVmZmVyLiAgT25seSBkbyB0aGlzIHRvIHRo ZQpAQCAtMjg4Myw2ICsyNzQzLDcgQEAgc3RhdGljIHZvaWQgd2FrZV91cF9rbG9nZF93b3JrX2Z1 bmMoc3RydWN0IGlycV93b3JrICppcnFfd29yaykKIAogCWlmIChwZW5kaW5nICYgUFJJTlRLX1BF TkRJTkdfV0FLRVVQKQogCQl3YWtlX3VwX2ludGVycnVwdGlibGUoJmxvZ193YWl0KTsKKwlkZWZl cnJlZF9jb250X2ZsdXNoKCk7CiB9CiAKIHN0YXRpYyBERUZJTkVfUEVSX0NQVShzdHJ1Y3QgaXJx X3dvcmssIHdha2VfdXBfa2xvZ2Rfd29yaykgPSB7CkBAIC0zMDk1LDcgKzI5NTYsNyBAQCBib29s IGttc2dfZHVtcF9nZXRfbGluZV9ub2xvY2soc3RydWN0IGttc2dfZHVtcGVyICpkdW1wZXIsIGJv b2wgc3lzbG9nLAogCQlnb3RvIG91dDsKIAogCW1zZyA9IGxvZ19mcm9tX2lkeChkdW1wZXItPmN1 cl9pZHgpOwotCWwgPSBtc2dfcHJpbnRfdGV4dChtc2csIDAsIHN5c2xvZywgbGluZSwgc2l6ZSk7 CisJbCA9IG1zZ19wcmludF90ZXh0KG1zZywgc3lzbG9nLCBsaW5lLCBzaXplKTsKIAogCWR1bXBl ci0+Y3VyX2lkeCA9IGxvZ19uZXh0KGR1bXBlci0+Y3VyX2lkeCk7CiAJZHVtcGVyLT5jdXJfc2Vx Kys7CkBAIC0zMTY1LDcgKzMwMjYsNiBAQCBib29sIGttc2dfZHVtcF9nZXRfYnVmZmVyKHN0cnVj dCBrbXNnX2R1bXBlciAqZHVtcGVyLCBib29sIHN5c2xvZywKIAl1MzIgaWR4OwogCXU2NCBuZXh0 X3NlcTsKIAl1MzIgbmV4dF9pZHg7Ci0JZW51bSBsb2dfZmxhZ3MgcHJldjsKIAlzaXplX3QgbCA9 IDA7CiAJYm9vbCByZXQgPSBmYWxzZTsKIApAQCAtMzE4OSwyNyArMzA0OSwyMyBAQCBib29sIGtt c2dfZHVtcF9nZXRfYnVmZmVyKHN0cnVjdCBrbXNnX2R1bXBlciAqZHVtcGVyLCBib29sIHN5c2xv ZywKIAkvKiBjYWxjdWxhdGUgbGVuZ3RoIG9mIGVudGlyZSBidWZmZXIgKi8KIAlzZXEgPSBkdW1w ZXItPmN1cl9zZXE7CiAJaWR4ID0gZHVtcGVyLT5jdXJfaWR4OwotCXByZXYgPSAwOwogCXdoaWxl IChzZXEgPCBkdW1wZXItPm5leHRfc2VxKSB7CiAJCXN0cnVjdCBwcmludGtfbG9nICptc2cgPSBs b2dfZnJvbV9pZHgoaWR4KTsKIAotCQlsICs9IG1zZ19wcmludF90ZXh0KG1zZywgcHJldiwgdHJ1 ZSwgTlVMTCwgMCk7CisJCWwgKz0gbXNnX3ByaW50X3RleHQobXNnLCB0cnVlLCBOVUxMLCAwKTsK IAkJaWR4ID0gbG9nX25leHQoaWR4KTsKIAkJc2VxKys7Ci0JCXByZXYgPSBtc2ctPmZsYWdzOwog CX0KIAogCS8qIG1vdmUgZmlyc3QgcmVjb3JkIGZvcndhcmQgdW50aWwgbGVuZ3RoIGZpdHMgaW50 byB0aGUgYnVmZmVyICovCiAJc2VxID0gZHVtcGVyLT5jdXJfc2VxOwogCWlkeCA9IGR1bXBlci0+ Y3VyX2lkeDsKLQlwcmV2ID0gMDsKIAl3aGlsZSAobCA+IHNpemUgJiYgc2VxIDwgZHVtcGVyLT5u ZXh0X3NlcSkgewogCQlzdHJ1Y3QgcHJpbnRrX2xvZyAqbXNnID0gbG9nX2Zyb21faWR4KGlkeCk7 CiAKLQkJbCAtPSBtc2dfcHJpbnRfdGV4dChtc2csIHByZXYsIHRydWUsIE5VTEwsIDApOworCQls IC09IG1zZ19wcmludF90ZXh0KG1zZywgdHJ1ZSwgTlVMTCwgMCk7CiAJCWlkeCA9IGxvZ19uZXh0 KGlkeCk7CiAJCXNlcSsrOwotCQlwcmV2ID0gbXNnLT5mbGFnczsKIAl9CiAKIAkvKiBsYXN0IG1l c3NhZ2UgaW4gbmV4dCBpbnRlcmF0aW9uICovCkBAIC0zMjIwLDEwICszMDc2LDkgQEAgYm9vbCBr bXNnX2R1bXBfZ2V0X2J1ZmZlcihzdHJ1Y3Qga21zZ19kdW1wZXIgKmR1bXBlciwgYm9vbCBzeXNs b2csCiAJd2hpbGUgKHNlcSA8IGR1bXBlci0+bmV4dF9zZXEpIHsKIAkJc3RydWN0IHByaW50a19s b2cgKm1zZyA9IGxvZ19mcm9tX2lkeChpZHgpOwogCi0JCWwgKz0gbXNnX3ByaW50X3RleHQobXNn LCBwcmV2LCBzeXNsb2csIGJ1ZiArIGwsIHNpemUgLSBsKTsKKwkJbCArPSBtc2dfcHJpbnRfdGV4 dChtc2csIHN5c2xvZywgYnVmICsgbCwgc2l6ZSAtIGwpOwogCQlpZHggPSBsb2dfbmV4dChpZHgp OwogCQlzZXErKzsKLQkJcHJldiA9IG1zZy0+ZmxhZ3M7CiAJfQogCiAJZHVtcGVyLT5uZXh0X3Nl cSA9IG5leHRfc2VxOwo= --94eb2c033370adccd0053fa0189d--