From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f42.google.com (mail-pj1-f42.google.com [209.85.216.42]) (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 14337F9D9 for ; Sun, 10 May 2026 03:14:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778382856; cv=none; b=TtI+3rlTiPK8jAMw6wJL/nz70vD8QtSykNis1A5vGhaGxj/ue8YCiNAfJ5igmqZSVUVhI9mW1p3En20Pz4sVfyPKibWKnI162IGBv7LrCAZu3ZICu+DmmwuxuCxuOlQM1xajS4pQvtGV6tfqV9AH3vM0TmyXBfhGc0qE3VJZM8g= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778382856; c=relaxed/simple; bh=//I/6EMQ3rl40MxAjia93Ci3CX4B9b1McuAHLpTfpAA=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=P7zQTFgcTWZId7pJmniUWzRGWXxOUYXEAZAQ7peHUKNAT0JfMXXSNFb67FIeJclicO74k8ImHgdpoWw+42mSzZu6d6pTuDCbXxciKiSOOtrQ2ws86TYRW33pcuHp2Q8kjAhP7kptILqMKha+TUK23u2YzcJLefX8kVVVarsBTU0= 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=iuQXk7XB; arc=none smtp.client-ip=209.85.216.42 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="iuQXk7XB" Received: by mail-pj1-f42.google.com with SMTP id 98e67ed59e1d1-367d88b9940so429954a91.1 for ; Sat, 09 May 2026 20:14:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778382854; x=1778987654; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=pTQn2s211z3JcOYJ6bPA9wHHQAfjgFTJm5bQ3cUbOwA=; b=iuQXk7XBQNXT2PCFwDBybumnwVyX4PaAtABlYFOdmBWYhdq313moE71YVKxYBhnOXw luGv/DyAKwJtY0b2j28yHp/TcnAMEmsLTjPVKfcpIPFOS2HtF/oRIxKFy4JiQDem7sxl N03R8EPXFDjmgC3qDbfImTdXLCllcH6MSRsIbtuw7sqnxy7KwIIkLYYcTCXca3vsFlbZ Ozbs6JnmZhJIF6iys7F7YM/H+io/rLpLtihp8EEkgn+e9H0jhC9cEuyV32zSjEfOUhrf ofLf3vBMsnNVDzmLLjuXvfMCkYtEvxvDtG9TjjgVsmrnOs+UsalCcRhSEl9+08tWzSho Z+OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778382854; x=1778987654; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=pTQn2s211z3JcOYJ6bPA9wHHQAfjgFTJm5bQ3cUbOwA=; b=MKQqGCWn9G8EZgs4VnBq0SThWOxH02ILk6r4h27gCsEZC4NX4Q38zyknplxtlc+ece a18pXzpoCyrrJlv3HTTqpSJou0QxwIAAimynjY7H9U2neFY9PhAa3Xz8cJJ+93dfSXPv AhHBeptrV3tIWNDWO0hl5D4ebjcoJ23NCc/sgYVU2PjCWrGl4ISzJB4u1/mpjZryUmlG owUq2XnDpLJ+WD82HTYe1HMMg8cYJpssw4XjHoMo6H4lVmnYcoPE0j0KpQ9ypSbl9+yz ehdU2NFnuktjOSJ+1uiZVm8oBxVbi0WYh2iRIrKmEhGVCRs47LetME0iK904ZDgdQrKc HF/w== X-Gm-Message-State: AOJu0Yy7TnI/AnRucTCuExxXNRoCu5pmTrf/4Xe6eaNkwkX/ASt/NVXn i/upO6gArNjih4wtHCXIHDeWC4IV8pB8tXfXA+tjd5T7q+f6wPKoa77qUa/iDfPjJq0= X-Gm-Gg: Acq92OGgzq7JDL8Z3VPspFIMSMww3tT5SzpXJmx4FBIl2ypdo6OaJX4MG2ZZPgbZWVq F9YLiQMpEIPb0IXmA1vni6Uz1LYSL9UhxHgqimNVJb+z/kkcs5cs8AS9RL3X2T0MYazF2H1lStu nWQiVitKHKw0NQkPeTqsfU4/l6Dij5WWatnYFT1otsUCN5D2t9nB+rgf6yR+vwl+I/OhLl7QBE6 k5OSNWr4P3m8Iif2RTMPhX16/FR61oONBhYtnLHlvBZpCkonQt7FIzZtgp4MmTwAxLfqn7PdVyG hV5liyrVWloPsE3xEYb9YEDl0aTav/xn4xvG2HMf2jH1yJH3k6ogPaqDqwfydACcR85lMrFVFn8 EoSFnLeomK/GowLEdlt7pLaGSTlPYbh/9KYK/1IzvlaQWuaxZV8xnbkCspPj7vOLf9cHOjLv8jN igSv64RcP5Ya8JxSdzKVAC1nO1lyZz X-Received: by 2002:a17:90b:1c0a:b0:366:527:3c9a with SMTP id 98e67ed59e1d1-3664ccca7b0mr8887873a91.15.1778382854366; Sat, 09 May 2026 20:14:14 -0700 (PDT) Received: from localhost ([111.228.63.84]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-367d625ee39sm3644658a91.4.2026.05.09.20.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 20:14:14 -0700 (PDT) From: Cen Zhang To: gregkh@linuxfoundation.org, jirislaby@kernel.org Cc: linux-kernel@vger.kernel.org, linux-serial@vger.kernel.org, baijiaju1990@gmail.com, Cen Zhang Subject: [PATCH] vt: keyboard: serialize KDGETLED with keyboard_tasklet Date: Sun, 10 May 2026 11:13:48 +0800 Message-Id: <20260510031348.1922157-1-zzzccc427@gmail.com> X-Mailer: git-send-email 2.34.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit KDGETLED reaches getledstate() and samples ledstate without serializing against keyboard_tasklet. That is problematic because kbd_bh() temporarily stores ~leds into ledstate during a VT switch to force LED propagation before committing the final value. An unlocked KDGETLED can therefore observe that internal sentinel instead of the last committed LED state. Other ledstate readers in this file already quiesce keyboard_tasklet before sampling the value. Do the same in getledstate() so the ioctl only returns a stable snapshot. Signed-off-by: Cen Zhang --- drivers/tty/vt/keyboard.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/tty/vt/keyboard.c b/drivers/tty/vt/keyboard.c index 13bc048f45e86..671ad4a5cb64c 100644 --- a/drivers/tty/vt/keyboard.c +++ b/drivers/tty/vt/keyboard.c @@ -1127,7 +1127,13 @@ static void kbd_init_leds(void) */ static unsigned char getledstate(void) { - return ledstate & 0xff; + unsigned char leds; + + tasklet_disable(&keyboard_tasklet); + leds = ledstate & 0xff; + tasklet_enable(&keyboard_tasklet); + + return leds; } void setledstate(struct kbd_struct *kb, unsigned int led) -- 2.43.0