Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp629964rwd; Tue, 16 May 2023 06:01:56 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5rStf3f7V8Xu+OazXFyOiPxkKzCcQkA9Aj5WgFWY/usdh5HyOgoPilNxwyColdRJ2RxcLD X-Received: by 2002:a17:90b:1e0b:b0:250:ab4f:59b1 with SMTP id pg11-20020a17090b1e0b00b00250ab4f59b1mr25736636pjb.11.1684242115900; Tue, 16 May 2023 06:01:55 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684242115; cv=none; d=google.com; s=arc-20160816; b=UKd7YQEtQ9ra5l+oa/YbHglM0QwNSww1eQzlyQhHX4cZjzu0rBDo1nTJPxAxufAZfc ai2+UFbNfFgwwrdb1CDuLG83h1CkQKgN6/8RtkqKgh6pgFRW4/JuhDVF/u25d4wJLw3m TDxsJ22fBQz+K2z1/7VLkNPk1cBp2FYeievkmXBpwHVAXQzmDKfbQwB1miMeXQEj36Al J+IFk9wF4EpkGKve63vxdizGRdSbeGUlrXY3KVfN5JKQNaRk/1WR9tQ0EHwv1/9TkGdD 0/PtNY0DlzAOhbwe58U4QOqqWmfVHGDeZEXkRfhFkWkD/OK3+fTcXgVvX50GwkugiABk /roQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:user-agent :content-transfer-encoding:references:in-reply-to:date:cc:to:from :subject:message-id:feedback-id:dkim-signature:dkim-signature; bh=oWSNYcJZ5h9RpuWOmboFZn10Q3vWuaU3rQbJs9LhBZU=; b=VLvN0t7UV8Ofzw4vqvhi/LD5e3f8QTIqdqDrhCH+yQ+nkoEiTlLe9bMBPyh413jK4y n7iaS/rty6cCTiXIfVL7or0MxZdwAv8/JmJv5R/Lce3C88xmGRSU1U+26g/D5QMZQ1wP MZuLL8GssUYILDZaOCsN0rFYtEwh03GQT/Ln6pgDpFJww7P/twvM6lY/x7incn1H7iO3 OFrAVnMsyFQskoCDcojIaf8S0hjkf+X9ftnYjAq/d0X2LBkIMVSGVdNUtYN8XF+XNVtI WNxgu2qTGjHsf38NTCZ1L/ZTM7S3KPKG9Plvz2n4EVziOGxTgnmt98R2dp0vPT3S95aK GSwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@alistair23.me header.s=fm1 header.b=mka3c4SE; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=Qqrn6lEm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id rm9-20020a17090b3ec900b0024e14acda38si1783905pjb.61.2023.05.16.06.01.40; Tue, 16 May 2023 06:01:55 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@alistair23.me header.s=fm1 header.b=mka3c4SE; dkim=pass header.i=@messagingengine.com header.s=fm1 header.b=Qqrn6lEm; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232695AbjEPMxq (ORCPT + 99 others); Tue, 16 May 2023 08:53:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35168 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232561AbjEPMxo (ORCPT ); Tue, 16 May 2023 08:53:44 -0400 Received: from wout1-smtp.messagingengine.com (wout1-smtp.messagingengine.com [64.147.123.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 12F951FD2; Tue, 16 May 2023 05:53:34 -0700 (PDT) Received: from compute5.internal (compute5.nyi.internal [10.202.2.45]) by mailout.west.internal (Postfix) with ESMTP id 227613200933; Tue, 16 May 2023 08:53:29 -0400 (EDT) Received: from mailfrontend1 ([10.202.2.162]) by compute5.internal (MEProxy); Tue, 16 May 2023 08:53:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alistair23.me; h=cc:cc:content-transfer-encoding:content-type:content-type :date:date:from:from:in-reply-to:in-reply-to:message-id :mime-version:references:reply-to:sender:subject:subject:to:to; s=fm1; t=1684241608; x=1684328008; bh=oWSNYcJZ5h9RpuWOmboFZn10Q 3vWuaU3rQbJs9LhBZU=; b=mka3c4SEzz/ViiFgffi8rMOF+X/3wqOO8cq82C98x 76C+Tj7SEo90vgE4vEypM4RW9CZuRloNeDLktLcrm2eMs0woorKT2DonyThg/RSz xec5MuCrR4oVnDsISKgx7SFubeYg414n0SgyhqdANIjrnRqioikcaoggDBH5hNzi 1/0h21kGSClfn3Bl5hjFOZB/eze84RQcBhXUCQK9vFh4C3hbV0u6widbjwlblvN3 ku/C/AqJFqjZB9UrpSIRRIUvSaKgT33hA6Pyl5acQh3VhLqw/9mg8296kLX/kz+l t+7sGWUjevCrnPo1rCtdc/rfrqRnNFBvqTRpCVHhMG4kw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:sender:subject:subject:to:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm1; t= 1684241608; x=1684328008; bh=oWSNYcJZ5h9RpuWOmboFZn10Q3vWuaU3rQb Js9LhBZU=; b=Qqrn6lEm+eddctVlfyElQSlWUDHUAQM3dFpnOtG5CzZHgD49QUM zVbjvt9vzrkUs8bpAJmv59mbPiW4OgcmBWt63rzwl3SORbUr77MAH5qCfLKHlOex Q4JAygA8JnZKptsvZuxD2+MRXOKmjQ7fj8xfrlSz4/9qGTa91PjnvI4DunF+zlfe 4n+M8E1X9qBY9zFLTECPB6UJMK01Z+wBmqpIOC6pNxO3lC4I38WdO4EsI7i25bKi OfH1MhCFfX3zTCSxbPVWlXZXJzjiAl5Ixy3wA9728mNqGF6cBt/SKdwH4sW6/A7D jjR1riNSFC37aeCvLcxe1pZnT+OiOu7bMvQ== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvhedrfeehledgheekucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhepkffuhffvveffjghftgfgfgggsehtsgertddtreejnecuhfhrohhmpeetlhhi shhtrghirhcuoegrlhhishhtrghirhesrghlihhsthgrihhrvdefrdhmvgeqnecuggftrf grthhtvghrnhepudeujeehueeujeevtefhiedttdektedvtdettedutdfguedugfffffdv hefgteeunecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomh eprghlihhsthgrihhrsegrlhhishhtrghirhdvfedrmhgv X-ME-Proxy: Feedback-ID: ifd214418:Fastmail Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 16 May 2023 08:53:21 -0400 (EDT) Message-ID: <0cf8c588b701d7cf25ffe1a9217b81716e6a5c51.camel@alistair23.me> Subject: Re: [PATCH v4 1/2] usb: gadget: udc: core: Invoke usb_gadget_connect only when started From: Alistair To: Badhri Jagan Sridharan , gregkh@linuxfoundation.org, stern@rowland.harvard.edu, colin.i.king@gmail.com, xuetao09@huawei.com, quic_eserrao@quicinc.com, water.zhangjiantao@huawei.com, peter.chen@freescale.com, balbi@ti.com Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, stable@vger.kernel.org Date: Tue, 16 May 2023 22:53:11 +1000 In-Reply-To: <20230407030741.3163220-1-badhri@google.com> References: <20230407030741.3163220-1-badhri@google.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.48.1 (by Flathub.org) MIME-Version: 1.0 X-Spam-Status: No, score=-2.8 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE, URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gRnJpLCAyMDIzLTA0LTA3IGF0IDAzOjA3ICswMDAwLCBCYWRocmkgSmFnYW4gU3JpZGhhcmFu IHdyb3RlOgo+IHVzYl91ZGNfY29ubmVjdF9jb250cm9sIGRvZXMgbm90IGNoZWNrIHRvIHNlZSBp ZiB0aGUgdWRjIGhhcyBhbHJlYWR5Cj4gYmVlbiBzdGFydGVkLiBUaGlzIGNhdXNlcyBnYWRnZXQt Pm9wcy0+cHVsbHVwIHRvIGJlIGNhbGxlZCB0aHJvdWdoCj4gdXNiX2dhZGdldF9jb25uZWN0IHdo ZW4gaW52b2tlZCBmcm9tIHVzYl91ZGNfdmJ1c19oYW5kbGVyIGV2ZW4gYmVmb3JlCj4gdXNiX2dh ZGdldF91ZGNfc3RhcnQgaXMgY2FsbGVkLiBHdWFyZCB0aGlzIGJ5IGNoZWNraW5nIGZvciB1ZGMt Cj4gPnN0YXJ0ZWQKPiBpbiB1c2JfdWRjX2Nvbm5lY3RfY29udHJvbCBiZWZvcmUgaW52b2tpbmcg dXNiX2dhZGdldF9jb25uZWN0Lgo+IAo+IEd1YXJkaW5nIHVkYy0+dmJ1cywgdWRjLT5zdGFydGVk LCBnYWRnZXQtPmNvbm5lY3QsIGdhZGdldC0+ZGVhY3RpdmF0ZQo+IHJlbGF0ZWQgZnVuY3Rpb25z IHdpdGggY29ubmVjdF9sb2NrLiB1c2JfZ2FkZ2V0X2Nvbm5lY3RfbG9ja2VkLAo+IHVzYl9nYWRn ZXRfZGlzY29ubmVjdF9sb2NrZWQsIHVzYl91ZGNfY29ubmVjdF9jb250cm9sX2xvY2tlZCwKPiB1 c2JfZ2FkZ2V0X3VkY19zdGFydF9sb2NrZWQsIHVzYl9nYWRnZXRfdWRjX3N0b3BfbG9ja2VkIGFy ZSBjYWxsZWQKPiB3aXRoCj4gdGhpcyBsb2NrIGhlbGQgYXMgdGhleSBjYW4gYmUgc2ltdWxhdGFu ZW91c2x5IGludm9rZWQgZnJvbSBkaWZmZXJlbnQKPiBjb2RlCj4gcGF0aHMuCj4gCj4gQWRkaW5n IGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gbWFrZSBzdXJlIHVkYyBpcyBzdGFydGVkKHVkYy0+c3Rh cnRlZCkKPiBiZWZvcmUgcHVsbHVwIGNhbGxiYWNrIGlzIGludm9rZWQuCj4gCj4gQ2M6IHN0YWJs ZUB2Z2VyLmtlcm5lbC5vcmcKPiBGaXhlczogNjI4ZWYwZDI3M2E2ICgidXNiOiB1ZGM6IGFkZCB1 c2JfdWRjX3ZidXNfaGFuZGxlciIpCj4gU2lnbmVkLW9mZi1ieTogQmFkaHJpIEphZ2FuIFNyaWRo YXJhbiA8YmFkaHJpQGdvb2dsZS5jb20+CgpUaGlzIHBhdGNoIGNhdXNlcyBhIGtlcm5lbCBoYW5n IHdoZW4gdHJ5aW5nIHRvIGJvb3Qgd2l0aCB0aGUKdXNiL2NoaXBpZGVhL3VkYy5jIGRyaXZlci4K ClRoZSBjYWxsIHN0YWNrIGJlbG93IGNhdXNlcyB0aGUgaGFuZzoKCiAtIGdhZGdldF9iaW5kX2Ry aXZlcihzdHJ1Y3QgZGV2aWNlICpkZXYpCiAgICAtIG11dGV4X2xvY2soJnVkYy0+Y29ubmVjdF9s b2NrKTsKICAgIC0gdXNiX2dhZGdldF91ZGNfc3RhcnRfbG9ja2VkKHN0cnVjdCB1c2JfdWRjICp1 ZGMpCiAgICAgICAgLSB1ZGMtPmdhZGdldC0+b3BzLT51ZGNfc3RhcnQodWRjLT5nYWRnZXQsIHVk Yy0+ZHJpdmVyKQoKQXQgd2hpY2ggcG9pbnQgd2UgYXJlIGNhbGxpbmcgY2lfdWRjX3N0YXJ0KC4u KSwgYnV0IHdpdGggdGhlCmNvbm5lY3RfbG9jayBtdXRleCBsb2NrZWQuCgpjaV91ZGNfc3RhcnQo KSB0aGVuIGNhbGxzIHVzYl91ZGNfdmJ1c19oYW5kbGVyKCkgd2hpY2ggdHJpZXMgdG8gbG9jawp0 aGUgY29ubmVjdF9sb2NrIHdoaWxlIGl0J3MgYWxyZWFkeSBsb2NrZWQuIFJlc3VsdGluZyBpbiBh IGtlcm5lbCBoYW5nLgoKUmV2ZXJ0aW5nIHRoaXMgcGF0Y2ggZml4ZXMgdGhlIGhhbmcuCgpBbGlz dGFpcgoKPiAtLS0KPiBDaGFuZ2VzIHNpbmNlIHYzOgo+ICogTWFrZSBpbnRlcm5hbCBnYWRnZXRf Y29ubmVjdC9kaXNjb25uZWN0IGZ1bmN0aW9ucyBzdGF0aWMKPiBDaGFuZ2VzIHNpbmNlIHYyOgo+ ICogQWRkZWQgX19tdXN0X2hvbGQgbWFya2luZyBmb3IgY29ubmVjdF9sb2NrCj4gQ2hhbmdlcyBz aW5jZSB2MToKPiAqIEZpeGVkIGNvbW1pdCBtZXNzYWdlIGNvbW1lbnRzLgo+ICogUmVuYW1lZCB1 ZGNfY29ubmVjdF9jb250cm9sX2xvY2sgdG8gY29ubmVjdF9sb2NrIGFuZCBtYWRlIGl0IHBlcgo+ IGRldmljZS4KPiAqIHVkYy0+dmJ1cywgdWRjLT5zdGFydGVkLCBnYWRnZXQtPmNvbm5lY3QsIGdh ZGdldC0+ZGVhY3RpdmF0ZSBhcmUKPiBhbGwKPiBub3cgZ3VhcmRlZCBieSBjb25uZWN0X2xvY2su Cj4gKiBDb2RlIG5vdyBjaGVja3MgZm9yIHVkYy0+c3RhcnRlZCB0byBiZSBzZXQgYmVmb3JlIGlu dm9raW5nIHB1bGx1cAo+IGNhbGxiYWNrLgo+IC0tLQo+IMKgZHJpdmVycy91c2IvZ2FkZ2V0L3Vk Yy9jb3JlLmMgfCAxNDggKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KPiAtLQo+IMKg MSBmaWxlIGNoYW5nZWQsIDEwNCBpbnNlcnRpb25zKCspLCA0NCBkZWxldGlvbnMoLSkKPiAKPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jb3JlLmMKPiBiL2RyaXZlcnMvdXNi L2dhZGdldC91ZGMvY29yZS5jCj4gaW5kZXggM2RjYmJhNzM5ZGI2Li5hZjkyYzJlOGUxMGMgMTAw NjQ0Cj4gLS0tIGEvZHJpdmVycy91c2IvZ2FkZ2V0L3VkYy9jb3JlLmMKPiArKysgYi9kcml2ZXJz L3VzYi9nYWRnZXQvdWRjL2NvcmUuYwo+IEBAIC0zNyw2ICszNywxMCBAQCBzdGF0aWMgc3RydWN0 IGJ1c190eXBlIGdhZGdldF9idXNfdHlwZTsKPiDCoCAqIEB2YnVzOiBmb3IgdWRjcyB3aG8gY2Fy ZSBhYm91dCB2YnVzIHN0YXR1cywgdGhpcyB2YWx1ZSBpcyByZWFsCj4gdmJ1cyBzdGF0dXM7Cj4g wqAgKiBmb3IgdWRjcyB3aG8gZG8gbm90IGNhcmUgYWJvdXQgdmJ1cyBzdGF0dXMsIHRoaXMgdmFs dWUgaXMgYWx3YXlzCj4gdHJ1ZQo+IMKgICogQHN0YXJ0ZWQ6IHRoZSBVREMncyBzdGFydGVkIHN0 YXRlLiBUcnVlIGlmIHRoZSBVREMgaGFkIHN0YXJ0ZWQuCj4gKyAqIEBjb25uZWN0X2xvY2s6IHBy b3RlY3RzIHVkYy0+dmJ1cywgdWRjLT5zdGFydGVkLCBnYWRnZXQtPmNvbm5lY3QsCj4gZ2FkZ2V0 LT5kZWFjdGl2YXRlIHJlbGF0ZWQKPiArICogZnVuY3Rpb25zLiB1c2JfZ2FkZ2V0X2Nvbm5lY3Rf bG9ja2VkLAo+IHVzYl9nYWRnZXRfZGlzY29ubmVjdF9sb2NrZWQsCj4gKyAqIHVzYl91ZGNfY29u bmVjdF9jb250cm9sX2xvY2tlZCwgdXNiX2dhZGdldF91ZGNfc3RhcnRfbG9ja2VkLAo+IHVzYl9n YWRnZXRfdWRjX3N0b3BfbG9ja2VkIGFyZQo+ICsgKiBjYWxsZWQgd2l0aCB0aGlzIGxvY2sgaGVs ZC4KPiDCoCAqCj4gwqAgKiBUaGlzIHJlcHJlc2VudHMgdGhlIGludGVybmFsIGRhdGEgc3RydWN0 dXJlIHdoaWNoIGlzIHVzZWQgYnkgdGhlCj4gVURDLWNsYXNzCj4gwqAgKiB0byBob2xkIGluZm9y bWF0aW9uIGFib3V0IHVkYyBkcml2ZXIgYW5kIGdhZGdldCB0b2dldGhlci4KPiBAQCAtNDgsNiAr NTIsNyBAQCBzdHJ1Y3QgdXNiX3VkYyB7Cj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCBsaXN0X2hl YWTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxpc3Q7Cj4gwqDCoMKgwqDCoMKgwqDC oGJvb2zCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoHZidXM7Cj4gwqDCoMKgwqDCoMKgwqDCoGJvb2zCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN0YXJ0ZWQ7Cj4gK8KgwqDCoMKgwqDCoMKg c3RydWN0IG11dGV4wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbm5l Y3RfbG9jazsKPiDCoH07Cj4gwqAKPiDCoHN0YXRpYyBzdHJ1Y3QgY2xhc3MgKnVkY19jbGFzczsK PiBAQCAtNjg3LDE3ICs2OTIsOSBAQCBpbnQgdXNiX2dhZGdldF92YnVzX2Rpc2Nvbm5lY3Qoc3Ry dWN0IHVzYl9nYWRnZXQKPiAqZ2FkZ2V0KQo+IMKgfQo+IMKgRVhQT1JUX1NZTUJPTF9HUEwodXNi X2dhZGdldF92YnVzX2Rpc2Nvbm5lY3QpOwo+IMKgCj4gLS8qKgo+IC0gKiB1c2JfZ2FkZ2V0X2Nv bm5lY3QgLSBzb2Z0d2FyZS1jb250cm9sbGVkIGNvbm5lY3QgdG8gVVNCIGhvc3QKPiAtICogQGdh ZGdldDp0aGUgcGVyaXBoZXJhbCBiZWluZyBjb25uZWN0ZWQKPiAtICoKPiAtICogRW5hYmxlcyB0 aGUgRCsgKG9yIHBvdGVudGlhbGx5IEQtKSBwdWxsdXAuwqAgVGhlIGhvc3Qgd2lsbCBzdGFydAo+ IC0gKiBlbnVtZXJhdGluZyB0aGlzIGdhZGdldCB3aGVuIHRoZSBwdWxsdXAgaXMgYWN0aXZlIGFu ZCBhIFZCVVMKPiBzZXNzaW9uCj4gLSAqIGlzIGFjdGl2ZSAodGhlIGxpbmsgaXMgcG93ZXJlZCku Cj4gLSAqCj4gLSAqIFJldHVybnMgemVybyBvbiBzdWNjZXNzLCBlbHNlIG5lZ2F0aXZlIGVycm5v Lgo+IC0gKi8KPiAtaW50IHVzYl9nYWRnZXRfY29ubmVjdChzdHJ1Y3QgdXNiX2dhZGdldCAqZ2Fk Z2V0KQo+ICsvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIHVzYl9nYWRnZXRfY29ubmVjdCBuZWVkcyB0 byBiZSBjYWxsZWQgd2l0aAo+IGNvbm5lY3RfbG9jayBoZWxkLiAqLwo+ICtzdGF0aWMgaW50IHVz Yl9nYWRnZXRfY29ubmVjdF9sb2NrZWQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCkKPiArwqDC oMKgwqDCoMKgwqBfX211c3RfaG9sZCgmZ2FkZ2V0LT51ZGMtPmNvbm5lY3RfbG9jaykKPiDCoHsK PiDCoMKgwqDCoMKgwqDCoMKgaW50IHJldCA9IDA7Cj4gwqAKPiBAQCAtNzA2LDEwICs3MDMsMTIg QEAgaW50IHVzYl9nYWRnZXRfY29ubmVjdChzdHJ1Y3QgdXNiX2dhZGdldAo+ICpnYWRnZXQpCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiDCoMKgwqDCoMKgwqDC oMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWYgKGdhZGdldC0+ZGVhY3RpdmF0ZWQpIHsKPiAr wqDCoMKgwqDCoMKgwqBpZiAoZ2FkZ2V0LT5kZWFjdGl2YXRlZCB8fCAhZ2FkZ2V0LT51ZGMtPnN0 YXJ0ZWQpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBJZiBnYWRnZXQgaXMgZGVhY3RpdmF0ZWQgd2Ugb25s eSBzYXZlIG5ldyBzdGF0ZS4KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIEdh ZGdldCB3aWxsIGJlIGNvbm5lY3RlZCBhdXRvbWF0aWNhbGx5IGFmdGVyCj4gYWN0aXZhdGlvbi4K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICoKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICogdWRjIGZpcnN0IG5lZWRzIHRvIGJlIHN0YXJ0ZWQgYmVmb3JlIGdhZGdl dCBjYW4gYmUKPiBwdWxsZWQgdXAuCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ki8KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdhZGdldC0+Y29ubmVjdGVkID0g dHJ1ZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+IEBAIC03 MjQsMjIgKzcyMywzMiBAQCBpbnQgdXNiX2dhZGdldF9jb25uZWN0KHN0cnVjdCB1c2JfZ2FkZ2V0 Cj4gKmdhZGdldCkKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+IMKgfQo+IC1F WFBPUlRfU1lNQk9MX0dQTCh1c2JfZ2FkZ2V0X2Nvbm5lY3QpOwo+IMKgCj4gwqAvKioKPiAtICog dXNiX2dhZGdldF9kaXNjb25uZWN0IC0gc29mdHdhcmUtY29udHJvbGxlZCBkaXNjb25uZWN0IGZy b20gVVNCCj4gaG9zdAo+IC0gKiBAZ2FkZ2V0OnRoZSBwZXJpcGhlcmFsIGJlaW5nIGRpc2Nvbm5l Y3RlZAo+IC0gKgo+IC0gKiBEaXNhYmxlcyB0aGUgRCsgKG9yIHBvdGVudGlhbGx5IEQtKSBwdWxs dXAsIHdoaWNoIHRoZSBob3N0IG1heQo+IHNlZQo+IC0gKiBhcyBhIGRpc2Nvbm5lY3QgKHdoZW4g YSBWQlVTIHNlc3Npb24gaXMgYWN0aXZlKS7CoCBOb3QgYWxsIHN5c3RlbXMKPiAtICogc3VwcG9y dCBzb2Z0d2FyZSBwdWxsdXAgY29udHJvbHMuCj4gKyAqIHVzYl9nYWRnZXRfY29ubmVjdCAtIHNv ZnR3YXJlLWNvbnRyb2xsZWQgY29ubmVjdCB0byBVU0IgaG9zdAo+ICsgKiBAZ2FkZ2V0OnRoZSBw ZXJpcGhlcmFsIGJlaW5nIGNvbm5lY3RlZAo+IMKgICoKPiAtICogRm9sbG93aW5nIGEgc3VjY2Vz c2Z1bCBkaXNjb25uZWN0LCBpbnZva2UgdGhlIC0+ZGlzY29ubmVjdCgpCj4gY2FsbGJhY2sKPiAt ICogZm9yIHRoZSBjdXJyZW50IGdhZGdldCBkcml2ZXIgc28gdGhhdCBVREMgZHJpdmVycyBkb24n dCBuZWVkIHRvLgo+ICsgKiBFbmFibGVzIHRoZSBEKyAob3IgcG90ZW50aWFsbHkgRC0pIHB1bGx1 cC7CoCBUaGUgaG9zdCB3aWxsIHN0YXJ0Cj4gKyAqIGVudW1lcmF0aW5nIHRoaXMgZ2FkZ2V0IHdo ZW4gdGhlIHB1bGx1cCBpcyBhY3RpdmUgYW5kIGEgVkJVUwo+IHNlc3Npb24KPiArICogaXMgYWN0 aXZlICh0aGUgbGluayBpcyBwb3dlcmVkKS4KPiDCoCAqCj4gwqAgKiBSZXR1cm5zIHplcm8gb24g c3VjY2VzcywgZWxzZSBuZWdhdGl2ZSBlcnJuby4KPiDCoCAqLwo+IC1pbnQgdXNiX2dhZGdldF9k aXNjb25uZWN0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpCj4gK2ludCB1c2JfZ2FkZ2V0X2Nv bm5lY3Qoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGlu dCByZXQ7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2xvY2soJmdhZGdldC0+dWRjLT5jb25u ZWN0X2xvY2spOwo+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHVzYl9nYWRnZXRfY29ubmVjdF9sb2Nr ZWQoZ2FkZ2V0KTsKPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmdhZGdldC0+dWRjLT5j b25uZWN0X2xvY2spOwo+ICsKPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gcmV0Owo+ICt9Cj4gK0VY UE9SVF9TWU1CT0xfR1BMKHVzYl9nYWRnZXRfY29ubmVjdCk7Cj4gKwo+ICsvKiBJbnRlcm5hbCB2 ZXJzaW9uIG9mIHVzYl9nYWRnZXRfZGlzY29ubmVjdCBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aAo+ IGNvbm5lY3RfbG9jayBoZWxkLiAqLwo+ICtzdGF0aWMgaW50IHVzYl9nYWRnZXRfZGlzY29ubmVj dF9sb2NrZWQoc3RydWN0IHVzYl9nYWRnZXQgKmdhZGdldCkKPiArwqDCoMKgwqDCoMKgwqBfX211 c3RfaG9sZCgmZ2FkZ2V0LT51ZGMtPmNvbm5lY3RfbG9jaykKPiDCoHsKPiDCoMKgwqDCoMKgwqDC oMKgaW50IHJldCA9IDA7Cj4gwqAKPiBAQCAtNzUxLDEwICs3NjAsMTIgQEAgaW50IHVzYl9nYWRn ZXRfZGlzY29ubmVjdChzdHJ1Y3QgdXNiX2dhZGdldAo+ICpnYWRnZXQpCj4gwqDCoMKgwqDCoMKg wqDCoGlmICghZ2FkZ2V0LT5jb25uZWN0ZWQpCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBnb3RvIG91dDsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlmIChnYWRnZXQtPmRlYWN0aXZh dGVkKSB7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKGdhZGdldC0+ZGVhY3RpdmF0ZWQgfHwgIWdhZGdl dC0+dWRjLT5zdGFydGVkKSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogSWYgZ2FkZ2V0IGlzIGRlYWN0aXZh dGVkIHdlIG9ubHkgc2F2ZSBuZXcgc3RhdGUuCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKiBHYWRnZXQgd2lsbCBzdGF5IGRpc2Nvbm5lY3RlZCBhZnRlciBhY3RpdmF0aW9uLgo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiB1ZGMgc2hvdWxkIGhhdmUgYmVlbiBzdGFydGVkIGJlZm9yZSBnYWRnZXQg YmVpbmcKPiBwdWxsZWQgZG93bi4KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq Lwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ2FkZ2V0LT5jb25uZWN0ZWQgPSBm YWxzZTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+IEBAIC03 NzQsNiArNzg1LDMwIEBAIGludCB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3Qoc3RydWN0IHVzYl9nYWRn ZXQKPiAqZ2FkZ2V0KQo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiByZXQ7Cj4gwqB9Cj4g Kwo+ICsvKioKPiArICogdXNiX2dhZGdldF9kaXNjb25uZWN0IC0gc29mdHdhcmUtY29udHJvbGxl ZCBkaXNjb25uZWN0IGZyb20gVVNCCj4gaG9zdAo+ICsgKiBAZ2FkZ2V0OnRoZSBwZXJpcGhlcmFs IGJlaW5nIGRpc2Nvbm5lY3RlZAo+ICsgKgo+ICsgKiBEaXNhYmxlcyB0aGUgRCsgKG9yIHBvdGVu dGlhbGx5IEQtKSBwdWxsdXAsIHdoaWNoIHRoZSBob3N0IG1heQo+IHNlZQo+ICsgKiBhcyBhIGRp c2Nvbm5lY3QgKHdoZW4gYSBWQlVTIHNlc3Npb24gaXMgYWN0aXZlKS7CoCBOb3QgYWxsIHN5c3Rl bXMKPiArICogc3VwcG9ydCBzb2Z0d2FyZSBwdWxsdXAgY29udHJvbHMuCj4gKyAqCj4gKyAqIEZv bGxvd2luZyBhIHN1Y2Nlc3NmdWwgZGlzY29ubmVjdCwgaW52b2tlIHRoZSAtPmRpc2Nvbm5lY3Qo KQo+IGNhbGxiYWNrCj4gKyAqIGZvciB0aGUgY3VycmVudCBnYWRnZXQgZHJpdmVyIHNvIHRoYXQg VURDIGRyaXZlcnMgZG9uJ3QgbmVlZCB0by4KPiArICoKPiArICogUmV0dXJucyB6ZXJvIG9uIHN1 Y2Nlc3MsIGVsc2UgbmVnYXRpdmUgZXJybm8uCj4gKyAqLwo+ICtpbnQgdXNiX2dhZGdldF9kaXNj b25uZWN0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpCj4gK3sKPiArwqDCoMKgwqDCoMKgwqBp bnQgcmV0Owo+ICsKPiArwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZnYWRnZXQtPnVkYy0+Y29u bmVjdF9sb2NrKTsKPiArwqDCoMKgwqDCoMKgwqByZXQgPSB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3Rf bG9ja2VkKGdhZGdldCk7Cj4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZnYWRnZXQtPnVk Yy0+Y29ubmVjdF9sb2NrKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIHJldDsKPiArfQo+ IMKgRVhQT1JUX1NZTUJPTF9HUEwodXNiX2dhZGdldF9kaXNjb25uZWN0KTsKPiDCoAo+IMKgLyoq Cj4gQEAgLTc5NCwxMCArODI5LDExIEBAIGludCB1c2JfZ2FkZ2V0X2RlYWN0aXZhdGUoc3RydWN0 IHVzYl9nYWRnZXQKPiAqZ2FkZ2V0KQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZ2FkZ2V0LT5kZWFj dGl2YXRlZCkKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+IMKg Cj4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygmZ2FkZ2V0LT51ZGMtPmNvbm5lY3RfbG9jayk7 Cj4gwqDCoMKgwqDCoMKgwqDCoGlmIChnYWRnZXQtPmNvbm5lY3RlZCkgewo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3QoZ2FkZ2V0KTsK PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gdXNiX2dhZGdldF9kaXNjb25u ZWN0X2xvY2tlZChnYWRnZXQpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYg KHJldCkKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdv dG8gb3V0Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Z290byB1bmxvY2s7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qCj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBJZiBnYWRnZXQgd2FzIGJlaW5nIGNv bm5lY3RlZCBiZWZvcmUgZGVhY3RpdmF0aW9uLAo+IHdlIHdhbnQKPiBAQCAtODA3LDYgKzg0Myw4 IEBAIGludCB1c2JfZ2FkZ2V0X2RlYWN0aXZhdGUoc3RydWN0IHVzYl9nYWRnZXQKPiAqZ2FkZ2V0 KQo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoGdhZGdldC0+ZGVhY3RpdmF0 ZWQgPSB0cnVlOwo+IMKgCj4gK3VubG9jazoKPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2so JmdhZGdldC0+dWRjLT5jb25uZWN0X2xvY2spOwo+IMKgb3V0Ogo+IMKgwqDCoMKgwqDCoMKgwqB0 cmFjZV91c2JfZ2FkZ2V0X2RlYWN0aXZhdGUoZ2FkZ2V0LCByZXQpOwo+IMKgCj4gQEAgLTgzMCw2 ICs4NjgsNyBAQCBpbnQgdXNiX2dhZGdldF9hY3RpdmF0ZShzdHJ1Y3QgdXNiX2dhZGdldAo+ICpn YWRnZXQpCj4gwqDCoMKgwqDCoMKgwqDCoGlmICghZ2FkZ2V0LT5kZWFjdGl2YXRlZCkKPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0Owo+IMKgCj4gK8KgwqDCoMKgwqDC oMKgbXV0ZXhfbG9jaygmZ2FkZ2V0LT51ZGMtPmNvbm5lY3RfbG9jayk7Cj4gwqDCoMKgwqDCoMKg wqDCoGdhZGdldC0+ZGVhY3RpdmF0ZWQgPSBmYWxzZTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqAv Kgo+IEBAIC04MzcsNyArODc2LDggQEAgaW50IHVzYl9nYWRnZXRfYWN0aXZhdGUoc3RydWN0IHVz Yl9nYWRnZXQKPiAqZ2FkZ2V0KQo+IMKgwqDCoMKgwqDCoMKgwqAgKiB3aGlsZSBpdCB3YXMgYmVp bmcgZGVhY3RpdmF0ZWQsIHdlIGNhbGwKPiB1c2JfZ2FkZ2V0X2Nvbm5lY3QoKS4KPiDCoMKgwqDC oMKgwqDCoMKgICovCj4gwqDCoMKgwqDCoMKgwqDCoGlmIChnYWRnZXQtPmNvbm5lY3RlZCkKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0ID0gdXNiX2dhZGdldF9jb25uZWN0KGdh ZGdldCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IHVzYl9nYWRnZXRf Y29ubmVjdF9sb2NrZWQoZ2FkZ2V0KTsKPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJmdh ZGdldC0+dWRjLT5jb25uZWN0X2xvY2spOwo+IMKgCj4gwqBvdXQ6Cj4gwqDCoMKgwqDCoMKgwqDC oHRyYWNlX3VzYl9nYWRnZXRfYWN0aXZhdGUoZ2FkZ2V0LCByZXQpOwo+IEBAIC0xMDc4LDEyICsx MTE4LDEzIEBAIEVYUE9SVF9TWU1CT0xfR1BMKHVzYl9nYWRnZXRfc2V0X3N0YXRlKTsKPiDCoAo+ IMKgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KPiAtLS0tLS0tLSAqLwo+IMKgCj4gLXN0YXRpYyB2b2lkIHVzYl91ZGNf Y29ubmVjdF9jb250cm9sKHN0cnVjdCB1c2JfdWRjICp1ZGMpCj4gKy8qIEFjcXVpcmUgY29ubmVj dF9sb2NrIGJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uICovCj4gK3N0YXRpYyB2b2lkIHVz Yl91ZGNfY29ubmVjdF9jb250cm9sX2xvY2tlZChzdHJ1Y3QgdXNiX3VkYyAqdWRjKQo+IF9fbXVz dF9ob2xkKCZ1ZGMtPmNvbm5lY3RfbG9jaykKPiDCoHsKPiAtwqDCoMKgwqDCoMKgwqBpZiAodWRj LT52YnVzKQo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2JfZ2FkZ2V0X2Nvbm5l Y3QodWRjLT5nYWRnZXQpOwo+ICvCoMKgwqDCoMKgwqDCoGlmICh1ZGMtPnZidXMgJiYgdWRjLT5z dGFydGVkKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2JfZ2FkZ2V0X2Nvbm5l Y3RfbG9ja2VkKHVkYy0+Z2FkZ2V0KTsKPiDCoMKgwqDCoMKgwqDCoMKgZWxzZQo+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3QodWRjLT5nYWRnZXQp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2JfZ2FkZ2V0X2Rpc2Nvbm5lY3Rf bG9ja2VkKHVkYy0+Z2FkZ2V0KTsKPiDCoH0KPiDCoAo+IMKgLyoqCj4gQEAgLTEwOTksMTAgKzEx NDAsMTIgQEAgdm9pZCB1c2JfdWRjX3ZidXNfaGFuZGxlcihzdHJ1Y3QgdXNiX2dhZGdldAo+ICpn YWRnZXQsIGJvb2wgc3RhdHVzKQo+IMKgewo+IMKgwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgdXNiX3Vk YyAqdWRjID0gZ2FkZ2V0LT51ZGM7Cj4gwqAKPiArwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZ1 ZGMtPmNvbm5lY3RfbG9jayk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmICh1ZGMpIHsKPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVkYy0+dmJ1cyA9IHN0YXR1czsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgdXNiX3VkY19jb25uZWN0X2NvbnRyb2wodWRjKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdXNiX3VkY19jb25uZWN0X2NvbnRyb2xfbG9ja2Vk KHVkYyk7Cj4gwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2so JnVkYy0+Y29ubmVjdF9sb2NrKTsKPiDCoH0KPiDCoEVYUE9SVF9TWU1CT0xfR1BMKHVzYl91ZGNf dmJ1c19oYW5kbGVyKTsKPiDCoAo+IEBAIC0xMTI0LDcgKzExNjcsNyBAQCB2b2lkIHVzYl9nYWRn ZXRfdWRjX3Jlc2V0KHN0cnVjdCB1c2JfZ2FkZ2V0Cj4gKmdhZGdldCwKPiDCoEVYUE9SVF9TWU1C T0xfR1BMKHVzYl9nYWRnZXRfdWRjX3Jlc2V0KTsKPiDCoAo+IMKgLyoqCj4gLSAqIHVzYl9nYWRn ZXRfdWRjX3N0YXJ0IC0gdGVsbHMgdXNiIGRldmljZSBjb250cm9sbGVyIHRvIHN0YXJ0IHVwCj4g KyAqIHVzYl9nYWRnZXRfdWRjX3N0YXJ0X2xvY2tlZCAtIHRlbGxzIHVzYiBkZXZpY2UgY29udHJv bGxlciB0bwo+IHN0YXJ0IHVwCj4gwqAgKiBAdWRjOiBUaGUgVURDIHRvIGJlIHN0YXJ0ZWQKPiDC oCAqCj4gwqAgKiBUaGlzIGNhbGwgaXMgaXNzdWVkIGJ5IHRoZSBVREMgQ2xhc3MgZHJpdmVyIHdo ZW4gaXQncyBhYm91dAo+IEBAIC0xMTM1LDggKzExNzgsMTEgQEAgRVhQT1JUX1NZTUJPTF9HUEwo dXNiX2dhZGdldF91ZGNfcmVzZXQpOwo+IMKgICogbmVjZXNzYXJ5IHRvIGhhdmUgaXQgcG93ZXJl ZCBvbi4KPiDCoCAqCj4gwqAgKiBSZXR1cm5zIHplcm8gb24gc3VjY2VzcywgZWxzZSBuZWdhdGl2 ZSBlcnJuby4KPiArICoKPiArICogQ2FsbGVyIHNob3VsZCBhY3F1aXJlIGNvbm5lY3RfbG9jayBi ZWZvcmUgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KPiDCoCAqLwo+IC1zdGF0aWMgaW5saW5lIGlu dCB1c2JfZ2FkZ2V0X3VkY19zdGFydChzdHJ1Y3QgdXNiX3VkYyAqdWRjKQo+ICtzdGF0aWMgaW5s aW5lIGludCB1c2JfZ2FkZ2V0X3VkY19zdGFydF9sb2NrZWQoc3RydWN0IHVzYl91ZGMgKnVkYykK PiArwqDCoMKgwqDCoMKgwqBfX211c3RfaG9sZCgmdWRjLT5jb25uZWN0X2xvY2spCj4gwqB7Cj4g wqDCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gwqAKPiBAQCAtMTE1Myw3ICsxMTk5LDcgQEAgc3Rh dGljIGlubGluZSBpbnQgdXNiX2dhZGdldF91ZGNfc3RhcnQoc3RydWN0Cj4gdXNiX3VkYyAqdWRj KQo+IMKgfQo+IMKgCj4gwqAvKioKPiAtICogdXNiX2dhZGdldF91ZGNfc3RvcCAtIHRlbGxzIHVz YiBkZXZpY2UgY29udHJvbGxlciB3ZSBkb24ndCBuZWVkCj4gaXQgYW55bW9yZQo+ICsgKiB1c2Jf Z2FkZ2V0X3VkY19zdG9wX2xvY2tlZCAtIHRlbGxzIHVzYiBkZXZpY2UgY29udHJvbGxlciB3ZSBk b24ndAo+IG5lZWQgaXQgYW55bW9yZQo+IMKgICogQHVkYzogVGhlIFVEQyB0byBiZSBzdG9wcGVk Cj4gwqAgKgo+IMKgICogVGhpcyBjYWxsIGlzIGlzc3VlZCBieSB0aGUgVURDIENsYXNzIGRyaXZl ciBhZnRlciBjYWxsaW5nCj4gQEAgLTExNjIsOCArMTIwOCwxMSBAQCBzdGF0aWMgaW5saW5lIGlu dCB1c2JfZ2FkZ2V0X3VkY19zdGFydChzdHJ1Y3QKPiB1c2JfdWRjICp1ZGMpCj4gwqAgKiBUaGUg ZGV0YWlscyBhcmUgaW1wbGVtZW50YXRpb24gc3BlY2lmaWMsIGJ1dCBpdCBjYW4gZ28gYXMKPiDC oCAqIGZhciBhcyBwb3dlcmluZyBvZmYgVURDIGNvbXBsZXRlbHkgYW5kIGRpc2FibGUgaXRzIGRh dGEKPiDCoCAqIGxpbmUgcHVsbHVwcy4KPiArICoKPiArICogQ2FsbGVyIHNob3VsZCBhY3F1aXJl IGNvbm5lY3QgbG9jayBiZWZvcmUgaW52b2tpbmcgdGhpcyBmdW5jdGlvbi4KPiDCoCAqLwo+IC1z dGF0aWMgaW5saW5lIHZvaWQgdXNiX2dhZGdldF91ZGNfc3RvcChzdHJ1Y3QgdXNiX3VkYyAqdWRj KQo+ICtzdGF0aWMgaW5saW5lIHZvaWQgdXNiX2dhZGdldF91ZGNfc3RvcF9sb2NrZWQoc3RydWN0 IHVzYl91ZGMgKnVkYykKPiArwqDCoMKgwqDCoMKgwqBfX211c3RfaG9sZCgmdWRjLT5jb25uZWN0 X2xvY2spCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlmICghdWRjLT5zdGFydGVkKSB7Cj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkZXZfZXJyKCZ1ZGMtPmRldiwgIlVEQyBoYWQg YWxyZWFkeSBzdG9wcGVkXG4iKTsKPiBAQCAtMTMyMiw2ICsxMzcxLDcgQEAgaW50IHVzYl9hZGRf Z2FkZ2V0KHN0cnVjdCB1c2JfZ2FkZ2V0ICpnYWRnZXQpCj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg dWRjLT5nYWRnZXQgPSBnYWRnZXQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGdhZGdldC0+dWRjID0gdWRj Owo+ICvCoMKgwqDCoMKgwqDCoG11dGV4X2luaXQoJnVkYy0+Y29ubmVjdF9sb2NrKTsKPiDCoAo+ IMKgwqDCoMKgwqDCoMKgwqB1ZGMtPnN0YXJ0ZWQgPSBmYWxzZTsKPiDCoAo+IEBAIC0xNTIzLDEx ICsxNTczLDE1IEBAIHN0YXRpYyBpbnQgZ2FkZ2V0X2JpbmRfZHJpdmVyKHN0cnVjdCBkZXZpY2UK PiAqZGV2KQo+IMKgwqDCoMKgwqDCoMKgwqBpZiAocmV0KQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBlcnJfYmluZDsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoHJldCA9IHVz Yl9nYWRnZXRfdWRjX3N0YXJ0KHVkYyk7Cj4gLcKgwqDCoMKgwqDCoMKgaWYgKHJldCkKPiArwqDC oMKgwqDCoMKgwqBtdXRleF9sb2NrKCZ1ZGMtPmNvbm5lY3RfbG9jayk7Cj4gK8KgwqDCoMKgwqDC oMKgcmV0ID0gdXNiX2dhZGdldF91ZGNfc3RhcnRfbG9ja2VkKHVkYyk7Cj4gK8KgwqDCoMKgwqDC oMKgaWYgKHJldCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtdXRleF91bmxv Y2soJnVkYy0+Y29ubmVjdF9sb2NrKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGdvdG8gZXJyX3N0YXJ0Owo+ICvCoMKgwqDCoMKgwqDCoH0KPiDCoMKgwqDCoMKgwqDCoMKgdXNi X2dhZGdldF9lbmFibGVfYXN5bmNfY2FsbGJhY2tzKHVkYyk7Cj4gLcKgwqDCoMKgwqDCoMKgdXNi X3VkY19jb25uZWN0X2NvbnRyb2wodWRjKTsKPiArwqDCoMKgwqDCoMKgwqB1c2JfdWRjX2Nvbm5l Y3RfY29udHJvbF9sb2NrZWQodWRjKTsKPiArwqDCoMKgwqDCoMKgwqBtdXRleF91bmxvY2soJnVk Yy0+Y29ubmVjdF9sb2NrKTsKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBrb2JqZWN0X3VldmVudCgm dWRjLT5kZXYua29iaiwgS09CSl9DSEFOR0UpOwo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsK PiBAQCAtMTU1OCwxMiArMTYxMiwxNCBAQCBzdGF0aWMgdm9pZCBnYWRnZXRfdW5iaW5kX2RyaXZl cihzdHJ1Y3QKPiBkZXZpY2UgKmRldikKPiDCoAo+IMKgwqDCoMKgwqDCoMKgwqBrb2JqZWN0X3Vl dmVudCgmdWRjLT5kZXYua29iaiwgS09CSl9DSEFOR0UpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKg dXNiX2dhZGdldF9kaXNjb25uZWN0KGdhZGdldCk7Cj4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhfbG9j aygmdWRjLT5jb25uZWN0X2xvY2spOwo+ICvCoMKgwqDCoMKgwqDCoHVzYl9nYWRnZXRfZGlzY29u bmVjdF9sb2NrZWQoZ2FkZ2V0KTsKPiDCoMKgwqDCoMKgwqDCoMKgdXNiX2dhZGdldF9kaXNhYmxl X2FzeW5jX2NhbGxiYWNrcyh1ZGMpOwo+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZ2FkZ2V0LT5pcnEp Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzeW5jaHJvbml6ZV9pcnEoZ2FkZ2V0 LT5pcnEpOwo+IMKgwqDCoMKgwqDCoMKgwqB1ZGMtPmRyaXZlci0+dW5iaW5kKGdhZGdldCk7Cj4g LcKgwqDCoMKgwqDCoMKgdXNiX2dhZGdldF91ZGNfc3RvcCh1ZGMpOwo+ICvCoMKgwqDCoMKgwqDC oHVzYl9nYWRnZXRfdWRjX3N0b3BfbG9ja2VkKHVkYyk7Cj4gK8KgwqDCoMKgwqDCoMKgbXV0ZXhf dW5sb2NrKCZ1ZGMtPmNvbm5lY3RfbG9jayk7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhf bG9jaygmdWRjX2xvY2spOwo+IMKgwqDCoMKgwqDCoMKgwqBkcml2ZXItPmlzX2JvdW5kID0gZmFs c2U7Cj4gQEAgLTE2NDksMTEgKzE3MDUsMTUgQEAgc3RhdGljIHNzaXplX3Qgc29mdF9jb25uZWN0 X3N0b3JlKHN0cnVjdAo+IGRldmljZSAqZGV2LAo+IMKgwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDC oMKgwqDCoMKgwqDCoMKgaWYgKHN5c2ZzX3N0cmVxKGJ1ZiwgImNvbm5lY3QiKSkgewo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2JfZ2FkZ2V0X3VkY19zdGFydCh1ZGMpOwo+IC3C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2JfZ2FkZ2V0X2Nvbm5lY3QodWRjLT5nYWRn ZXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtdXRleF9sb2NrKCZ1ZGMtPmNv bm5lY3RfbG9jayk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVzYl9nYWRnZXRf dWRjX3N0YXJ0X2xvY2tlZCh1ZGMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1 c2JfZ2FkZ2V0X2Nvbm5lY3RfbG9ja2VkKHVkYy0+Z2FkZ2V0KTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZ1ZGMtPmNvbm5lY3RfbG9jayk7Cj4gwqDCoMKg wqDCoMKgwqDCoH0gZWxzZSBpZiAoc3lzZnNfc3RyZXEoYnVmLCAiZGlzY29ubmVjdCIpKSB7Cj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVzYl9nYWRnZXRfZGlzY29ubmVjdCh1ZGMt PmdhZGdldCk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVzYl9nYWRnZXRfdWRj X3N0b3AodWRjKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfbG9jaygm dWRjLT5jb25uZWN0X2xvY2spOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1c2Jf Z2FkZ2V0X2Rpc2Nvbm5lY3RfbG9ja2VkKHVkYy0+Z2FkZ2V0KTsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgdXNiX2dhZGdldF91ZGNfc3RvcF9sb2NrZWQodWRjKTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbXV0ZXhfdW5sb2NrKCZ1ZGMtPmNvbm5lY3RfbG9jayk7 Cj4gwqDCoMKgwqDCoMKgwqDCoH0gZWxzZSB7Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBkZXZfZXJyKGRldiwgInVuc3VwcG9ydGVkIGNvbW1hbmQgJyVzJ1xuIiwgYnVmKTsKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCA9IC1FSU5WQUw7Cj4gCj4gYmFzZS1j b21taXQ6IGQ2MjljMGUyMjFjZDk5MTk4Yjg0M2Q4MzUxYTBhOWJmZWM2YzA0MjMKCg==