From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-dy1-f202.google.com (mail-dy1-f202.google.com [74.125.82.202]) (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 1D3BA312834 for ; Sat, 30 May 2026 20:44:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.82.202 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780173850; cv=none; b=AQRBYhGFKPER11FG4P1N38iLt652OEj9vNr7SruzEXTnPmORz5Pv540OBmrHfQ8hjXW0ihjmmBrXWtlWHd5Wv36uvR3N8cNHxA9q4WapS5oHWArlRF+59BsEBayxMnrmVylzbQVeMB7eeiTWu0D+BglW0OUJoH9zm0dWcdUAihs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780173850; c=relaxed/simple; bh=LI2N6DhAF4cWYQbU1hA9nfoLMmZJwBfeUmpXKjK+ons=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=qXzd/t0hi1ZigWWdYYNXrmJcPgCqeLK+mbB7VHSRuyDC1MMU3yGp7YuH0BOeue/trSo18xSdUm5kulZVrS8VaGmkoWfL9RzI1hdJuxun/UgYu2i68bvUKil5m9sZ2sSVTT6jB5+lVO3NgV3F9Iv09WLU11AE8y7w6nb/jiTCnK0= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--wnliu.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=ibmIWv+z; arc=none smtp.client-ip=74.125.82.202 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=flex--wnliu.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="ibmIWv+z" Received: by mail-dy1-f202.google.com with SMTP id 5a478bee46e88-304efad654dso5026997eec.1 for ; Sat, 30 May 2026 13:44:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1780173848; x=1780778648; darn=vger.kernel.org; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:from:to:cc:subject:date:message-id :reply-to; bh=/c8iwXysjou1uiYhNQmPGoQNB8sBZpJc56AO9jQd4l0=; b=ibmIWv+zcT7Z0PmgTwFLWfJlZ8+WS7VAwsnWhb+nmYlAg6HrJXizRkgYiz6qRt/Syt C9KyrxSnLTBPVjHTyqVgVc+ArmQhc042rnab7lCnRIoFUhUDfuoD+rSHxnEDhpmO+8zg fkM+9RMSod8DF8qYpKABSbr/YYHqYw0y2pczpq6EIN9BH6q5sjCUcjl1g161HX4uJf6n 8r0FaSLw/UvM+CajyzIi3twb2kl9Dpe6NaUyVMTcGDPJmWcAPLFUZoSWpTDsU6v/dEyG aHtmFriiZsOkG0TxBLKajP2h70i28Y3D+R3qqa3SQk1yuTUzDz3+6SqsBkOmRTX0+I/1 QDmQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780173848; x=1780778648; h=content-transfer-encoding:cc:to:from:subject:message-id:references :mime-version:in-reply-to:date:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=/c8iwXysjou1uiYhNQmPGoQNB8sBZpJc56AO9jQd4l0=; b=rubOsUhZl4xeIrIrPZnX3CsbgQvEa0QD92T5oA5gpZl6ghNJ7j6dGwdkVWCmR3HDz0 Ju3a9kRmov/MmREX+Rsu0waU0eVOQM/d3EOfyToUEZCUvvTxgsAUPFDv6vyFjGwNJuFX wxudm/ebxK2Hi0S95weONkbw3TnjpuGTrAzU9ITc9BZYzXj6MzAnJMm7dXW79xluX2Qm +tiA1Dcx80Sohmsu5/XP0egu4/ocouWH48jcx6bCXbUab14gN5bl+P0YmS0lsHXiGqv+ 76tXaSFZQCpJeCw7Aj86YysQ4qrNYzkvWVHB5TtEYeTffyZr9Fa7cs+qJNjtuS2QQ5no 6rTQ== X-Forwarded-Encrypted: i=1; AFNElJ/gIOoO11MZ9nDXiUTPwfFp+iy9uGNlNhWomNcWZOgCOAKwkJnKBKKAig5GRgGkMxkxa5Ng+t2lHupHBtQ=@vger.kernel.org X-Gm-Message-State: AOJu0Yw8lM2etuBidkVkv9OE/rs4hMNa+PQAQOv0qNSf4J4F7qeqx2Jw HbOtZrdH8CHCZJuDACngHa+QwnhqopLDSXz8fpdBWeCf+E78cF0iOddoneaYXzawdmAQMmg6zQ0 Iyg== X-Received: from dlee16.prod.google.com ([2002:a05:7022:6290:b0:136:3f5e:fe1c]) (user=wnliu job=prod-delivery.src-stubby-dispatcher) by 2002:a05:7022:429:b0:137:1ae1:bc01 with SMTP id a92af1059eb24-137d4026936mr2275329c88.8.1780173847871; Sat, 30 May 2026 13:44:07 -0700 (PDT) Date: Sat, 30 May 2026 20:44:05 +0000 In-Reply-To: <20260528051738.596013-13-suravee.suthikulpanit@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260528051738.596013-13-suravee.suthikulpanit@amd.com> X-Mailer: git-send-email 2.54.0.823.g6e5bcc1fc9-goog Message-ID: <20260530204407.3017798-1-wnliu@google.com> Subject: Re: [PATCH v2 12/26] iommu/amd: Add per-VM private IPA alloc/map helpers From: Weinan Liu To: suravee.suthikulpanit@amd.com Cc: chriscli@google.com, dantuluris@google.com, iommu@lists.linux.dev, jay.chen@amd.com, jgg@nvidia.com, jon.grimm@amd.com, joro@8bytes.org, kevin.tian@intel.com, kpsingh@google.com, linux-kernel@vger.kernel.org, nicolinc@nvidia.com, sairaj.arunkodilkar@amd.com, santosh.shukla@amd.com, vasant.hegde@amd.com, wnliu@google.com, wvw@google.com, yi.l.liu@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, May 27, 2026 at 10:19=E2=80=AFPM Suravee Suthikulpanit wrote: > > +static void __maybe_unused free_private_vm_region(struct amd_iommu *iomm= u, u64 **entry, > + =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 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 u64 base, size_t size, u16 gid) > +{ > + =C2=A0 =C2=A0 =C2=A0 size_t unmapped; > + =C2=A0 =C2=A0 =C2=A0 u64 addr =3D base + (gid * size); > + > + =C2=A0 =C2=A0 =C2=A0 pr_debug("%s: entry=3D%#llx(%#llx), base=3D%#llx, = addr=3D%#llx, size=3D%#lx\n", > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0__func__, (unsig= ned long =C2=A0long)*entry, > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0iommu_virt_to_ph= ys(*entry), base, addr, size); > + > + =C2=A0 =C2=A0 =C2=A0 if (!iommu || !iommu->viommu_pdom) > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 return; Should check if the page pointer *entry is non-NULL before operating on it. *entry will be NULL if the caller encounters an error during alloc_privat= e_vm_region(), it may attempt to unmap and free a NULL pointer below: > + > + =C2=A0 =C2=A0 =C2=A0 unmapped =3D iommu_unmap(&iommu->viommu_pdom->doma= in, addr, size); > + =C2=A0 =C2=A0 =C2=A0 if (unmapped !=3D size) > + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 pr_warn("%s: unmapped = %#zx of %#lx at %#llx\n", __func__, unmapped, size, addr); > + > + =C2=A0 =C2=A0 =C2=A0 set_memory_wb((unsigned long)*entry, size >> PAGE_= SHIFT); > + =C2=A0 =C2=A0 =C2=A0 iommu_free_pages(*entry); > + =C2=A0 =C2=A0 =C2=A0 *entry =3D NULL; > +}