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=-6.6 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MIME_BASE64_TEXT,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 3DBC8C3F2D2 for ; Thu, 5 Mar 2020 17:17:36 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 F05F420870 for ; Thu, 5 Mar 2020 17:17:35 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="O8yb4wCb" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org F05F420870 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:53852 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9u7q-0005fu-VJ for qemu-devel@archiver.kernel.org; Thu, 05 Mar 2020 12:17:35 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:38085) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1j9tzB-0000UP-0n for qemu-devel@nongnu.org; Thu, 05 Mar 2020 12:08:39 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1j9tz8-0003Lv-KU for qemu-devel@nongnu.org; Thu, 05 Mar 2020 12:08:36 -0500 Received: from us-smtp-delivery-1.mimecast.com ([205.139.110.120]:46886 helo=us-smtp-1.mimecast.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1j9tz8-0003Li-El for qemu-devel@nongnu.org; Thu, 05 Mar 2020 12:08:34 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1583428114; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=l64hh/QfUxbG6dgP8gOtGSFXjvY4+UHjy+pP2EyLJbA=; b=O8yb4wCbBbgW2WSYm71lQXYDh54d2LxRRHdVb5igjOp3ex/mlb0IkX6ddT+FxTqPwQOQWe bvJjdm367JZwR+/cHiEDev9T9nc60ehM5KTdJpXTna+EidD39RJnlM1N97JzyW4Sgsj3lf OCE8OFE+FSdM2XRiz/XX2lJKpGIQ3mU= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-362-ixwJvmXzOYWb2n7Q-iS-2A-1; Thu, 05 Mar 2020 12:08:32 -0500 X-MC-Unique: ixwJvmXzOYWb2n7Q-iS-2A-1 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3365518AB2C2; Thu, 5 Mar 2020 17:08:31 +0000 (UTC) Received: from localhost (ovpn-117-104.ams2.redhat.com [10.36.117.104]) by smtp.corp.redhat.com (Postfix) with ESMTP id D447C5C219; Thu, 5 Mar 2020 17:08:27 +0000 (UTC) From: Stefan Hajnoczi To: qemu-devel@nongnu.org Subject: [PATCH 5/7] aio-posix: add io_uring fd monitoring implementation Date: Thu, 5 Mar 2020 17:08:04 +0000 Message-Id: <20200305170806.1313245-6-stefanha@redhat.com> In-Reply-To: <20200305170806.1313245-1-stefanha@redhat.com> References: <20200305170806.1313245-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: base64 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 205.139.110.120 X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Fam Zheng , Kevin Wolf , qemu-block@nongnu.org, Max Reitz , Stefan Hajnoczi , Paolo Bonzini Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" VGhlIHJlY2VudCBMaW51eCBpb191cmluZyBBUEkgaGFzIHNldmVyYWwgYWR2YW50YWdlcyBvdmVy IHBwb2xsKDIpIGFuZAplcG9sbCgyKS4gIERldGFpbHMgYXJlIGdpdmVuIGluIHRoZSBzb3VyY2Ug Y29kZS4KCkFkZCBhbiBpb191cmluZyBpbXBsZW1lbnRhdGlvbiBhbmQgbWFrZSBpdCB0aGUgZGVm YXVsdCBvbiBMaW51eC4KUGVyZm9ybWFuY2UgaXMgdGhlIHNhbWUgYXMgd2l0aCBlcG9sbCg3KSBi dXQgbGF0ZXIgcGF0Y2hlcyBhZGQKb3B0aW1pemF0aW9ucyB0aGF0IHRha2UgYWR2YW50YWdlIG9m IGlvX3VyaW5nLgoKSXQgaXMgbmVjZXNzYXJ5IHRvIGNoYW5nZSBob3cgYWlvX3NldF9mZF9oYW5k bGVyKCkgZGVhbHMgd2l0aCBkZWxldGluZwpBaW9IYW5kbGVycyBzaW5jZSByZW1vdmluZyBtb25p dG9yZWQgZmlsZSBkZXNjcmlwdG9ycyBpcyBhc3luY2hyb25vdXMgaW4KaW9fdXJpbmcuICBmZG1v bl9pb191cmluZ19yZW1vdmUoKSBtYXJrcyB0aGUgQWlvSGFuZGxlciBkZWxldGVkIGFuZAphaW9f c2V0X2ZkX2hhbmRsZXIoKSB3aWxsIGxldCBpdCBoYW5kbGUgZGVsZXRpb24gaW4gdGhhdCBjYXNl LgoKU2lnbmVkLW9mZi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgot LS0KIGNvbmZpZ3VyZSAgICAgICAgICAgICB8ICAgNSArCiBpbmNsdWRlL2Jsb2NrL2Fpby5oICAg fCAgIDkgKysKIHV0aWwvTWFrZWZpbGUub2JqcyAgICB8ICAgMSArCiB1dGlsL2Fpby1wb3NpeC5j ICAgICAgfCAgMjAgKystCiB1dGlsL2Fpby1wb3NpeC5oICAgICAgfCAgMjAgKystCiB1dGlsL2Zk bW9uLWlvX3VyaW5nLmMgfCAzMjYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrCiA2IGZpbGVzIGNoYW5nZWQsIDM3NiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHV0aWwvZmRtb24taW9fdXJpbmcuYwoKZGlmZiAtLWdpdCBh L2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCBmYWI2MjgxZWI3Li44Y2EyZmI1Yzg4IDEwMDc1 NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC00MDkzLDYgKzQwOTMsMTEgQEAg aWYgdGVzdCAiJGxpbnV4X2lvX3VyaW5nIiAhPSAibm8iIDsgdGhlbgogICAgIGxpbnV4X2lvX3Vy aW5nX2NmbGFncz0kKCRwa2dfY29uZmlnIC0tY2ZsYWdzIGxpYnVyaW5nKQogICAgIGxpbnV4X2lv X3VyaW5nX2xpYnM9JCgkcGtnX2NvbmZpZyAtLWxpYnMgbGlidXJpbmcpCiAgICAgbGludXhfaW9f dXJpbmc9eWVzCisKKyAgICAjIGlvX3VyaW5nIGlzIHVzZWQgaW4gbGlicWVtdXV0aWwuYSB3aGVy ZSBwZXItZmlsZSAtbGlicyB2YXJpYWJsZXMgYXJlIG5vdAorICAgICMgc2VlbiBieSBwcm9ncmFt cyBsaW5raW5nIHRoZSBhcmNoaXZlLiAgSXQncyBub3QgaWRlYWwsIGJ1dCBqdXN0IGFkZCB0aGUK KyAgICAjIGxpYnJhcnkgZGVwZW5kZW5jeSBnbG9iYWxseS4KKyAgICBMSUJTPSIkbGludXhfaW9f dXJpbmdfbGlicyAkTElCUyIKICAgZWxzZQogICAgIGlmIHRlc3QgIiRsaW51eF9pb191cmluZyIg PSAieWVzIiA7IHRoZW4KICAgICAgIGZlYXR1cmVfbm90X2ZvdW5kICJsaW51eCBpb191cmluZyIg Ikluc3RhbGwgbGlidXJpbmcgZGV2ZWwiCmRpZmYgLS1naXQgYS9pbmNsdWRlL2Jsb2NrL2Fpby5o IGIvaW5jbHVkZS9ibG9jay9haW8uaAppbmRleCBiZDc2YjA4ZjFhLi44M2ZjOWI4NDRkIDEwMDY0 NAotLS0gYS9pbmNsdWRlL2Jsb2NrL2Fpby5oCisrKyBiL2luY2x1ZGUvYmxvY2svYWlvLmgKQEAg LTE0LDYgKzE0LDkgQEAKICNpZm5kZWYgUUVNVV9BSU9fSAogI2RlZmluZSBRRU1VX0FJT19ICiAK KyNpZmRlZiBDT05GSUdfTElOVVhfSU9fVVJJTkcKKyNpbmNsdWRlIDxsaWJ1cmluZy5oPgorI2Vu ZGlmCiAjaW5jbHVkZSAicWVtdS9xdWV1ZS5oIgogI2luY2x1ZGUgInFlbXUvZXZlbnRfbm90aWZp ZXIuaCIKICNpbmNsdWRlICJxZW11L3RocmVhZC5oIgpAQCAtOTYsNiArOTksOCBAQCBzdHJ1Y3Qg QkhMaXN0U2xpY2UgewogICAgIFFTSU1QTEVRX0VOVFJZKEJITGlzdFNsaWNlKSBuZXh0OwogfTsK IAordHlwZWRlZiBRU0xJU1RfSEVBRCgsIEFpb0hhbmRsZXIpIEFpb0hhbmRsZXJTTGlzdDsKKwog c3RydWN0IEFpb0NvbnRleHQgewogICAgIEdTb3VyY2Ugc291cmNlOwogCkBAIC0xODEsNiArMTg2 LDEwIEBAIHN0cnVjdCBBaW9Db250ZXh0IHsKICAgICAgKiBsb2NraW5nLgogICAgICAqLwogICAg IHN0cnVjdCBMdXJpbmdTdGF0ZSAqbGludXhfaW9fdXJpbmc7CisKKyAgICAvKiBTdGF0ZSBmb3Ig ZmlsZSBkZXNjcmlwdG9yIG1vbml0b3JpbmcgdXNpbmcgTGludXggaW9fdXJpbmcgKi8KKyAgICBz dHJ1Y3QgaW9fdXJpbmcgZmRtb25faW9fdXJpbmc7CisgICAgQWlvSGFuZGxlclNMaXN0IHN1Ym1p dF9saXN0OwogI2VuZGlmCiAKICAgICAvKiBUaW1lckxpc3RzIGZvciBjYWxsaW5nIHRpbWVycyAt IG9uZSBwZXIgY2xvY2sgdHlwZS4gIEhhcyBpdHMgb3duCmRpZmYgLS1naXQgYS91dGlsL01ha2Vm aWxlLm9ianMgYi91dGlsL01ha2VmaWxlLm9ianMKaW5kZXggNjQzOTA3N2E2OC4uNjcxOGEzOGI2 MSAxMDA2NDQKLS0tIGEvdXRpbC9NYWtlZmlsZS5vYmpzCisrKyBiL3V0aWwvTWFrZWZpbGUub2Jq cwpAQCAtNyw2ICs3LDcgQEAgdXRpbC1vYmotJChjYWxsIGxub3QsJChDT05GSUdfQVRPTUlDNjQp KSArPSBhdG9taWM2NC5vCiB1dGlsLW9iai0kKENPTkZJR19QT1NJWCkgKz0gYWlvLXBvc2l4Lm8K IHV0aWwtb2JqLSQoQ09ORklHX1BPU0lYKSArPSBmZG1vbi1wb2xsLm8KIHV0aWwtb2JqLSQoQ09O RklHX0VQT0xMX0NSRUFURTEpICs9IGZkbW9uLWVwb2xsLm8KK3V0aWwtb2JqLSQoQ09ORklHX0xJ TlVYX0lPX1VSSU5HKSArPSBmZG1vbi1pb191cmluZy5vCiB1dGlsLW9iai0kKENPTkZJR19QT1NJ WCkgKz0gY29tcGF0ZmQubwogdXRpbC1vYmotJChDT05GSUdfUE9TSVgpICs9IGV2ZW50X25vdGlm aWVyLXBvc2l4Lm8KIHV0aWwtb2JqLSQoQ09ORklHX1BPU0lYKSArPSBtbWFwLWFsbG9jLm8KZGlm ZiAtLWdpdCBhL3V0aWwvYWlvLXBvc2l4LmMgYi91dGlsL2Fpby1wb3NpeC5jCmluZGV4IDNiOWFh ZDRjYTcuLmEyNGEzM2MxNWEgMTAwNjQ0Ci0tLSBhL3V0aWwvYWlvLXBvc2l4LmMKKysrIGIvdXRp bC9haW8tcG9zaXguYwpAQCAtNTcsMTAgKzU3LDE2IEBAIHN0YXRpYyBib29sIGFpb19yZW1vdmVf ZmRfaGFuZGxlcihBaW9Db250ZXh0ICpjdHgsIEFpb0hhbmRsZXIgKm5vZGUpCiAgICAgICAgIGdf c291cmNlX3JlbW92ZV9wb2xsKCZjdHgtPnNvdXJjZSwgJm5vZGUtPnBmZCk7CiAgICAgfQogCisg ICAgbm9kZS0+cGZkLnJldmVudHMgPSAwOworCisgICAgLyogSWYgdGhlIGZkIG1vbml0b3IgaGFz IGFscmVhZHkgbWFya2VkIGl0IGRlbGV0ZWQsIGxlYXZlIGl0IGFsb25lICovCisgICAgaWYgKFFM SVNUX0lTX0lOU0VSVEVEKG5vZGUsIG5vZGVfZGVsZXRlZCkpIHsKKyAgICAgICAgcmV0dXJuIGZh bHNlOworICAgIH0KKwogICAgIC8qIElmIGEgcmVhZCBpcyBpbiBwcm9ncmVzcywganVzdCBtYXJr IHRoZSBub2RlIGFzIGRlbGV0ZWQgKi8KICAgICBpZiAocWVtdV9sb2NrY250X2NvdW50KCZjdHgt Pmxpc3RfbG9jaykpIHsKICAgICAgICAgUUxJU1RfSU5TRVJUX0hFQURfUkNVKCZjdHgtPmRlbGV0 ZWRfYWlvX2hhbmRsZXJzLCBub2RlLCBub2RlX2RlbGV0ZWQpOwotICAgICAgICBub2RlLT5wZmQu cmV2ZW50cyA9IDA7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgLyogT3RoZXJ3 aXNlLCBkZWxldGUgaXQgZm9yIHJlYWwuICBXZSBjYW4ndCBqdXN0IG1hcmsgaXQgYXMKQEAgLTEy Niw5ICsxMzIsNiBAQCB2b2lkIGFpb19zZXRfZmRfaGFuZGxlcihBaW9Db250ZXh0ICpjdHgsCiAK ICAgICAgICAgUUxJU1RfSU5TRVJUX0hFQURfUkNVKCZjdHgtPmFpb19oYW5kbGVycywgbmV3X25v ZGUsIG5vZGUpOwogICAgIH0KLSAgICBpZiAobm9kZSkgewotICAgICAgICBkZWxldGVkID0gYWlv X3JlbW92ZV9mZF9oYW5kbGVyKGN0eCwgbm9kZSk7Ci0gICAgfQogCiAgICAgLyogTm8gbmVlZCB0 byBvcmRlciBwb2xsX2Rpc2FibGVfY250IHdyaXRlcyBhZ2FpbnN0IG90aGVyIHVwZGF0ZXM7CiAg ICAgICogdGhlIGNvdW50ZXIgaXMgb25seSB1c2VkIHRvIGF2b2lkIHdhc3RpbmcgdGltZSBhbmQg bGF0ZW5jeSBvbgpAQCAtMTQwLDYgKzE0Myw5IEBAIHZvaWQgYWlvX3NldF9mZF9oYW5kbGVyKEFp b0NvbnRleHQgKmN0eCwKICAgICAgICAgICAgICAgIGF0b21pY19yZWFkKCZjdHgtPnBvbGxfZGlz YWJsZV9jbnQpICsgcG9sbF9kaXNhYmxlX2NoYW5nZSk7CiAKICAgICBjdHgtPmZkbW9uX29wcy0+ dXBkYXRlKGN0eCwgbm9kZSwgbmV3X25vZGUpOworICAgIGlmIChub2RlKSB7CisgICAgICAgIGRl bGV0ZWQgPSBhaW9fcmVtb3ZlX2ZkX2hhbmRsZXIoY3R4LCBub2RlKTsKKyAgICB9CiAgICAgcWVt dV9sb2NrY250X3VubG9jaygmY3R4LT5saXN0X2xvY2spOwogICAgIGFpb19ub3RpZnkoY3R4KTsK IApAQCAtNTY1LDExICs1NzEsMTcgQEAgdm9pZCBhaW9fY29udGV4dF9zZXR1cChBaW9Db250ZXh0 ICpjdHgpCiAgICAgY3R4LT5mZG1vbl9vcHMgPSAmZmRtb25fcG9sbF9vcHM7CiAgICAgY3R4LT5l cG9sbGZkID0gLTE7CiAKKyAgICAvKiBVc2UgdGhlIGZhc3Rlc3QgZmQgbW9uaXRvcmluZyBpbXBs ZW1lbnRhdGlvbiBpZiBhdmFpbGFibGUgKi8KKyAgICBpZiAoZmRtb25faW9fdXJpbmdfc2V0dXAo Y3R4KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgZmRtb25fZXBvbGxfc2V0dXAo Y3R4KTsKIH0KIAogdm9pZCBhaW9fY29udGV4dF9kZXN0cm95KEFpb0NvbnRleHQgKmN0eCkKIHsK KyAgICBmZG1vbl9pb191cmluZ19kZXN0cm95KGN0eCk7CiAgICAgZmRtb25fZXBvbGxfZGlzYWJs ZShjdHgpOwogfQogCmRpZmYgLS1naXQgYS91dGlsL2Fpby1wb3NpeC5oIGIvdXRpbC9haW8tcG9z aXguaAppbmRleCA5Nzg5OWQwZmJjLi41NWZjNzcxMzI3IDEwMDY0NAotLS0gYS91dGlsL2Fpby1w b3NpeC5oCisrKyBiL3V0aWwvYWlvLXBvc2l4LmgKQEAgLTI3LDEwICsyNywxNCBAQCBzdHJ1Y3Qg QWlvSGFuZGxlciB7CiAgICAgSU9IYW5kbGVyICppb19wb2xsX2JlZ2luOwogICAgIElPSGFuZGxl ciAqaW9fcG9sbF9lbmQ7CiAgICAgdm9pZCAqb3BhcXVlOwotICAgIGJvb2wgaXNfZXh0ZXJuYWw7 CiAgICAgUUxJU1RfRU5UUlkoQWlvSGFuZGxlcikgbm9kZTsKICAgICBRTElTVF9FTlRSWShBaW9I YW5kbGVyKSBub2RlX3JlYWR5OyAvKiBvbmx5IHVzZWQgZHVyaW5nIGFpb19wb2xsKCkgKi8KICAg ICBRTElTVF9FTlRSWShBaW9IYW5kbGVyKSBub2RlX2RlbGV0ZWQ7CisjaWZkZWYgQ09ORklHX0xJ TlVYX0lPX1VSSU5HCisgICAgUVNMSVNUX0VOVFJZKEFpb0hhbmRsZXIpIG5vZGVfc3VibWl0dGVk OworICAgIHVuc2lnbmVkIGZsYWdzOyAvKiBzZWUgZmRtb24taW9fdXJpbmcuYyAqLworI2VuZGlm CisgICAgYm9vbCBpc19leHRlcm5hbDsKIH07CiAKIC8qIEFkZCBhIGhhbmRsZXIgdG8gYSByZWFk eSBsaXN0ICovCkBAIC01OCw0ICs2MiwxOCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgZmRtb25fZXBv bGxfZGlzYWJsZShBaW9Db250ZXh0ICpjdHgpCiB9CiAjZW5kaWYgLyogIUNPTkZJR19FUE9MTF9D UkVBVEUxICovCiAKKyNpZmRlZiBDT05GSUdfTElOVVhfSU9fVVJJTkcKK2Jvb2wgZmRtb25faW9f dXJpbmdfc2V0dXAoQWlvQ29udGV4dCAqY3R4KTsKK3ZvaWQgZmRtb25faW9fdXJpbmdfZGVzdHJv eShBaW9Db250ZXh0ICpjdHgpOworI2Vsc2UKK3N0YXRpYyBpbmxpbmUgYm9vbCBmZG1vbl9pb191 cmluZ19zZXR1cChBaW9Db250ZXh0ICpjdHgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitz dGF0aWMgaW5saW5lIHZvaWQgZmRtb25faW9fdXJpbmdfZGVzdHJveShBaW9Db250ZXh0ICpjdHgp Cit7Cit9CisjZW5kaWYgLyogIUNPTkZJR19MSU5VWF9JT19VUklORyAqLworCiAjZW5kaWYgLyog QUlPX1BPU0lYX0ggKi8KZGlmZiAtLWdpdCBhL3V0aWwvZmRtb24taW9fdXJpbmcuYyBiL3V0aWwv ZmRtb24taW9fdXJpbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5m Yjk5YjRiNjFlCi0tLSAvZGV2L251bGwKKysrIGIvdXRpbC9mZG1vbi1pb191cmluZy5jCkBAIC0w LDAgKzEsMzI2IEBACisvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRl ciAqLworLyoKKyAqIExpbnV4IGlvX3VyaW5nIGZpbGUgZGVzY3JpcHRvciBtb25pdG9yaW5nCisg KgorICogVGhlIExpbnV4IGlvX3VyaW5nIEFQSSBzdXBwb3J0cyBmaWxlIGRlc2NyaXB0b3IgbW9u aXRvcmluZyB3aXRoIGEgZmV3CisgKiBhZHZhbnRhZ2VzIG92ZXIgZXhpc3RpbmcgQVBJcyBsaWtl IHBvbGwoMikgYW5kIGVwb2xsKDcpOgorICoKKyAqIDEuIFVzZXJzcGFjZSBwb2xsaW5nIG9mIGV2 ZW50cyBpcyBwb3NzaWJsZSBiZWNhdXNlIHRoZSBjb21wbGV0aW9uIHF1ZXVlIChjcQorICogICAg cmluZykgaXMgc2hhcmVkIGJldHdlZW4gdGhlIGtlcm5lbCBhbmQgdXNlcnNwYWNlLiAgVGhpcyBh bGxvd3MKKyAqICAgIGFwcGxpY2F0aW9ucyB0aGF0IHJlbHkgb24gdXNlcnNwYWNlIHBvbGxpbmcg dG8gYWxzbyBtb25pdG9yIGZpbGUKKyAqICAgIGRlc2NyaXB0b3JzIGluIHRoZSBzYW1lIHVzZXJz cGFjZSBwb2xsaW5nIGxvb3AuCisgKgorICogMi4gU3VibWlzc2lvbiBhbmQgY29tcGxldGlvbiBp cyBiYXRjaGVkIGFuZCBkb25lIHRvZ2V0aGVyIGluIGEgc2luZ2xlIHN5c3RlbQorICogICAgY2Fs bC4gIFRoaXMgbWluaW1pemVzIHRoZSBudW1iZXIgb2Ygc3lzdGVtIGNhbGxzLgorICoKKyAqIDMu IEZpbGUgZGVzY3JpcHRvciBtb25pdG9yaW5nIGlzIE8oMSkgbGlrZSBlcG9sbCg3KSBzbyBpdCBz Y2FsZXMgYmV0dGVyIHRoYW4KKyAqICAgIHBvbGwoMikuCisgKgorICogNC4gTmFub3NlY29uZCB0 aW1lb3V0cyBhcmUgc3VwcG9ydGVkIHNvIGl0IHJlcXVpcmVzIGZld2VyIHN5c2NhbGxzIHRoYW4K KyAqICAgIGVwb2xsKDcpLgorICoKKyAqIFRoaXMgY29kZSBvbmx5IG1vbml0b3JzIGZpbGUgZGVz Y3JpcHRvcnMgYW5kIGRvZXMgbm90IGRvIGFzeW5jaHJvbm91cyBkaXNrCisgKiBJL08uICBJbXBs ZW1lbnRpbmcgZGlzayBJL08gZWZmaWNpZW50bHkgaGFzIG90aGVyIHJlcXVpcmVtZW50cyBhbmQg c2hvdWxkCisgKiB1c2UgYSBzZXBhcmF0ZSBpb191cmluZyBzbyBpdCBkb2VzIG5vdCBtYWtlIHNl bnNlIHRvIHVuaWZ5IHRoZSBjb2RlLgorICoKKyAqIEZpbGUgZGVzY3JpcHRvciBtb25pdG9yaW5n IGlzIGltcGxlbWVudGVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczoKKyAqCisgKiAx LiBJT1JJTkdfT1BfUE9MTF9BREQgLSBhZGRzIGEgZmlsZSBkZXNjcmlwdG9yIHRvIGJlIG1vbml0 b3JlZC4KKyAqIDIuIElPUklOR19PUF9QT0xMX1JFTU9WRSAtIHJlbW92ZXMgYSBmaWxlIGRlc2Ny aXB0b3IgYmVpbmcgbW9uaXRvcmVkLiAgV2hlbgorICogICAgdGhlIHBvbGwgbWFzayBjaGFuZ2Vz IGZvciBhIGZpbGUgZGVzY3JpcHRvciBpdCBpcyBmaXJzdCByZW1vdmVkIGFuZCB0aGVuCisgKiAg ICByZS1hZGRlZCB3aXRoIHRoZSBuZXcgcG9sbCBtYXNrLCBzbyB0aGlzIG9wZXJhdGlvbiBpcyBh bHNvIHVzZWQgYXMgcGFydAorICogICAgb2YgbW9kaWZ5aW5nIGFuIGV4aXN0aW5nIG1vbml0b3Jl ZCBmaWxlIGRlc2NyaXB0b3IuCisgKiAzLiBJT1JJTkdfT1BfVElNRU9VVCAtIGFkZGVkIGV2ZXJ5 IHRpbWUgYSBibG9ja2luZyBzeXNjYWxsIGlzIG1hZGUgdG8gd2FpdAorICogICAgZm9yIGV2ZW50 cy4gIFRoaXMgb3BlcmF0aW9uIHNlbGYtY2FuY2VscyBpZiBhbm90aGVyIGV2ZW50IGNvbXBsZXRl cworICogICAgYmVmb3JlIHRoZSB0aW1lb3V0LgorICoKKyAqIGlvX3VyaW5nIGNhbGxzIHRoZSBz dWJtaXNzaW9uIHF1ZXVlIHRoZSAic3EgcmluZyIgYW5kIHRoZSBjb21wbGV0aW9uIHF1ZXVlCisg KiB0aGUgImNxIHJpbmciLiAgUmluZyBlbnRyaWVzIGFyZSBjYWxsZWQgInNxZSIgYW5kICJjcWUi LCByZXNwZWN0aXZlbHkuCisgKgorICogVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBzbyB0aGF0IHNx L2NxIHJpbmdzIGFyZSBvbmx5IG1vZGlmaWVkIHdpdGhpbgorICogZmRtb25faW9fdXJpbmdfd2Fp dCgpLiAgQ2hhbmdlcyB0byBBaW9IYW5kbGVycyBhcmUgbWFkZSBieSBlbnF1ZXVpbmcgdGhlbSBv bgorICogY3R4LT5zdWJtaXRfbGlzdCBzbyB0aGF0IGZkbW9uX2lvX3VyaW5nX3dhaXQoKSBjYW4g c3VibWl0IElPUklOR19PUF9QT0xMX0FERAorICogYW5kL29yIElPUklOR19PUF9QT0xMX1JFTU9W RSBzcWVzIGZvciB0aGVtLgorICovCisKKyNpbmNsdWRlICJxZW11L29zZGVwLmgiCisjaW5jbHVk ZSA8cG9sbC5oPgorI2luY2x1ZGUgInFlbXUvcmN1X3F1ZXVlLmgiCisjaW5jbHVkZSAiYWlvLXBv c2l4LmgiCisKK2VudW0geworICAgIEZETU9OX0lPX1VSSU5HX0VOVFJJRVMgID0gMTI4LCAvKiBz cS9jcSByaW5nIHNpemUgKi8KKworICAgIC8qIEFpb0hhbmRsZXI6OmZsYWdzICovCisgICAgRkRN T05fSU9fVVJJTkdfUEVORElORyAgPSAoMSA8PCAwKSwKKyAgICBGRE1PTl9JT19VUklOR19BREQg ICAgICA9ICgxIDw8IDEpLAorICAgIEZETU9OX0lPX1VSSU5HX1JFTU9WRSAgID0gKDEgPDwgMiks Cit9OworCitzdGF0aWMgaW5saW5lIGludCBwb2xsX2V2ZW50c19mcm9tX3BmZChpbnQgcGZkX2V2 ZW50cykKK3sKKyAgICByZXR1cm4gKHBmZF9ldmVudHMgJiBHX0lPX0lOID8gUE9MTElOIDogMCkg fAorICAgICAgICAgICAocGZkX2V2ZW50cyAmIEdfSU9fT1VUID8gUE9MTE9VVCA6IDApIHwKKyAg ICAgICAgICAgKHBmZF9ldmVudHMgJiBHX0lPX0hVUCA/IFBPTExIVVAgOiAwKSB8CisgICAgICAg ICAgIChwZmRfZXZlbnRzICYgR19JT19FUlIgPyBQT0xMRVJSIDogMCk7Cit9CisKK3N0YXRpYyBp bmxpbmUgaW50IHBmZF9ldmVudHNfZnJvbV9wb2xsKGludCBwb2xsX2V2ZW50cykKK3sKKyAgICBy ZXR1cm4gKHBvbGxfZXZlbnRzICYgUE9MTElOID8gR19JT19JTiA6IDApIHwKKyAgICAgICAgICAg KHBvbGxfZXZlbnRzICYgUE9MTE9VVCA/IEdfSU9fT1VUIDogMCkgfAorICAgICAgICAgICAocG9s bF9ldmVudHMgJiBQT0xMSFVQID8gR19JT19IVVAgOiAwKSB8CisgICAgICAgICAgIChwb2xsX2V2 ZW50cyAmIFBPTExFUlIgPyBHX0lPX0VSUiA6IDApOworfQorCisvKgorICogUmV0dXJucyBhbiBz cWUgZm9yIHN1Ym1pdHRpbmcgYSByZXF1ZXN0LiAgT25seSBiZSBjYWxsZWQgd2l0aGluCisgKiBm ZG1vbl9pb191cmluZ193YWl0KCkuCisgKi8KK3N0YXRpYyBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpn ZXRfc3FlKEFpb0NvbnRleHQgKmN0eCkKK3sKKyAgICBzdHJ1Y3QgaW9fdXJpbmcgKnJpbmcgPSAm Y3R4LT5mZG1vbl9pb191cmluZzsKKyAgICBzdHJ1Y3QgaW9fdXJpbmdfc3FlICpzcWUgPSBpb191 cmluZ19nZXRfc3FlKHJpbmcpOworICAgIGludCByZXQ7CisKKyAgICBpZiAobGlrZWx5KHNxZSkp IHsKKyAgICAgICAgcmV0dXJuIHNxZTsKKyAgICB9CisKKyAgICAvKiBObyBmcmVlIHNxZXMgbGVm dCwgc3VibWl0IHBlbmRpbmcgc3FlcyBmaXJzdCAqLworICAgIHJldCA9IGlvX3VyaW5nX3N1Ym1p dChyaW5nKTsKKyAgICBhc3NlcnQocmV0ID4gMSk7CisgICAgc3FlID0gaW9fdXJpbmdfZ2V0X3Nx ZShyaW5nKTsKKyAgICBhc3NlcnQoc3FlKTsKKyAgICByZXR1cm4gc3FlOworfQorCisvKiBBdG9t aWNhbGx5IGVucXVldWUgYW4gQWlvSGFuZGxlciBmb3Igc3EgcmluZyBzdWJtaXNzaW9uICovCitz dGF0aWMgdm9pZCBlbnF1ZXVlKEFpb0hhbmRsZXJTTGlzdCAqaGVhZCwgQWlvSGFuZGxlciAqbm9k ZSwgdW5zaWduZWQgZmxhZ3MpCit7CisgICAgdW5zaWduZWQgb2xkX2ZsYWdzOworCisgICAgb2xk X2ZsYWdzID0gYXRvbWljX2ZldGNoX29yKCZub2RlLT5mbGFncywgRkRNT05fSU9fVVJJTkdfUEVO RElORyB8IGZsYWdzKTsKKyAgICBpZiAoIShvbGRfZmxhZ3MgJiBGRE1PTl9JT19VUklOR19QRU5E SU5HKSkgeworICAgICAgICBRU0xJU1RfSU5TRVJUX0hFQURfQVRPTUlDKGhlYWQsIG5vZGUsIG5v ZGVfc3VibWl0dGVkKTsKKyAgICB9Cit9CisKKy8qIERlcXVldWUgYW4gQWlvSGFuZGxlciBmb3Ig c3EgcmluZyBzdWJtaXNzaW9uLiAgQ2FsbGVkIGJ5IGZpbGxfc3FfcmluZygpLiAqLworc3RhdGlj IEFpb0hhbmRsZXIgKmRlcXVldWUoQWlvSGFuZGxlclNMaXN0ICpoZWFkLCB1bnNpZ25lZCAqZmxh Z3MpCit7CisgICAgQWlvSGFuZGxlciAqbm9kZSA9IFFTTElTVF9GSVJTVChoZWFkKTsKKworICAg IGlmICghbm9kZSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBEb2Vz bid0IG5lZWQgdG8gYmUgYXRvbWljIHNpbmNlIGZpbGxfc3FfcmluZygpIG1vdmVzIHRoZSBsaXN0 ICovCisgICAgUVNMSVNUX1JFTU9WRV9IRUFEKGhlYWQsIG5vZGVfc3VibWl0dGVkKTsKKworICAg IC8qCisgICAgICogRG9uJ3QgY2xlYXIgRkRNT05fSU9fVVJJTkdfUkVNT1ZFLiAgSXQncyBzdGlj a3kgc28gaXQgY2FuIHNlcnZlIHR3bworICAgICAqIHB1cnBvc2VzOiB0ZWxsaW5nIGZpbGxfc3Ff cmluZygpIHRvIHN1Ym1pdCBJT1JJTkdfT1BfUE9MTF9SRU1PVkUgYW5kCisgICAgICogdGVsbGlu ZyBwcm9jZXNzX2NxZSgpIHRvIGRlbGV0ZSB0aGUgQWlvSGFuZGxlciB3aGVuIGl0cworICAgICAq IElPUklOR19PUF9QT0xMX0FERCBjb21wbGV0ZXMuCisgICAgICovCisgICAgKmZsYWdzID0gYXRv bWljX2ZldGNoX2FuZCgmbm9kZS0+ZmxhZ3MsIH4oRkRNT05fSU9fVVJJTkdfUEVORElORyB8Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRkRNT05fSU9fVVJJ TkdfQUREKSk7CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK3N0YXRpYyB2b2lkIGZkbW9uX2lvX3Vy aW5nX3VwZGF0ZShBaW9Db250ZXh0ICpjdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQWlvSGFuZGxlciAqb2xkX25vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQWlvSGFuZGxlciAqbmV3X25vZGUpCit7CisgICAgaWYgKG5ld19ub2RlKSB7CisgICAg ICAgIGVucXVldWUoJmN0eC0+c3VibWl0X2xpc3QsIG5ld19ub2RlLCBGRE1PTl9JT19VUklOR19B REQpOworICAgIH0KKworICAgIGlmIChvbGRfbm9kZSkgeworICAgICAgICAvKgorICAgICAgICAg KiBEZWxldGlvbiBpcyB0cmlja3kgYmVjYXVzZSBJT1JJTkdfT1BfUE9MTF9BREQgYW5kCisgICAg ICAgICAqIElPUklOR19PUF9QT0xMX1JFTU9WRSBhcmUgYXN5bmMuICBXZSBuZWVkIHRvIHdhaXQg Zm9yIHRoZSBvcmlnaW5hbAorICAgICAgICAgKiBJT1JJTkdfT1BfUE9MTF9BREQgdG8gY29tcGxl dGUgYmVmb3JlIHRoaXMgaGFuZGxlciBjYW4gYmUgZnJlZWQKKyAgICAgICAgICogc2FmZWx5Lgor ICAgICAgICAgKgorICAgICAgICAgKiBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIGZpbGUgZGVzY3Jp cHRvciBiZWNvbWVzIHJlYWR5IGFuZCB0aGUKKyAgICAgICAgICogSU9SSU5HX09QX1BPTExfQURE IGNxZSBpcyBlbnF1ZXVlZCBiZWZvcmUgSU9SSU5HX09QX1BPTExfUkVNT1ZFIGlzCisgICAgICAg ICAqIHN1Ym1pdHRlZCwgdG9vLgorICAgICAgICAgKgorICAgICAgICAgKiBNYXJrIHRoaXMgaGFu ZGxlciBkZWxldGVkIHJpZ2h0IG5vdyBidXQgZG9uJ3QgcGxhY2UgaXQgb24KKyAgICAgICAgICog Y3R4LT5kZWxldGVkX2Fpb19oYW5kbGVycyB5ZXQuICBJbnN0ZWFkLCBtYW51YWxseSBmdWRnZSB0 aGUgbGlzdAorICAgICAgICAgKiBlbnRyeSB0byBtYWtlIFFMSVNUX0lTX0lOU0VSVEVEKCkgdGhp bmsgdGhpcyBoYW5kbGVyIGhhcyBiZWVuCisgICAgICAgICAqIGluc2VydGVkIGFuZCBvdGhlciBj b2RlIHJlY29nbml6ZXMgdGhpcyBBaW9IYW5kbGVyIGFzIGRlbGV0ZWQuCisgICAgICAgICAqCisg ICAgICAgICAqIE9uY2UgdGhlIG9yaWdpbmFsIElPUklOR19PUF9QT0xMX0FERCBjb21wbGV0ZXMg d2UgZW5xdWV1ZSB0aGUKKyAgICAgICAgICogaGFuZGxlciBvbiB0aGUgcmVhbCBjdHgtPmRlbGV0 ZWRfYWlvX2hhbmRsZXJzIGxpc3QgdG8gYmUgZnJlZWQuCisgICAgICAgICAqLworICAgICAgICBh c3NlcnQoIVFMSVNUX0lTX0lOU0VSVEVEKG9sZF9ub2RlLCBub2RlX2RlbGV0ZWQpKTsKKyAgICAg ICAgb2xkX25vZGUtPm5vZGVfZGVsZXRlZC5sZV9wcmV2ID0gJm9sZF9ub2RlLT5ub2RlX2RlbGV0 ZWQubGVfbmV4dDsKKworICAgICAgICBlbnF1ZXVlKCZjdHgtPnN1Ym1pdF9saXN0LCBvbGRfbm9k ZSwgRkRNT05fSU9fVVJJTkdfUkVNT1ZFKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFkZF9w b2xsX2FkZF9zcWUoQWlvQ29udGV4dCAqY3R4LCBBaW9IYW5kbGVyICpub2RlKQoreworICAgIHN0 cnVjdCBpb191cmluZ19zcWUgKnNxZSA9IGdldF9zcWUoY3R4KTsKKyAgICBpbnQgZXZlbnRzID0g cG9sbF9ldmVudHNfZnJvbV9wZmQobm9kZS0+cGZkLmV2ZW50cyk7CisKKyAgICBpb191cmluZ19w cmVwX3BvbGxfYWRkKHNxZSwgbm9kZS0+cGZkLmZkLCBldmVudHMpOworICAgIGlvX3VyaW5nX3Nx ZV9zZXRfZGF0YShzcWUsIG5vZGUpOworfQorCitzdGF0aWMgdm9pZCBhZGRfcG9sbF9yZW1vdmVf c3FlKEFpb0NvbnRleHQgKmN0eCwgQWlvSGFuZGxlciAqbm9kZSkKK3sKKyAgICBzdHJ1Y3QgaW9f dXJpbmdfc3FlICpzcWUgPSBnZXRfc3FlKGN0eCk7CisKKyAgICBpb191cmluZ19wcmVwX3BvbGxf cmVtb3ZlKHNxZSwgbm9kZSk7Cit9CisKKy8qIEFkZCBhIHRpbWVvdXQgdGhhdCBzZWxmLWNhbmNl bHMgd2hlbiBhbm90aGVyIGNxZSBiZWNvbWVzIHJlYWR5ICovCitzdGF0aWMgdm9pZCBhZGRfdGlt ZW91dF9zcWUoQWlvQ29udGV4dCAqY3R4LCBpbnQ2NF90IG5zKQoreworICAgIHN0cnVjdCBpb191 cmluZ19zcWUgKnNxZTsKKyAgICBzdHJ1Y3QgX19rZXJuZWxfdGltZXNwZWMgdHMgPSB7CisgICAg ICAgIC50dl9zZWMgPSBucyAvIE5BTk9TRUNPTkRTX1BFUl9TRUNPTkQsCisgICAgICAgIC50dl9u c2VjID0gbnMgJSBOQU5PU0VDT05EU19QRVJfU0VDT05ELAorICAgIH07CisKKyAgICBzcWUgPSBn ZXRfc3FlKGN0eCk7CisgICAgaW9fdXJpbmdfcHJlcF90aW1lb3V0KHNxZSwgJnRzLCAxLCAwKTsK K30KKworLyogQWRkIHNxZXMgZnJvbSBjdHgtPnN1Ym1pdF9saXN0IGZvciBzdWJtaXNzaW9uICov CitzdGF0aWMgdm9pZCBmaWxsX3NxX3JpbmcoQWlvQ29udGV4dCAqY3R4KQoreworICAgIEFpb0hh bmRsZXJTTGlzdCBzdWJtaXRfbGlzdDsKKyAgICBBaW9IYW5kbGVyICpub2RlOworICAgIHVuc2ln bmVkIGZsYWdzOworCisgICAgUVNMSVNUX01PVkVfQVRPTUlDKCZzdWJtaXRfbGlzdCwgJmN0eC0+ c3VibWl0X2xpc3QpOworCisgICAgd2hpbGUgKChub2RlID0gZGVxdWV1ZSgmc3VibWl0X2xpc3Qs ICZmbGFncykpKSB7CisgICAgICAgIC8qIE9yZGVyIG1hdHRlcnMsIGp1c3QgaW4gY2FzZSBib3Ro IGZsYWdzIHdlcmUgc2V0ICovCisgICAgICAgIGlmIChmbGFncyAmIEZETU9OX0lPX1VSSU5HX0FE RCkgeworICAgICAgICAgICAgYWRkX3BvbGxfYWRkX3NxZShjdHgsIG5vZGUpOworICAgICAgICB9 CisgICAgICAgIGlmIChmbGFncyAmIEZETU9OX0lPX1VSSU5HX1JFTU9WRSkgeworICAgICAgICAg ICAgYWRkX3BvbGxfcmVtb3ZlX3NxZShjdHgsIG5vZGUpOworICAgICAgICB9CisgICAgfQorfQor CisvKiBSZXR1cm5zIHRydWUgaWYgYSBoYW5kbGVyIGJlY2FtZSByZWFkeSAqLworc3RhdGljIGJv b2wgcHJvY2Vzc19jcWUoQWlvQ29udGV4dCAqY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAg QWlvSGFuZGxlckxpc3QgKnJlYWR5X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1 Y3QgaW9fdXJpbmdfY3FlICpjcWUpCit7CisgICAgQWlvSGFuZGxlciAqbm9kZSA9IGlvX3VyaW5n X2NxZV9nZXRfZGF0YShjcWUpOworICAgIHVuc2lnbmVkIGZsYWdzOworCisgICAgLyogcG9sbF90 aW1lb3V0IGFuZCBwb2xsX3JlbW92ZSBoYXZlIGEgemVybyB1c2VyX2RhdGEgZmllbGQgKi8KKyAg ICBpZiAoIW5vZGUpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qCisg ICAgICogRGVsZXRpb24gY2FuIG9ubHkgaGFwcGVuIHdoZW4gSU9SSU5HX09QX1BPTExfQUREIGNv bXBsZXRlcy4gIElmIHdlIHJhY2UKKyAgICAgKiB3aXRoIGVucXVldWUoKSBoZXJlIHRoZW4gd2Ug Y2FuIHNhZmVseSBjbGVhciB0aGUgRkRNT05fSU9fVVJJTkdfUkVNT1ZFCisgICAgICogYml0IGJl Zm9yZSBJT1JJTkdfT1BfUE9MTF9SRU1PVkUgaXMgc3VibWl0dGVkLgorICAgICAqLworICAgIGZs YWdzID0gYXRvbWljX2ZldGNoX2FuZCgmbm9kZS0+ZmxhZ3MsIH5GRE1PTl9JT19VUklOR19SRU1P VkUpOworICAgIGlmIChmbGFncyAmIEZETU9OX0lPX1VSSU5HX1JFTU9WRSkgeworICAgICAgICBR TElTVF9JTlNFUlRfSEVBRF9SQ1UoJmN0eC0+ZGVsZXRlZF9haW9faGFuZGxlcnMsIG5vZGUsIG5v ZGVfZGVsZXRlZCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhaW9fYWRk X3JlYWR5X2hhbmRsZXIocmVhZHlfbGlzdCwgbm9kZSwgcGZkX2V2ZW50c19mcm9tX3BvbGwoY3Fl LT5yZXMpKTsKKworICAgIC8qIElPUklOR19PUF9QT0xMX0FERCBpcyBvbmUtc2hvdCBzbyB3ZSBt dXN0IHJlLWFybSBpdCAqLworICAgIGFkZF9wb2xsX2FkZF9zcWUoY3R4LCBub2RlKTsKKyAgICBy ZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGludCBwcm9jZXNzX2NxX3JpbmcoQWlvQ29udGV4dCAq Y3R4LCBBaW9IYW5kbGVyTGlzdCAqcmVhZHlfbGlzdCkKK3sKKyAgICBzdHJ1Y3QgaW9fdXJpbmcg KnJpbmcgPSAmY3R4LT5mZG1vbl9pb191cmluZzsKKyAgICBzdHJ1Y3QgaW9fdXJpbmdfY3FlICpj cWU7CisgICAgdW5zaWduZWQgbnVtX2NxZXMgPSAwOworICAgIHVuc2lnbmVkIG51bV9yZWFkeSA9 IDA7CisgICAgdW5zaWduZWQgaGVhZDsKKworICAgIGlvX3VyaW5nX2Zvcl9lYWNoX2NxZShyaW5n LCBoZWFkLCBjcWUpIHsKKyAgICAgICAgaWYgKHByb2Nlc3NfY3FlKGN0eCwgcmVhZHlfbGlzdCwg Y3FlKSkgeworICAgICAgICAgICAgbnVtX3JlYWR5Kys7CisgICAgICAgIH0KKworICAgICAgICBu dW1fY3FlcysrOworICAgIH0KKworICAgIGlvX3VyaW5nX2NxX2FkdmFuY2UocmluZywgbnVtX2Nx ZXMpOworICAgIHJldHVybiBudW1fcmVhZHk7Cit9CisKK3N0YXRpYyBpbnQgZmRtb25faW9fdXJp bmdfd2FpdChBaW9Db250ZXh0ICpjdHgsIEFpb0hhbmRsZXJMaXN0ICpyZWFkeV9saXN0LAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDY0X3QgdGltZW91dCkKK3sKKyAgICB1bnNp Z25lZCB3YWl0X25yID0gMTsgLyogYmxvY2sgdW50aWwgYXQgbGVhc3Qgb25lIGNxZSBpcyByZWFk eSAqLworICAgIGludCByZXQ7CisKKyAgICAvKiBGYWxsIGJhY2sgd2hpbGUgZXh0ZXJuYWwgY2xp ZW50cyBhcmUgZGlzYWJsZWQgKi8KKyAgICBpZiAoYXRvbWljX3JlYWQoJmN0eC0+ZXh0ZXJuYWxf ZGlzYWJsZV9jbnQpKSB7CisgICAgICAgIHJldHVybiBmZG1vbl9wb2xsX29wcy53YWl0KGN0eCwg cmVhZHlfbGlzdCwgdGltZW91dCk7CisgICAgfQorCisgICAgaWYgKHRpbWVvdXQgPT0gMCkgewor ICAgICAgICB3YWl0X25yID0gMDsgLyogbm9uLWJsb2NraW5nICovCisgICAgfSBlbHNlIGlmICh0 aW1lb3V0ID4gMCkgeworICAgICAgICBhZGRfdGltZW91dF9zcWUoY3R4LCB0aW1lb3V0KTsKKyAg ICB9CisKKyAgICBmaWxsX3NxX3JpbmcoY3R4KTsKKworICAgIHJldCA9IGlvX3VyaW5nX3N1Ym1p dF9hbmRfd2FpdCgmY3R4LT5mZG1vbl9pb191cmluZywgd2FpdF9ucik7CisgICAgYXNzZXJ0KHJl dCA+PSAwKTsKKworICAgIHJldHVybiBwcm9jZXNzX2NxX3JpbmcoY3R4LCByZWFkeV9saXN0KTsK K30KKworc3RhdGljIGNvbnN0IEZETW9uT3BzIGZkbW9uX2lvX3VyaW5nX29wcyA9IHsKKyAgICAu dXBkYXRlID0gZmRtb25faW9fdXJpbmdfdXBkYXRlLAorICAgIC53YWl0ID0gZmRtb25faW9fdXJp bmdfd2FpdCwKK307CisKK2Jvb2wgZmRtb25faW9fdXJpbmdfc2V0dXAoQWlvQ29udGV4dCAqY3R4 KQoreworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBpb191cmluZ19xdWV1ZV9pbml0KEZETU9O X0lPX1VSSU5HX0VOVFJJRVMsICZjdHgtPmZkbW9uX2lvX3VyaW5nLCAwKTsKKyAgICBpZiAocmV0 ICE9IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIFFTTElTVF9JTklU KCZjdHgtPnN1Ym1pdF9saXN0KTsKKyAgICBjdHgtPmZkbW9uX29wcyA9ICZmZG1vbl9pb191cmlu Z19vcHM7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgZmRtb25faW9fdXJpbmdfZGVzdHJv eShBaW9Db250ZXh0ICpjdHgpCit7CisgICAgaWYgKGN0eC0+ZmRtb25fb3BzID09ICZmZG1vbl9p b191cmluZ19vcHMpIHsKKyAgICAgICAgQWlvSGFuZGxlciAqbm9kZTsKKworICAgICAgICBpb191 cmluZ19xdWV1ZV9leGl0KCZjdHgtPmZkbW9uX2lvX3VyaW5nKTsKKworICAgICAgICAvKiBObyBu ZWVkIHRvIHN1Ym1pdCB0aGVzZSBhbnltb3JlLCBqdXN0IGZyZWUgdGhlbS4gKi8KKyAgICAgICAg d2hpbGUgKChub2RlID0gUVNMSVNUX0ZJUlNUX1JDVSgmY3R4LT5zdWJtaXRfbGlzdCkpKSB7Cisg ICAgICAgICAgICBRU0xJU1RfUkVNT1ZFX0hFQURfUkNVKCZjdHgtPnN1Ym1pdF9saXN0LCBub2Rl X3N1Ym1pdHRlZCk7CisgICAgICAgICAgICBRTElTVF9SRU1PVkUobm9kZSwgbm9kZSk7CisgICAg ICAgICAgICBnX2ZyZWUobm9kZSk7CisgICAgICAgIH0KKworICAgICAgICBjdHgtPmZkbW9uX29w cyA9ICZmZG1vbl9wb2xsX29wczsKKyAgICB9Cit9Ci0tIAoyLjI0LjEKCg==