From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f52.google.com (mail-pj1-f52.google.com [209.85.216.52]) (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 40F74291864 for ; Mon, 3 Aug 2026 00:52:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.52 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785718338; cv=none; b=YVn1cP/0+4GwMvon+mdC01/eJukRspxWLbsMCXbyea78X0I9cuJZtn3uYw9Ff7ieSO/c+kZU/Kw2wa9mDiYOM6UG0ykBx8krBiCJVV19eclZ2BREFXpRSHDYYjYs7m6EYH8sd+9aihTwRg5PRFylmvMS0Vbt6FfgnwqJDigQLyA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1785718338; c=relaxed/simple; bh=rQr4GcgUJxe+ZRdpMH+1iz0PSfpkcP/QRG7dm2SCpuE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SttU4YwfUpjcu+3hVWkh4KnMMc0KlUFmma1L9dR/7NeJ4UrH/EtpQGIV+TCaG4Lk1EE7P2g0OZYQFNEbq1WQOQ2RhnkWCBKkqi1HH6RxvHjaDAR+jLDup7Vo1Rl0W1fRKu9G5Ndjqbu/4scHYgWQ4GTSL5sZc2Su0piyOBrDlYg= 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=Aup5ngpw; arc=none smtp.client-ip=209.85.216.52 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="Aup5ngpw" Received: by mail-pj1-f52.google.com with SMTP id 98e67ed59e1d1-38dc69c74b8so2547133a91.0 for ; Sun, 02 Aug 2026 17:52:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1785718337; x=1786323137; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Yj9v3rdFPmrOpcww2cdMdBn3yaaFRP67m0JnmciRc3c=; b=Aup5ngpwr2WiMNkiPFtWkq/xvaa7KECnLGJBRqMC06bREc7nN0DLD6ZSSmJ3lokNlV btvC1VLuGjEjoH4n1yPZqz2OGEpnXTwNIMjKMM9nhY0r0d4lT/3klaE+TuKWzeIp90o0 N4QOPhRnSxLQuT+vuNq+SVEw8h9THEV8ZULQpbqnlvBKIungD5G3zttAxVWjGbiseAAP hKoFKyuL3wUROqo4s1M3C5l1A8vkqzo0qajc81GUHirU4qZ+N6sKTbC6QQUsO+xAtAeA mf/+R0jpnZnaQDjsco8Gwwy5ImIHXmMacTEXQzDL0x3PhEHDU34/hgZfPJ6czDynu/Yj baDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1785718337; x=1786323137; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Yj9v3rdFPmrOpcww2cdMdBn3yaaFRP67m0JnmciRc3c=; b=NiNm5ukXOgU4LPffsWo5ZeOWux2j5yJVWL72MU6wokMPtfhvSExIGu+gBFu9WAUJPo 4bCMnnklnfTyNwjUJTCkeoVp64qqShJECFHFj4iuCCbqUvm2gErfMSi5OUxOulflNdOC NINi8L5IN3OObn+3OL/9D8qk6dzP2lwNIgSMlwGLYe2Vzi4/7NGwKASbulDZwY+JZd0I U5OJceCQ/y+Vk4xhC4oMwqz1xdGTsoB9lwwFfDoFaynnZNucG996aEVq2V/wEHwuH9J1 OROMQeLhLDlQck44AaY8rpws4NzBzc7Zd5TPQjARUQN59sZTPeCHIbtqkk3PY3wI7bGQ 81Pg== X-Gm-Message-State: AOJu0YxjCpYz3R1OKerKP7s0X1grA9FdAGy+6LqjFSTqcnQ2gfGSORPy U5W8aIockZYtYKyBPkh79q84iX8tcqNJHxU5yIErqQvdFCyA/XK/Ejem X-Gm-Gg: AR+sD135Pk51w/ED29lSMr/hit0fIrELHzE9RNuXr/24mS2Yr4/U8dCWV1UPkOVtE0f H5LDUAQFA7uj+rUbweswmhfAsX47eKSgN4Adv24hAXehzABfN6wz3mLCIKGdlShBsxIJ4nDu1Ew tnDsKASuGhCFfgPjYFJ+xMI/erse8yM7bb/P0x0CigLyTqhvBl2RNoJp/80AjIvOhKjFYmhAcbh RohAwkmfyTQmX+zoXH0BxVWD2JYfQm3is1I9loInSUCFjQwAQDc1n4/rKbVgm6cJsCEg7Kprh2D Ciw69NYVPSHlykUIXMuKMBBb2iF6eHqKiv8CHS9Wtn1IaR9EjznZzNiXUWFU5L950a19DeOaOLR SiLJxu525hLHITIYIn09TeWSqptIGuqaMaMOMlIMggRvxcmAnuOjkCuseugMh2VzF03I2Kc/qJk JMDHCfVQUWG0R8uPC4tggDwCaKQlZpGv3//g9C5oQt8q4LpxNRMJgq41aTzz5u/5u5Gs3oCoDAf n/2AJzaK7hBXrg+PVk1WvOkWXbuanLeSouBEq64Vtv2d7g5hk3v X-Received: by 2002:a05:6a20:c786:b0:3c3:7fff:ba77 with SMTP id adf61e73a8af0-3c92a839c30mr7727825637.42.1785718336677; Sun, 02 Aug 2026 17:52:16 -0700 (PDT) Received: from dtor-ws.sjc.corp.google.com ([2a00:79e0:2ebe:8:4fff:876c:cdae:e53c]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13fab4d10bbsm24374079c88.11.2026.08.02.17.52.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 02 Aug 2026 17:52:16 -0700 (PDT) From: Dmitry Torokhov To: linux-input@vger.kernel.org, Jiri Kosina , Benjamin Tissoires Cc: linux-kernel@vger.kernel.org Subject: [PATCH v2 3/4] Input: call handler->start() when uninhibiting device Date: Sun, 2 Aug 2026 17:52:03 -0700 Message-ID: <20260803005210.1251102-3-dmitry.torokhov@gmail.com> X-Mailer: git-send-email 2.55.0.508.g3f0d502094-goog In-Reply-To: <20260803005210.1251102-1-dmitry.torokhov@gmail.com> References: <20260803005210.1251102-1-dmitry.torokhov@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit When an input device is inhibited via input_inhibit_device(), the driver is closed and physical feedback (like LEDs and sounds) is toggled off. However, from the input core's perspective, the handles remain open. When the device is later uninhibited, the driver is re-opened. While the core restores simple LED states via input_dev_toggle(), complex handlers (such as vt/keyboard) may need to re-synchronize their broader logical state with the hardware. Fixes: a181616487db ("Input: Add "inhibited" property") Assisted-by: Antigravity:gemini-3.5-flash Signed-off-by: Dmitry Torokhov --- drivers/input/input.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/drivers/input/input.c b/drivers/input/input.c index e4f8c2067b84..47886a394c6b 100644 --- a/drivers/input/input.c +++ b/drivers/input/input.c @@ -1806,6 +1806,7 @@ static int input_inhibit_device(struct input_dev *dev) static int input_uninhibit_device(struct input_dev *dev) { + struct input_handle *handle; int error; guard(mutex)(&dev->mutex); @@ -1833,6 +1834,11 @@ static int input_uninhibit_device(struct input_dev *dev) if (dev->users && dev->poller) input_dev_poller_start(dev->poller); + list_for_each_entry(handle, &dev->h_list, d_node) { + if (handle->open && handle->handler->start) + handle->handler->start(handle); + } + return 0; } -- 2.55.0.508.g3f0d502094-goog