From nobody Sat Jul 25 00:16:52 2026 Received: from mail-pl1-f177.google.com (mail-pl1-f177.google.com [209.85.214.177]) (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 1B72A46D2A1 for ; Tue, 21 Jul 2026 16:29:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784651400; cv=none; b=IsSDiHvkiNmO2wGmZXhoJ9pK7GGbNhZNwDSifVXSGqpEcVUbnTuS5m4xSFq6JwECUHqee0Gqi/1n36ppU6cSZ/BfJH3Rk3sB1X752Iq5rA3vCdyfnaKgYzocIGhkD/uxnr+XuQSmKIOp2rXT96vzwdjTxKD23gFMxphpqzdeMyY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784651400; c=relaxed/simple; bh=xBRGEBMOJolOAZU9aVriba8Qv3JaXMeTHqmO3Wh1NPU=; h=Subject:From:To:Cc:Date:Message-ID:MIME-Version:Content-Type; b=WUGXzXqwqFQir4mHmL8VBWNbyifePP61Gf/JNA1rGA2Tde317rMpPWcFIIPYjarIgOss8zsHRrfVVz+sy9DFGEzVvRqFpJ/HPMIBSFWIZCqUaeyN3nbMujqXpyFKnzYW1wTh0Z0M/J2h+eO0VXFBXuJW5NZlGVYXX2prsAu6kS0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=MHVa3tdL; arc=none smtp.client-ip=209.85.214.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="MHVa3tdL" Received: by mail-pl1-f177.google.com with SMTP id d9443c01a7336-2ccf2360620so75917705ad.3 for ; Tue, 21 Jul 2026 09:29:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784651398; x=1785256198; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:user-agent :message-id:date:cc:to:from:subject:from:to:cc:subject:date :message-id:reply-to:content-type; bh=755BiUbRPPKbOSidVRU/Ra+/ObPva+L4XMSJVI+HSC8=; b=MHVa3tdLjQjsnonSb/zEyNatMf2SCqudH7KH9mABgmcBKTImE82JSKVZMA8bA//uGw UPMvnr7Jgz1ZtNh0hotGZkJ7Fc/AX+VEKtFMU0DXF4jyhH2WBDKEDcWoj//NkhkpDb+6 GxPK23GWTAylPSpjm+w9ehgbdgUr8thOPemeSBkszpVYK/dUBTGa2AkNRf1SoJ5kRwow ygByIaBzDB4pZwY+3e2kAWMLU4X3xa0m6xMmx/rbHAgwqel1Q52lkt6MWLkIa78yd4Pb tFaAZ/51fxhmiD3z1yfwL2IKLZzqjJPjhJRkL3YJLJDGpGxbENsWh5inkqvAoP6Qw97R q49w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784651398; x=1785256198; h=content-transfer-encoding:content-type:mime-version:user-agent :message-id:date:cc:to:from:subject:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=755BiUbRPPKbOSidVRU/Ra+/ObPva+L4XMSJVI+HSC8=; b=Id74xWHHEjvcPBV6JqIdlDM50AVPW2m8eX3rSl9gLaE8/SyJKssDC50uSBnTWAoPa5 t0VIGPL3oNd5eJjsT3Vee0zC7Br4gzchlyfsEnNeew765l7MmzcleKzsJ9THBZ8pHfam Ew+5IDdnyAiecm3aa4JpBzycOQ4FqHdZ5jxzL1uDnaK4dB/U0P1ppjF8nqLEl32ZUjfG 21QJddSEfOxOjqim9+iJVnI8rpQaGRS1t5Cl28Vd2KvyJnwspIW8cpF0aTP7IyVx7F1l UeLwffaGp4yAz0gJUZ45doGpzd3zmYZZQ/mGhp7zHprRCWThNd6fGUdLM39m8AQ10Fw/ Pzlw== X-Forwarded-Encrypted: i=1; AHgh+RrEx7UmuI3maZmx3AlSCZ9Tr5oKGuXzg7wkaXi8AlfBb4mKKzWn5GZBEdx3ESSL1aMCPxgYhacdB4kp9/w=@vger.kernel.org X-Gm-Message-State: AOJu0YyoyilMRZmHkScBhYsHF3g7rwHfrNTZzFzSwud65zn2Ve39Zo83 cBYElY6z41Ft31Ls/ij+FCqQp8nF3Qe2TZsT6FFRNxM/0ns4MNmoYLywpOKCWFRx X-Gm-Gg: AR+sD11ch8Vq/Z0vg7TDhhFhq8J93A2I1Q18YU/PyhF3RpKh3VTaPtIRLBO+ce91QpP a/5rkLSrPq1Q6NP8TGGhGW30L54RBlUgpsQWSv2yPvuhabJOQ2Pg6NAOgrpJ3yEolL/OHKW3giw dvXrq4s25HoNkN4zLBaSLHlBlEbPF/aDHtx4G2j0M3eXAwBOTQOV43vWXxugV5vk6E6JZ5+MjMU 1fYmuL83272QG7yEUDvttFIp2yD9pxwqUZalHvV0LhBvPdeIKA44H9IQ4LNyyQ3WbATl4ZZ5JAT 6Vv5UL6HPr8RcqLMj61Fww+Wh2Q6jLLjD9oTWO9S8pV7se7zsSowbdGG+TQ5BKLLUXoPgcvCDLB 7Jb0wDtfZTg+G3sAQrCUucIMSDVmbMJwL3yFjGTdbWguYMV5vLU4syoEi28G4u3XujyNnm6+pRw /7B66dXBnj3RHlD+Qq6AX3TahIdj7WwPap7H2oJUBATMMVaGB6 X-Received: by 2002:a17:903:1a2e:b0:2c9:c517:d078 with SMTP id d9443c01a7336-2cf349d849amr217655105ad.36.1784651398229; Tue, 21 Jul 2026 09:29:58 -0700 (PDT) Received: from [192.168.0.160] (c-98-225-44-182.hsd1.wa.comcast.net. [98.225.44.182]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2cf34490361sm80219255ad.17.2026.07.21.09.29.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 21 Jul 2026 09:29:57 -0700 (PDT) Subject: [PATCH v2] drm/gpusvm: Zero HMM PFNs before scanning ranges From: Stanislav Kinsburskii To: maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, skinsburskii@gmail.com, thomas.hellstrom@linux.intel.com Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, intel-xe@lists.freedesktop.org Date: Tue, 21 Jul 2026 09:29:56 -0700 Message-ID: <178465137297.1335238.13264315601290244705.stgit@skinsburskii> User-Agent: StGit/0.19 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable drm_gpusvm_check_pages() and drm_gpusvm_scan_mm() asks HMM to report the current CPU page-table state without faulting missing entries by leaving default_flags set to zero. The HMM PFN array is still caller-owned input/ou= tput state, and the framework may preserve input bits while filling entries. It = is not safe for the caller to hand HMM an uninitialized array and then treat entries without HMM_PFN_VALID as an authoritative unpopulated result. Use kvcalloc() for the temporary PFN array so entries that are not reported as valid start from the documented zero state. This prevents random stack or heap contents from being interpreted as HMM PFN flags or PFN values during the scan. Fixes: f1d08a586482 ("drm/gpusvm: Introduce a function to scan the current = migration state") Cc: stable@vger.kernel.org Signed-off-by: Stanislav Kinsburskii --- drivers/gpu/drm/drm_gpusvm.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/drm_gpusvm.c b/drivers/gpu/drm/drm_gpusvm.c index ca234fd2c491..6ca6e68be5a6 100644 --- a/drivers/gpu/drm/drm_gpusvm.c +++ b/drivers/gpu/drm/drm_gpusvm.c @@ -708,7 +708,7 @@ static bool drm_gpusvm_check_pages(struct drm_gpusvm *g= pusvm, =20 mmap_assert_locked(gpusvm->mm); =20 - pfns =3D kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); + pfns =3D kvcalloc(npages, sizeof(*pfns), GFP_KERNEL); if (!pfns) return false; =20 @@ -780,7 +780,7 @@ enum drm_gpusvm_scan_result drm_gpusvm_scan_mm(struct d= rm_gpusvm_range *range, const struct dev_pagemap *other =3D NULL; int err, i; =20 - pfns =3D kvmalloc_array(npages, sizeof(*pfns), GFP_KERNEL); + pfns =3D kvcalloc(npages, sizeof(*pfns), GFP_KERNEL); if (!pfns) return DRM_GPUSVM_SCAN_UNPOPULATED;