From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from madras.collabora.co.uk (madras.collabora.co.uk [46.235.227.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4D2CF2F2D; Fri, 24 Mar 2023 08:56:40 +0000 (UTC) Received: from [IPV6:2a01:e0a:120:3210:1cb3:11e4:5834:9d5a] (unknown [IPv6:2a01:e0a:120:3210:1cb3:11e4:5834:9d5a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madras.collabora.co.uk (Postfix) with ESMTPSA id B52946603111; Fri, 24 Mar 2023 08:56:37 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1679648198; bh=fSTAJcZ+stux5F7CVDxrYSB6CjZcdcUM5EQHkwSolOQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=KKVdO9t0sYkHaJ1tstArEyba/Fvd76PT+Bb8whfZp36eVUKPCYx6dyCpSzgaHNQp9 PwavG2SpFEZPWYNj8NHCvb7hfu0czslZWU1neac/udmuLbgOdOevERU3lx0d2roFkM ZY0njDbuL4MOMUmrRdEc5kyjlWN3steO1fR3FNSalz3wH+kgoCxB5l3b0+K9JA11ie uTdtvV2M3vKrzlUSFuJPpYcGZke6Dw4wZkh9VCo4R2VAC5dhhRE0+5YHyERpLZc6cH Ky37tKSoz4+Si/+YVszJgLXCKE1wq4wvSl/WETQfTQAiot7Ys4CfAsugbkirmU2Inz cbMAAZQAM0FiA== Message-ID: <7ad524a1-c54f-a01c-3453-2cf1f0f82a13@collabora.com> Date: Fri, 24 Mar 2023 09:56:34 +0100 Precedence: bulk X-Mailing-List: oe-kbuild@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v2 2/8] media: videobuf2: Make bufs array dynamic allocated Content-Language: en-US To: Hans Verkuil , Laurent Pinchart Cc: Dan Carpenter , oe-kbuild@lists.linux.dev, tfiga@chromium.org, m.szyprowski@samsung.com, mchehab@kernel.org, ming.qian@nxp.com, shijie.qin@nxp.com, eagle.zhou@nxp.com, bin.liu@mediatek.com, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, tiffany.lin@mediatek.com, andrew-ct.chen@mediatek.com, yunfei.dong@mediatek.com, stanimir.k.varbanov@gmail.com, quic_vgarodia@quicinc.com, agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, daniel.almeida@collabora.com, lkp@intel.com, oe-kbuild-all@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com References: <4e2cb832-de83-4ba6-bd8a-119a19038cfe@kili.mountain> <20230324084830.GA18895@pendragon.ideasonboard.com> From: Benjamin Gaignard In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Le 24/03/2023 à 09:52, Hans Verkuil a écrit : > On 24/03/2023 09:48, Laurent Pinchart wrote: >> On Fri, Mar 24, 2023 at 09:31:35AM +0100, Hans Verkuil wrote: >>> On 24/03/2023 09:11, Benjamin Gaignard wrote: >>>> Le 24/03/2023 à 06:01, Dan Carpenter a écrit : >>>>> Hi Benjamin, >>>>> >>>>> https://git-scm.com/docs/git-format-patch#_base_tree_information] >>>>> >>>>> url:    https://github.com/intel-lab-lkp/linux/commits/Benjamin-Gaignard/media-videobuf2-Access-vb2_queue-bufs-array-through-helper-functions/20230321-183154 >>>>> base:   git://linuxtv.org/media_tree.git master >>>>> patch link:    https://lore.kernel.org/r/20230321102855.346732-3-benjamin.gaignard%40collabora.com >>>>> patch subject: [PATCH v2 2/8] media: videobuf2: Make bufs array dynamic allocated >>>>> config: arm64-randconfig-m041-20230319 (https://download.01.org/0day-ci/archive/20230324/202303240148.lKRnUqW9-lkp@intel.com/config) >>>>> compiler: aarch64-linux-gcc (GCC) 12.1.0 >>>>> >>>>> If you fix the issue, kindly add following tag where applicable >>>>> | Reported-by: kernel test robot >>>>> | Reported-by: Dan Carpenter >>>>> | Link: https://lore.kernel.org/r/202303240148.lKRnUqW9-lkp@intel.com/ >>>>> >>>>> smatch warnings: >>>>> include/media/videobuf2-core.h:1272 vb2_queue_add_buffer() warn: sleeping in atomic context >>>>> drivers/media/common/videobuf2/videobuf2-core.c:2456 vb2_core_queue_init() warn: Please consider using kcalloc instead of kmalloc_array >>>>> >>>>> vim +1272 include/media/videobuf2-core.h >>>>> >>>>> 625d46c1c1fe8e Benjamin Gaignard 2023-03-21  1263  static inline bool vb2_queue_add_buffer(struct vb2_queue *q, struct vb2_buffer *vb) >>>>> 625d46c1c1fe8e Benjamin Gaignard 2023-03-21  1264  { >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1265      bool ret = false; >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1266 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1267      spin_lock(&q->bufs_lock); >>>>>                                                          ^^^^^^^^^^^^^^^^^^^^^^^ >>>>> Holding a spin lock. >>>>> >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1268 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1269      if (vb->index >= q->max_num_bufs) { >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1270          struct vb2_buffer **tmp; >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1271 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21 @1272          tmp = krealloc_array(q->bufs, q->max_num_bufs * 2, sizeof(*q->bufs), GFP_KERNEL); >>>>>                                                                                                                                       ^^^^^^^^^^ >>>>> Sleeping allocation.  GFP_ATOMIC?  Or is there a way to move the >>>>> allocation outside the lock? >>>> I will add GFP_ATOMIC flag in next version. >>> No need. Instead, don't use realloc here, just allocate a new array, copy over all >>> the data from the old, and then switch q->bufs with the spinlock held. Then you >>> can free the old one. >>> >>> It's only when you update q->bufs that you need the lock. >> The copy also needs to be protected by the lock. > I suspect that that is not needed, since you shouldn't be able to add buffers here > since a mutex should be held at this time. > > That said, it's something that Benjamin needs to analyze. Does using GFP_ATOMIC is problematic ? > > Regards, > > Hans > >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1273          if (!tmp) >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1274              goto realloc_failed; >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1275 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1276          q->max_num_bufs *= 2; >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1277          q->bufs = tmp; >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1278      } >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1279 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1280      if (vb->index < q->max_num_bufs) { >>>>> 625d46c1c1fe8e Benjamin Gaignard 2023-03-21  1281          q->bufs[vb->index] = vb; >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1282          ret = true; >>>>> 625d46c1c1fe8e Benjamin Gaignard 2023-03-21  1283      } >>>>> 625d46c1c1fe8e Benjamin Gaignard 2023-03-21  1284 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1285  realloc_failed: >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1286      spin_unlock(&q->bufs_lock); >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1287 >>>>> 487d3f14d12ecf Benjamin Gaignard 2023-03-21  1288      return ret; >>>>> 625d46c1c1fe8e Benjamin Gaignard 2023-03-21  1289  } > 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 503D2C6FD20 for ; Fri, 24 Mar 2023 08:57:04 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=C3n/Mt0WdgwBECjN9BwChMw9UhnWvwHLEezeJaKmnqk=; b=07QFd1osSdyik/ mLRFSseSjmQsJ3bWd4z6GQLqVFKJOUgaePnLA9NBZPjf/Ez5Vt4TvSqIm0uv3S9yKYtZVcrawrban kHYOzkJhWEoD1Yv2eYdIxEGkhBlJ1Y+7UJ46XkTEflmtom65Cri7dkAyPsIOrbZ1JP0NEvENVetAi C9UYQXzv0VV4scFqjvvhz8FJcNITgRTQlIwzZ5ENZ8EbkF19t2vIVwQb0cATQpGm9J4JZU2FuIVty 1cCfPD8y4zmqUZ3Uxop8j+I/RgWJDPZ6WwDkSsWgdZ9z4ufWNEk+qYXRlUX4v1Ha0Mcmvgq6rG05u ftBv6lgaiNCAfZNROYPw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pfdE9-003wYt-0G; Fri, 24 Mar 2023 08:56:49 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pfdE0-003wRt-0s; Fri, 24 Mar 2023 08:56:42 +0000 Received: from [IPV6:2a01:e0a:120:3210:1cb3:11e4:5834:9d5a] (unknown [IPv6:2a01:e0a:120:3210:1cb3:11e4:5834:9d5a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madras.collabora.co.uk (Postfix) with ESMTPSA id B52946603111; Fri, 24 Mar 2023 08:56:37 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1679648198; bh=fSTAJcZ+stux5F7CVDxrYSB6CjZcdcUM5EQHkwSolOQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=KKVdO9t0sYkHaJ1tstArEyba/Fvd76PT+Bb8whfZp36eVUKPCYx6dyCpSzgaHNQp9 PwavG2SpFEZPWYNj8NHCvb7hfu0czslZWU1neac/udmuLbgOdOevERU3lx0d2roFkM ZY0njDbuL4MOMUmrRdEc5kyjlWN3steO1fR3FNSalz3wH+kgoCxB5l3b0+K9JA11ie uTdtvV2M3vKrzlUSFuJPpYcGZke6Dw4wZkh9VCo4R2VAC5dhhRE0+5YHyERpLZc6cH Ky37tKSoz4+Si/+YVszJgLXCKE1wq4wvSl/WETQfTQAiot7Ys4CfAsugbkirmU2Inz cbMAAZQAM0FiA== Message-ID: <7ad524a1-c54f-a01c-3453-2cf1f0f82a13@collabora.com> Date: Fri, 24 Mar 2023 09:56:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v2 2/8] media: videobuf2: Make bufs array dynamic allocated Content-Language: en-US To: Hans Verkuil , Laurent Pinchart Cc: Dan Carpenter , oe-kbuild@lists.linux.dev, tfiga@chromium.org, m.szyprowski@samsung.com, mchehab@kernel.org, ming.qian@nxp.com, shijie.qin@nxp.com, eagle.zhou@nxp.com, bin.liu@mediatek.com, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, tiffany.lin@mediatek.com, andrew-ct.chen@mediatek.com, yunfei.dong@mediatek.com, stanimir.k.varbanov@gmail.com, quic_vgarodia@quicinc.com, agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, daniel.almeida@collabora.com, lkp@intel.com, oe-kbuild-all@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com References: <4e2cb832-de83-4ba6-bd8a-119a19038cfe@kili.mountain> <20230324084830.GA18895@pendragon.ideasonboard.com> From: Benjamin Gaignard In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230324_015640_648993_4DA75E0E X-CRM114-Status: GOOD ( 12.15 ) 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Linux-rockchip" Errors-To: linux-rockchip-bounces+linux-rockchip=archiver.kernel.org@lists.infradead.org CkxlIDI0LzAzLzIwMjMgw6AgMDk6NTIsIEhhbnMgVmVya3VpbCBhIMOpY3JpdMKgOgo+IE9uIDI0 LzAzLzIwMjMgMDk6NDgsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4+IE9uIEZyaSwgTWFyIDI0 LCAyMDIzIGF0IDA5OjMxOjM1QU0gKzAxMDAsIEhhbnMgVmVya3VpbCB3cm90ZToKPj4+IE9uIDI0 LzAzLzIwMjMgMDk6MTEsIEJlbmphbWluIEdhaWduYXJkIHdyb3RlOgo+Pj4+IExlIDI0LzAzLzIw MjMgw6AgMDY6MDEsIERhbiBDYXJwZW50ZXIgYSDDqWNyaXTCoDoKPj4+Pj4gSGkgQmVuamFtaW4s Cj4+Pj4+Cj4+Pj4+IGh0dHBzOi8vZ2l0LXNjbS5jb20vZG9jcy9naXQtZm9ybWF0LXBhdGNoI19i YXNlX3RyZWVfaW5mb3JtYXRpb25dCj4+Pj4+Cj4+Pj4+IHVybDrCoMKgwqAgaHR0cHM6Ly9naXRo dWIuY29tL2ludGVsLWxhYi1sa3AvbGludXgvY29tbWl0cy9CZW5qYW1pbi1HYWlnbmFyZC9tZWRp YS12aWRlb2J1ZjItQWNjZXNzLXZiMl9xdWV1ZS1idWZzLWFycmF5LXRocm91Z2gtaGVscGVyLWZ1 bmN0aW9ucy8yMDIzMDMyMS0xODMxNTQKPj4+Pj4gYmFzZTrCoMKgIGdpdDovL2xpbnV4dHYub3Jn L21lZGlhX3RyZWUuZ2l0IG1hc3Rlcgo+Pj4+PiBwYXRjaCBsaW5rOsKgwqDCoCBodHRwczovL2xv cmUua2VybmVsLm9yZy9yLzIwMjMwMzIxMTAyODU1LjM0NjczMi0zLWJlbmphbWluLmdhaWduYXJk JTQwY29sbGFib3JhLmNvbQo+Pj4+PiBwYXRjaCBzdWJqZWN0OiBbUEFUQ0ggdjIgMi84XSBtZWRp YTogdmlkZW9idWYyOiBNYWtlIGJ1ZnMgYXJyYXkgZHluYW1pYyBhbGxvY2F0ZWQKPj4+Pj4gY29u ZmlnOiBhcm02NC1yYW5kY29uZmlnLW0wNDEtMjAyMzAzMTkgKGh0dHBzOi8vZG93bmxvYWQuMDEu b3JnLzBkYXktY2kvYXJjaGl2ZS8yMDIzMDMyNC8yMDIzMDMyNDAxNDgubEtSblVxVzktbGtwQGlu dGVsLmNvbS9jb25maWcpCj4+Pj4+IGNvbXBpbGVyOiBhYXJjaDY0LWxpbnV4LWdjYyAoR0NDKSAx Mi4xLjAKPj4+Pj4KPj4+Pj4gSWYgeW91IGZpeCB0aGUgaXNzdWUsIGtpbmRseSBhZGQgZm9sbG93 aW5nIHRhZyB3aGVyZSBhcHBsaWNhYmxlCj4+Pj4+IHwgUmVwb3J0ZWQtYnk6IGtlcm5lbCB0ZXN0 IHJvYm90IDxsa3BAaW50ZWwuY29tPgo+Pj4+PiB8IFJlcG9ydGVkLWJ5OiBEYW4gQ2FycGVudGVy IDxlcnJvcjI3QGdtYWlsLmNvbT4KPj4+Pj4gfCBMaW5rOiBodHRwczovL2xvcmUua2VybmVsLm9y Zy9yLzIwMjMwMzI0MDE0OC5sS1JuVXFXOS1sa3BAaW50ZWwuY29tLwo+Pj4+Pgo+Pj4+PiBzbWF0 Y2ggd2FybmluZ3M6Cj4+Pj4+IGluY2x1ZGUvbWVkaWEvdmlkZW9idWYyLWNvcmUuaDoxMjcyIHZi Ml9xdWV1ZV9hZGRfYnVmZmVyKCkgd2Fybjogc2xlZXBpbmcgaW4gYXRvbWljIGNvbnRleHQKPj4+ Pj4gZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1jb3JlLmM6MjQ1NiB2 YjJfY29yZV9xdWV1ZV9pbml0KCkgd2FybjogUGxlYXNlIGNvbnNpZGVyIHVzaW5nIGtjYWxsb2Mg aW5zdGVhZCBvZiBrbWFsbG9jX2FycmF5Cj4+Pj4+Cj4+Pj4+IHZpbSArMTI3MiBpbmNsdWRlL21l ZGlhL3ZpZGVvYnVmMi1jb3JlLmgKPj4+Pj4KPj4+Pj4gNjI1ZDQ2YzFjMWZlOGUgQmVuamFtaW4g R2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyNjPCoCBzdGF0aWMgaW5saW5lIGJvb2wgdmIyX3F1ZXVl X2FkZF9idWZmZXIoc3RydWN0IHZiMl9xdWV1ZSAqcSwgc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+ Pj4+PiA2MjVkNDZjMWMxZmU4ZSBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI2NMKg IHsKPj4+Pj4gNDg3ZDNmMTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEy NjXCoMKgwqDCoMKgIGJvb2wgcmV0ID0gZmFsc2U7Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmph bWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjY2Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmph bWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjY3wqDCoMKgwqDCoCBzcGluX2xvY2soJnEtPmJ1 ZnNfbG9jayk7Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCj4+Pj4+IEhvbGRpbmcgYSBz cGluIGxvY2suCj4+Pj4+Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmphbWluIEdhaWduYXJkIDIw MjMtMDMtMjHCoCAxMjY4Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmphbWluIEdhaWduYXJkIDIw MjMtMDMtMjHCoCAxMjY5wqDCoMKgwqDCoCBpZiAodmItPmluZGV4ID49IHEtPm1heF9udW1fYnVm cykgewo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAg MTI3MMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmIyX2J1ZmZlciAqKnRtcDsKPj4+Pj4gNDg3 ZDNmMTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyNzEKPj4+Pj4gNDg3 ZDNmMTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMSBAMTI3MsKgwqDCoMKgwqDC oMKgwqDCoCB0bXAgPSBrcmVhbGxvY19hcnJheShxLT5idWZzLCBxLT5tYXhfbnVtX2J1ZnMgKiAy LCBzaXplb2YoKnEtPmJ1ZnMpLCBHRlBfS0VSTkVMKTsKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5eXl5eXl5eXl4KPj4+Pj4gU2xlZXBpbmcgYWxsb2NhdGlv bi7CoCBHRlBfQVRPTUlDP8KgIE9yIGlzIHRoZXJlIGEgd2F5IHRvIG1vdmUgdGhlCj4+Pj4+IGFs bG9jYXRpb24gb3V0c2lkZSB0aGUgbG9jaz8KPj4+PiBJIHdpbGwgYWRkIEdGUF9BVE9NSUMgZmxh ZyBpbiBuZXh0IHZlcnNpb24uCj4+PiBObyBuZWVkLiBJbnN0ZWFkLCBkb24ndCB1c2UgcmVhbGxv YyBoZXJlLCBqdXN0IGFsbG9jYXRlIGEgbmV3IGFycmF5LCBjb3B5IG92ZXIgYWxsCj4+PiB0aGUg ZGF0YSBmcm9tIHRoZSBvbGQsIGFuZCB0aGVuIHN3aXRjaCBxLT5idWZzIHdpdGggdGhlIHNwaW5s b2NrIGhlbGQuIFRoZW4geW91Cj4+PiBjYW4gZnJlZSB0aGUgb2xkIG9uZS4KPj4+Cj4+PiBJdCdz IG9ubHkgd2hlbiB5b3UgdXBkYXRlIHEtPmJ1ZnMgdGhhdCB5b3UgbmVlZCB0aGUgbG9jay4KPj4g VGhlIGNvcHkgYWxzbyBuZWVkcyB0byBiZSBwcm90ZWN0ZWQgYnkgdGhlIGxvY2suCj4gSSBzdXNw ZWN0IHRoYXQgdGhhdCBpcyBub3QgbmVlZGVkLCBzaW5jZSB5b3Ugc2hvdWxkbid0IGJlIGFibGUg dG8gYWRkIGJ1ZmZlcnMgaGVyZQo+IHNpbmNlIGEgbXV0ZXggc2hvdWxkIGJlIGhlbGQgYXQgdGhp cyB0aW1lLgo+Cj4gVGhhdCBzYWlkLCBpdCdzIHNvbWV0aGluZyB0aGF0IEJlbmphbWluIG5lZWRz IHRvIGFuYWx5emUuCgpEb2VzIHVzaW5nIEdGUF9BVE9NSUMgaXMgcHJvYmxlbWF0aWMgPwoKPgo+ IFJlZ2FyZHMsCj4KPiAJSGFucwo+Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmphbWluIEdhaWdu YXJkIDIwMjMtMDMtMjHCoCAxMjczwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghdG1wKQo+Pj4+PiA0 ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI3NMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gcmVhbGxvY19mYWlsZWQ7Cj4+Pj4+IDQ4N2QzZjE0ZDEy ZWNmIEJlbmphbWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjc1Cj4+Pj4+IDQ4N2QzZjE0ZDEy ZWNmIEJlbmphbWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjc2wqDCoMKgwqDCoMKgwqDCoMKg IHEtPm1heF9udW1fYnVmcyAqPSAyOwo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWln bmFyZCAyMDIzLTAzLTIxwqAgMTI3N8KgwqDCoMKgwqDCoMKgwqDCoCBxLT5idWZzID0gdG1wOwo+ Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI3OMKg wqDCoMKgwqAgfQo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAz LTIxwqAgMTI3OQo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAz LTIxwqAgMTI4MMKgwqDCoMKgwqAgaWYgKHZiLT5pbmRleCA8IHEtPm1heF9udW1fYnVmcykgewo+ Pj4+PiA2MjVkNDZjMWMxZmU4ZSBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI4McKg wqDCoMKgwqDCoMKgwqDCoCBxLT5idWZzW3ZiLT5pbmRleF0gPSB2YjsKPj4+Pj4gNDg3ZDNmMTRk MTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODLCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gdHJ1ZTsKPj4+Pj4gNjI1ZDQ2YzFjMWZlOGUgQmVuamFtaW4gR2FpZ25hcmQgMjAy My0wMy0yMcKgIDEyODPCoMKgwqDCoMKgIH0KPj4+Pj4gNjI1ZDQ2YzFjMWZlOGUgQmVuamFtaW4g R2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODQKPj4+Pj4gNDg3ZDNmMTRkMTJlY2YgQmVuamFtaW4g R2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODXCoCByZWFsbG9jX2ZhaWxlZDoKPj4+Pj4gNDg3ZDNm MTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODbCoMKgwqDCoMKgIHNw aW5fdW5sb2NrKCZxLT5idWZzX2xvY2spOwo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBH YWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI4Nwo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBH YWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI4OMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+Pj4gNjI1 ZDQ2YzFjMWZlOGUgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODnCoCB9Cj4KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkxpbnV4LXJvY2tj aGlwIG1haWxpbmcgbGlzdApMaW51eC1yb2NrY2hpcEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcm9ja2NoaXAK 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 D86C8C76195 for ; Fri, 24 Mar 2023 08:57:32 +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-Type: Content-Transfer-Encoding:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:From:References:Cc:To:Subject: MIME-Version:Date:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=cyejdFrGvKJ3rQeDo3NH2792PoNXFjnkpgl2W5Yz9I4=; b=prptMozJgcgI6N j3rFidxobYn9cxOGgeECNGNIR1O6R88FYlOxBAdzHdslIitD0MVBPMMx6m1onYFNUXcdbVHKXuZxc 6r9puSyPE0JhxF+R7NUOqnc3rTiwVGvw09CHZUQhYyf3QyVmL5S4ZPFA425qNiukcnXopKXjLlrj9 CVpBy+j+JowKcCxsB/CMwN3bT/b8iBXQzwJLYo6kyI9R2BJbq/3ucQSvjOO/6f0JpvLZORX7BxytX OQC4hn8r4EI4YwHIeqo7dU/p7itDIXP+8xiYLGbY9/WoHoDfEUAYPgx2duKueg5VupIVJiErptASI yJUlLvWS4LJBpWyJQ/+w==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.96 #2 (Red Hat Linux)) id 1pfdE7-003wXX-0d; Fri, 24 Mar 2023 08:56:47 +0000 Received: from madras.collabora.co.uk ([46.235.227.172]) by bombadil.infradead.org with esmtps (Exim 4.96 #2 (Red Hat Linux)) id 1pfdE0-003wRt-0s; Fri, 24 Mar 2023 08:56:42 +0000 Received: from [IPV6:2a01:e0a:120:3210:1cb3:11e4:5834:9d5a] (unknown [IPv6:2a01:e0a:120:3210:1cb3:11e4:5834:9d5a]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madras.collabora.co.uk (Postfix) with ESMTPSA id B52946603111; Fri, 24 Mar 2023 08:56:37 +0000 (GMT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1679648198; bh=fSTAJcZ+stux5F7CVDxrYSB6CjZcdcUM5EQHkwSolOQ=; h=Date:Subject:To:Cc:References:From:In-Reply-To:From; b=KKVdO9t0sYkHaJ1tstArEyba/Fvd76PT+Bb8whfZp36eVUKPCYx6dyCpSzgaHNQp9 PwavG2SpFEZPWYNj8NHCvb7hfu0czslZWU1neac/udmuLbgOdOevERU3lx0d2roFkM ZY0njDbuL4MOMUmrRdEc5kyjlWN3steO1fR3FNSalz3wH+kgoCxB5l3b0+K9JA11ie uTdtvV2M3vKrzlUSFuJPpYcGZke6Dw4wZkh9VCo4R2VAC5dhhRE0+5YHyERpLZc6cH Ky37tKSoz4+Si/+YVszJgLXCKE1wq4wvSl/WETQfTQAiot7Ys4CfAsugbkirmU2Inz cbMAAZQAM0FiA== Message-ID: <7ad524a1-c54f-a01c-3453-2cf1f0f82a13@collabora.com> Date: Fri, 24 Mar 2023 09:56:34 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v2 2/8] media: videobuf2: Make bufs array dynamic allocated Content-Language: en-US To: Hans Verkuil , Laurent Pinchart Cc: Dan Carpenter , oe-kbuild@lists.linux.dev, tfiga@chromium.org, m.szyprowski@samsung.com, mchehab@kernel.org, ming.qian@nxp.com, shijie.qin@nxp.com, eagle.zhou@nxp.com, bin.liu@mediatek.com, matthias.bgg@gmail.com, angelogioacchino.delregno@collabora.com, tiffany.lin@mediatek.com, andrew-ct.chen@mediatek.com, yunfei.dong@mediatek.com, stanimir.k.varbanov@gmail.com, quic_vgarodia@quicinc.com, agross@kernel.org, andersson@kernel.org, konrad.dybcio@linaro.org, ezequiel@vanguardiasur.com.ar, p.zabel@pengutronix.de, daniel.almeida@collabora.com, lkp@intel.com, oe-kbuild-all@lists.linux.dev, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org, linux-arm-msm@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com References: <4e2cb832-de83-4ba6-bd8a-119a19038cfe@kili.mountain> <20230324084830.GA18895@pendragon.ideasonboard.com> From: Benjamin Gaignard In-Reply-To: X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20230324_015640_648993_4DA75E0E X-CRM114-Status: GOOD ( 12.15 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org CkxlIDI0LzAzLzIwMjMgw6AgMDk6NTIsIEhhbnMgVmVya3VpbCBhIMOpY3JpdMKgOgo+IE9uIDI0 LzAzLzIwMjMgMDk6NDgsIExhdXJlbnQgUGluY2hhcnQgd3JvdGU6Cj4+IE9uIEZyaSwgTWFyIDI0 LCAyMDIzIGF0IDA5OjMxOjM1QU0gKzAxMDAsIEhhbnMgVmVya3VpbCB3cm90ZToKPj4+IE9uIDI0 LzAzLzIwMjMgMDk6MTEsIEJlbmphbWluIEdhaWduYXJkIHdyb3RlOgo+Pj4+IExlIDI0LzAzLzIw MjMgw6AgMDY6MDEsIERhbiBDYXJwZW50ZXIgYSDDqWNyaXTCoDoKPj4+Pj4gSGkgQmVuamFtaW4s Cj4+Pj4+Cj4+Pj4+IGh0dHBzOi8vZ2l0LXNjbS5jb20vZG9jcy9naXQtZm9ybWF0LXBhdGNoI19i YXNlX3RyZWVfaW5mb3JtYXRpb25dCj4+Pj4+Cj4+Pj4+IHVybDrCoMKgwqAgaHR0cHM6Ly9naXRo dWIuY29tL2ludGVsLWxhYi1sa3AvbGludXgvY29tbWl0cy9CZW5qYW1pbi1HYWlnbmFyZC9tZWRp YS12aWRlb2J1ZjItQWNjZXNzLXZiMl9xdWV1ZS1idWZzLWFycmF5LXRocm91Z2gtaGVscGVyLWZ1 bmN0aW9ucy8yMDIzMDMyMS0xODMxNTQKPj4+Pj4gYmFzZTrCoMKgIGdpdDovL2xpbnV4dHYub3Jn L21lZGlhX3RyZWUuZ2l0IG1hc3Rlcgo+Pj4+PiBwYXRjaCBsaW5rOsKgwqDCoCBodHRwczovL2xv cmUua2VybmVsLm9yZy9yLzIwMjMwMzIxMTAyODU1LjM0NjczMi0zLWJlbmphbWluLmdhaWduYXJk JTQwY29sbGFib3JhLmNvbQo+Pj4+PiBwYXRjaCBzdWJqZWN0OiBbUEFUQ0ggdjIgMi84XSBtZWRp YTogdmlkZW9idWYyOiBNYWtlIGJ1ZnMgYXJyYXkgZHluYW1pYyBhbGxvY2F0ZWQKPj4+Pj4gY29u ZmlnOiBhcm02NC1yYW5kY29uZmlnLW0wNDEtMjAyMzAzMTkgKGh0dHBzOi8vZG93bmxvYWQuMDEu b3JnLzBkYXktY2kvYXJjaGl2ZS8yMDIzMDMyNC8yMDIzMDMyNDAxNDgubEtSblVxVzktbGtwQGlu dGVsLmNvbS9jb25maWcpCj4+Pj4+IGNvbXBpbGVyOiBhYXJjaDY0LWxpbnV4LWdjYyAoR0NDKSAx Mi4xLjAKPj4+Pj4KPj4+Pj4gSWYgeW91IGZpeCB0aGUgaXNzdWUsIGtpbmRseSBhZGQgZm9sbG93 aW5nIHRhZyB3aGVyZSBhcHBsaWNhYmxlCj4+Pj4+IHwgUmVwb3J0ZWQtYnk6IGtlcm5lbCB0ZXN0 IHJvYm90IDxsa3BAaW50ZWwuY29tPgo+Pj4+PiB8IFJlcG9ydGVkLWJ5OiBEYW4gQ2FycGVudGVy IDxlcnJvcjI3QGdtYWlsLmNvbT4KPj4+Pj4gfCBMaW5rOiBodHRwczovL2xvcmUua2VybmVsLm9y Zy9yLzIwMjMwMzI0MDE0OC5sS1JuVXFXOS1sa3BAaW50ZWwuY29tLwo+Pj4+Pgo+Pj4+PiBzbWF0 Y2ggd2FybmluZ3M6Cj4+Pj4+IGluY2x1ZGUvbWVkaWEvdmlkZW9idWYyLWNvcmUuaDoxMjcyIHZi Ml9xdWV1ZV9hZGRfYnVmZmVyKCkgd2Fybjogc2xlZXBpbmcgaW4gYXRvbWljIGNvbnRleHQKPj4+ Pj4gZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1jb3JlLmM6MjQ1NiB2 YjJfY29yZV9xdWV1ZV9pbml0KCkgd2FybjogUGxlYXNlIGNvbnNpZGVyIHVzaW5nIGtjYWxsb2Mg aW5zdGVhZCBvZiBrbWFsbG9jX2FycmF5Cj4+Pj4+Cj4+Pj4+IHZpbSArMTI3MiBpbmNsdWRlL21l ZGlhL3ZpZGVvYnVmMi1jb3JlLmgKPj4+Pj4KPj4+Pj4gNjI1ZDQ2YzFjMWZlOGUgQmVuamFtaW4g R2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyNjPCoCBzdGF0aWMgaW5saW5lIGJvb2wgdmIyX3F1ZXVl X2FkZF9idWZmZXIoc3RydWN0IHZiMl9xdWV1ZSAqcSwgc3RydWN0IHZiMl9idWZmZXIgKnZiKQo+ Pj4+PiA2MjVkNDZjMWMxZmU4ZSBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI2NMKg IHsKPj4+Pj4gNDg3ZDNmMTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEy NjXCoMKgwqDCoMKgIGJvb2wgcmV0ID0gZmFsc2U7Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmph bWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjY2Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmph bWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjY3wqDCoMKgwqDCoCBzcGluX2xvY2soJnEtPmJ1 ZnNfbG9jayk7Cj4+Pj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eCj4+Pj4+IEhvbGRpbmcgYSBz cGluIGxvY2suCj4+Pj4+Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmphbWluIEdhaWduYXJkIDIw MjMtMDMtMjHCoCAxMjY4Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmphbWluIEdhaWduYXJkIDIw MjMtMDMtMjHCoCAxMjY5wqDCoMKgwqDCoCBpZiAodmItPmluZGV4ID49IHEtPm1heF9udW1fYnVm cykgewo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAg MTI3MMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmIyX2J1ZmZlciAqKnRtcDsKPj4+Pj4gNDg3 ZDNmMTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyNzEKPj4+Pj4gNDg3 ZDNmMTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMSBAMTI3MsKgwqDCoMKgwqDC oMKgwqDCoCB0bXAgPSBrcmVhbGxvY19hcnJheShxLT5idWZzLCBxLT5tYXhfbnVtX2J1ZnMgKiAy LCBzaXplb2YoKnEtPmJ1ZnMpLCBHRlBfS0VSTkVMKTsKPj4+Pj4gIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIF5eXl5eXl5eXl4KPj4+Pj4gU2xlZXBpbmcgYWxsb2NhdGlv bi7CoCBHRlBfQVRPTUlDP8KgIE9yIGlzIHRoZXJlIGEgd2F5IHRvIG1vdmUgdGhlCj4+Pj4+IGFs bG9jYXRpb24gb3V0c2lkZSB0aGUgbG9jaz8KPj4+PiBJIHdpbGwgYWRkIEdGUF9BVE9NSUMgZmxh ZyBpbiBuZXh0IHZlcnNpb24uCj4+PiBObyBuZWVkLiBJbnN0ZWFkLCBkb24ndCB1c2UgcmVhbGxv YyBoZXJlLCBqdXN0IGFsbG9jYXRlIGEgbmV3IGFycmF5LCBjb3B5IG92ZXIgYWxsCj4+PiB0aGUg ZGF0YSBmcm9tIHRoZSBvbGQsIGFuZCB0aGVuIHN3aXRjaCBxLT5idWZzIHdpdGggdGhlIHNwaW5s b2NrIGhlbGQuIFRoZW4geW91Cj4+PiBjYW4gZnJlZSB0aGUgb2xkIG9uZS4KPj4+Cj4+PiBJdCdz IG9ubHkgd2hlbiB5b3UgdXBkYXRlIHEtPmJ1ZnMgdGhhdCB5b3UgbmVlZCB0aGUgbG9jay4KPj4g VGhlIGNvcHkgYWxzbyBuZWVkcyB0byBiZSBwcm90ZWN0ZWQgYnkgdGhlIGxvY2suCj4gSSBzdXNw ZWN0IHRoYXQgdGhhdCBpcyBub3QgbmVlZGVkLCBzaW5jZSB5b3Ugc2hvdWxkbid0IGJlIGFibGUg dG8gYWRkIGJ1ZmZlcnMgaGVyZQo+IHNpbmNlIGEgbXV0ZXggc2hvdWxkIGJlIGhlbGQgYXQgdGhp cyB0aW1lLgo+Cj4gVGhhdCBzYWlkLCBpdCdzIHNvbWV0aGluZyB0aGF0IEJlbmphbWluIG5lZWRz IHRvIGFuYWx5emUuCgpEb2VzIHVzaW5nIEdGUF9BVE9NSUMgaXMgcHJvYmxlbWF0aWMgPwoKPgo+ IFJlZ2FyZHMsCj4KPiAJSGFucwo+Cj4+Pj4+IDQ4N2QzZjE0ZDEyZWNmIEJlbmphbWluIEdhaWdu YXJkIDIwMjMtMDMtMjHCoCAxMjczwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghdG1wKQo+Pj4+PiA0 ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI3NMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gcmVhbGxvY19mYWlsZWQ7Cj4+Pj4+IDQ4N2QzZjE0ZDEy ZWNmIEJlbmphbWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjc1Cj4+Pj4+IDQ4N2QzZjE0ZDEy ZWNmIEJlbmphbWluIEdhaWduYXJkIDIwMjMtMDMtMjHCoCAxMjc2wqDCoMKgwqDCoMKgwqDCoMKg IHEtPm1heF9udW1fYnVmcyAqPSAyOwo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWln bmFyZCAyMDIzLTAzLTIxwqAgMTI3N8KgwqDCoMKgwqDCoMKgwqDCoCBxLT5idWZzID0gdG1wOwo+ Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI3OMKg wqDCoMKgwqAgfQo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAz LTIxwqAgMTI3OQo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAz LTIxwqAgMTI4MMKgwqDCoMKgwqAgaWYgKHZiLT5pbmRleCA8IHEtPm1heF9udW1fYnVmcykgewo+ Pj4+PiA2MjVkNDZjMWMxZmU4ZSBCZW5qYW1pbiBHYWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI4McKg wqDCoMKgwqDCoMKgwqDCoCBxLT5idWZzW3ZiLT5pbmRleF0gPSB2YjsKPj4+Pj4gNDg3ZDNmMTRk MTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODLCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gdHJ1ZTsKPj4+Pj4gNjI1ZDQ2YzFjMWZlOGUgQmVuamFtaW4gR2FpZ25hcmQgMjAy My0wMy0yMcKgIDEyODPCoMKgwqDCoMKgIH0KPj4+Pj4gNjI1ZDQ2YzFjMWZlOGUgQmVuamFtaW4g R2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODQKPj4+Pj4gNDg3ZDNmMTRkMTJlY2YgQmVuamFtaW4g R2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODXCoCByZWFsbG9jX2ZhaWxlZDoKPj4+Pj4gNDg3ZDNm MTRkMTJlY2YgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODbCoMKgwqDCoMKgIHNw aW5fdW5sb2NrKCZxLT5idWZzX2xvY2spOwo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBH YWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI4Nwo+Pj4+PiA0ODdkM2YxNGQxMmVjZiBCZW5qYW1pbiBH YWlnbmFyZCAyMDIzLTAzLTIxwqAgMTI4OMKgwqDCoMKgwqAgcmV0dXJuIHJldDsKPj4+Pj4gNjI1 ZDQ2YzFjMWZlOGUgQmVuamFtaW4gR2FpZ25hcmQgMjAyMy0wMy0yMcKgIDEyODnCoCB9Cj4KCl9f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1r ZXJuZWwgbWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpo dHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJu ZWwK