From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (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 26A15502D6D; Thu, 17 Sep 2026 17:10:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789665036; cv=none; b=nkqTJTiDsPghnXEI47exe8pEEaEd1rwLxBWsyoxbBAEPkXcnXKYy4e7MpHBS3FYZAL8uLFnZoqYE6hk1dalm2TLnhgGdWjbRqZHPAIG9fcZT8IeBKx+qWLb+bB5/e/AAFjL2GMRKpPgrqyg6DCXmcwtDyXAoIekXfVHBhZeXqds= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789665036; c=relaxed/simple; bh=EWVuFZU5ePP3pcJiA2/DiJCUlJvO+6aun0SRHl20o3c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Lp4PA/Bgz/3bGAeMP7ia87aW3a9e2byPpye9g4MPzWCQhjVsO3wj0k54/A8iWTn8qNVzZlBs4m7CQ6sgBiqsB28ENeYEkoyhtYxiAvdUJSD1PsR/gzO8949Btel1N8J4HVZgfn6hyqLmM6TqhGb/nYFiI2b/mU9gJPcBKWNiC4A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b=Q3QRTA3q; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.b="Q3QRTA3q" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 7B5371F000FF; Thu, 17 Sep 2026 17:10:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1789665035; bh=upXD+y0CucBTH0+MD+bCPLwnGz94jh3+nyVPG8cZUlk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=Q3QRTA3qy3jfiXw7QJvzSydsl57JdW+/R9NOXVnE/iDwasjMe4jtOkXSDpk1dorjH nhIyMDQ56WP/oVV/OmGzsH3LDrFhd2xZxdIPN2CI9D1BvnFqt4We5jDiu1slpcdwwk zN2lYXtnkv8n2HZ332DblKMrbqMjyTCdom3QYRrc= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, Manuel Fombuena , Lee Jones , Sasha Levin Subject: [PATCH 6.18 0572/1250] leds: st1202: Validate pattern input before stopping the sequence Date: Thu, 17 Sep 2026 16:06:07 +0100 Message-ID: <20260917151607.411704942@linuxfoundation.org> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260917151551.901433442@linuxfoundation.org> References: <20260917151551.901433442@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore Precedence: bulk X-Mailing-List: patches@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 6.18-stable review patch. If anyone has any objections, please let me know. ------------------ From: Manuel Fombuena [ Upstream commit fd2529ba8fb44cd4b56f1069363b949644b42cec ] Input validation for pattern duration is performed inside the write loop, after the pattern sequence has already been stopped. If validation fails mid-loop the chip is left with the sequence stopped and partially written pattern data, with no recovery. Move all input validation before the mutex and before any hardware interaction, so an invalid input leaves the chip state unchanged. Signed-off-by: Manuel Fombuena Assisted-by: Claude:claude-sonnet-4-6 Link: https://patch.msgid.link/GV1PR08MB84975929B6ED7CDFBCEB7D76C5F52@GV1PR08MB8497.eurprd08.prod.outlook.com Signed-off-by: Lee Jones Signed-off-by: Sasha Levin --- drivers/leds/leds-st1202.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/drivers/leds/leds-st1202.c b/drivers/leds/leds-st1202.c index f5b53a9ed59c6..684d77fbe1d81 100644 --- a/drivers/leds/leds-st1202.c +++ b/drivers/leds/leds-st1202.c @@ -238,6 +238,12 @@ static int st1202_led_pattern_set(struct led_classdev *ldev, if (len > ST1202_MAX_PATTERNS) return -EINVAL; + for (int patt = 0; patt < len; patt++) { + if (pattern[patt].delta_t < ST1202_MILLIS_PATTERN_DUR_MIN || + pattern[patt].delta_t > ST1202_MILLIS_PATTERN_DUR_MAX) + return -EINVAL; + } + guard(mutex)(&chip->lock); ret = st1202_write_reg(chip, ST1202_CONFIG_REG, ST1202_CONFIG_REG_SHFT); @@ -245,10 +251,6 @@ static int st1202_led_pattern_set(struct led_classdev *ldev, return ret; for (int patt = 0; patt < len; patt++) { - if (pattern[patt].delta_t < ST1202_MILLIS_PATTERN_DUR_MIN || - pattern[patt].delta_t > ST1202_MILLIS_PATTERN_DUR_MAX) - return -EINVAL; - ret = st1202_pwm_pattern_write(chip, led->led_num, patt, pattern[patt].brightness); if (ret != 0) return ret; -- 2.53.0