From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f171.google.com (mail-pl1-f171.google.com [209.85.214.171]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7DFA94C70 for ; Sat, 17 Feb 2024 00:52:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.171 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708131167; cv=none; b=qJJXA64E2DUrAvGoWxrZQap1LtnUghyR23aIaMndECH1ZMxrzTIYcQPjgIHf22rqqPG0+kSPucPOP6SIIHeqm220JNIhEwmTifHxpYBn0qST4mgMb6Kwc08E0bMffC8tVSzIv6l1t+Sf2cNjifWk++jDDXZ7XpSYArcUS1dmLUU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1708131167; c=relaxed/simple; bh=xMjUVfiyxmaguXvZrW6crG3aoQIwn8QnYYLwV+KSSWA=; h=MIME-Version:References:In-Reply-To:From:Date:Message-ID:Subject: To:Cc:Content-Type; b=EjGmt6tnmNmPIty9/m3B8ZoHPOF7x3NWlqYTS5qgT3hbzAKGKRyQte7NMhyoInW1j0+YJew0lFANwVnbMs973BhqU2HMMqArzqmTRUlXUBootETy6t8SMeLK4BiLIn+C4nj9y8mrjI7FyQqG+b2xHrd+64ufbAQ3fBmL3JQ/8Z0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=pVfEHcpu; arc=none smtp.client-ip=209.85.214.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="pVfEHcpu" Received: by mail-pl1-f171.google.com with SMTP id d9443c01a7336-1db61f7ebcbso39465ad.0 for ; Fri, 16 Feb 2024 16:52:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1708131165; x=1708735965; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=zvr57WXSGKgreDl2S3+cS6Q3DlJ9MFO+tZDONyxR8WE=; b=pVfEHcpu9cuLDlTbA+B73bEzwdSAI33O59xw1XUAjm+2D2RkU9FhRwtiOCZjT6ONmO ITGz9nCbcps+KSWsv8DUSqlo1PfN4HqtS9FswiKLIw4aPZELISMRKWHQvz2tC8mpvvsw 0giSomXQOEjZQYjpkEE8wOT2VVrl0dGT5MZn4XxAolJpH1PdZRvtj2A40rMh7B4889RC UuiaKXm0GX2v+KNcFb/ERPMvQCxHJTH5+l8t+Oz1pq5j5Acsl6aMzFwnRE7gvyYORY9Z 8qp1BeVLyJh427UCoeqPgWrZk0MzF6GaTaqJJvxmhyLRi2rk8HPXtN+7iZkjiXxYxSjC TBBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708131165; x=1708735965; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zvr57WXSGKgreDl2S3+cS6Q3DlJ9MFO+tZDONyxR8WE=; b=L4wyw6TqYHozxQGnP5tc3dYbg/D+KoZv1yKheb5fbqpRXfEKFcL8i2vTaEW8GuUwRH xD7GLbmp3Vp/gAhMVOcLcjn8ZsJ//3lJkNF0Zdvw9PaBbvYMBa/8ySltO5/ZlJHaq1co nWxMWbWzXXH6L/sIeJRsveYexX5tRUjJYa8dujVmCykGDz8RJQeFX8s2TyDOsr7vgjPe 1owknLUJlhGvXlD5whoOg/pD0+K4yIrtF1cQedTOJhyWP61zPa9e4W/18QYrqkzp5EkG Ta+xAGl9DegQ2BIS38qNnugSHuhsta70mdiLm1O+5zmG08S/RDkuVeTkzbpIqhRysE+p EfzQ== X-Forwarded-Encrypted: i=1; AJvYcCW2ckfV9dvhOQQB3iXpbrCBqMJlBgAHzG9ufTdVpJM+oh2FxqAykxE/lEpA9BoVi4pxxwJqwWzRo15M8Zax1Lrgas8XQkoYR8e/jEWX X-Gm-Message-State: AOJu0Yy+fFY7s1296jbpI291NZURnw7TkmXs/FVspB1uKKHIcm1RhYCQ dsoJZcDgdXwQjsSdNHid5RT2ImRn2EMdUZ0LmTBtu5pYcCtZbIFwE1Llm/xdDWcINLAYQmMJxiY 6gCRt/3+x3IKK/2oZ+LXoSZBpnp7r9QoY+Zwf X-Google-Smtp-Source: AGHT+IE3HGUrOS/cMjy3dK83NQcHQ7z42RJxNSfu2ZjNKxNaIs4MfqHN+ZrLaeTNVN7unFneCe3UnNRtF7B+qxo7VzY= X-Received: by 2002:a17:902:c70c:b0:1d8:eac9:bbfc with SMTP id p12-20020a170902c70c00b001d8eac9bbfcmr98349plp.15.1708131164390; Fri, 16 Feb 2024 16:52:44 -0800 (PST) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 References: <20240202234057.2085863-1-irogers@google.com> <20240202234057.2085863-3-irogers@google.com> In-Reply-To: From: Ian Rogers Date: Fri, 16 Feb 2024 16:52:31 -0800 Message-ID: Subject: Re: [PATCH v3 2/8] libperf cpumap: Ensure empty cpumap is NULL from alloc To: Namhyung Kim Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Thomas Gleixner , Darren Hart , Davidlohr Bueso , =?UTF-8?Q?Andr=C3=A9_Almeida?= , Kan Liang , K Prateek Nayak , Sean Christopherson , Paolo Bonzini , Kajol Jain , Athira Rajeev , Andrew Jones , Alexandre Ghiti , Atish Patra , "Steinar H. Gunderson" , Yang Jihong , Yang Li , Changbin Du , Sandipan Das , Ravi Bangoria , Paran Lee , Nick Desaulniers , Huacai Chen , Yanteng Si , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, bpf@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Feb 16, 2024 at 4:25=E2=80=AFPM Namhyung Kim = wrote: > > On Fri, Feb 2, 2024 at 3:41=E2=80=AFPM Ian Rogers wr= ote: > > > > Potential corner cases could cause a cpumap to be allocated with size > > 0, but an empty cpumap should be represented as NULL. Add a path in > > perf_cpu_map__alloc to ensure this. > > > > Suggested-by: James Clark > > Closes: https://lore.kernel.org/lkml/2cd09e7c-eb88-6726-6169-647dcd0a81= 01@arm.com/ > > Signed-off-by: Ian Rogers > > --- > > tools/lib/perf/cpumap.c | 6 +++++- > > 1 file changed, 5 insertions(+), 1 deletion(-) > > > > diff --git a/tools/lib/perf/cpumap.c b/tools/lib/perf/cpumap.c > > index ba49552952c5..cae799ad44e1 100644 > > --- a/tools/lib/perf/cpumap.c > > +++ b/tools/lib/perf/cpumap.c > > @@ -18,9 +18,13 @@ void perf_cpu_map__set_nr(struct perf_cpu_map *map, = int nr_cpus) > > > > struct perf_cpu_map *perf_cpu_map__alloc(int nr_cpus) > > { > > - RC_STRUCT(perf_cpu_map) *cpus =3D malloc(sizeof(*cpus) + sizeof= (struct perf_cpu) * nr_cpus); > > + RC_STRUCT(perf_cpu_map) *cpus; > > struct perf_cpu_map *result; > > > > + if (nr_cpus =3D=3D 0) > > + return NULL; > > But allocation failure also returns NULL. Then callers should check > what's the expected result. Right, we don't have a habit of just aborting on memory allocation errors. In the case that NULL is returned it is assumed that an empty CPU map is appropriate. Adding checks throughout the code base that an empty CPU map is only returned when 0 is given is beyond the scope of this patch set. Thanks, Ian > Thanks, > Namhyung > > > + > > + cpus =3D malloc(sizeof(*cpus) + sizeof(struct perf_cpu) * nr_cp= us); > > if (ADD_RC_CHK(result, cpus)) { > > cpus->nr =3D nr_cpus; > > refcount_set(&cpus->refcnt, 1); > > -- > > 2.43.0.594.gd9cf4e227d-goog > > 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 6655CC48260 for ; Sat, 17 Feb 2024 00:52:59 +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:Cc:To:Subject:Message-ID:Date:From: In-Reply-To:References:MIME-Version:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=P5MhGBGIrD0lebePk/dI2fNIGjnKYGlL0h4zmefvvu4=; b=b+rDWY4LMJGUsm P8Z2eiYKrvr/SY777c0OtJyuWP4g7uO74ymeQjjwHuFhBPdfO13Plu+3USVzIAgpsXALPxdPxF2tK MGfVGzVo7/tdgRbotxUQcr0MhwGrXBHHrU2zZ3drOhMpNUiWvxuECwGdEzQ6I1StALYgzBQepycy/ smRmHLnK8+WcRyXkn6wu4xvP5lrDQcQjJq7bxyGPbwNTnqHL6tBab5Mu2jGZP7Z+o8xhrQMTvpW+X gEizMIv2WoeD/YZIPJnMiGP2u6hjlap9AEX9vt/Z2bBaKpiQi6vq6F7eX17+vwLsa5gIpXos9/Mnb cQcbOtJef/XJXj/i7BTw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1rb8wi-00000004HIy-1khD; Sat, 17 Feb 2024 00:52:48 +0000 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1rb8wf-00000004HHk-3SFQ for linux-arm-kernel@lists.infradead.org; Sat, 17 Feb 2024 00:52:47 +0000 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-1db61f7ebcbso39365ad.0 for ; Fri, 16 Feb 2024 16:52:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1708131165; x=1708735965; darn=lists.infradead.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=zvr57WXSGKgreDl2S3+cS6Q3DlJ9MFO+tZDONyxR8WE=; b=iW+qIdkW8Mg3j3y0BJka1088rOA47aTzE9+mdpWchhhm7Zw7TOMtd6+2qctkcetJfv NGMl0VMxvaGo6Yr0FWNu0uzXEx2q5PBzcGx7Emqr+gF0HuCvneqHMdwdTJYsgp8uzfpP Z2pEDQZrI7Rvk5HvwhvpRghnESMqxiu6VUmP+oIBtan6KgdmuCKrEYEIl3vrMdvMyt15 FGfbGactpifT/uhBAy0fgiISX09WSDCYS71Zk0h1HIaohatFQ7aDA37A36siLQKENY3h qLHOTizYI9MC/TB3i0xx2FDlBlFkItnWlL5vNRT57ejJK27sWZhl9E3G/BXUbZY5vYAl +JRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708131165; x=1708735965; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=zvr57WXSGKgreDl2S3+cS6Q3DlJ9MFO+tZDONyxR8WE=; b=h5rmvYo0Gt4xJ3XD5HpIxM/IFbOuRp/ANx1E7SUyHlmbkeTB3rPTaAkVIA1MBmYND0 srYu5+JbhAWkFhhJPkLCWQk7jRVq7WPp9treTzwFNwt+n18xA3nDQpaVyTNQ60O801FH Ftgis1gJtlfJcBiJfkk/R61OO1cKYjziETCqWzR5nlAlhHLrv2xtVUnS6+vrbRNVM7/5 YTizGyAmiPA4jy2UhbabaaP8xSKc5GBd93wnRBfvk6oimH8FFeAZtjXkvwOqWl1Wo01q +dLfxswnY45iQxUSC1zY8pEDZpLkd1VHHYaUQD4xI28MNOKKVTbQpIo6YD5emjZXEsCB 54vw== X-Forwarded-Encrypted: i=1; AJvYcCUA76qTESufljDL90/tyFKLJVG/DzPpyy/wDeVaoZH9OrjyejcChjtJjlMAHgKBNuowsk+XLAYn6Z1fbUaV3GwBJfMcmlbVbdvZzHAcMZyB21SeDHg= X-Gm-Message-State: AOJu0Yy8tEHTI/tmyjJxi6ZpG0kMS/Q6n3lJYfCLFhq4Ye4eskHdQ0Ip vNctr4nrUzSloHXR/2p1qO9oG57PgkamQLxvxVoMzlRhNLdnB7S9LOswydzoM72tLuKiwYJdUSR sx9QYa4BZTMIbBz9m1mErbQYcOeET8Jj4eBky X-Google-Smtp-Source: AGHT+IE3HGUrOS/cMjy3dK83NQcHQ7z42RJxNSfu2ZjNKxNaIs4MfqHN+ZrLaeTNVN7unFneCe3UnNRtF7B+qxo7VzY= X-Received: by 2002:a17:902:c70c:b0:1d8:eac9:bbfc with SMTP id p12-20020a170902c70c00b001d8eac9bbfcmr98349plp.15.1708131164390; Fri, 16 Feb 2024 16:52:44 -0800 (PST) MIME-Version: 1.0 References: <20240202234057.2085863-1-irogers@google.com> <20240202234057.2085863-3-irogers@google.com> In-Reply-To: From: Ian Rogers Date: Fri, 16 Feb 2024 16:52:31 -0800 Message-ID: Subject: Re: [PATCH v3 2/8] libperf cpumap: Ensure empty cpumap is NULL from alloc To: Namhyung Kim Cc: Peter Zijlstra , Ingo Molnar , Arnaldo Carvalho de Melo , Mark Rutland , Alexander Shishkin , Jiri Olsa , Adrian Hunter , Suzuki K Poulose , Mike Leach , James Clark , Leo Yan , John Garry , Will Deacon , Thomas Gleixner , Darren Hart , Davidlohr Bueso , =?UTF-8?Q?Andr=C3=A9_Almeida?= , Kan Liang , K Prateek Nayak , Sean Christopherson , Paolo Bonzini , Kajol Jain , Athira Rajeev , Andrew Jones , Alexandre Ghiti , Atish Patra , "Steinar H. Gunderson" , Yang Jihong , Yang Li , Changbin Du , Sandipan Das , Ravi Bangoria , Paran Lee , Nick Desaulniers , Huacai Chen , Yanteng Si , linux-perf-users@vger.kernel.org, linux-kernel@vger.kernel.org, coresight@lists.linaro.org, linux-arm-kernel@lists.infradead.org, bpf@vger.kernel.org X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240216_165245_900849_9E647F5B X-CRM114-Status: GOOD ( 22.10 ) 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-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org T24gRnJpLCBGZWIgMTYsIDIwMjQgYXQgNDoyNeKAr1BNIE5hbWh5dW5nIEtpbSA8bmFtaHl1bmdA a2VybmVsLm9yZz4gd3JvdGU6Cj4KPiBPbiBGcmksIEZlYiAyLCAyMDI0IGF0IDM6NDHigK9QTSBJ YW4gUm9nZXJzIDxpcm9nZXJzQGdvb2dsZS5jb20+IHdyb3RlOgo+ID4KPiA+IFBvdGVudGlhbCBj b3JuZXIgY2FzZXMgY291bGQgY2F1c2UgYSBjcHVtYXAgdG8gYmUgYWxsb2NhdGVkIHdpdGggc2l6 ZQo+ID4gMCwgYnV0IGFuIGVtcHR5IGNwdW1hcCBzaG91bGQgYmUgcmVwcmVzZW50ZWQgYXMgTlVM TC4gQWRkIGEgcGF0aCBpbgo+ID4gcGVyZl9jcHVfbWFwX19hbGxvYyB0byBlbnN1cmUgdGhpcy4K PiA+Cj4gPiBTdWdnZXN0ZWQtYnk6IEphbWVzIENsYXJrIDxqYW1lcy5jbGFya0Bhcm0uY29tPgo+ ID4gQ2xvc2VzOiBodHRwczovL2xvcmUua2VybmVsLm9yZy9sa21sLzJjZDA5ZTdjLWViODgtNjcy Ni02MTY5LTY0N2RjZDBhODEwMUBhcm0uY29tLwo+ID4gU2lnbmVkLW9mZi1ieTogSWFuIFJvZ2Vy cyA8aXJvZ2Vyc0Bnb29nbGUuY29tPgo+ID4gLS0tCj4gPiAgdG9vbHMvbGliL3BlcmYvY3B1bWFw LmMgfCA2ICsrKysrLQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkKPiA+Cj4gPiBkaWZmIC0tZ2l0IGEvdG9vbHMvbGliL3BlcmYvY3B1bWFwLmMgYi90 b29scy9saWIvcGVyZi9jcHVtYXAuYwo+ID4gaW5kZXggYmE0OTU1Mjk1MmM1Li5jYWU3OTlhZDQ0 ZTEgMTAwNjQ0Cj4gPiAtLS0gYS90b29scy9saWIvcGVyZi9jcHVtYXAuYwo+ID4gKysrIGIvdG9v bHMvbGliL3BlcmYvY3B1bWFwLmMKPiA+IEBAIC0xOCw5ICsxOCwxMyBAQCB2b2lkIHBlcmZfY3B1 X21hcF9fc2V0X25yKHN0cnVjdCBwZXJmX2NwdV9tYXAgKm1hcCwgaW50IG5yX2NwdXMpCj4gPgo+ ID4gIHN0cnVjdCBwZXJmX2NwdV9tYXAgKnBlcmZfY3B1X21hcF9fYWxsb2MoaW50IG5yX2NwdXMp Cj4gPiAgewo+ID4gLSAgICAgICBSQ19TVFJVQ1QocGVyZl9jcHVfbWFwKSAqY3B1cyA9IG1hbGxv YyhzaXplb2YoKmNwdXMpICsgc2l6ZW9mKHN0cnVjdCBwZXJmX2NwdSkgKiBucl9jcHVzKTsKPiA+ ICsgICAgICAgUkNfU1RSVUNUKHBlcmZfY3B1X21hcCkgKmNwdXM7Cj4gPiAgICAgICAgIHN0cnVj dCBwZXJmX2NwdV9tYXAgKnJlc3VsdDsKPiA+Cj4gPiArICAgICAgIGlmIChucl9jcHVzID09IDAp Cj4gPiArICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4KPiBCdXQgYWxsb2NhdGlvbiBmYWls dXJlIGFsc28gcmV0dXJucyBOVUxMLiAgVGhlbiBjYWxsZXJzIHNob3VsZCBjaGVjawo+IHdoYXQn cyB0aGUgZXhwZWN0ZWQgcmVzdWx0LgoKUmlnaHQsIHdlIGRvbid0IGhhdmUgYSBoYWJpdCBvZiBq dXN0IGFib3J0aW5nIG9uIG1lbW9yeSBhbGxvY2F0aW9uCmVycm9ycy4gSW4gdGhlIGNhc2UgdGhh dCBOVUxMIGlzIHJldHVybmVkIGl0IGlzIGFzc3VtZWQgdGhhdCBhbiBlbXB0eQpDUFUgbWFwIGlz IGFwcHJvcHJpYXRlLiBBZGRpbmcgY2hlY2tzIHRocm91Z2hvdXQgdGhlIGNvZGUgYmFzZSB0aGF0 IGFuCmVtcHR5IENQVSBtYXAgaXMgb25seSByZXR1cm5lZCB3aGVuIDAgaXMgZ2l2ZW4gaXMgYmV5 b25kIHRoZSBzY29wZSBvZgp0aGlzIHBhdGNoIHNldC4KClRoYW5rcywKSWFuCgo+IFRoYW5rcywK PiBOYW1oeXVuZwo+Cj4gPiArCj4gPiArICAgICAgIGNwdXMgPSBtYWxsb2Moc2l6ZW9mKCpjcHVz KSArIHNpemVvZihzdHJ1Y3QgcGVyZl9jcHUpICogbnJfY3B1cyk7Cj4gPiAgICAgICAgIGlmIChB RERfUkNfQ0hLKHJlc3VsdCwgY3B1cykpIHsKPiA+ICAgICAgICAgICAgICAgICBjcHVzLT5uciA9 IG5yX2NwdXM7Cj4gPiAgICAgICAgICAgICAgICAgcmVmY291bnRfc2V0KCZjcHVzLT5yZWZjbnQs IDEpOwo+ID4gLS0KPiA+IDIuNDMuMC41OTQuZ2Q5Y2Y0ZTIyN2QtZ29vZwo+ID4KCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwg bWFpbGluZyBsaXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8v bGlzdHMuaW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK