From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f74.google.com (mail-wm1-f74.google.com [209.85.128.74]) (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 1A0C24657C8 for ; Wed, 17 Jun 2026 14:51:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.74 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781707914; cv=none; b=LkYAvtfs2kWtRNZAnGIr4kLc6eM5wRUUN5LBUpdTJox2FxYsaKhMfIENCJaKFfLoyJ9eqGw6COhK3aR3bunpF09RJbcfo+XQitWsgxiHqC37ULXjB2dcnQW/GIjctU0ka4JwR749bvFgbuezBtATeZqZysVxdLx4x/u7sZrvGYI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781707914; c=relaxed/simple; bh=YPcdEz5k/hYGptLVZPb5hMmpS8SHy17Aj5bLXZLACHQ=; h=Date:In-Reply-To:Mime-Version:References:Message-ID:Subject:From: To:Cc:Content-Type; b=KEaKPqvlC929uP1KShXHgakCEEm23hP1imK5rc6y1tIDqyK983TOV0aPJnsHbdxCP2QuPnUENT7JP55Gg7dnSXFSyTPt6Y2YL5md/0DWeqmazLngN770Vm4w2+lbQBLANgK4q7ql3h6/uk11WtPsm9aLUPWjZLtOQYkf+OCy6Lo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=google.com; spf=pass smtp.mailfrom=flex--sebastianene.bounces.google.com; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b=lWmgoxEi; arc=none smtp.client-ip=209.85.128.74 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--sebastianene.bounces.google.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="lWmgoxEi" Received: by mail-wm1-f74.google.com with SMTP id 5b1f17b1804b1-490a060eb84so41413175e9.0 for ; Wed, 17 Jun 2026 07:51:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20251104; t=1781707911; x=1782312711; darn=vger.kernel.org; h=cc:to:from:subject:message-id:references:mime-version:in-reply-to :date:from:to:cc:subject:date:message-id:reply-to; bh=Aw1QEoh+UiZ5XFZdVoOucXmJoUZRDixdHeCpCeuLYa8=; b=lWmgoxEi7wfhiSVTRaa5oMPDuuQkn/JhClU2ImusL3xMY5uCQxcH0T2ngsFAQ31kZF 4ViSeLf0/KVYncEtNkgTNbUwWVMoKzob2sbuW6OsWykMdKY7fA0CvbAKB4llLjDyxJLZ uA9Gyz2Abo6X8w0ZVKLB++qDRNVtaj07LxA/O7lAedAwDtsfoHdQkOib8bdUmHTvtcqz AKXPpjNnbKJQiYateRGj+4ce8P8S6Xeakyisjk7XpmS6ZfwIp1Vw6yqhziQvEjPzq4Nu omt96KD/3wMy28MzABZg70qJhXwG50WJ7h34AfrDvOQ2JwJUEknNX93aPZeYGOrn9tYq nz4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781707911; x=1782312711; h=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=Aw1QEoh+UiZ5XFZdVoOucXmJoUZRDixdHeCpCeuLYa8=; b=K0D864YWggRHvFiJzTRFya/jy/gaSyVv78bwYntm2Sa4X/HKx6mlkdnvMIYQWwwBOv wHXCPqJmFZ7M20szWKO9fbN7dveA1275tfPFyXW2zx1YVv/eAfm0Q27wJR1XABT4In+i tu7dylGjj4LXoW3kRQhZXpiMP8u4PmCjkLAu9rUPKcis4rCrtYAgtm+j9w1Tv+954l2g RcshwIgHb9ycsoiZQCdAOu4YlD7z2/Ji85MUHA6Wc2NfPNGkCU6pOTlvYhdp7WaRqbmF oWEgc0aPmzRuzZs+uyCO+Qcs8zmYXpvZ4ijmT38Agv2RFdYlaohJyqJqHB/tdQsCT6Uz Mu1A== X-Forwarded-Encrypted: i=1; AFNElJ+PXVGZIjQ3TPtKe227kfNSmd1y8NYOmsncndQHYxf2AkPH2Df/TwMbz6p6xV9ooMELmtZtWX6eluR8FaA=@vger.kernel.org X-Gm-Message-State: AOJu0YzfFr9Wg0y2qHfYFYQUjh534qUmuKg117LL+V0OGbHTxDa7jIU3 iiSEbm0RmPEZCEiOMxKR9DYRC3a6aC/HWGfGYxp+bK1mWUeCIp+clm7Dyw5PqbBaoUvg0p/XdPk 6D4OtqGexnVOINmmN5zPZGpzY85Thsw== X-Received: from wmxb4-n2.prod.google.com ([2002:a05:600d:8444:20b0:490:4477:50d3]) (user=sebastianene job=prod-delivery.src-stubby-dispatcher) by 2002:a05:600c:3148:b0:490:b5d0:598e with SMTP id 5b1f17b1804b1-4923412f0e7mr58923595e9.21.1781707910745; Wed, 17 Jun 2026 07:51:50 -0700 (PDT) Date: Wed, 17 Jun 2026 14:51:29 +0000 In-Reply-To: <20260617145130.3729015-1-sebastianene@google.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: Mime-Version: 1.0 References: <20260617145130.3729015-1-sebastianene@google.com> X-Mailer: git-send-email 2.54.0.1136.gdb2ca164c4-goog Message-ID: <20260617145130.3729015-7-sebastianene@google.com> Subject: [PATCH v7 6/7] KVM: arm64: Ensure FFA ranges are page aligned From: Sebastian Ene To: catalin.marinas@arm.com, oupton@kernel.org, sudeep.holla@kernel.org, will@kernel.org Cc: jens.wiklander@linaro.org, joey.gouly@arm.com, kvmarm@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, android-kvm@google.com, maz@kernel.org, mrigendra.chaubey@gmail.com, op-tee@lists.trustedfirmware.org, perlarsen@google.com, sebastianene@google.com, seiden@linux.ibm.com, smostafa@google.com, sumit.garg@kernel.org, suzuki.poulose@arm.com, vdonnefort@google.com, yuzenghui@huawei.com Content-Type: text/plain; charset="UTF-8" From: Mostafa Saleh At the moment we only check that the size of the range is page aligned, and truncate the address to the page boundary. This make an assumption that TZ will do the same. However, it might decide to use the extra offset of the neighbour page at the end, which is valid under FFA if NS is using larger page size. Harden this check by also checking that the base address is aligned and reject it otherwise. Fixes: 436090001776 ("KVM: arm64: Handle FFA_MEM_SHARE calls from the host") Signed-off-by: Mostafa Saleh Signed-off-by: Sebastian Ene --- arch/arm64/kvm/hyp/nvhe/ffa.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/arm64/kvm/hyp/nvhe/ffa.c b/arch/arm64/kvm/hyp/nvhe/ffa.c index 1a2abd0154c6..d7c5701d0584 100644 --- a/arch/arm64/kvm/hyp/nvhe/ffa.c +++ b/arch/arm64/kvm/hyp/nvhe/ffa.c @@ -352,7 +352,7 @@ static u32 __ffa_host_share_ranges(struct ffa_mem_region_addr_range *ranges, u64 sz = (u64)range->pg_cnt * FFA_PAGE_SIZE; u64 pfn = hyp_phys_to_pfn(range->address); - if (!PAGE_ALIGNED(sz)) + if (!PAGE_ALIGNED(sz | range->address)) break; if (__pkvm_host_share_ffa(pfn, sz / PAGE_SIZE)) @@ -372,7 +372,7 @@ static u32 __ffa_host_unshare_ranges(struct ffa_mem_region_addr_range *ranges, u64 sz = (u64)range->pg_cnt * FFA_PAGE_SIZE; u64 pfn = hyp_phys_to_pfn(range->address); - if (!PAGE_ALIGNED(sz)) + if (!PAGE_ALIGNED(sz | range->address)) break; if (__pkvm_host_unshare_ffa(pfn, sz / PAGE_SIZE)) -- 2.54.0.1136.gdb2ca164c4-goog