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 Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F003DC77B6E for ; Thu, 13 Apr 2023 19:53:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229877AbjDMTxF (ORCPT ); Thu, 13 Apr 2023 15:53:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:45836 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229598AbjDMTxD (ORCPT ); Thu, 13 Apr 2023 15:53:03 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4FF1661BD; Thu, 13 Apr 2023 12:53:02 -0700 (PDT) Received: from nicolas-tpx395.localdomain (unknown [IPv6:2606:6d00:15:199e::580]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 2DFFD660321C; Thu, 13 Apr 2023 20:53:00 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1681415581; bh=Xmjp5lWuMHq/SjSflHdTaP3qxA46dZ+RFJK8UHWvH58=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=HQbr5eICiL/ndoU2UKiaY/BniNEDRXy4AizvQ2xXFsCew0NfNJ7iRiuYOjGlc92do EAZ8z8hpvkcor6lzLCkUx4eAR7YQEIFZ8UUJdENB6eUxARg55Qe/fLOW7z0cEvwvqW SX065YHK7xhaWsYvn3M2/jS2XrUb2nP/KHSDiwjPA3YigmEROpJEJYQPRbLTQ+d2A1 FWg2nC3PuINjARYPk4czzj4OgB49X8zpoziVLGyftyiKQ1U5MFrTVF1XBlXCXwMKDS 2CHwxPM5dLod/JR1xRbiYZGETi4B78jLKv+lZbJQOg3S+jtnDoWVbnICUUWYXR0PVJ j+4FneiRrCMrQ== Message-ID: <403ea30e55a9667684cd1f8d2d3a641efda9976f.camel@collabora.com> Subject: Re: [PATCH v2] media: verisilicon: Fix crash when probing encoder From: Nicolas Dufresne To: Ezequiel Garcia , Benjamin Gaignard Cc: p.zabel@pengutronix.de, mchehab@kernel.org, m.szyprowski@samsung.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com Date: Thu, 13 Apr 2023 15:52:50 -0400 In-Reply-To: References: <20230413104756.356695-1-benjamin.gaignard@collabora.com> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, Le jeudi 13 avril 2023 =C3=A0 10:10 -0300, Ezequiel Garcia a =C3=A9crit=C2= =A0: > Benjamin, >=20 > Please include the crash stracktrace in the commit. >=20 >=20 Careful with HTML message, they don't always make it in these ML and toolin= g might not play well with the tooling. Perhaps it can be edited while pullin= g ? Here's the info from Marek's bug report: hantro-vpu fdea0000.video-codec: Adding to iommu group 0 hantro-vpu fdea0000.video-codec: registered rockchip,rk3568-vpu-dec as=20 /dev/video0 hantro-vpu fdee0000.video-codec: Adding to iommu group 1 hantro-vpu fdee0000.video-codec: registered rockchip,rk3568-vepu-enc as=20 /dev/video1 Unable to handle kernel NULL pointer dereference at virtual address=20 0000000000000008 Mem abort info: ESR =3D 0x0000000096000004 EC =3D 0x25: DABT (current EL), IL =3D 32 bits SET =3D 0, FnV =3D 0 EA =3D 0, S1PTW =3D 0 FSC =3D 0x04: level 0 translation fault Data abort info: ISV =3D 0, ISS =3D 0x00000004 CM =3D 0, WnR =3D 0 user pgtable: 4k pages, 48-bit VAs, pgdp=3D00000001f446f000 [0000000000000008] pgd=3D0000000000000000, p4d=3D0000000000000000 Internal error: Oops: 0000000096000004 [#1] PREEMPT SMP Modules linked in: hantro_vpu v4l2_vp9 v4l2_h264 v4l2_mem2mem=20 videobuf2_dma_contig snd_soc_simple_card display_connector=20 snd_soc_simple_card_utils videobuf2_memops crct10dif_ce dwmac_rk=20 rockchip_thermal videobuf2_v4l2 stmmac_platform rockchip_saradc=20 industrialio_triggered_buffer kfifo_buf stmmac videodev pcs_xpcs=20 rtc_rk808 videobuf2_common rockchipdrm panfrost mc drm_shmem_helper=20 analogix_dp gpu_sched dw_mipi_dsi dw_hdmi drm_display_helper ip_tables=20 x_tables ipv6 CPU: 3 PID: 171 Comm: v4l_id Not tainted 6.3.0-rc2+ #13478 Hardware name: Hardkernel ODROID-M1 (DT) pstate: 60400009 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=3D--) pc : hantro_try_fmt+0xb4/0x280 [hantro_vpu] lr : hantro_try_fmt+0xa8/0x280 [hantro_vpu] ... Call trace: hantro_try_fmt+0xb4/0x280 [hantro_vpu] hantro_set_fmt_out+0x3c/0x278 [hantro_vpu] hantro_reset_raw_fmt+0x94/0xb4 [hantro_vpu] hantro_set_fmt_cap+0x23c/0x250 [hantro_vpu] hantro_reset_fmts+0x94/0xcc [hantro_vpu] hantro_open+0xd4/0x20c [hantro_vpu] v4l2_open+0x80/0x120 [videodev] chrdev_open+0xc0/0x22c do_dentry_open+0x13c/0x490 vfs_open+0x2c/0x38 path_openat+0x550/0x938 do_filp_open+0x80/0x12c do_sys_openat2+0xb4/0x16c __arm64_sys_openat+0x64/0xac invoke_syscall+0x48/0x114 el0_svc_common.constprop.0+0xfc/0x11c do_el0_svc+0x38/0xa4 el0_svc+0x48/0xb8 el0t_64_sync_handler+0xb8/0xbc el0t_64_sync+0x190/0x194 Code: 97fe726c f940aa80 52864a61 72a686c1 (b9400800) ---[ end trace 0000000000000000 ]--- >=20 > Thanks, > Ezequiel >=20 >=20 > On Thu, Apr 13, 2023 at 7:48=E2=80=AFAM Benjamin Gaignard > wrote: > > ctx->vpu_dst_fmt is no more initialized before calling hantro_try_fmt() > > so assigne it to vpu_fmt led to crash the kernel. > > Like for decoder case use 'fmt' as format for encoder and clean up > > the code. > >=20 > > Signed-off-by: Benjamin Gaignard > > Tested-by: Marek Szyprowski > > Fixes: db6f68b51e5c ("media: verisilicon: Do not set context src/dst fo= rmats > > in reset functions") > > --- > > version 2: > > - Remove useless vpu_fmt. > >=20 > > =C2=A0drivers/media/platform/verisilicon/hantro_v4l2.c | 10 +++------- > > =C2=A01 file changed, 3 insertions(+), 7 deletions(-) > >=20 > > diff --git a/drivers/media/platform/verisilicon/hantro_v4l2.c > > b/drivers/media/platform/verisilicon/hantro_v4l2.c > > index 8f1414085f47..d71f79471396 100644 > > --- a/drivers/media/platform/verisilicon/hantro_v4l2.c > > +++ b/drivers/media/platform/verisilicon/hantro_v4l2.c > > @@ -275,7 +275,7 @@ static int hantro_try_fmt(const struct hantro_ctx *= ctx, > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 struct v4l2_pix_format_mplane *pix_mp, > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 enum v4l2_buf_type type) > > =C2=A0{ > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0const struct hantro_fmt *fmt, *vpu_fmt; > > +=C2=A0 =C2=A0 =C2=A0 =C2=A0const struct hantro_fmt *fmt; > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 bool capture =3D V4L2_TYPE_IS_CAPTURE(type)= ; > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 bool coded; > >=20 > > @@ -295,11 +295,7 @@ static int hantro_try_fmt(const struct hantro_ctx = *ctx, > >=20 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (coded) { > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pix_mp->num_pla= nes =3D 1; > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0vpu_fmt =3D fmt= ; > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0} else if (ctx->is_encoder) { > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0vpu_fmt =3D ctx= ->vpu_dst_fmt; > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0} else { > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0vpu_fmt =3D fmt= ; > > +=C2=A0 =C2=A0 =C2=A0 =C2=A0} else if (!ctx->is_encoder) { > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* Width/h= eight on the CAPTURE end of a decoder are ignored > > and > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0* replace= d by the OUTPUT ones. > > @@ -311,7 +307,7 @@ static int hantro_try_fmt(const struct hantro_ctx *= ctx, > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 pix_mp->field =3D V4L2_FIELD_NONE; > >=20 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 v4l2_apply_frmsize_constraints(&pix_mp->wid= th, &pix_mp->height, > > -=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &vpu_fmt->fr= msize); > > +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 &fmt->frmsiz= e); > >=20 > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (!coded) { > > =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 /* Fill remaini= ng fields */ 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 Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 3948FC77B61 for ; Thu, 13 Apr 2023 19:53:13 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:Cc:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=/V6CWXar7bxENpjZRJZPYGYvt/VuiBvwP3FVEDFRyGU=; b=vGQioy8KRlorLR xNOvE9ksvWPcyqlGufoEbeTJFMyEGNfZE05qFlHUNSABeoN9HKF/c33T3L4crmKmPIUEEj9DYFpMq uoZ9+9hZR7FmaVzbz5LL9GIgMDWj3k/ho41G5YT6BoAzeiwylzob+XMAQ5wmC9+38UNJzGS3lHInC TU4lYgL5vp7ZElKM1u4HnxciOyj3wJkOu3aDCptv8iWzkNnaSNvEWviNfnPu1/2LBF7XyzLyBrIxR JzyMej7/3MUdm+zSgL4aIafWQ8lu3tPhpB755nmbm3DCTOcIUYRii/fQokKZu06hgQuxi8q2rQshB D6o8j2k9tcrJ65f5B9oQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pn30D-0072zg-2i; Thu, 13 Apr 2023 19:53:05 +0000 Received: from madras.collabora.co.uk ([2a00:1098:0:82:1000:25:2eeb:e5ab]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pn30A-0072yz-2I for linux-rockchip@lists.infradead.org; Thu, 13 Apr 2023 19:53:04 +0000 Received: from nicolas-tpx395.localdomain (unknown [IPv6:2606:6d00:15:199e::580]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: nicolas) by madras.collabora.co.uk (Postfix) with ESMTPSA id 2DFFD660321C; Thu, 13 Apr 2023 20:53:00 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1681415581; bh=Xmjp5lWuMHq/SjSflHdTaP3qxA46dZ+RFJK8UHWvH58=; h=Subject:From:To:Cc:Date:In-Reply-To:References:From; b=HQbr5eICiL/ndoU2UKiaY/BniNEDRXy4AizvQ2xXFsCew0NfNJ7iRiuYOjGlc92do EAZ8z8hpvkcor6lzLCkUx4eAR7YQEIFZ8UUJdENB6eUxARg55Qe/fLOW7z0cEvwvqW SX065YHK7xhaWsYvn3M2/jS2XrUb2nP/KHSDiwjPA3YigmEROpJEJYQPRbLTQ+d2A1 FWg2nC3PuINjARYPk4czzj4OgB49X8zpoziVLGyftyiKQ1U5MFrTVF1XBlXCXwMKDS 2CHwxPM5dLod/JR1xRbiYZGETi4B78jLKv+lZbJQOg3S+jtnDoWVbnICUUWYXR0PVJ j+4FneiRrCMrQ== Message-ID: <403ea30e55a9667684cd1f8d2d3a641efda9976f.camel@collabora.com> Subject: Re: [PATCH v2] media: verisilicon: Fix crash when probing encoder From: Nicolas Dufresne To: Ezequiel Garcia , Benjamin Gaignard Cc: p.zabel@pengutronix.de, mchehab@kernel.org, m.szyprowski@samsung.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-kernel@vger.kernel.org, kernel@collabora.com Date: Thu, 13 Apr 2023 15:52:50 -0400 In-Reply-To: References: <20230413104756.356695-1-benjamin.gaignard@collabora.com> User-Agent: Evolution 3.46.4 (3.46.4-1.fc37) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230413_125303_012112_909CD818 X-CRM114-Status: GOOD ( 19.37 ) X-BeenThere: linux-rockchip@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Upstream kernel work for Rockchip platforms List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org SGksCgpMZSBqZXVkaSAxMyBhdnJpbCAyMDIzIMOgIDEwOjEwIC0wMzAwLCBFemVxdWllbCBHYXJj aWEgYSDDqWNyaXTCoDoKPiBCZW5qYW1pbiwKPiAKPiBQbGVhc2UgaW5jbHVkZSB0aGUgY3Jhc2gg c3RyYWNrdHJhY2UgaW4gdGhlIGNvbW1pdC4KPiAKPiAKQ2FyZWZ1bCB3aXRoIEhUTUwgbWVzc2Fn ZSwgdGhleSBkb24ndCBhbHdheXMgbWFrZSBpdCBpbiB0aGVzZSBNTCBhbmQgdG9vbGluZwptaWdo dCBub3QgcGxheSB3ZWxsIHdpdGggdGhlIHRvb2xpbmcuIFBlcmhhcHMgaXQgY2FuIGJlIGVkaXRl ZCB3aGlsZSBwdWxsaW5nID8KSGVyZSdzIHRoZSBpbmZvIGZyb20gTWFyZWsncyBidWcgcmVwb3J0 OgoKaGFudHJvLXZwdSBmZGVhMDAwMC52aWRlby1jb2RlYzogQWRkaW5nIHRvIGlvbW11IGdyb3Vw IDAKaGFudHJvLXZwdSBmZGVhMDAwMC52aWRlby1jb2RlYzogcmVnaXN0ZXJlZCByb2NrY2hpcCxy azM1NjgtdnB1LWRlYyBhcyAKL2Rldi92aWRlbzAKaGFudHJvLXZwdSBmZGVlMDAwMC52aWRlby1j b2RlYzogQWRkaW5nIHRvIGlvbW11IGdyb3VwIDEKaGFudHJvLXZwdSBmZGVlMDAwMC52aWRlby1j b2RlYzogcmVnaXN0ZXJlZCByb2NrY2hpcCxyazM1NjgtdmVwdS1lbmMgYXMgCi9kZXYvdmlkZW8x ClVuYWJsZSB0byBoYW5kbGUga2VybmVsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhdCB2aXJ0 dWFsIGFkZHJlc3MgCjAwMDAwMDAwMDAwMDAwMDgKTWVtIGFib3J0IGluZm86CiAgIEVTUiA9IDB4 MDAwMDAwMDA5NjAwMDAwNAogICBFQyA9IDB4MjU6IERBQlQgKGN1cnJlbnQgRUwpLCBJTCA9IDMy IGJpdHMKICAgU0VUID0gMCwgRm5WID0gMAogICBFQSA9IDAsIFMxUFRXID0gMAogICBGU0MgPSAw eDA0OiBsZXZlbCAwIHRyYW5zbGF0aW9uIGZhdWx0CkRhdGEgYWJvcnQgaW5mbzoKICAgSVNWID0g MCwgSVNTID0gMHgwMDAwMDAwNAogICBDTSA9IDAsIFduUiA9IDAKdXNlciBwZ3RhYmxlOiA0ayBw YWdlcywgNDgtYml0IFZBcywgcGdkcD0wMDAwMDAwMWY0NDZmMDAwClswMDAwMDAwMDAwMDAwMDA4 XSBwZ2Q9MDAwMDAwMDAwMDAwMDAwMCwgcDRkPTAwMDAwMDAwMDAwMDAwMDAKSW50ZXJuYWwgZXJy b3I6IE9vcHM6IDAwMDAwMDAwOTYwMDAwMDQgWyMxXSBQUkVFTVBUIFNNUApNb2R1bGVzIGxpbmtl ZCBpbjogaGFudHJvX3ZwdSB2NGwyX3ZwOSB2NGwyX2gyNjQgdjRsMl9tZW0ybWVtIAp2aWRlb2J1 ZjJfZG1hX2NvbnRpZyBzbmRfc29jX3NpbXBsZV9jYXJkIGRpc3BsYXlfY29ubmVjdG9yIApzbmRf c29jX3NpbXBsZV9jYXJkX3V0aWxzIHZpZGVvYnVmMl9tZW1vcHMgY3JjdDEwZGlmX2NlIGR3bWFj X3JrIApyb2NrY2hpcF90aGVybWFsIHZpZGVvYnVmMl92NGwyIHN0bW1hY19wbGF0Zm9ybSByb2Nr Y2hpcF9zYXJhZGMgCmluZHVzdHJpYWxpb190cmlnZ2VyZWRfYnVmZmVyIGtmaWZvX2J1ZiBzdG1t YWMgdmlkZW9kZXYgcGNzX3hwY3MgCnJ0Y19yazgwOCB2aWRlb2J1ZjJfY29tbW9uIHJvY2tjaGlw ZHJtIHBhbmZyb3N0IG1jIGRybV9zaG1lbV9oZWxwZXIgCmFuYWxvZ2l4X2RwIGdwdV9zY2hlZCBk d19taXBpX2RzaSBkd19oZG1pIGRybV9kaXNwbGF5X2hlbHBlciBpcF90YWJsZXMgCnhfdGFibGVz IGlwdjYKQ1BVOiAzIFBJRDogMTcxIENvbW06IHY0bF9pZCBOb3QgdGFpbnRlZCA2LjMuMC1yYzIr ICMxMzQ3OApIYXJkd2FyZSBuYW1lOiBIYXJka2VybmVsIE9EUk9JRC1NMSAoRFQpCnBzdGF0ZTog NjA0MDAwMDkgKG5aQ3YgZGFpZiArUEFOIC1VQU8gLVRDTyAtRElUIC1TU0JTIEJUWVBFPS0tKQpw YyA6IGhhbnRyb190cnlfZm10KzB4YjQvMHgyODAgW2hhbnRyb192cHVdCmxyIDogaGFudHJvX3Ry eV9mbXQrMHhhOC8weDI4MCBbaGFudHJvX3ZwdV0KLi4uCkNhbGwgdHJhY2U6CiAgaGFudHJvX3Ry eV9mbXQrMHhiNC8weDI4MCBbaGFudHJvX3ZwdV0KICBoYW50cm9fc2V0X2ZtdF9vdXQrMHgzYy8w eDI3OCBbaGFudHJvX3ZwdV0KICBoYW50cm9fcmVzZXRfcmF3X2ZtdCsweDk0LzB4YjQgW2hhbnRy b192cHVdCiAgaGFudHJvX3NldF9mbXRfY2FwKzB4MjNjLzB4MjUwIFtoYW50cm9fdnB1XQogIGhh bnRyb19yZXNldF9mbXRzKzB4OTQvMHhjYyBbaGFudHJvX3ZwdV0KICBoYW50cm9fb3BlbisweGQ0 LzB4MjBjIFtoYW50cm9fdnB1XQogIHY0bDJfb3BlbisweDgwLzB4MTIwIFt2aWRlb2Rldl0KICBj aHJkZXZfb3BlbisweGMwLzB4MjJjCiAgZG9fZGVudHJ5X29wZW4rMHgxM2MvMHg0OTAKICB2ZnNf b3BlbisweDJjLzB4MzgKICBwYXRoX29wZW5hdCsweDU1MC8weDkzOAogIGRvX2ZpbHBfb3Blbisw eDgwLzB4MTJjCiAgZG9fc3lzX29wZW5hdDIrMHhiNC8weDE2YwogIF9fYXJtNjRfc3lzX29wZW5h dCsweDY0LzB4YWMKICBpbnZva2Vfc3lzY2FsbCsweDQ4LzB4MTE0CiAgZWwwX3N2Y19jb21tb24u Y29uc3Rwcm9wLjArMHhmYy8weDExYwogIGRvX2VsMF9zdmMrMHgzOC8weGE0CiAgZWwwX3N2Yysw eDQ4LzB4YjgKICBlbDB0XzY0X3N5bmNfaGFuZGxlcisweGI4LzB4YmMKICBlbDB0XzY0X3N5bmMr MHgxOTAvMHgxOTQKQ29kZTogOTdmZTcyNmMgZjk0MGFhODAgNTI4NjRhNjEgNzJhNjg2YzEgKGI5 NDAwODAwKQotLS1bIGVuZCB0cmFjZSAwMDAwMDAwMDAwMDAwMDAwIF0tLS0KCgo+IAo+IFRoYW5r cywKPiBFemVxdWllbAo+IAo+IAo+IE9uIFRodSwgQXByIDEzLCAyMDIzIGF0IDc6NDjigK9BTSBC ZW5qYW1pbiBHYWlnbmFyZAo+IDxiZW5qYW1pbi5nYWlnbmFyZEBjb2xsYWJvcmEuY29tPiB3cm90 ZToKPiA+IGN0eC0+dnB1X2RzdF9mbXQgaXMgbm8gbW9yZSBpbml0aWFsaXplZCBiZWZvcmUgY2Fs bGluZyBoYW50cm9fdHJ5X2ZtdCgpCj4gPiBzbyBhc3NpZ25lIGl0IHRvIHZwdV9mbXQgbGVkIHRv IGNyYXNoIHRoZSBrZXJuZWwuCj4gPiBMaWtlIGZvciBkZWNvZGVyIGNhc2UgdXNlICdmbXQnIGFz IGZvcm1hdCBmb3IgZW5jb2RlciBhbmQgY2xlYW4gdXAKPiA+IHRoZSBjb2RlLgo+ID4gCj4gPiBT aWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBHYWlnbmFyZCA8YmVuamFtaW4uZ2FpZ25hcmRAY29sbGFi b3JhLmNvbT4KPiA+IFRlc3RlZC1ieTogTWFyZWsgU3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNh bXN1bmcuY29tPgo+ID4gRml4ZXM6IGRiNmY2OGI1MWU1YyAoIm1lZGlhOiB2ZXJpc2lsaWNvbjog RG8gbm90IHNldCBjb250ZXh0IHNyYy9kc3QgZm9ybWF0cwo+ID4gaW4gcmVzZXQgZnVuY3Rpb25z IikKPiA+IC0tLQo+ID4gdmVyc2lvbiAyOgo+ID4gLSBSZW1vdmUgdXNlbGVzcyB2cHVfZm10Lgo+ ID4gCj4gPiDCoGRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vdmVyaXNpbGljb24vaGFudHJvX3Y0bDIu YyB8IDEwICsrKy0tLS0tLS0KPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvcGxhdGZv cm0vdmVyaXNpbGljb24vaGFudHJvX3Y0bDIuYwo+ID4gYi9kcml2ZXJzL21lZGlhL3BsYXRmb3Jt L3ZlcmlzaWxpY29uL2hhbnRyb192NGwyLmMKPiA+IGluZGV4IDhmMTQxNDA4NWY0Ny4uZDcxZjc5 NDcxMzk2IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS92ZXJpc2lsaWNv bi9oYW50cm9fdjRsMi5jCj4gPiArKysgYi9kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3ZlcmlzaWxp Y29uL2hhbnRyb192NGwyLmMKPiA+IEBAIC0yNzUsNyArMjc1LDcgQEAgc3RhdGljIGludCBoYW50 cm9fdHJ5X2ZtdChjb25zdCBzdHJ1Y3QgaGFudHJvX2N0eCAqY3R4LAo+ID4gwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc3RydWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUg KnBpeF9tcCwKPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIGVudW0g djRsMl9idWZfdHlwZSB0eXBlKQo+ID4gwqB7Cj4gPiAtwqAgwqAgwqAgwqBjb25zdCBzdHJ1Y3Qg aGFudHJvX2ZtdCAqZm10LCAqdnB1X2ZtdDsKPiA+ICvCoCDCoCDCoCDCoGNvbnN0IHN0cnVjdCBo YW50cm9fZm10ICpmbXQ7Cj4gPiDCoCDCoCDCoCDCoCBib29sIGNhcHR1cmUgPSBWNEwyX1RZUEVf SVNfQ0FQVFVSRSh0eXBlKTsKPiA+IMKgIMKgIMKgIMKgIGJvb2wgY29kZWQ7Cj4gPiAKPiA+IEBA IC0yOTUsMTEgKzI5NSw3IEBAIHN0YXRpYyBpbnQgaGFudHJvX3RyeV9mbXQoY29uc3Qgc3RydWN0 IGhhbnRyb19jdHggKmN0eCwKPiA+IAo+ID4gwqAgwqAgwqAgwqAgaWYgKGNvZGVkKSB7Cj4gPiDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBwaXhfbXAtPm51bV9wbGFuZXMgPSAxOwo+ID4gLcKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgdnB1X2ZtdCA9IGZtdDsKPiA+IC3CoCDCoCDCoCDCoH0gZWxzZSBp ZiAoY3R4LT5pc19lbmNvZGVyKSB7Cj4gPiAtwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqB2cHVfZm10 ID0gY3R4LT52cHVfZHN0X2ZtdDsKPiA+IC3CoCDCoCDCoCDCoH0gZWxzZSB7Cj4gPiAtwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqB2cHVfZm10ID0gZm10Owo+ID4gK8KgIMKgIMKgIMKgfSBlbHNlIGlm ICghY3R4LT5pc19lbmNvZGVyKSB7Cj4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAvKgo+ID4g wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAqIFdpZHRoL2hlaWdodCBvbiB0aGUgQ0FQVFVSRSBl bmQgb2YgYSBkZWNvZGVyIGFyZSBpZ25vcmVkCj4gPiBhbmQKPiA+IMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgKiByZXBsYWNlZCBieSB0aGUgT1VUUFVUIG9uZXMuCj4gPiBAQCAtMzExLDcgKzMw Nyw3IEBAIHN0YXRpYyBpbnQgaGFudHJvX3RyeV9mbXQoY29uc3Qgc3RydWN0IGhhbnRyb19jdHgg KmN0eCwKPiA+IMKgIMKgIMKgIMKgIHBpeF9tcC0+ZmllbGQgPSBWNEwyX0ZJRUxEX05PTkU7Cj4g PiAKPiA+IMKgIMKgIMKgIMKgIHY0bDJfYXBwbHlfZnJtc2l6ZV9jb25zdHJhaW50cygmcGl4X21w LT53aWR0aCwgJnBpeF9tcC0+aGVpZ2h0LAo+ID4gLcKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICZ2cHVfZm10LT5mcm1zaXplKTsKPiA+ICvC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAm Zm10LT5mcm1zaXplKTsKPiA+IAo+ID4gwqAgwqAgwqAgwqAgaWYgKCFjb2RlZCkgewo+ID4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogRmlsbCByZW1haW5pbmcgZmllbGRzICovCgoKX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTGludXgtcm9ja2NoaXAg bWFpbGluZyBsaXN0CkxpbnV4LXJvY2tjaGlwQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDovL2xp c3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1yb2NrY2hpcAo=