From nobody Wed Feb 11 01:27:02 2026 Received: from mail-wm1-f45.google.com (mail-wm1-f45.google.com [209.85.128.45]) (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 A4B8D38A720 for ; Tue, 10 Feb 2026 17:35:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.45 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770744951; cv=none; b=skA8T2YyYuem0sFgSuBTtKAmR2iRWatSndOxLtUznwz72r8naYW+3R/ckhF5fH3IyqshK6zMGgLCTSH04qBmPG19sED/OKCXP9j8rI2EmSDEpwrIewD6imND9mbGQNchQoe7pk8I/p+0a3Twkufug7ktXLXpil+kvuRy8PRf+DI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1770744951; c=relaxed/simple; bh=z4dx2Zvg10AKpT6f6N5qjQehok5RmqOeBKD3QGQMTmM=; h=From:To:Subject:Date:Message-Id:MIME-Version; b=IcadLYuLHML1upEfzfP78xJ/9xTPLxdu9jVb4AUxOKEvU8K1ipflU00Uny8vW/eaW6ew9Bk13qCgppfzWted9fu4IgM4TnTx0QXkhh6udmSQ0ahinPSlJ0GaqiBFg0hWhoBTqflplbnj6yFsDLJ3VVYODrHPlnpPE+vW0LBHxLc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b=XuisleLI; arc=none smtp.client-ip=209.85.128.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre-com.20230601.gappssmtp.com header.i=@baylibre-com.20230601.gappssmtp.com header.b="XuisleLI" Received: by mail-wm1-f45.google.com with SMTP id 5b1f17b1804b1-47ee07570deso40264645e9.1 for ; Tue, 10 Feb 2026 09:35:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre-com.20230601.gappssmtp.com; s=20230601; t=1770744947; x=1771349747; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=KJIHP8GTsVAAKqf5g30+6rG+sAKC0DftJYjYwIxgZG8=; b=XuisleLINEBjJElPxvuWrqwyqe29vSEJR/5geS/QIFH4XsyvkgGozhR6/MjIQtE+gA 1HEWHWLU5+ElJCmTURJOAUIOIHn7F3kL3JaPO2KbavudRt7b6zyOpm194GDWMLQKnc+l 9TLixOMvobi+s4nn6ZstaeOdVg0H2L+LqrVW+J87WCZhJIiaQ4cywjbrdVuBCE+ZV+39 lFnT4HUZKLLsQuM+xxvjySdkERfCOBeU2Sa7b4vx22UaUfxD0MFhPNHhNtmLnburogNA RcWB05OdX0utstRHSN49FybDpbrFvjIwRgFR+/4Iq6gs9tATI4PWiIFw8wXHpekh3CJb KpmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1770744947; x=1771349747; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=KJIHP8GTsVAAKqf5g30+6rG+sAKC0DftJYjYwIxgZG8=; b=ZltFrjHtvF0utTfLhE4qqKlZLEo8rezRmIHMjq3AlKBXrVXGjPQJipPO0KsrF1Zpm4 CMQ1Ti/4taG04QfWY9SGEYOE43jmddazBHr5qPwoA8fjr1KWD0ai0K/URDsQFfhyKl6Q 6DsIdyfR5r/u+xg8WMaBqNOgNuNr9WnsgNbG6AlrJViHUHcnc6xXtOlXWpj5yOuYpfp1 JWT732P6LyMK6LHWrNKmdBvs6vngPXVXsBZHOQM+AoxaCwbxAFubnEQdSnKz9iTuwmpz uEPzkQ4zB2X3BT+RGKHAXjFAnNkSLT1ELVeWt7nR/vQ9CJ/mpYrfSldNghx/pIfgRBOi Z6zw== X-Forwarded-Encrypted: i=1; AJvYcCUvqrXnvKnxszOEJGOmd7Pq+2TQivvYTVYYDOC2uv3pgKgYateGDdz+qheqKJhAvFAWZFBsR3gHiZtOvsI=@vger.kernel.org X-Gm-Message-State: AOJu0YzW0TdJAdKC6j2lCJwKk9seOLjcLsCxkolUejWBC3tiMvwwITU0 TWRx22CowNpxfLtmU4jti3sXkhniIMS5nwVzHgmMvix+QusoDuINSW9/1jRX6ZIkwJ/vl1+7jr5 BklO98gk= X-Gm-Gg: AZuq6aI/OG/gUpLD575Fn9T9GbqPK20lbYH2LIC1oeeXnpMQf0ogWZIuPTeYyruRB+6 dqWKqoXbDB4tx/FwJOQlJtgjqvwiyzvtDzLmpFoSbos/O1mXxNCrvtvWhcXmwsq+q4dC8PykWJx ae2E/jNt7RIMWzbn2/60DZSAQ1iWYMI51S67+rqb8T7gYe+jy677P+AXk/wJ640Bj9ra2BWsoRO Vls3CMN6AZADJxs7aNwn5YfoyUMV+y/23Z4OvM9DB743uVVFTu9Tp2llrRnrPJZ2gkh/iJsErqV Mm/MOKH93z3MXDPiMEoKehkj1LOQYvxaFE/ZeYIvkyNkit0bcEOisa4DTGxdb3eEx5yQZpeD+o3 o76tacoEiXPxdFkFP9TfX9SC7N+NdAARcNSHu2VAng5qnUrWxnFEXFs5CfpbZO0YKVA== X-Received: by 2002:a05:600c:354f:b0:480:1c2f:b003 with SMTP id 5b1f17b1804b1-48320212babmr159266195e9.20.1770744946922; Tue, 10 Feb 2026 09:35:46 -0800 (PST) Received: from localhost ([151.57.64.2]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-4834d82a4afsm152981265e9.11.2026.02.10.09.35.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Feb 2026 09:35:46 -0800 (PST) From: Francesco Lavra To: Maarten Lankhorst , Maxime Ripard , Thomas Zimmermann , David Airlie , Simona Vetter , Javier Martinez Canillas , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Subject: [PATCH] drm/fb-helper: Fix clipping when damage area spans a single scanline Date: Tue, 10 Feb 2026 18:35:45 +0100 Message-Id: <20260210173545.733937-1-flavra@baylibre.com> X-Mailer: git-send-email 2.39.5 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1396; i=flavra@baylibre.com; h=from:subject; bh=z4dx2Zvg10AKpT6f6N5qjQehok5RmqOeBKD3QGQMTmM=; b=owEB7QES/pANAwAKAe3xO3POlDZfAcsmYgBpi2whHYBnBnqArzUu3FQn39m2vsLxbxvPsTzdH 6332iTgVYyJAbMEAAEKAB0WIQSGV4VPlTvcox7DFObt8TtzzpQ2XwUCaYtsIQAKCRDt8TtzzpQ2 X7GYDACWV9qSaYXPkDT1eZhryqg4QDV3PJmeYs48hFuOY6KDW28cBihvLBXlPRr9BA916ik3dTO uWziBAnL9P7P5tSAdSPQqB37t9zbqQ2bcS6drIly0qFyww0mQUwgnEQXzdoRCq5IQCqpsFyY4He yx6Em52OgbzzUBDbL7iK39QHJp6feAjCkPO33Pys4Y2i0yjGCEaLChFNzYDDqmLNj0fTMjPee1a H2F4bcSZ2mLqceX2+nTlurgUgyJyRgKXruMAVkUOmHWtP8XvGdPjhb0avQXnTxyMZFhbn0/F8Qy ekL0IcFSsMB1RBWkC2CyCZSsaJe6eQ6DHlA37L1AlRrD8ltaIy1zYH6LJq2Rd2HJd9YZ89Ynyzk VAmjqAbw5pgqtYyV97Wjdsyh1xQnhsH7mk9dbVjlFhNNpW4NywctlhgFkATYyX2DfRd6xW3G3es 09Nc6ZBOr9RzJem81iPR1m3xDe4bB02wqjIJlXT5b4hRxLK9S+f/WRmcsk2NnQbxgutCo= X-Developer-Key: i=flavra@baylibre.com; a=openpgp; fpr=8657854F953BDCA31EC314E6EDF13B73CE94365F Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When the damage area resulting from a dirty memory range spans a single scanline, the width of the rectangle is calculated dynamically because it may not coincide with the framebuffer width. If the dirty range ends exactly at the end of the scanline, the `bit_end` variable is incorrectly assigned a 0 value, which results in a bogus clip rectangle where the x2 coordinate is 0. This prevents the dirty scanline from being flushed to the hardware. Change the calculation of the `bit_end` value to fix the x2 coordinate value in the above edge case. Fixes: ded74cafeea9 ("drm/fb-helper: Clip damage area horizontally") Signed-off-by: Francesco Lavra --- drivers/gpu/drm/drm_fb_helper.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_fb_helper.c b/drivers/gpu/drm/drm_fb_helpe= r.c index 4b47aa0dab35..d545342d24b3 100644 --- a/drivers/gpu/drm/drm_fb_helper.c +++ b/drivers/gpu/drm/drm_fb_helper.c @@ -608,7 +608,7 @@ static void drm_fb_helper_memory_range_to_clip(struct f= b_info *info, off_t off, * the number of horizontal pixels that need an update. */ off_t bit_off =3D (off % line_length) * 8; - off_t bit_end =3D (end % line_length) * 8; + off_t bit_end =3D bit_off + len * 8; =20 x1 =3D bit_off / info->var.bits_per_pixel; x2 =3D DIV_ROUND_UP(bit_end, info->var.bits_per_pixel); --=20 2.39.5