From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-7.0 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, UNWANTED_LANGUAGE_BODY,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C1A9C31E40 for ; Fri, 9 Aug 2019 14:59:55 +0000 (UTC) Received: from lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id D40CA208C4 for ; Fri, 9 Aug 2019 14:59:54 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D40CA208C4 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=suse.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=xen-devel-bounces@lists.xenproject.org Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw6Mk-0008FX-Mm; Fri, 09 Aug 2019 14:59:38 +0000 Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1hw6M9-0006pV-Ay for xen-devel@lists.xenproject.org; Fri, 09 Aug 2019 14:59:01 +0000 X-Inumbo-ID: 346050c8-bab6-11e9-be81-a7e08683c8b0 Received: from mx1.suse.de (unknown [195.135.220.15]) by us1-amaz-eas2.inumbo.com (Halon) with ESMTPS id 346050c8-bab6-11e9-be81-a7e08683c8b0; Fri, 09 Aug 2019 14:58:54 +0000 (UTC) X-Virus-Scanned: by amavisd-new at test-mx.suse.de Received: from relay2.suse.de (unknown [195.135.220.254]) by mx1.suse.de (Postfix) with ESMTP id 6C26CB0B7; Fri, 9 Aug 2019 14:58:53 +0000 (UTC) From: Juergen Gross To: xen-devel@lists.xenproject.org Date: Fri, 9 Aug 2019 16:58:28 +0200 Message-Id: <20190809145833.1020-44-jgross@suse.com> X-Mailer: git-send-email 2.16.4 In-Reply-To: <20190809145833.1020-1-jgross@suse.com> References: <20190809145833.1020-1-jgross@suse.com> Subject: [Xen-devel] [PATCH v2 43/48] xen/sched: protect scheduling resource via rcu X-BeenThere: xen-devel@lists.xenproject.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Cc: Juergen Gross , Tim Deegan , Stefano Stabellini , Wei Liu , Konrad Rzeszutek Wilk , George Dunlap , Andrew Cooper , Ian Jackson , Dario Faggioli , Julien Grall , Jan Beulich MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" SW4gb3JkZXIgdG8gYmUgYWJsZSB0byBtb3ZlIGNwdXMgdG8gY3B1cG9vbHMgd2l0aCBjb3JlIHNj aGVkdWxpbmcKYWN0aXZlIGl0IGlzIG1hbmRhdG9yeSB0byBtZXJnZSBtdWx0aXBsZSBjcHVzIGlu dG8gb25lIHNjaGVkdWxpbmcKcmVzb3VyY2Ugb3IgdG8gc3BsaXQgYSBzY2hlZHVsaW5nIHJlc291 cmNlIHdpdGggbXVsdGlwbGUgY3B1cyBpbiBpdAppbnRvIG11bHRpcGxlIHNjaGVkdWxpbmcgcmVz b3VyY2VzLiBUaGlzIGluIHR1cm4gcmVxdWlyZXMgdG8gbW9kaWZ5CnRoZSBjcHUgPC0+IHNjaGVk dWxpbmcgcmVzb3VyY2UgcmVsYXRpb24uIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gZnJlZQp1bnVz ZWQgcmVzb3VyY2VzIHByb3RlY3Qgc3RydWN0IHNjaGVkX3Jlc291cmNlIHZpYSBSQ1UuIFRoaXMg ZW5zdXJlcwp0aGVyZSBhcmUgbm8gdXNlcnMgbGVmdCB3aGVuIGZyZWVpbmcgc3VjaCBhIHJlc291 cmNlLgoKU2lnbmVkLW9mZi1ieTogSnVlcmdlbiBHcm9zcyA8amdyb3NzQHN1c2UuY29tPgotLS0K VjE6IG5ldyBwYXRjaAotLS0KIHhlbi9jb21tb24vY3B1cG9vbC5jICAgICAgIHwgICA0ICsKIHhl bi9jb21tb24vc2NoZWR1bGUuYyAgICAgIHwgMjAxICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLQogeGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmggfCAgIDcgKy0K IDMgZmlsZXMgY2hhbmdlZCwgMTkxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3hlbi9jb21tb24vY3B1cG9vbC5jIGIveGVuL2NvbW1vbi9jcHVwb29sLmMKaW5k ZXggNDc0OWVhZDg0Ni4uNWQ1YzhkNTQzMCAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9jcHVwb29s LmMKKysrIGIveGVuL2NvbW1vbi9jcHVwb29sLmMKQEAgLTUxMCw4ICs1MTAsMTAgQEAgc3RhdGlj IGludCBjcHVwb29sX2NwdV9hZGQodW5zaWduZWQgaW50IGNwdSkKICAgICAgKiAob3IgdW5wbHVn Z2luZyB3b3VsZCBoYXZlIGZhaWxlZCkgYW5kIHRoYXQgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IK ICAgICAgKiBhbnl3YXkuCiAgICAgICovCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRfcmVzX3Jj dWxvY2spOwogICAgIGdldF9zY2hlZF9yZXMoY3B1KS0+Y3B1cG9vbCA9IE5VTEw7CiAgICAgcmV0 ID0gY3B1cG9vbF9hc3NpZ25fY3B1X2xvY2tlZChjcHVwb29sMCwgY3B1KTsKKyAgICByY3VfcmVh ZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKIAogICAgIHNwaW5fdW5sb2NrKCZjcHVwb29s X2xvY2spOwogCkBAIC01OTYsNyArNTk4LDkgQEAgc3RhdGljIHZvaWQgY3B1cG9vbF9jcHVfcmVt b3ZlX2ZvcmNlZCh1bnNpZ25lZCBpbnQgY3B1KQogICAgICAgICB9CiAgICAgfQogCisgICAgcmN1 X3JlYWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwogICAgIHNjaGVkX3JtX2NwdShjcHUpOwor ICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwogfQogCiAvKgpkaWZmIC0t Z2l0IGEveGVuL2NvbW1vbi9zY2hlZHVsZS5jIGIveGVuL2NvbW1vbi9zY2hlZHVsZS5jCmluZGV4 IDk5OWY2ZTM0N2IuLmY5NWQzNDYzMzAgMTAwNjQ0Ci0tLSBhL3hlbi9jb21tb24vc2NoZWR1bGUu YworKysgYi94ZW4vY29tbW9uL3NjaGVkdWxlLmMKQEAgLTczLDYgKzczLDcgQEAgc3RhdGljIHZv aWQgcG9sbF90aW1lcl9mbih2b2lkICpkYXRhKTsKIC8qIFRoaXMgaXMgZ2xvYmFsIGZvciBub3cg c28gdGhhdCBwcml2YXRlIGltcGxlbWVudGF0aW9ucyBjYW4gcmVhY2ggaXQgKi8KIERFRklORV9Q RVJfQ1BVX1JFQURfTU9TVExZKHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqLCBzY2hlZF9yZXMpOwog c3RhdGljIERFRklORV9QRVJfQ1BVX1JFQURfTU9TVExZKHVuc2lnbmVkIGludCwgc2NoZWRfcmVz X2lkeCk7CitERUZJTkVfUkNVX1JFQURfTE9DSyhzY2hlZF9yZXNfcmN1bG9jayk7CiAKIC8qIFNj cmF0Y2ggc3BhY2UgZm9yIGNwdW1hc2tzLiAqLwogREVGSU5FX1BFUl9DUFUoY3B1bWFza190LCBj cHVtYXNrX3NjcmF0Y2gpOwpAQCAtMjc2LDE3ICsyNzcsMjUgQEAgc3RhdGljIGlubGluZSB2b2lk IHZjcHVfcnVuc3RhdGVfY2hhbmdlKAogCiB2b2lkIHNjaGVkX2d1ZXN0X2lkbGUodm9pZCAoKmlk bGUpICh2b2lkKSwgdW5zaWduZWQgaW50IGNwdSkKIHsKKyAgICByY3VfcmVhZF9sb2NrKCZzY2hl ZF9yZXNfcmN1bG9jayk7CiAgICAgYXRvbWljX2luYygmZ2V0X3NjaGVkX3JlcyhjcHUpLT51cmdl bnRfY291bnQpOworICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAg ICAgaWRsZSgpOworCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwogICAg IGF0b21pY19kZWMoJmdldF9zY2hlZF9yZXMoY3B1KS0+dXJnZW50X2NvdW50KTsKKyAgICByY3Vf cmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKIH0KIAogdm9pZCB2Y3B1X3J1bnN0YXRl X2dldChzdHJ1Y3QgdmNwdSAqdiwgc3RydWN0IHZjcHVfcnVuc3RhdGVfaW5mbyAqcnVuc3RhdGUp CiB7Ci0gICAgc3BpbmxvY2tfdCAqbG9jayA9IGxpa2VseSh2ID09IGN1cnJlbnQpCi0gICAgICAg ICAgICAgICAgICAgICAgID8gTlVMTCA6IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodi0+c2NoZWRf dW5pdCk7CisgICAgc3BpbmxvY2tfdCAqbG9jazsKICAgICBzX3RpbWVfdCBkZWx0YTsKIAorICAg IHJjdV9yZWFkX2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKworICAgIGxvY2sgPSBsaWtlbHko diA9PSBjdXJyZW50KSA/IE5VTEwgOiB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHYtPnNjaGVkX3Vu aXQpOwogICAgIG1lbWNweShydW5zdGF0ZSwgJnYtPnJ1bnN0YXRlLCBzaXplb2YoKnJ1bnN0YXRl KSk7CiAgICAgZGVsdGEgPSBOT1coKSAtIHJ1bnN0YXRlLT5zdGF0ZV9lbnRyeV90aW1lOwogICAg IGlmICggZGVsdGEgPiAwICkKQEAgLTI5NCw2ICszMDMsOCBAQCB2b2lkIHZjcHVfcnVuc3RhdGVf Z2V0KHN0cnVjdCB2Y3B1ICp2LCBzdHJ1Y3QgdmNwdV9ydW5zdGF0ZV9pbmZvICpydW5zdGF0ZSkK IAogICAgIGlmICggdW5saWtlbHkobG9jayAhPSBOVUxMKSApCiAgICAgICAgIHVuaXRfc2NoZWR1 bGVfdW5sb2NrX2lycShsb2NrLCB2LT5zY2hlZF91bml0KTsKKworICAgIHJjdV9yZWFkX3VubG9j aygmc2NoZWRfcmVzX3JjdWxvY2spOwogfQogCiB1aW50NjRfdCBnZXRfY3B1X2lkbGVfdGltZSh1 bnNpZ25lZCBpbnQgY3B1KQpAQCAtNDk3LDYgKzUwOCw4IEBAIGludCBzY2hlZF9pbml0X3ZjcHUo c3RydWN0IHZjcHUgKnYpCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIHJjdV9yZWFk X2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAgIC8qIFRoZSBmaXJzdCB2Y3B1IG9mIGFu IHVuaXQgY2FuIGJlIHNldCB2aWEgc2NoZWRfc2V0X3JlcygpLiAqLwogICAgIHNjaGVkX3NldF9y ZXModW5pdCwgZ2V0X3NjaGVkX3Jlcyhwcm9jZXNzb3IpKTsKIApAQCAtNTA0LDYgKzUxNyw3IEBA IGludCBzY2hlZF9pbml0X3ZjcHUoc3RydWN0IHZjcHUgKnYpCiAgICAgaWYgKCB1bml0LT5wcml2 ID09IE5VTEwgKQogICAgIHsKICAgICAgICAgc2NoZWRfZnJlZV91bml0KHVuaXQsIHYpOworICAg ICAgICByY3VfcmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKICAgICAgICAgcmV0dXJu IDE7CiAgICAgfQogCkBAIC01MzAsNiArNTQ0LDggQEAgaW50IHNjaGVkX2luaXRfdmNwdShzdHJ1 Y3QgdmNwdSAqdikKICAgICAgICAgc2NoZWRfaW5zZXJ0X3VuaXQoZG9tX3NjaGVkdWxlcihkKSwg dW5pdCk7CiAgICAgfQogCisgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7 CisKICAgICByZXR1cm4gMDsKIH0KIApAQCAtNTU3LDYgKzU3Myw3IEBAIGludCBzY2hlZF9tb3Zl X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkLCBzdHJ1Y3QgY3B1cG9vbCAqYykKICAgICB2b2lkICp1 bml0ZGF0YTsKICAgICBzdHJ1Y3Qgc2NoZWR1bGVyICpvbGRfb3BzOwogICAgIHZvaWQgKm9sZF9k b21kYXRhOworICAgIGludCByZXQgPSAwOwogCiAgICAgZm9yX2VhY2hfdmNwdSAoIGQsIHYgKQog ICAgIHsKQEAgLTU2NCwxNSArNTgxLDIxIEBAIGludCBzY2hlZF9tb3ZlX2RvbWFpbihzdHJ1Y3Qg ZG9tYWluICpkLCBzdHJ1Y3QgY3B1cG9vbCAqYykKICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7 CiAgICAgfQogCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAg ZG9tZGF0YSA9IHNjaGVkX2FsbG9jX2RvbWRhdGEoYy0+c2NoZWQsIGQpOwogICAgIGlmICggSVNf RVJSKGRvbWRhdGEpICkKLSAgICAgICAgcmV0dXJuIFBUUl9FUlIoZG9tZGF0YSk7CisgICAgewor ICAgICAgICByZXQgPSBQVFJfRVJSKGRvbWRhdGEpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9 CiAKICAgICB1bml0X3ByaXYgPSB4emFsbG9jX2FycmF5KHZvaWQgKiwgZC0+bWF4X3ZjcHVzKTsK ICAgICBpZiAoIHVuaXRfcHJpdiA9PSBOVUxMICkKICAgICB7CiAgICAgICAgIHNjaGVkX2ZyZWVf ZG9tZGF0YShjLT5zY2hlZCwgZG9tZGF0YSk7Ci0gICAgICAgIHJldHVybiAtRU5PTUVNOworICAg ICAgICByZXQgPSAtRU5PTUVNOworICAgICAgICBnb3RvIG91dDsKICAgICB9CiAKICAgICBmb3Jf ZWFjaF9zY2hlZF91bml0ICggZCwgdW5pdCApCkBAIC01ODQsNyArNjA3LDggQEAgaW50IHNjaGVk X21vdmVfZG9tYWluKHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCBjcHVwb29sICpjKQogICAgICAg ICAgICAgICAgIHhmcmVlKHVuaXRfcHJpdlt1bml0LT51bml0X2lkXSk7CiAgICAgICAgICAgICB4 ZnJlZSh1bml0X3ByaXYpOwogICAgICAgICAgICAgc2NoZWRfZnJlZV9kb21kYXRhKGMtPnNjaGVk LCBkb21kYXRhKTsKLSAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOworICAgICAgICAgICAgcmV0 ID0gLUVOT01FTTsKKyAgICAgICAgICAgIGdvdG8gb3V0OwogICAgICAgICB9CiAgICAgfQogCkBA IC02NDYsNyArNjcwLDEwIEBAIGludCBzY2hlZF9tb3ZlX2RvbWFpbihzdHJ1Y3QgZG9tYWluICpk LCBzdHJ1Y3QgY3B1cG9vbCAqYykKIAogICAgIHhmcmVlKHVuaXRfcHJpdik7CiAKLSAgICByZXR1 cm4gMDsKK291dDoKKyAgICByY3VfcmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwor ICAgIHJldHVybiByZXQ7CiB9CiAKIHZvaWQgc2NoZWRfZGVzdHJveV92Y3B1KHN0cnVjdCB2Y3B1 ICp2KQpAQCAtNjY0LDkgKzY5MSwxMyBAQCB2b2lkIHNjaGVkX2Rlc3Ryb3lfdmNwdShzdHJ1Y3Qg dmNwdSAqdikKICAgICAgKi8KICAgICBpZiAoIHVuaXQtPnZjcHVfbGlzdCA9PSB2ICkKICAgICB7 CisgICAgICAgIHJjdV9yZWFkX2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAgICAgICBz Y2hlZF9yZW1vdmVfdW5pdCh2Y3B1X3NjaGVkdWxlcih2KSwgdW5pdCk7CiAgICAgICAgIHNjaGVk X2ZyZWVfdmRhdGEodmNwdV9zY2hlZHVsZXIodiksIHVuaXQtPnByaXYpOwogICAgICAgICBzY2hl ZF9mcmVlX3VuaXQodW5pdCwgdik7CisKKyAgICAgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9y ZXNfcmN1bG9jayk7CiAgICAgfQogfQogCkBAIC02ODQsNyArNzE1LDEyIEBAIGludCBzY2hlZF9p bml0X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkLCBpbnQgcG9vbGlkKQogICAgIFNDSEVEX1NUQVRf Q1JBTksoZG9tX2luaXQpOwogICAgIFRSQUNFXzFEKFRSQ19TQ0hFRF9ET01fQURELCBkLT5kb21h aW5faWQpOwogCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAg c2RvbSA9IHNjaGVkX2FsbG9jX2RvbWRhdGEoZG9tX3NjaGVkdWxlcihkKSwgZCk7CisKKyAgICBy Y3VfcmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAgIGlmICggSVNfRVJSKHNk b20pICkKICAgICAgICAgcmV0dXJuIFBUUl9FUlIoc2RvbSk7CiAKQEAgLTcwMiw5ICs3MzgsMTMg QEAgdm9pZCBzY2hlZF9kZXN0cm95X2RvbWFpbihzdHJ1Y3QgZG9tYWluICpkKQogICAgICAgICBT Q0hFRF9TVEFUX0NSQU5LKGRvbV9kZXN0cm95KTsKICAgICAgICAgVFJBQ0VfMUQoVFJDX1NDSEVE X0RPTV9SRU0sIGQtPmRvbWFpbl9pZCk7CiAKKyAgICAgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRf cmVzX3JjdWxvY2spOworCiAgICAgICAgIHNjaGVkX2ZyZWVfZG9tZGF0YShkb21fc2NoZWR1bGVy KGQpLCBkLT5zY2hlZF9wcml2KTsKICAgICAgICAgZC0+c2NoZWRfcHJpdiA9IE5VTEw7CiAKKyAg ICAgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKICAgICAgICAgY3B1 cG9vbF9ybV9kb21haW4oZCk7CiAgICAgfQogfQpAQCAtNzM4LDExICs3NzgsMTUgQEAgdm9pZCB2 Y3B1X3NsZWVwX25vc3luYyhzdHJ1Y3QgdmNwdSAqdikKIAogICAgIFRSQUNFXzJEKFRSQ19TQ0hF RF9TTEVFUCwgdi0+ZG9tYWluLT5kb21haW5faWQsIHYtPnZjcHVfaWQpOwogCisgICAgcmN1X3Jl YWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVf bG9ja19pcnFzYXZlKHYtPnNjaGVkX3VuaXQsICZmbGFncyk7CiAKICAgICB2Y3B1X3NsZWVwX25v c3luY19sb2NrZWQodik7CiAKICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnFyZXN0b3JlKGxv Y2ssIGZsYWdzLCB2LT5zY2hlZF91bml0KTsKKworICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRf cmVzX3JjdWxvY2spOwogfQogCiB2b2lkIHZjcHVfc2xlZXBfc3luYyhzdHJ1Y3QgdmNwdSAqdikK QEAgLTc2Myw2ICs4MDcsOCBAQCB2b2lkIHZjcHVfd2FrZShzdHJ1Y3QgdmNwdSAqdikKIAogICAg IFRSQUNFXzJEKFRSQ19TQ0hFRF9XQUtFLCB2LT5kb21haW4tPmRvbWFpbl9pZCwgdi0+dmNwdV9p ZCk7CiAKKyAgICByY3VfcmVhZF9sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKICAgICBsb2Nr ID0gdW5pdF9zY2hlZHVsZV9sb2NrX2lycXNhdmUodW5pdCwgJmZsYWdzKTsKIAogICAgIGlmICgg bGlrZWx5KHZjcHVfcnVubmFibGUodikpICkKQEAgLTc4Myw2ICs4MjksOCBAQCB2b2lkIHZjcHVf d2FrZShzdHJ1Y3QgdmNwdSAqdikKICAgICB9CiAKICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19p cnFyZXN0b3JlKGxvY2ssIGZsYWdzLCB1bml0KTsKKworICAgIHJjdV9yZWFkX3VubG9jaygmc2No ZWRfcmVzX3JjdWxvY2spOwogfQogCiB2b2lkIHZjcHVfdW5ibG9jayhzdHJ1Y3QgdmNwdSAqdikK QEAgLTgxNiw2ICs4NjQsOCBAQCBzdGF0aWMgdm9pZCBzY2hlZF91bml0X21vdmVfbG9ja2VkKHN0 cnVjdCBzY2hlZF91bml0ICp1bml0LAogICAgIHVuc2lnbmVkIGludCBvbGRfY3B1ID0gdW5pdC0+ cmVzLT5wcm9jZXNzb3I7CiAgICAgc3RydWN0IHZjcHUgKnY7CiAKKyAgICByY3VfcmVhZF9sb2Nr KCZzY2hlZF9yZXNfcmN1bG9jayk7CisKICAgICAvKgogICAgICAqIFRyYW5zZmVyIHVyZ2VuY3kg c3RhdHVzIHRvIG5ldyBDUFUgYmVmb3JlIHN3aXRjaGluZyBDUFVzLCBhcwogICAgICAqIG9uY2Ug dGhlIHN3aXRjaCBvY2N1cnMsIHYtPmlzX3VyZ2VudCBpcyBubyBsb25nZXIgcHJvdGVjdGVkIGJ5 CkBAIC04MzUsNiArODg1LDggQEAgc3RhdGljIHZvaWQgc2NoZWRfdW5pdF9tb3ZlX2xvY2tlZChz dHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCwKICAgICAgKiBwb2ludGVyIGNhbid0IGNoYW5nZSB3aGls ZSB0aGUgY3VycmVudCBsb2NrIGlzIGhlbGQuCiAgICAgICovCiAgICAgc2NoZWRfbWlncmF0ZSh1 bml0X3NjaGVkdWxlcih1bml0KSwgdW5pdCwgbmV3X2NwdSk7CisKKyAgICByY3VfcmVhZF91bmxv Y2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKIH0KIAogLyoKQEAgLTEwMTksNiArMTA3MSw4IEBAIHZv aWQgcmVzdG9yZV92Y3B1X2FmZmluaXR5KHN0cnVjdCBkb21haW4gKmQpCiAKICAgICBBU1NFUlQo c3lzdGVtX3N0YXRlID09IFNZU19TVEFURV9yZXN1bWUpOwogCisgICAgcmN1X3JlYWRfbG9jaygm c2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAgZm9yX2VhY2hfc2NoZWRfdW5pdCAoIGQsIHVuaXQg KQogICAgIHsKICAgICAgICAgc3BpbmxvY2tfdCAqbG9jazsKQEAgLTEwNzUsNiArMTEyOSw4IEBA IHZvaWQgcmVzdG9yZV92Y3B1X2FmZmluaXR5KHN0cnVjdCBkb21haW4gKmQpCiAgICAgICAgICAg ICBzY2hlZF9tb3ZlX2lycXModW5pdCk7CiAgICAgfQogCisgICAgcmN1X3JlYWRfdW5sb2NrKCZz Y2hlZF9yZXNfcmN1bG9jayk7CisKICAgICBkb21haW5fdXBkYXRlX25vZGVfYWZmaW5pdHkoZCk7 CiB9CiAKQEAgLTEwOTAsOSArMTE0NiwxMSBAQCBpbnQgY3B1X2Rpc2FibGVfc2NoZWR1bGVyKHVu c2lnbmVkIGludCBjcHUpCiAgICAgY3B1bWFza190IG9ubGluZV9hZmZpbml0eTsKICAgICBpbnQg cmV0ID0gMDsKIAorICAgIHJjdV9yZWFkX2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAg IGMgPSBnZXRfc2NoZWRfcmVzKGNwdSktPmNwdXBvb2w7CiAgICAgaWYgKCBjID09IE5VTEwgKQot ICAgICAgICByZXR1cm4gcmV0OworICAgICAgICBnb3RvIG91dDsKIAogICAgIGZvcl9lYWNoX2Rv bWFpbl9pbl9jcHVwb29sICggZCwgYyApCiAgICAgewpAQCAtMTE1MCw2ICsxMjA4LDkgQEAgaW50 IGNwdV9kaXNhYmxlX3NjaGVkdWxlcih1bnNpZ25lZCBpbnQgY3B1KQogICAgICAgICB9CiAgICAg fQogCitvdXQ6CisgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKICAg ICByZXR1cm4gcmV0OwogfQogCkBAIC0xMTgzLDcgKzEyNDQsOSBAQCB2b2lkIHNjaGVkX3NldF9h ZmZpbml0eSgKIHsKICAgICBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCA9IHYtPnNjaGVkX3VuaXQ7 CiAKKyAgICByY3VfcmVhZF9sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CiAgICAgc2NoZWRfYWRq dXN0X2FmZmluaXR5KGRvbV9zY2hlZHVsZXIodW5pdC0+ZG9tYWluKSwgdW5pdCwgaGFyZCwgc29m dCk7CisgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CiAKICAgICBpZiAo IGhhcmQgKQogICAgICAgICBjcHVtYXNrX2NvcHkodW5pdC0+Y3B1X2hhcmRfYWZmaW5pdHksIGhh cmQpOwpAQCAtMTIwMyw2ICsxMjY2LDggQEAgc3RhdGljIGludCB2Y3B1X3NldF9hZmZpbml0eSgK ICAgICBzcGlubG9ja190ICpsb2NrOwogICAgIGludCByZXQgPSAwOwogCisgICAgcmN1X3JlYWRf bG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9j a19pcnEodW5pdCk7CiAKICAgICBpZiAoIHYtPmFmZmluaXR5X2Jyb2tlbiApCkBAIC0xMjMxLDYg KzEyOTYsOCBAQCBzdGF0aWMgaW50IHZjcHVfc2V0X2FmZmluaXR5KAogCiAgICAgc2NoZWRfdW5p dF9taWdyYXRlX2ZpbmlzaCh1bml0KTsKIAorICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVz X3JjdWxvY2spOworCiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTM1NywxMSArMTQyNCwxNiBA QCBzdGF0aWMgbG9uZyBkb19wb2xsKHN0cnVjdCBzY2hlZF9wb2xsICpzY2hlZF9wb2xsKQogbG9u ZyB2Y3B1X3lpZWxkKHZvaWQpCiB7CiAgICAgc3RydWN0IHZjcHUgKiB2PWN1cnJlbnQ7Ci0gICAg c3BpbmxvY2tfdCAqbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodi0+c2NoZWRfdW5pdCk7 CisgICAgc3BpbmxvY2tfdCAqbG9jazsKIAorICAgIHJjdV9yZWFkX2xvY2soJnNjaGVkX3Jlc19y Y3Vsb2NrKTsKKworICAgIGxvY2sgPSB1bml0X3NjaGVkdWxlX2xvY2tfaXJxKHYtPnNjaGVkX3Vu aXQpOwogICAgIHNjaGVkX3lpZWxkKHZjcHVfc2NoZWR1bGVyKHYpLCB2LT5zY2hlZF91bml0KTsK ICAgICB1bml0X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgdi0+c2NoZWRfdW5pdCk7CiAKKyAg ICByY3VfcmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAgIFNDSEVEX1NUQVRf Q1JBTksodmNwdV95aWVsZCk7CiAKICAgICBUUkFDRV8yRChUUkNfU0NIRURfWUlFTEQsIGN1cnJl bnQtPmRvbWFpbi0+ZG9tYWluX2lkLCBjdXJyZW50LT52Y3B1X2lkKTsKQEAgLTE0NTgsNiArMTUz MCw4IEBAIGludCB2Y3B1X3RlbXBvcmFyeV9hZmZpbml0eShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWdu ZWQgaW50IGNwdSwgdWludDhfdCByZWFzb24pCiAgICAgaW50IHJldCA9IC1FSU5WQUw7CiAgICAg Ym9vbCBtaWdyYXRlOwogCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwor CiAgICAgbG9jayA9IHVuaXRfc2NoZWR1bGVfbG9ja19pcnEodW5pdCk7CiAKICAgICBpZiAoIGNw dSA9PSBOUl9DUFVTICkKQEAgLTE0OTcsNiArMTU3MSw4IEBAIGludCB2Y3B1X3RlbXBvcmFyeV9h ZmZpbml0eShzdHJ1Y3QgdmNwdSAqdiwgdW5zaWduZWQgaW50IGNwdSwgdWludDhfdCByZWFzb24p CiAgICAgaWYgKCBtaWdyYXRlICkKICAgICAgICAgc2NoZWRfdW5pdF9taWdyYXRlX2ZpbmlzaCh1 bml0KTsKIAorICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAg cmV0dXJuIHJldDsKIH0KIApAQCAtMTcwOCw5ICsxNzg0LDEzIEBAIGxvbmcgc2NoZWRfYWRqdXN0 KHN0cnVjdCBkb21haW4gKmQsIHN0cnVjdCB4ZW5fZG9tY3RsX3NjaGVkdWxlcl9vcCAqb3ApCiAK ICAgICAvKiBOQjogdGhlIHBsdWdnYWJsZSBzY2hlZHVsZXIgY29kZSBuZWVkcyB0byB0YWtlIGNh cmUKICAgICAgKiBvZiBsb2NraW5nIGJ5IGl0c2VsZi4gKi8KKyAgICByY3VfcmVhZF9sb2NrKCZz Y2hlZF9yZXNfcmN1bG9jayk7CisKICAgICBpZiAoIChyZXQgPSBzY2hlZF9hZGp1c3RfZG9tKGRv bV9zY2hlZHVsZXIoZCksIGQsIG9wKSkgPT0gMCApCiAgICAgICAgIFRSQUNFXzFEKFRSQ19TQ0hF RF9BREpET00sIGQtPmRvbWFpbl9pZCk7CiAKKyAgICByY3VfcmVhZF91bmxvY2soJnNjaGVkX3Jl c19yY3Vsb2NrKTsKKwogICAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTE3MzEsOSArMTgxMSwxMyBA QCBsb25nIHNjaGVkX2FkanVzdF9nbG9iYWwoc3RydWN0IHhlbl9zeXNjdGxfc2NoZWR1bGVyX29w ICpvcCkKICAgICBpZiAoIHBvb2wgPT0gTlVMTCApCiAgICAgICAgIHJldHVybiAtRVNSQ0g7CiAK KyAgICByY3VfcmVhZF9sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKICAgICByYyA9ICgob3At PnNjaGVkX2lkID09IHBvb2wtPnNjaGVkLT5zY2hlZF9pZCkKICAgICAgICAgICA/IHNjaGVkX2Fk anVzdF9jcHVwb29sKHBvb2wtPnNjaGVkLCBvcCkgOiAtRUlOVkFMKTsKIAorICAgIHJjdV9yZWFk X3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAgY3B1cG9vbF9wdXQocG9vbCk7CiAK ICAgICByZXR1cm4gcmM7CkBAIC0xOTM3LDcgKzIwMjEsMTEgQEAgc3RhdGljIHZvaWQgY29udGV4 dF9zYXZlZChzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKnNkLCBzdHJ1Y3QgdmNwdSAqdnByZXYsCiB2 b2lkIHNjaGVkX2NvbnRleHRfc3dpdGNoZWQoc3RydWN0IHZjcHUgKnZwcmV2LCBzdHJ1Y3QgdmNw dSAqdm5leHQpCiB7CiAgICAgc3RydWN0IHNjaGVkX3VuaXQgKm5leHQgPSB2bmV4dC0+c2NoZWRf dW5pdDsKLSAgICBzdHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgKnNkID0gZ2V0X3NjaGVkX3JlcyhzbXBf cHJvY2Vzc29yX2lkKCkpOworICAgIHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2Q7CisKKyAgICBy Y3VfcmVhZF9sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKKyAgICBzZCA9IGdldF9zY2hlZF9y ZXMoc21wX3Byb2Nlc3Nvcl9pZCgpKTsKIAogICAgIGlmICggYXRvbWljX3JlYWQoJm5leHQtPnJl bmRlenZvdXNfb3V0X2NudCkgKQogICAgIHsKQEAgLTE5NTgsNiArMjA0Niw4IEBAIHZvaWQgc2No ZWRfY29udGV4dF9zd2l0Y2hlZChzdHJ1Y3QgdmNwdSAqdnByZXYsIHN0cnVjdCB2Y3B1ICp2bmV4 dCkKIAogICAgIGlmICggaXNfaWRsZV92Y3B1KHZwcmV2KSAmJiB2cHJldiAhPSB2bmV4dCApCiAg ICAgICAgIHZwcmV2LT5zY2hlZF91bml0ID0gc2QtPnNjaGVkX3VuaXRfaWRsZTsKKworICAgIHJj dV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwogfQogCiBzdGF0aWMgdm9pZCBzY2hl ZF9jb250ZXh0X3N3aXRjaChzdHJ1Y3QgdmNwdSAqdnByZXYsIHN0cnVjdCB2Y3B1ICp2bmV4dCwK QEAgLTE5NzUsNiArMjA2NSw4IEBAIHN0YXRpYyB2b2lkIHNjaGVkX2NvbnRleHRfc3dpdGNoKHN0 cnVjdCB2Y3B1ICp2cHJldiwgc3RydWN0IHZjcHUgKnZuZXh0LAogICAgICAgICAgICAgdm5leHQt PnNjaGVkX3VuaXQgPQogICAgICAgICAgICAgICAgIGdldF9zY2hlZF9yZXMoc21wX3Byb2Nlc3Nv cl9pZCgpKS0+c2NoZWRfdW5pdF9pZGxlOwogCisgICAgICAgIHJjdV9yZWFkX3VubG9jaygmc2No ZWRfcmVzX3JjdWxvY2spOworCiAgICAgICAgIHRyYWNlX2NvbnRpbnVlX3J1bm5pbmcodm5leHQp OwogICAgICAgICByZXR1cm4gY29udGludWVfcnVubmluZyh2cHJldik7CiAgICAgfQpAQCAtMTk4 OCw2ICsyMDgwLDggQEAgc3RhdGljIHZvaWQgc2NoZWRfY29udGV4dF9zd2l0Y2goc3RydWN0IHZj cHUgKnZwcmV2LCBzdHJ1Y3QgdmNwdSAqdm5leHQsCiAKICAgICB2Y3B1X3BlcmlvZGljX3RpbWVy X3dvcmsodm5leHQpOwogCisgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7 CisKICAgICBjb250ZXh0X3N3aXRjaCh2cHJldiwgdm5leHQpOwogfQogCkBAIC0yMTM1LDYgKzIy MjksOCBAQCBzdGF0aWMgdm9pZCBzY2hlZF9zbGF2ZSh2b2lkKQogCiAgICAgQVNTRVJUX05PVF9J Tl9BVE9NSUMoKTsKIAorICAgIHJjdV9yZWFkX2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwog ICAgIGxvY2sgPSBwY3B1X3NjaGVkdWxlX2xvY2tfaXJxKGNwdSk7CiAKICAgICBub3cgPSBOT1co KTsKQEAgLTIxNTgsNiArMjI1NCw4IEBAIHN0YXRpYyB2b2lkIHNjaGVkX3NsYXZlKHZvaWQpCiAg ICAgewogICAgICAgICBwY3B1X3NjaGVkdWxlX3VubG9ja19pcnEobG9jaywgY3B1KTsKIAorICAg ICAgICByY3VfcmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAgICAgICAvKiBD aGVjayBmb3IgZmFpbGVkIGZvcmNlZCBjb250ZXh0IHN3aXRjaC4gKi8KICAgICAgICAgaWYgKCBk b19zb2Z0aXJxICkKICAgICAgICAgICAgIHJhaXNlX3NvZnRpcnEoU0NIRURVTEVfU09GVElSUSk7 CkBAIC0yMTg4LDEzICsyMjg2LDE2IEBAIHN0YXRpYyB2b2lkIHNjaGVkdWxlKHZvaWQpCiAgICAg c3RydWN0IHNjaGVkX3Jlc291cmNlICpzZDsKICAgICBzcGlubG9ja190ICAgICAgICAgICAqbG9j azsKICAgICBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwotICAgIHVuc2lnbmVkIGludCAg ICAgICAgICBncmFuID0gZ2V0X3NjaGVkX3JlcyhjcHUpLT5ncmFudWxhcml0eTsKKyAgICB1bnNp Z25lZCBpbnQgICAgICAgICAgZ3JhbjsKIAogICAgIEFTU0VSVF9OT1RfSU5fQVRPTUlDKCk7CiAK ICAgICBTQ0hFRF9TVEFUX0NSQU5LKHNjaGVkX3J1bik7CiAKKyAgICByY3VfcmVhZF9sb2NrKCZz Y2hlZF9yZXNfcmN1bG9jayk7CisKICAgICBzZCA9IGdldF9zY2hlZF9yZXMoY3B1KTsKKyAgICBn cmFuID0gc2QtPmdyYW51bGFyaXR5OwogCiAgICAgbG9jayA9IHBjcHVfc2NoZWR1bGVfbG9ja19p cnEoY3B1KTsKIApAQCAtMjIwNiw2ICsyMzA3LDggQEAgc3RhdGljIHZvaWQgc2NoZWR1bGUodm9p ZCkKICAgICAgICAgICovCiAgICAgICAgIHBjcHVfc2NoZWR1bGVfdW5sb2NrX2lycShsb2NrLCBj cHUpOwogCisgICAgICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAg ICAgICAgIHJhaXNlX3NvZnRpcnEoU0NIRURVTEVfU09GVElSUSk7CiAgICAgICAgIHJldHVybiBz Y2hlZF9zbGF2ZSgpOwogICAgIH0KQEAgLTIzMTUsMTQgKzI0MTgsMjcgQEAgc3RhdGljIGludCBj cHVfc2NoZWR1bGVfdXAodW5zaWduZWQgaW50IGNwdSkKICAgICByZXR1cm4gMDsKIH0KIAorc3Rh dGljIHZvaWQgc2NoZWRfcmVzX2ZyZWUoc3RydWN0IHJjdV9oZWFkICpoZWFkKQoreworICAgIHN0 cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2QgPSBjb250YWluZXJfb2YoaGVhZCwgc3RydWN0IHNjaGVk X3Jlc291cmNlLCByY3UpOworCisgICAgeGZyZWUoc2QpOworfQorCiBzdGF0aWMgdm9pZCBjcHVf c2NoZWR1bGVfZG93bih1bnNpZ25lZCBpbnQgY3B1KQogewotICAgIHN0cnVjdCBzY2hlZF9yZXNv dXJjZSAqc2QgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CisgICAgc3RydWN0IHNjaGVkX3Jlc291cmNl ICpzZDsKKworICAgIHJjdV9yZWFkX2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKworICAgIHNk ID0gZ2V0X3NjaGVkX3JlcyhjcHUpOwogCiAgICAga2lsbF90aW1lcigmc2QtPnNfdGltZXIpOwog CiAgICAgc2V0X3NjaGVkX3JlcyhjcHUsIE5VTEwpOwotICAgIHhmcmVlKHNkKTsKKyAgICBjYWxs X3JjdSgmc2QtPnJjdSwgc2NoZWRfcmVzX2ZyZWUpOworCisgICAgcmN1X3JlYWRfdW5sb2NrKCZz Y2hlZF9yZXNfcmN1bG9jayk7CiB9CiAKIHZvaWQgc2NoZWRfcm1fY3B1KHVuc2lnbmVkIGludCBj cHUpCkBAIC0yMzQyLDYgKzI0NTgsOCBAQCBzdGF0aWMgaW50IGNwdV9zY2hlZHVsZV9jYWxsYmFj aygKICAgICB1bnNpZ25lZCBpbnQgY3B1ID0gKHVuc2lnbmVkIGxvbmcpaGNwdTsKICAgICBpbnQg cmMgPSAwOwogCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAg LyoKICAgICAgKiBGcm9tIHRoZSBzY2hlZHVsZXIgcGVyc3BlY3RpdmUsIGJyaW5naW5nIHVwIGEg cENQVSByZXF1aXJlcwogICAgICAqIGFsbG9jYXRpbmcgYW5kIGluaXRpYWxpemluZyB0aGUgcGVy LXBDUFUgc2NoZWR1bGVyIHNwZWNpZmljIGRhdGEsCkBAIC0yMzg4LDYgKzI1MDYsOCBAQCBzdGF0 aWMgaW50IGNwdV9zY2hlZHVsZV9jYWxsYmFjaygKICAgICAgICAgYnJlYWs7CiAgICAgfQogCisg ICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKICAgICByZXR1cm4gIXJj ID8gTk9USUZZX0RPTkUgOiBub3RpZmllcl9mcm9tX2Vycm5vKHJjKTsKIH0KIApAQCAtMjQ3Nyw4 ICsyNTk3LDEzIEBAIHZvaWQgX19pbml0IHNjaGVkdWxlcl9pbml0KHZvaWQpCiAgICAgaWRsZV9k b21haW4tPm1heF92Y3B1cyA9IG5yX2NwdV9pZHM7CiAgICAgaWYgKCB2Y3B1X2NyZWF0ZShpZGxl X2RvbWFpbiwgMCkgPT0gTlVMTCApCiAgICAgICAgIEJVRygpOworCisgICAgcmN1X3JlYWRfbG9j aygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAgZ2V0X3NjaGVkX3JlcygwKS0+Y3VyciA9IGlk bGVfdmNwdVswXS0+c2NoZWRfdW5pdDsKICAgICBnZXRfc2NoZWRfcmVzKDApLT5zY2hlZF91bml0 X2lkbGUgPSBpZGxlX3ZjcHVbMF0tPnNjaGVkX3VuaXQ7CisKKyAgICByY3VfcmVhZF91bmxvY2so JnNjaGVkX3Jlc19yY3Vsb2NrKTsKIH0KIAogLyoKQEAgLTI0OTEsOSArMjYxNiwxNCBAQCBpbnQg c2NoZWR1bGVfY3B1X2FkZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3B1cG9vbCAqYykKICAg ICBzdHJ1Y3QgdmNwdSAqaWRsZTsKICAgICB2b2lkICpwcHJpdiwgKnZwcml2OwogICAgIHN0cnVj dCBzY2hlZHVsZXIgKm5ld19vcHMgPSBjLT5zY2hlZDsKLSAgICBzdHJ1Y3Qgc2NoZWRfcmVzb3Vy Y2UgKnNkID0gZ2V0X3NjaGVkX3JlcyhjcHUpOworICAgIHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAq c2Q7CiAgICAgc3BpbmxvY2tfdCAqb2xkX2xvY2ssICpuZXdfbG9jazsKICAgICB1bnNpZ25lZCBs b25nIGZsYWdzOworICAgIGludCByZXQgPSAwOworCisgICAgcmN1X3JlYWRfbG9jaygmc2NoZWRf cmVzX3JjdWxvY2spOworCisgICAgc2QgPSBnZXRfc2NoZWRfcmVzKGNwdSk7CiAKICAgICBBU1NF UlQoY3B1bWFza190ZXN0X2NwdShjcHUsICZjcHVwb29sX2ZyZWVfY3B1cykpOwogICAgIEFTU0VS VCghY3B1bWFza190ZXN0X2NwdShjcHUsIGMtPmNwdV92YWxpZCkpOwpAQCAtMjUxMywxMyArMjY0 MywxOCBAQCBpbnQgc2NoZWR1bGVfY3B1X2FkZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3B1 cG9vbCAqYykKICAgICBpZGxlID0gaWRsZV92Y3B1W2NwdV07CiAgICAgcHByaXYgPSBzY2hlZF9h bGxvY19wZGF0YShuZXdfb3BzLCBjcHUpOwogICAgIGlmICggSVNfRVJSKHBwcml2KSApCi0gICAg ICAgIHJldHVybiBQVFJfRVJSKHBwcml2KTsKKyAgICB7CisgICAgICAgIHJldCA9IFBUUl9FUlIo cHByaXYpOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisKICAgICB2cHJpdiA9IHNjaGVkX2Fs bG9jX3ZkYXRhKG5ld19vcHMsIGlkbGUtPnNjaGVkX3VuaXQsCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBpZGxlLT5kb21haW4tPnNjaGVkX3ByaXYpOwogICAgIGlmICggdnByaXYgPT0g TlVMTCApCiAgICAgewogICAgICAgICBzY2hlZF9mcmVlX3BkYXRhKG5ld19vcHMsIHBwcml2LCBj cHUpOwotICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgcmV0ID0gLUVOT01FTTsKKyAg ICAgICAgZ290byBvdXQ7CiAgICAgfQogCiAgICAgLyoKQEAgLTI1NTgsNyArMjY5MywxMCBAQCBp bnQgc2NoZWR1bGVfY3B1X2FkZCh1bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgY3B1cG9vbCAqYykK ICAgICAvKiBUaGUgIGNwdSBpcyBhZGRlZCB0byBhIHBvb2wsIHRyaWdnZXIgaXQgdG8gZ28gcGlj ayB1cCBzb21lIHdvcmsgKi8KICAgICBjcHVfcmFpc2Vfc29mdGlycShjcHUsIFNDSEVEVUxFX1NP RlRJUlEpOwogCi0gICAgcmV0dXJuIDA7CitvdXQ6CisgICAgcmN1X3JlYWRfdW5sb2NrKCZzY2hl ZF9yZXNfcmN1bG9jayk7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiAvKgpAQCAtMjU3MSwxMSAr MjcwOSwxNiBAQCBpbnQgc2NoZWR1bGVfY3B1X3JtKHVuc2lnbmVkIGludCBjcHUpCiB7CiAgICAg c3RydWN0IHZjcHUgKmlkbGU7CiAgICAgdm9pZCAqcHByaXZfb2xkLCAqdnByaXZfb2xkOwotICAg IHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqc2QgPSBnZXRfc2NoZWRfcmVzKGNwdSk7Ci0gICAgc3Ry dWN0IHNjaGVkdWxlciAqb2xkX29wcyA9IHNkLT5zY2hlZHVsZXI7CisgICAgc3RydWN0IHNjaGVk X3Jlc291cmNlICpzZDsKKyAgICBzdHJ1Y3Qgc2NoZWR1bGVyICpvbGRfb3BzOwogICAgIHNwaW5s b2NrX3QgKm9sZF9sb2NrOwogICAgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7CiAKKyAgICByY3VfcmVh ZF9sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CisKKyAgICBzZCA9IGdldF9zY2hlZF9yZXMoY3B1 KTsKKyAgICBvbGRfb3BzID0gc2QtPnNjaGVkdWxlcjsKKwogICAgIEFTU0VSVChzZC0+Y3B1cG9v bCAhPSBOVUxMKTsKICAgICBBU1NFUlQoY3B1bWFza190ZXN0X2NwdShjcHUsICZjcHVwb29sX2Zy ZWVfY3B1cykpOwogICAgIEFTU0VSVCghY3B1bWFza190ZXN0X2NwdShjcHUsIHNkLT5jcHVwb29s LT5jcHVfdmFsaWQpKTsKQEAgLTI2MDgsNiArMjc1MSw4IEBAIGludCBzY2hlZHVsZV9jcHVfcm0o dW5zaWduZWQgaW50IGNwdSkKICAgICBzZC0+Z3JhbnVsYXJpdHkgPSAxOwogICAgIHNkLT5jcHVw b29sID0gTlVMTDsKIAorICAgIHJjdV9yZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOwor CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI2NTYsNiArMjgwMSw4IEBAIHZvaWQgc2NoZWR1bGVf ZHVtcChzdHJ1Y3QgY3B1cG9vbCAqYykKIAogICAgIC8qIExvY2tpbmcsIGlmIG5lY2Vzc2FyeSwg bXVzdCBiZSBoYW5kbGVkIHdpdGhpbmcgZWFjaCBzY2hlZHVsZXIgKi8KIAorICAgIHJjdV9yZWFk X2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKwogICAgIGlmICggYyAhPSBOVUxMICkKICAgICB7 CiAgICAgICAgIHNjaGVkID0gYy0+c2NoZWQ7CkBAIC0yNjc1LDYgKzI4MjIsOCBAQCB2b2lkIHNj aGVkdWxlX2R1bXAoc3RydWN0IGNwdXBvb2wgKmMpCiAgICAgICAgIGZvcl9lYWNoX2NwdSAoaSwg Y3B1cykKICAgICAgICAgICAgIHNjaGVkX2R1bXBfY3B1X3N0YXRlKHNjaGVkLCBpKTsKICAgICB9 CisKKyAgICByY3VfcmVhZF91bmxvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKIH0KIAogdm9pZCBz Y2hlZF90aWNrX3N1c3BlbmQodm9pZCkKQEAgLTI2ODIsMTAgKzI4MzEsMTQgQEAgdm9pZCBzY2hl ZF90aWNrX3N1c3BlbmQodm9pZCkKICAgICBzdHJ1Y3Qgc2NoZWR1bGVyICpzY2hlZDsKICAgICB1 bnNpZ25lZCBpbnQgY3B1ID0gc21wX3Byb2Nlc3Nvcl9pZCgpOwogCisgICAgcmN1X3JlYWRfbG9j aygmc2NoZWRfcmVzX3JjdWxvY2spOworCiAgICAgc2NoZWQgPSBnZXRfc2NoZWRfcmVzKGNwdSkt PnNjaGVkdWxlcjsKICAgICBzY2hlZF9kb190aWNrX3N1c3BlbmQoc2NoZWQsIGNwdSk7CiAgICAg cmN1X2lkbGVfZW50ZXIoY3B1KTsKICAgICByY3VfaWRsZV90aW1lcl9zdGFydCgpOworCisgICAg cmN1X3JlYWRfdW5sb2NrKCZzY2hlZF9yZXNfcmN1bG9jayk7CiB9CiAKIHZvaWQgc2NoZWRfdGlj a19yZXN1bWUodm9pZCkKQEAgLTI2OTMsMTAgKzI4NDYsMTQgQEAgdm9pZCBzY2hlZF90aWNrX3Jl c3VtZSh2b2lkKQogICAgIHN0cnVjdCBzY2hlZHVsZXIgKnNjaGVkOwogICAgIHVuc2lnbmVkIGlu dCBjcHUgPSBzbXBfcHJvY2Vzc29yX2lkKCk7CiAKKyAgICByY3VfcmVhZF9sb2NrKCZzY2hlZF9y ZXNfcmN1bG9jayk7CisKICAgICByY3VfaWRsZV90aW1lcl9zdG9wKCk7CiAgICAgcmN1X2lkbGVf ZXhpdChjcHUpOwogICAgIHNjaGVkID0gZ2V0X3NjaGVkX3JlcyhjcHUpLT5zY2hlZHVsZXI7CiAg ICAgc2NoZWRfZG9fdGlja19yZXN1bWUoc2NoZWQsIGNwdSk7CisKKyAgICByY3VfcmVhZF91bmxv Y2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKIH0KIAogdm9pZCB3YWl0KHZvaWQpCkBAIC0yNzExLDcg KzI4NjgsMTMgQEAgdm9pZCB3YWl0KHZvaWQpCiAgKi8KIGJvb2wgc2NoZWRfaGFzX3VyZ2VudF92 Y3B1KHZvaWQpCiB7Ci0gICAgcmV0dXJuIGF0b21pY19yZWFkKCZnZXRfc2NoZWRfcmVzKHNtcF9w cm9jZXNzb3JfaWQoKSktPnVyZ2VudF9jb3VudCk7CisgICAgaW50IHZhbDsKKworICAgIHJjdV9y ZWFkX2xvY2soJnNjaGVkX3Jlc19yY3Vsb2NrKTsKKyAgICB2YWwgPSBhdG9taWNfcmVhZCgmZ2V0 X3NjaGVkX3JlcyhzbXBfcHJvY2Vzc29yX2lkKCkpLT51cmdlbnRfY291bnQpOworICAgIHJjdV9y ZWFkX3VubG9jaygmc2NoZWRfcmVzX3JjdWxvY2spOworCisgICAgcmV0dXJuIHZhbDsKIH0KIAog I2lmZGVmIENPTkZJR19DT01QQVQKZGlmZiAtLWdpdCBhL3hlbi9pbmNsdWRlL3hlbi9zY2hlZC1p Zi5oIGIveGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmgKaW5kZXggNjA2YTBkNGEyNS4uZGU1MGI0 ZWJjYSAxMDA2NDQKLS0tIGEveGVuL2luY2x1ZGUveGVuL3NjaGVkLWlmLmgKKysrIGIveGVuL2lu Y2x1ZGUveGVuL3NjaGVkLWlmLmgKQEAgLTEwLDYgKzEwLDcgQEAKIAogI2luY2x1ZGUgPHhlbi9w ZXJjcHUuaD4KICNpbmNsdWRlIDx4ZW4vZXJyLmg+CisjaW5jbHVkZSA8eGVuL3JjdXBkYXRlLmg+ CiAKIC8qIEEgZ2xvYmFsIHBvaW50ZXIgdG8gdGhlIGluaXRpYWwgY3B1cG9vbCAoUE9PTDApLiAq LwogZXh0ZXJuIHN0cnVjdCBjcHVwb29sICpjcHVwb29sMDsKQEAgLTU4LDIwICs1OSwyMiBAQCBz dHJ1Y3Qgc2NoZWRfcmVzb3VyY2UgewogICAgIHVuc2lnbmVkIGludCAgICAgICAgcHJvY2Vzc29y OwogICAgIHVuc2lnbmVkIGludCAgICAgICAgZ3JhbnVsYXJpdHk7CiAgICAgY29uc3QgY3B1bWFz a190ICAgICpjcHVzOyAgICAgICAgICAgLyogY3B1cyBjb3ZlcmVkIGJ5IHRoaXMgc3RydWN0ICAg ICAqLworICAgIHN0cnVjdCByY3VfaGVhZCAgICAgcmN1OwogfTsKIAogI2RlZmluZSBjdXJyX29u X2NwdShjKSAgICAoZ2V0X3NjaGVkX3JlcyhjKS0+Y3VycikKIAogREVDTEFSRV9QRVJfQ1BVKHN0 cnVjdCBzY2hlZF9yZXNvdXJjZSAqLCBzY2hlZF9yZXMpOworZXh0ZXJuIHJjdV9yZWFkX2xvY2tf dCBzY2hlZF9yZXNfcmN1bG9jazsKIAogc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2NoZWRfcmVzb3Vy Y2UgKmdldF9zY2hlZF9yZXModW5zaWduZWQgaW50IGNwdSkKIHsKLSAgICByZXR1cm4gcGVyX2Nw dShzY2hlZF9yZXMsIGNwdSk7CisgICAgcmV0dXJuIHJjdV9kZXJlZmVyZW5jZShwZXJfY3B1KHNj aGVkX3JlcywgY3B1KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRfc2NoZWRfcmVzKHVu c2lnbmVkIGludCBjcHUsIHN0cnVjdCBzY2hlZF9yZXNvdXJjZSAqcmVzKQogewotICAgIHBlcl9j cHUoc2NoZWRfcmVzLCBjcHUpID0gcmVzOworICAgIHJjdV9hc3NpZ25fcG9pbnRlcihwZXJfY3B1 KHNjaGVkX3JlcywgY3B1KSwgcmVzKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGlzX2lkbGVf dW5pdChjb25zdCBzdHJ1Y3Qgc2NoZWRfdW5pdCAqdW5pdCkKLS0gCjIuMTYuNAoKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5n IGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJv amVjdC5vcmcvbWFpbG1hbi9saXN0aW5mby94ZW4tZGV2ZWw=