From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f46.google.com (mail-wm1-f46.google.com [209.85.128.46]) (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 5D18C81725 for ; Tue, 9 Apr 2024 10:43:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.46 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712659404; cv=none; b=L4vGi7pO3VXkwWFxrFIcEfoaEr8McXp4csZW5ikWvRJpqaM90DcAD8uoLoHJp4920En6iF+VBLs+mcaDuZnrQplC2fwP3JOLe5Ay4tnOtFIvnIHxMLCKaDXLHzWH8puxqx7RUjb4LT4UW0/RVerHK/QvikRW1Acc8WJOLxs/QUY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1712659404; c=relaxed/simple; bh=P1drV4PVyYjqV1TiHKD9r5Q92b00wwuRopyWCFjwIO8=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=g6WoxxfOm/xgqiFMwiAyGIWt0MjE6OIeVGjqUvSeU4Lgb5YlCLl9yVc+1Q9HLsQbj4iktXZvObiDJyTMcqvsZLfaVM/2ys3Ct7JurPYZX+ZzKP6AYPJnNR9Kk/5S1pdIayth8wmKdTohidZlkufBXczA2xyV6rmRBTmoPXdwyT8= 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=HgN/Sw+4; arc=none smtp.client-ip=209.85.128.46 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="HgN/Sw+4" Received: by mail-wm1-f46.google.com with SMTP id 5b1f17b1804b1-41699bbfb91so66945e9.0 for ; Tue, 09 Apr 2024 03:43:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712659400; x=1713264200; darn=lists.linux.dev; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ikQVwwVGg1QRlqcNnHhwQAmZ6t6nRddh161TyahHqsI=; b=HgN/Sw+4HVdRVY6GG4Oayw0v6ItSkRcMfzZboss1WnHPn2KgN5iTr3QR5eanVwoRk0 wUPbZKhdZApW1Ljyrv4T/AgnpZFxOdbuFbiuLJgFRbpMnL3S+LKTRAOd0CAKwDOWHB7E jdXtuVQUr5n6cUSAuRYnAZqPo9LtDG5MoZqHLNiU0yihDyGejevw6/FW0GpLJFyw/xKX 2g7tTVNulqFY1D1XIu6IUvNbt0QRH0bmjkTYErAUrhyJq3w8wxK4860OIOCa5HcisYIv Lxhex1Q0MRky7hs3I3HNKWrpUh7QsvT/gs2PHF1HbQMf/m0AqIkUl1WgTdODOTsBUI5V li1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712659400; x=1713264200; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ikQVwwVGg1QRlqcNnHhwQAmZ6t6nRddh161TyahHqsI=; b=Nj69xMgdmdYA+F1cgBzmmEKvKJvJM4p+NxKA6c5pbWrdHF+0zRztU+tsagYkylxEz0 Z7ds1CfyNIsCHXciTW9XnqDfgCtcHCjX1XHcJ9I0uPsulwBR3SKvB5adT4f9sS3aBPUj c0JLjj3LsiKiBiSN+AxmXWM2fIHA+gofg+U3DtQlGhP5K436eyn1IY0p0ogjQGH8Lij0 q9VyNyd5ZMftM17hHobwXg/5GNDvruFOrp1AyJsISpDWTgSToEHS8tSwUYDti+o3MV7p AYkEC/xlymeQqn5n08fKxwf5ojzgs9oeoIf9+A5xyxmEWjD7ywEx4iuNGtFm1gyvtc71 eU/g== X-Forwarded-Encrypted: i=1; AJvYcCU64x1LKhO2xJrHWYX0ctA0neNY55gSC0faI0DQ7uQ4Kju9LkBNyQBsRjzRU4pjdUE9f4MelkEHEUeJ3073G47pzjDJzmM= X-Gm-Message-State: AOJu0Yw080sVRsAAgcjImgyCtoBoJ88QOm6bAG0ii1Ih5TQwLlPVHEmn snbDwoED2Kg3Iu8Brq2mP17hG/XvCiX8vfhKsu9iwH2nZVSPzvh9i9d2rEE2MA== X-Google-Smtp-Source: AGHT+IEmRPrla3hhCrDIRObyh+HMBsdD+xkXu0Qn4yIa7MpXx8XpCnlB5sSXyw9+afvoI4IVfrqHbg== X-Received: by 2002:a05:600c:3b21:b0:416:6b86:852 with SMTP id m33-20020a05600c3b2100b004166b860852mr150180wms.2.1712659399532; Tue, 09 Apr 2024 03:43:19 -0700 (PDT) Received: from google.com (180.232.140.34.bc.googleusercontent.com. [34.140.232.180]) by smtp.gmail.com with ESMTPSA id s7-20020adff807000000b00343d6c7240fsm11098732wrp.35.2024.04.09.03.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 03:43:19 -0700 (PDT) Date: Tue, 9 Apr 2024 10:43:15 +0000 From: Mostafa Saleh To: Aleksandr Aprelkov Cc: Will Deacon , Robin Murphy , Joerg Roedel , Jason Gunthorpe , Nicolin Chen , Michael Shavit , Lu Baolu , Marc Zyngier , linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] iommu/arm-smmu-v3: Free MSIs in case of ENOMEM Message-ID: References: <20240403053759.643164-1-aaprelkov@usergate.com> Precedence: bulk X-Mailing-List: iommu@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20240403053759.643164-1-aaprelkov@usergate.com> Hi Aleksandr, On Wed, Apr 03, 2024 at 12:37:59PM +0700, Aleksandr Aprelkov wrote: > If devm_add_action() returns ENOMEM, then MSIs allocated but > not freed on teardown. > > Found by Linux Verification Center (linuxtesting.org) with SVACE. > > Fixes: 166bdbd23161 ("iommu/arm-smmu: Add support for MSI on SMMUv3") > Signed-off-by: Aleksandr Aprelkov > --- > v2: Use appropriate function for registration failure as > Jonathan Cameron suggested. > > drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > index 41f93c3ab160..8800af041e5f 100644 > --- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > +++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.c > @@ -3402,7 +3402,9 @@ static void arm_smmu_setup_msis(struct arm_smmu_device *smmu) > smmu->priq.q.irq = msi_get_virq(dev, PRIQ_MSI_INDEX); > > /* Add callback to free MSIs on teardown */ > - devm_add_action(dev, arm_smmu_free_msis, dev); > + ret = devm_add_action_or_reset(dev, arm_smmu_free_msis, dev); > + if (ret) > + dev_warn(dev, "failed to add free MSIs callback - falling back to wired irqs\n"); I am not sure that is the right fix, as allowing the driver to probe without MSIs, seems worse than leaking MSI memory. IMHO, we can just add something like: dev_err(smmu->dev, “Can’t allocate devm action, MSIs are never freed! !\n”) ; Also, we can’t unconditionally fallback to wired irqs if MSI exists, according to the user manual: An implementation must support one of, or optionally both of, wired interrupts and MSIs ... The discovery of support for wired interrupts is IMPLEMENTATION DEFINED. We can add some logic, to check dt/acpi irqs and to choose to fallback or not based on that, but, if we get -ENOMEM, (especially early at probe) something really went wrong, so I am not sure it’s worth the complexity. > } > > static void arm_smmu_setup_unique_irqs(struct arm_smmu_device *smmu) > -- > 2.34.1 > Thanks, Mostafa 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 62401C67861 for ; Tue, 9 Apr 2024 10:43:40 +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:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=bFCxnRUhajKHlAT4DdmH5oBSVqtlJFdEQu4dDlZFnHg=; b=s6FV33sXv5qs9j yLVS5HSeUQHXR1tPI7xH1hLB/2UeG9EcW/vsDiURQ7ZC47l4g3ziemRU6ltIzC6PnTPIKrXf7+Tj6 80JmeHtovTR3I6R29sJHKNWEmaWuSx1nbszs1+e+qWPem9WsPKBEk/n/tNebX2bcfFgc/0Za3dYDd VSydvi+nvALkgfd1hUGQM9xWHBNOczXTLzieLXng/CQt7wJrWRuYAqSigLZxq5ldMfDsBtGIXQkEt KG+OVEfwlxVPjiAHthx5ChL3dTkZalWkSpgL1l/ZWcMp7XgfBOb2uQQcFCyNWw60avDj/TwW3N4kh /Yrjgl2I0v+Z4MgTYkIQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.97.1 #2 (Red Hat Linux)) id 1ru8wr-00000001VS8-3dOI; Tue, 09 Apr 2024 10:43:29 +0000 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]) by bombadil.infradead.org with esmtps (Exim 4.97.1 #2 (Red Hat Linux)) id 1ru8wm-00000001VQA-0ooc for linux-arm-kernel@lists.infradead.org; Tue, 09 Apr 2024 10:43:28 +0000 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-41687826509so49635e9.1 for ; Tue, 09 Apr 2024 03:43:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1712659400; x=1713264200; darn=lists.infradead.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=ikQVwwVGg1QRlqcNnHhwQAmZ6t6nRddh161TyahHqsI=; b=4fjlEecO44iamZ7+s1XsyFtXP7Q5eOJbH4Pg4juKkyro78AUcqhkQOkUVJ4ZE5QdRa R10Tk5Y4I9LiIkRlzoR9EE/+xzap+TDSWhIDGb1oqxBcwRKTUW4Zv95tISS9i90afWzN uxYlnc9hoUE9PYGMaEMOLDkwbErEdS4st6bw4FIMGAwnztSUEBDQlXk2R6PqWpi/3C0b W7x+Jv4tq3N7bGwjXRVDNXtdxF9QWeB6y0O5jLUoSNtWRVLdj9gSJ2UDrpWx31hW6JEK 4SJa5aU7xGggGdNWiznesYhr75+RSm+jt/5V2wjpumv+W1bfYVgd+xl7aBM+cpbBQsLv WO4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1712659400; x=1713264200; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=ikQVwwVGg1QRlqcNnHhwQAmZ6t6nRddh161TyahHqsI=; b=ShkkkHJpQe1cUoz1An85kZwtzK/CYNi2MdCgA8tsAUJw5sI6KfWTBt1wIh+Wcid5xP uT3LQfLVmek3olaLsR7dZqfUE1l3FdyLyVHMhizNDJiGwjWfiQo+DKPonu9cIP5CLa9f xuT0MONQwYhRN8kkwVvmavj2gnAGkc7RzDH5jN2m9JOKdeaY0svV7Vr1rCXcCJTVghk0 mSjtiTSPvTrXV0DwBmSqmWCQP2isY9OVF64lwgnaJcthQ2pu63bD56egeWwnTrYU4ygj B2UUkrGta8wfx+ofDeXKjTUyfQb7AV0J9DLvHVJXZrWxcxvqINeH5l4nEAySN67tbgSu PPDw== X-Forwarded-Encrypted: i=1; AJvYcCWgVWpKmP/vxlhqQ4ketmw9BIpR1LvHuGe6ktoqX6ya2IEBmdY2LZFJ9fpPrMtYWgHLga2TgiC/7YPvxyye+3ZiViZEyKal0npSnhcHuXCm2FljH88= X-Gm-Message-State: AOJu0YxTIJozjl9lLP/Bx3Z/amCqlxwJPgen4gv8NBJ1QOvLDVG1y/57 KBbSMWtH2ZryyfAkZoFnF9inUWn9iYiMx4mUJDkF5f/XTz1SKkNx38AB96kk6g== X-Google-Smtp-Source: AGHT+IEmRPrla3hhCrDIRObyh+HMBsdD+xkXu0Qn4yIa7MpXx8XpCnlB5sSXyw9+afvoI4IVfrqHbg== X-Received: by 2002:a05:600c:3b21:b0:416:6b86:852 with SMTP id m33-20020a05600c3b2100b004166b860852mr150180wms.2.1712659399532; Tue, 09 Apr 2024 03:43:19 -0700 (PDT) Received: from google.com (180.232.140.34.bc.googleusercontent.com. [34.140.232.180]) by smtp.gmail.com with ESMTPSA id s7-20020adff807000000b00343d6c7240fsm11098732wrp.35.2024.04.09.03.43.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Apr 2024 03:43:19 -0700 (PDT) Date: Tue, 9 Apr 2024 10:43:15 +0000 From: Mostafa Saleh To: Aleksandr Aprelkov Cc: Will Deacon , Robin Murphy , Joerg Roedel , Jason Gunthorpe , Nicolin Chen , Michael Shavit , Lu Baolu , Marc Zyngier , linux-arm-kernel@lists.infradead.org, iommu@lists.linux.dev, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] iommu/arm-smmu-v3: Free MSIs in case of ENOMEM Message-ID: References: <20240403053759.643164-1-aaprelkov@usergate.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20240403053759.643164-1-aaprelkov@usergate.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20240409_034324_363376_C9A52004 X-CRM114-Status: GOOD ( 21.73 ) 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 SGkgQWxla3NhbmRyLAoKT24gV2VkLCBBcHIgMDMsIDIwMjQgYXQgMTI6Mzc6NTlQTSArMDcwMCwg QWxla3NhbmRyIEFwcmVsa292IHdyb3RlOgo+IElmIGRldm1fYWRkX2FjdGlvbigpIHJldHVybnMg RU5PTUVNLCB0aGVuIE1TSXMgYWxsb2NhdGVkIGJ1dAo+IG5vdCBmcmVlZCBvbiB0ZWFyZG93bi4K PiAKPiBGb3VuZCBieSBMaW51eCBWZXJpZmljYXRpb24gQ2VudGVyIChsaW51eHRlc3Rpbmcub3Jn KSB3aXRoIFNWQUNFLgo+IAo+IEZpeGVzOiAxNjZiZGJkMjMxNjEgKCJpb21tdS9hcm0tc21tdTog QWRkIHN1cHBvcnQgZm9yIE1TSSBvbiBTTU1VdjMiKQo+IFNpZ25lZC1vZmYtYnk6IEFsZWtzYW5k ciBBcHJlbGtvdiA8YWFwcmVsa292QHVzZXJnYXRlLmNvbT4KPiAtLS0KPiB2MjogVXNlIGFwcHJv cHJpYXRlIGZ1bmN0aW9uIGZvciByZWdpc3RyYXRpb24gZmFpbHVyZSBhcyAKPiBKb25hdGhhbiBD YW1lcm9uIDxKb25hdGhhbi5DYW1lcm9uQEh1YXdlaS5jb20+IHN1Z2dlc3RlZC4KPiAKPiAgZHJp dmVycy9pb21tdS9hcm0vYXJtLXNtbXUtdjMvYXJtLXNtbXUtdjMuYyB8IDQgKysrLQo+ICAxIGZp bGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2FybS1zbW11LXYzLmMgYi9kcml2ZXJz L2lvbW11L2FybS9hcm0tc21tdS12My9hcm0tc21tdS12My5jCj4gaW5kZXggNDFmOTNjM2FiMTYw Li44ODAwYWYwNDFlNWYgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9pb21tdS9hcm0vYXJtLXNtbXUt djMvYXJtLXNtbXUtdjMuYwo+ICsrKyBiL2RyaXZlcnMvaW9tbXUvYXJtL2FybS1zbW11LXYzL2Fy bS1zbW11LXYzLmMKPiBAQCAtMzQwMiw3ICszNDAyLDkgQEAgc3RhdGljIHZvaWQgYXJtX3NtbXVf c2V0dXBfbXNpcyhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpzbW11KQo+ICAJc21tdS0+cHJpcS5x LmlycSA9IG1zaV9nZXRfdmlycShkZXYsIFBSSVFfTVNJX0lOREVYKTsKPiAgCj4gIAkvKiBBZGQg Y2FsbGJhY2sgdG8gZnJlZSBNU0lzIG9uIHRlYXJkb3duICovCj4gLQlkZXZtX2FkZF9hY3Rpb24o ZGV2LCBhcm1fc21tdV9mcmVlX21zaXMsIGRldik7Cj4gKwlyZXQgPSBkZXZtX2FkZF9hY3Rpb25f b3JfcmVzZXQoZGV2LCBhcm1fc21tdV9mcmVlX21zaXMsIGRldik7Cj4gKwlpZiAocmV0KQo+ICsJ CWRldl93YXJuKGRldiwgImZhaWxlZCB0byBhZGQgZnJlZSBNU0lzIGNhbGxiYWNrIC0gZmFsbGlu ZyBiYWNrIHRvIHdpcmVkIGlycXNcbiIpOwoKSSBhbSBub3Qgc3VyZSB0aGF0IGlzIHRoZSByaWdo dCBmaXgsIGFzIGFsbG93aW5nIHRoZSBkcml2ZXIgdG8gcHJvYmUKd2l0aG91dCBNU0lzLCBzZWVt cyB3b3JzZSB0aGFuIGxlYWtpbmcgTVNJIG1lbW9yeS4KCklNSE8sIHdlIGNhbiBqdXN0IGFkZCBz b21ldGhpbmcgbGlrZToKICAgIGRldl9lcnIoc21tdS0+ZGV2LCDigJxDYW7igJl0IGFsbG9jYXRl IGRldm0gYWN0aW9uLCBNU0lzIGFyZSBuZXZlciBmcmVlZCEgIVxu4oCdKSA7CgpBbHNvLCB3ZSBj YW7igJl0IHVuY29uZGl0aW9uYWxseSBmYWxsYmFjayB0byB3aXJlZCBpcnFzIGlmIE1TSSBleGlz dHMsCmFjY29yZGluZyB0byB0aGUgdXNlciBtYW51YWw6CiAgICBBbiBpbXBsZW1lbnRhdGlvbiBt dXN0IHN1cHBvcnQgb25lIG9mLCBvciBvcHRpb25hbGx5IGJvdGggb2YsCiAgICB3aXJlZCBpbnRl cnJ1cHRzIGFuZCBNU0lzCiAgICAuLi4KICAgIFRoZSBkaXNjb3Zlcnkgb2Ygc3VwcG9ydCBmb3Ig d2lyZWQgaW50ZXJydXB0cyBpcyBJTVBMRU1FTlRBVElPTiBERUZJTkVELgoKV2UgY2FuIGFkZCBz b21lIGxvZ2ljLCB0byBjaGVjayBkdC9hY3BpIGlycXMgYW5kIHRvIGNob29zZSB0byBmYWxsYmFj awpvciBub3QgYmFzZWQgb24gdGhhdCwgYnV0LCBpZiB3ZSBnZXQgLUVOT01FTSwgKGVzcGVjaWFs bHkgZWFybHkgYXQKcHJvYmUpIHNvbWV0aGluZyByZWFsbHkgd2VudCB3cm9uZywgc28gSSBhbSBu b3Qgc3VyZSBpdOKAmXMgd29ydGgKdGhlIGNvbXBsZXhpdHkuCgo+ICB9Cj4gIAo+ICBzdGF0aWMg dm9pZCBhcm1fc21tdV9zZXR1cF91bmlxdWVfaXJxcyhzdHJ1Y3QgYXJtX3NtbXVfZGV2aWNlICpz bW11KQo+IC0tIAo+IDIuMzQuMQo+IApUaGFua3MsCk1vc3RhZmEKCl9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFybS1rZXJuZWwgbWFpbGluZyBs aXN0CmxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMuaW5m cmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFybS1rZXJuZWwK