From nobody Sat May 9 09:06:43 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D00521A955 for ; Fri, 24 Jan 2025 18:15:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737742537; cv=none; b=K0xQ/bz2HhD7neLabbmUOmjOIa75xl45dm6pvFmSjefKsCag+30gXiWs4yoTaUeVGhlkOjAIpMM2o60QiNTaWq1jyZgoCLonUD/8t5z0GHZF4uc1VWg2DsFW/CXz3/p73jlDUK1KdI0mj2WPwgDqL8UiODwNc0xBG0RONcj1zAA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737742537; c=relaxed/simple; bh=D02XDcMSsOtveQCJfINbqCFi4Qc/jgciD+zijEATDu0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=utTatCjXk1gG45cdnrMRF9mccRjOOISf62rmflmZPE4IM87GAZYHWHdCDzA2W6OPgBA7BKF6Bj//bc6qIyZjPPG/3mWZrlEDkvWsejkhzsdSrAKqDXMEZP15H0xLo6U8wQzCgy5n/ZbgwdDJJ5QybgknXzIF+XUN2Y7YejoY/wc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ApFTaihj; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ApFTaihj" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737742533; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=sH2n76/tf6JZeoIK8d2JObbHEPa7c6/XDsbabI03lVU=; b=ApFTaihj8ht39GsURA9tlxRA+pzjDXZPmKoRp2DifgApJjKpujorlJdK5q7xC/4xHkzXPs 0F1IPv6y7nINLi/BkbE2xkka8Ki7YcodjtAt1fVq7/q15twEGBAqKKgsQo4KhhiMaIGp1C Gu5V0ZFO+GduF/j/0R+ETduHHTGzhHI= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-615-vP8JfGp9OgGpAS_mGVVNdw-1; Fri, 24 Jan 2025 13:15:32 -0500 X-MC-Unique: vP8JfGp9OgGpAS_mGVVNdw-1 X-Mimecast-MFC-AGG-ID: vP8JfGp9OgGpAS_mGVVNdw Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4361f371908so16496175e9.0 for ; Fri, 24 Jan 2025 10:15:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737742531; x=1738347331; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=sH2n76/tf6JZeoIK8d2JObbHEPa7c6/XDsbabI03lVU=; b=FVBk43o7XZxJztbKnef089gXIUVPlUC+eJ5Jcq1xAB/L8EQKH0jH9V8PiKIwxDTK33 4izonXxAOSFpTSC6JTZ0ENM3hHr8HTiRi7sOFEw7kj+OJXklnHyx9/2G/CM6sIvumKYd mikxGfOMwWGqNW+tGXiC1Z/scTuZrKdzrpwOCyOVKte1MoAHcanrbMyJGqHnU2Kz7NZ8 /nXRE8hRqD1YogAA6OjskK4T7jbJYGpEe0DP6ccPWlmSc9nePM3GD2EyLNtFrfB9Kd/d yPJe4pfjZWD1o14sGZtMTwFjRaDh+2ntyc2uQukoiYCplsEFdNOgW0cXjzdprveAPD5n sPpg== X-Gm-Message-State: AOJu0YyO+CU4GFGHBRZa1qWbwKpsFUsLKkm2e/EG+f/o8EiIY+XMKc4F DrwxzufuBMIeA9Ss3jsTbUMHYSF1+LD7j7Nk937xfS7pDNWt1jzWWaYBC6pBDAPgOG0dNLId+rx VaQfij/Fxmhgpfq34R3D9Fk9vWT30tbeufOxNtPwpkWpGExgmmYSj5sxVgdvVMEYH+0vYPhMqV8 F0u91JrkNneTs+jwyLsbsYXJkiRUTek5Q5h4b4Z46NyjBl X-Gm-Gg: ASbGncujQy8+A0Cr/IN1kRClsQgk+xt9ESChIEkDAu8gInkIjGv1YSZ4SDgdhjW3Wpl KWYQ00CcBAoyGpNkF8ade+Ocede1JKPsBxfMDLMNP9ripUkwSZWHtsjiDBGa7lq1h6YoxtEOR27 VS2nbg+gfcYPqhibTWdLWAC2xGUKbefLGUvBxixov/pkPGg/EU9cVkBjwEuS3RvW1AUn0mKzgMJ GSewufV7eHNz69sZrendyM35A8chDIoamOfc/vTX+M1upDnFx0wNUjHdlhgJX9+T74Lk8qCyH93 JWnWiEz8ET9Z3gVdY7c= X-Received: by 2002:a05:6000:1863:b0:385:df4e:366f with SMTP id ffacd0b85a97d-38bf57a97c7mr38957989f8f.38.1737742530937; Fri, 24 Jan 2025 10:15:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IHXfQxgBsiTmTBvy8dlTrww1P+DiJSU6LKwAirl4rMiJ8To7yEoRhGiZ5C7DyirkpNpMNuBwA== X-Received: by 2002:a05:6000:1863:b0:385:df4e:366f with SMTP id ffacd0b85a97d-38bf57a97c7mr38957950f8f.38.1737742530494; Fri, 24 Jan 2025 10:15:30 -0800 (PST) Received: from localhost (p4ff2332e.dip0.t-ipconnect.de. [79.242.51.46]) by smtp.gmail.com with UTF8SMTPSA id ffacd0b85a97d-38c2a1766d8sm3520477f8f.14.2025.01.24.10.15.28 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 24 Jan 2025 10:15:29 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, David Hildenbrand , Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , Alistair Popple Subject: [PATCH v1 1/2] nouveau/svm: fix missing folio unlock + put after make_device_exclusive_range() Date: Fri, 24 Jan 2025 19:15:23 +0100 Message-ID: <20250124181524.3584236-2-david@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250124181524.3584236-1-david@redhat.com> References: <20250124181524.3584236-1-david@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" In case we have to retry the loop, we are missing to unlock+put the folio. In that case, we will keep failing make_device_exclusive_range() because we cannot grab the folio lock, and even return from the function with the folio locked and referenced, effectively never succeeding the make_device_exclusive_range(). While at it, convert the other unlock+put to use a folio as well. This was found by code inspection. Fixes: 8f187163eb89 ("nouveau/svm: implement atomic SVM access") Signed-off-by: David Hildenbrand Reviewed-by: Alistair Popple Tested-by: Alistair Popple --- drivers/gpu/drm/nouveau/nouveau_svm.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_svm.c b/drivers/gpu/drm/nouvea= u/nouveau_svm.c index b4da82ddbb6b2..8ea98f06d39af 100644 --- a/drivers/gpu/drm/nouveau/nouveau_svm.c +++ b/drivers/gpu/drm/nouveau/nouveau_svm.c @@ -590,6 +590,7 @@ static int nouveau_atomic_range_fault(struct nouveau_sv= mm *svmm, unsigned long timeout =3D jiffies + msecs_to_jiffies(HMM_RANGE_DEFAULT_TIMEOUT); struct mm_struct *mm =3D svmm->notifier.mm; + struct folio *folio; struct page *page; unsigned long start =3D args->p.addr; unsigned long notifier_seq; @@ -616,12 +617,16 @@ static int nouveau_atomic_range_fault(struct nouveau_= svmm *svmm, ret =3D -EINVAL; goto out; } + folio =3D page_folio(page); =20 mutex_lock(&svmm->mutex); if (!mmu_interval_read_retry(¬ifier->notifier, notifier_seq)) break; mutex_unlock(&svmm->mutex); + + folio_unlock(folio); + folio_put(folio); } =20 /* Map the page on the GPU. */ @@ -637,8 +642,8 @@ static int nouveau_atomic_range_fault(struct nouveau_sv= mm *svmm, ret =3D nvif_object_ioctl(&svmm->vmm->vmm.object, args, size, NULL); mutex_unlock(&svmm->mutex); =20 - unlock_page(page); - put_page(page); + folio_unlock(folio); + folio_put(folio); =20 out: mmu_interval_notifier_remove(¬ifier->notifier); --=20 2.47.1 From nobody Sat May 9 09:06:43 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B58AC21B8EC for ; Fri, 24 Jan 2025 18:15:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737742539; cv=none; b=a8tvCRsWiZ11SZ/WR7xZzm9Epd/lOrhUDYlH/mOysKN9dajeWzsIJYs1MPnfiDUj0Sn0RpJT/aynJCCKGWAE9q7HqgHoj93EBAY9KR0OgIpFs+aSnFv8pEuMPEkt90bA0iBn0yBrcssa5W19ANvj/okI6S5TSNIwgTNHM3KUX9M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737742539; c=relaxed/simple; bh=MoYTvzQX1IkKoCljPCyZ6bjw+EtsTtpD+canIl92j9g=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=k1SYNdnsEgMCLGE+a+lVa8CQFIxnCWVZrUNiy9wJRLRGwvgEiKApmBZJX9iH+sR8teqwsKkPwD6Lha9N3mR2mParBqz4PL9CAquou3BbSQuGV1+qhgh35fQcrrVm+A9t1vkoyrB4+iRrF72aTseTkZFAV4FBSSvgvKxfnzzpA/0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=bCbjXlWG; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="bCbjXlWG" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1737742536; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bGWmGPJRu/Y2vFGNU2CYSMtLnSZ1JIf2dBRRTduba1I=; b=bCbjXlWGt4QwkwXk7rCAe/wRtgjOHPhlj/KYPPmZfsZ5v0GUZIOfHJ03dSm/TSztF/XOzb xfszfq4T4Qf3nDNtn5/oL1gXnuIPRJA3r5xiLvlht0T5HPmEqZgrJ/Ftzf/BuAD5SNRWnu RpYpSiMU6jGJ2Ayz4ZyDrNaqNJb26qc= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-102-lDulH7foMx216VFPrnpwQw-1; Fri, 24 Jan 2025 13:15:34 -0500 X-MC-Unique: lDulH7foMx216VFPrnpwQw-1 X-Mimecast-MFC-AGG-ID: lDulH7foMx216VFPrnpwQw Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-4362b9c15d8so11386875e9.3 for ; Fri, 24 Jan 2025 10:15:34 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737742533; x=1738347333; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bGWmGPJRu/Y2vFGNU2CYSMtLnSZ1JIf2dBRRTduba1I=; b=NXFDKY9MkZLBVMpBzVcbXZyt7MjABura+bAU4vXqLcC8iYUlarhkzDa12k8+jCaAgw +SvTowIBmRUyg9uuEVBcY20Hh6YcdUTMLlXrM1cfsZ/KgiYct0FDW5S6XktUGoktyZJK uxgvqch23/ve3H7gFT7z/uNP2YKH0vkHNuiajEe89HMAQlNR7AcOTMhBdEdkuZdB/LGD cGU4WiBZJDZdTTmxeRHYX1RH4qsDb+yCdx/wwKxUA83fYQYvtUclLsNRl87BH89CDspS FD72UBAlwdIBOtva6Br4XKQFQipgtxmflAtJMiEJUGPCLc+IDSWzQIyVaOiznnKY5gsV FqvA== X-Gm-Message-State: AOJu0Yy/tNp6biSYm6njBcbLbzAt8RuFHah/ObKI1tLJ8Mf2kZRpRJrs 0rwDjrTcFB6kBF9zvqb8/rIvFvo6UE0G7vTEQmW8n3nhyWxFQbf3OsVYHkNwTKdtQ1T/xFf9wAu tMsL2y+vpkSsGsuijR7KJUssCYMN52HWxDBf0BVp385+UpiZ3kyp/kxrxhanD3Y2FMtU1msgth8 jq0P3t21eC5hMc1I6uFuOA0N5BKV8x7VCOn68Liy+KVvjz X-Gm-Gg: ASbGncsTj/ZPuIukcxh/xvIkHGR0/IMF0rNhnKtTJJ8ACHEJr//dtiSyJpTgc4L+9sq ouvVc9VBmnPJctu0CwVx+uV/yYlHfvKA0SYFl/u1jqDAeq7hTcVjtzuxFjSSW4UKzXXfIiqT0h1 snsFA49JeJJe0THqTgDlkD8E4733Xwzb+IZozbLxCtlQalpSbD1KsZvustfMCMeR1YdR2djVC5v oSrVWpW8dY0v+K9z2WlpCtvudaDL4+R1aL2OmcMzebV4qgZtCl0PDKqYCiVw9uUbQm6QdHq0IEO D/Tw6gemuXDqQxAxqAo= X-Received: by 2002:a05:600c:1c93:b0:434:fbda:1f36 with SMTP id 5b1f17b1804b1-438914299bdmr277981895e9.20.1737742533542; Fri, 24 Jan 2025 10:15:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IEji4W7ofEq55B5EikqJKy4d9Ug9AcG71r3tdNdvx7LPEmUH0Fw6EvB8CqjN3UgoYb9Od7iww== X-Received: by 2002:a05:600c:1c93:b0:434:fbda:1f36 with SMTP id 5b1f17b1804b1-438914299bdmr277981605e9.20.1737742533104; Fri, 24 Jan 2025 10:15:33 -0800 (PST) Received: from localhost (p4ff2332e.dip0.t-ipconnect.de. [79.242.51.46]) by smtp.gmail.com with UTF8SMTPSA id 5b1f17b1804b1-438bd5023acsm35577375e9.16.2025.01.24.10.15.31 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 24 Jan 2025 10:15:31 -0800 (PST) From: David Hildenbrand To: linux-kernel@vger.kernel.org Cc: dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, David Hildenbrand , Karol Herbst , Lyude Paul , Danilo Krummrich , David Airlie , Simona Vetter , Alistair Popple Subject: [PATCH v1 2/2] nouveau/svm: don't initialize ret in nouveau_atomic_range_fault() Date: Fri, 24 Jan 2025 19:15:24 +0100 Message-ID: <20250124181524.3584236-3-david@redhat.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250124181524.3584236-1-david@redhat.com> References: <20250124181524.3584236-1-david@redhat.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" ret will be modified immediately afterwards. Signed-off-by: David Hildenbrand Reviewed-by: Alistair Popple --- drivers/gpu/drm/nouveau/nouveau_svm.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/nouveau/nouveau_svm.c b/drivers/gpu/drm/nouvea= u/nouveau_svm.c index 8ea98f06d39af..2f8b8b978fc08 100644 --- a/drivers/gpu/drm/nouveau/nouveau_svm.c +++ b/drivers/gpu/drm/nouveau/nouveau_svm.c @@ -594,7 +594,7 @@ static int nouveau_atomic_range_fault(struct nouveau_sv= mm *svmm, struct page *page; unsigned long start =3D args->p.addr; unsigned long notifier_seq; - int ret =3D 0; + int ret; =20 ret =3D mmu_interval_notifier_insert(¬ifier->notifier, mm, args->p.addr, args->p.size, --=20 2.47.1