From nobody Mon Jun 8 23:56:03 2026 Received: from mail-wm1-f48.google.com (mail-wm1-f48.google.com [209.85.128.48]) (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 94A613D813C for ; Mon, 25 May 2026 08:04:20 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779696262; cv=none; b=U311xihc3nS9AlasurVHwYdJLOeimieWr9sVFwLM8fro0o3Yh+0HgAqa/lxZOS4ZaT5k4c9r7sNTOpc9TxyZ6++ItvmoF2dN+qV+quL3DfgSMRDc/x5wc02+/+mt1oFtX/OA8p7K4Xh7G3PK1Q1LXrda6dz0SpqXekoY8hsUSpc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1779696262; c=relaxed/simple; bh=i4Xac1WvYFrHO/9BGwsIB1qsocvvzuES/i6rtZSMa0w=; h=Date:From:To:Cc:Subject:Message-ID:MIME-Version:Content-Type: Content-Disposition; b=uJJROk2PTiNpoIGyh1bHCw1x6VXiIg/c3bqookyDZXRXT4fK9RBO/qBPn3lQzDG4Am3XeQYXsMHmjIOIvIIDhLxte1RvK6rCnR6jV9Jw6eqbAjs4mYwSltCaV2swf58SYBvzd5FTJhq06qw/j6wcT8/sVpJeBeE2p80WDdsZsmg= 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=W7GK92Qf; arc=none smtp.client-ip=209.85.128.48 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="W7GK92Qf" Received: by mail-wm1-f48.google.com with SMTP id 5b1f17b1804b1-49041e84237so23215445e9.1 for ; Mon, 25 May 2026 01:04:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1779696257; x=1780301057; darn=vger.kernel.org; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :from:to:cc:subject:date:message-id:reply-to; bh=e4TwWx9Jkv5+tXBeIF9TrY2gJYisieGsYYHEykccDJM=; b=W7GK92QfRmhNNU3hdEm44v1DLwg9Tupevg+ro5qWyVX7PCzsCKiUqTf0pFrURU6fKi l/dwpA84UHBU0JNnkiM2ioDQ3SQsPFerFyb25xgGpSZFlKeFXgHe4bKhivltG/skV9wH 2672J27kL53U7PhU83Xpt/6344P895lEMHAn6OWs4idbynH369vt+jjCQbotGb8n+dqk yGFvXw6DSfEp/ln1HWFl00q0wHzoSzTzhduN8s3e6XgXv6YwKYYpHz1xd/1nwqUk1mS1 BlJptNzo1xNYlQ1BjR2yaEvSl4mzF+1BKu2pLQGqQZe4RahOuR/xhGMob4fokxsduWqS beWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1779696257; x=1780301057; h=content-disposition:mime-version:message-id:subject:cc:to:from:date :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=e4TwWx9Jkv5+tXBeIF9TrY2gJYisieGsYYHEykccDJM=; b=PG0s4FFN+ZmAu8pLk1MpajRUGlBUb6fJhBjk2QR5NHBr9Hqu1pTvaW2Q8Kov+IhxtT JiGeex52Q8CbfKHn7t6FBtAabqxeDb+py144tEPQZ2ouGjNK2EJH0/cBl5MJYmaqVV6i f1RsXqovNvlV3jl90vhv9eiRahSf9g0ia0enNDblgZ4KE8QPiKBN6BaELhQ9mpgnc948 K3qCW10KUjYDa0jX8cmMI/DeJqqDfuJSVNmYjMh9+lfJSzsuZ8pAJ5EOoKnPN+WVh3V0 yqAtVhDlkhv5BqREsqIBbV5Q+94Cguwte86s29T8K9wF+Dc/nB68MiA/p9pczo5LcF58 kSiQ== X-Forwarded-Encrypted: i=1; AFNElJ+KCLF3Y3JApEO46hQ9+PbiTbXosnj9ToQ14faZvNbO9TZmCh1sZMPMZdO3JdNVYv+0rFXPFohec2y99WY=@vger.kernel.org X-Gm-Message-State: AOJu0YxmUPZfsXboq/nR/YubVv9pFccTRSS3KbFLn5YZwzWF0CM1DqnH /mh+G/M3NcOD16DZsKxLuAZtwLcqAWUJFg8SgAAY2Hq9PrwPx+1MNzuG X-Gm-Gg: Acq92OEOPrYpIRgxdvoDu0sqW5LsEHh04p5m17rF9ePvyVZOVFdS+I/NImFriiz8ijX 257UqVuzmVf2DZvNoYRFiJfZV5nyYAZB0rhafUVSWbhubKTGKnx2w0mPMugdgpRIDdKDMt9TYtc dojPgLSBBbU/aq2yw5j6dK8NNQm1LC+iqS6rvNe4df10kIhp94D7LliCSKCRwoZnRV4sjMB6Lb3 HGtDOQrklVnYvFSlDWWFbnIDCZIewozrzXRiFHO+DQGd9QtyO2nuliCiSxOAwPbR2yilSjmvRVS x7QKRiJKxrIEpdmyVXGRks0UqB4Soykhq/dS0WHRbsGUs98VAcx+3WPX6qFhERg/zeEDCRCtLBz YsI14NC0GAxeYABz2loo5K8Bg0azjzdh7EPRJtgB/eVHPH7SsKMT7qtrMFrAt9Ig4mswqhFx73t /X9dDfJPV200NKunkCLLw5ZIMqKTIUdK9p1Q== X-Received: by 2002:a05:600c:46cb:b0:48f:e044:927d with SMTP id 5b1f17b1804b1-49042480f2dmr184665115e9.10.1779696256861; Mon, 25 May 2026 01:04:16 -0700 (PDT) Received: from localhost ([196.207.164.177]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-490428d698fsm78263835e9.19.2026.05.25.01.04.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 25 May 2026 01:04:16 -0700 (PDT) Date: Mon, 25 May 2026 11:04:13 +0300 From: Dan Carpenter To: Alex Hung Cc: Harry Wentland , Leo Li , Rodrigo Siqueira , Alex Deucher , Christian =?iso-8859-1?Q?K=F6nig?= , David Airlie , Simona Vetter , Ivan Lipski , Anthony Koo , Lohita Mudimela , Aurabindo Pillai , Qingqing Zhuo , amd-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org Subject: [PATCH] drm/amd/display: use READ_ONCE() in psr_su_set_dsc_slice_height() Message-ID: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline X-Mailer: git-send-email haha only kidding Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This code has two checks for if "stream->timing.dsc_cfg.num_slices_v" is zero so static checkers complain. The second check was added based on real life crashes so it suggests there is a race condition. Use READ_ONCE() to fix this more reliably. In the original code we returns true for the first zero check and false for the second check. The caller doesn't care about returns so it doesn't matter whether we return true or false. Fixes: 21fc0ff38f57 ("drm/amd/display: fix a divided-by-zero error") Signed-off-by: Dan Carpenter --- Untested. Just reviewing static checker warnings. I wanted a chance to use READ_ONCE(). .../gpu/drm/amd/display/modules/power/power_psr.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/drivers/gpu/drm/amd/display/modules/power/power_psr.c b/driver= s/gpu/drm/amd/display/modules/power/power_psr.c index 5ecb570c204e..92c0aed08170 100644 --- a/drivers/gpu/drm/amd/display/modules/power/power_psr.c +++ b/drivers/gpu/drm/amd/display/modules/power/power_psr.c @@ -635,22 +635,23 @@ bool psr_su_set_dsc_slice_height(struct dc *dc, struc= t dc_link *link, { uint32_t pic_height; uint32_t slice_height; + uint32_t num_slices_v; =20 config->dsc_slice_height =3D 0; if (!(link->connector_signal & SIGNAL_TYPE_EDP) || !dc->caps.edp_dsc_support || link->panel_config.dsc.disable_dsc_edp || - !link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_SUPPO= RT || - !stream->timing.dsc_cfg.num_slices_v) + !link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.dsc_support.DSC_SUPPO= RT) return true; =20 + num_slices_v =3D READ_ONCE(stream->timing.dsc_cfg.num_slices_v); + if (!num_slices_v) + return false; + pic_height =3D stream->timing.v_addressable + stream->timing.v_border_top + stream->timing.v_border_bottom; =20 - if (stream->timing.dsc_cfg.num_slices_v =3D=3D 0) - return false; - - slice_height =3D pic_height / stream->timing.dsc_cfg.num_slices_v; + slice_height =3D pic_height / num_slices_v; config->dsc_slice_height =3D (uint16_t)slice_height; =20 if (slice_height) { --=20 2.53.0