From nobody Mon Feb 9 03:29:03 2026 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) (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 2D37C16D9AA for ; Tue, 24 Dec 2024 06:15:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.122 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020904; cv=none; b=GiMYTfqAQzfsGV4NPRKQyEo1AE92xhNMkrq60k/Kkw6a1kksIORISmCeoNohzaZk+L393bXPu6hEyOOsUsulTs+5P9f1gS/hBfhl75pkywOUD+aFT220ucDiA/nvQ0fUipLcNhyeM8N/TRaBc/swHzZ6OMt5Pr6Hd9Xp4aVmssk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020904; c=relaxed/simple; bh=mWlR0OxQrvSUFNUtPMcxJKvGUyR3rD+rrQEear9gnso=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=UAa3w3lADsTDKO5c4DMfRzF+UOQDsLE3AdxuLGY46mUED2Kn8aSvyEwVBWm+Y2/4hlmA0PwSX5X7Ft4scNFgmPKgbakNzvgLjm0V2Tvsc2wZ9KuQphH0vQdHCNpbrbndxZNlsHyltczORmUFvr8k+a5ttt+6101SkN/qb2rBS5U= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=At1xFqJ2; arc=none smtp.client-ip=185.125.188.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="At1xFqJ2" Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 707DD3F47B for ; Tue, 24 Dec 2024 06:08:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1735020509; bh=J7bcT4SjPneUM9tLI8tVI4MMK9t1QaJRrnEAS0MFCK0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=At1xFqJ2E3B32LYcDQPdmN3lQIM3QZqcTTvBtVxBNIhqIMfefhNyxmUIvotkQof27 jKEMLE1xsjtzSZJRQMZLHMd1C8aQJSVhrZ1HRyijOMaoV54he05mCjeUsCKVjLjcfp 2iD+YQqJ8+p7KRa8lxtkgEzGt1FrcGm8aXBCeeC+d0gV8wz43xnxt8l9uCKGXHXebT TdDLSVMqXF1RlSybNGP3cHMF2L2U5p6YY2934bcSuAHIoApGQhqVsUA0fnw/MlA6hq kzC9bZijAsraM4tgmQ/FE22H+EOduL3HQY9lNgygmTANLhdPhA8mcbTbEofVQg3Yam I8TTgU+L51h5w== Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-2163d9a730aso46540235ad.1 for ; Mon, 23 Dec 2024 22:08:29 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735020508; x=1735625308; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=J7bcT4SjPneUM9tLI8tVI4MMK9t1QaJRrnEAS0MFCK0=; b=EJCC6+ypy7Oo/u0U0AxqlgRhq7rK020OILwHr1AvnxE2IumLxjuMyrxRjsagT+nUTi 2hdAG33E0kVL6xEE3gDQp/p4R85/slcmM6YjMrxi5MU0cv8u/JEiqcdYcHvIQQaG5gCX vLIuyhnHYLJ1H+Ncp6wPKaMmnE1MAImEA4RaQJVXNoXJjk+fa0mHTklNLU1oJ8B4Uj3m H2NFHSCwID1Zui6bHHCoRcxLo0Ug0MltJfSPm7Yo2KxYDZqoeza35fgKrXUZmUOgAfIg BBWwagnpkN7RkFd+XDx5lNyVq8XwXflBsx6RXiuqN2mgLfesUdLy2Y1dolQCxExYmCvM ZZKQ== X-Forwarded-Encrypted: i=1; AJvYcCXrMsEvFvR6+rZvAz29UCIzBulrcBSBP+Jf64FVseIxf+Gvqv7gEIafBHjLCnBUDd1uDRre0jbBlMVGNSY=@vger.kernel.org X-Gm-Message-State: AOJu0YyTgjGSnQcoZaSqC+D4zim5SEalSO9WkuHLo2gPfWHz0t/jpySD FxKPLQVTkd6eALGl9flQEY3+jDVDcxiR84qhqZoeYuiPmlkwZ7wjD8HtS6R2P4T/JblfL83zL2o AaO2mA9ou+PvMXke9Q9uGCQkFEcaKCIFAbyam49dmErS8O2+ZUDgK0uCuo/qECbFxinflFtk9XN g2IA== X-Gm-Gg: ASbGncvIVScc9zGYv9pFl6834LvUXx4qXd6poTHEzPjFUa5BtalEufJWCkBvj7cVQxs PYrClAatymVlJE0SJFE4QZojOrSzBliagsPr3rBi6ajLKR7xbKYCTXF3YRHdO+AsZ+m9IS35rs9 m6ixLi5xQc3BWldzn+xsCaXDRroalWU1lOCeI58O3u+pAPNhm3oH4yT483ume3RtbAEAXzOR2RL MIQjHWkYYQ8lakmEbHBPJqpPAFFH7nHQTyhwYYKxsD86q4EmrwRRtIzIg== X-Received: by 2002:a17:902:f643:b0:216:59f1:c7d9 with SMTP id d9443c01a7336-219e6d599famr267049205ad.19.1735020508136; Mon, 23 Dec 2024 22:08:28 -0800 (PST) X-Google-Smtp-Source: AGHT+IFLN1UqghuGICJDVgUY2gGTq2Ksry/nt4WmM/Ul1mkB0GEW6R7/cUrqNpweSDb4QJBSIZM/4g== X-Received: by 2002:a17:902:f643:b0:216:59f1:c7d9 with SMTP id d9443c01a7336-219e6d599famr267048945ad.19.1735020507861; Mon, 23 Dec 2024 22:08:27 -0800 (PST) Received: from z790sl.. ([240f:74:7be:1:7315:8eec:aecb:29a4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dca02a8csm82262235ad.269.2024.12.23.22.08.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Dec 2024 22:08:27 -0800 (PST) From: Koichiro Den To: linux-gpio@vger.kernel.org Cc: linus.walleij@linaro.org, brgl@bgdev.pl, linux-kernel@vger.kernel.org Subject: [PATCH 1/4] gpio: virtuser: fix missing lookup table cleanup on probe failure Date: Tue, 24 Dec 2024 15:08:16 +0900 Message-ID: <20241224060819.1492472-2-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241224060819.1492472-1-koichiro.den@canonical.com> References: <20241224060819.1492472-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a virtuser device is created via configfs and the probe fails due to an incorrect lookup table, the table is not removed. This prevents subsequent probe attempts from succeeding, even if the issue is corrected, unless the device is released. Ensure the lookup table is removed whenever the probe fails. Fixes: 91581c4b3f29 ("gpio: virtuser: new virtual testing driver for the GP= IO API") Signed-off-by: Koichiro Den --- drivers/gpio/gpio-virtuser.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/gpio/gpio-virtuser.c b/drivers/gpio/gpio-virtuser.c index 91b6352c957c..a81e15a4b807 100644 --- a/drivers/gpio/gpio-virtuser.c +++ b/drivers/gpio/gpio-virtuser.c @@ -1509,6 +1509,7 @@ gpio_virtuser_device_activate(struct gpio_virtuser_de= vice *dev) if (!dev->driver_bound) { platform_device_unregister(pdev); fwnode_remove_software_node(swnode); + gpiod_remove_lookup_table(dev->lookup_table); return -ENXIO; } =20 --=20 2.43.0 From nobody Mon Feb 9 03:29:03 2026 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) (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 4B26B154449 for ; Tue, 24 Dec 2024 06:08:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020515; cv=none; b=f/kkBWojh26iddHh8ZNps0pZitR5Cw7k6leH0Vn2ERRYCvXcP1wro6PP5nCrDFe5nztqsL55i0b+s5IPbxJfs09KN+CfUgNatf5uE2MO9+lecDkkPKNaUjVjpSTD2qsE1ys8wUtCJE0AXZEUz3NQ3YoJEsBltkusSFhSOb/zjek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020515; c=relaxed/simple; bh=jjODd6E2sPP2H56rJvCjdNTs3EWlZ5GLaJEVp5Rahvw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=q9PEUhP9fT7XRSMmSCQ47+k08DtrxL53lMLv26IxYxe6PPlPqGTIm94zS9gBzvZQaTfTPlY23OX98vkkD5R17C4B0WdnbuzLleyUpa0VYfLUpZISfs3Hjc1lCDF020+o2NzWObeBZKbaGR2pI5Zv67dIQRAglEHZl9d0CKc4sx4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=kF8sOVHs; arc=none smtp.client-ip=185.125.188.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="kF8sOVHs" Received: from mail-pl1-f200.google.com (mail-pl1-f200.google.com [209.85.214.200]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id 42F463F803 for ; Tue, 24 Dec 2024 06:08:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1735020511; bh=5ZW/PEFng4FvP68UML2UsRGI1J55AyoUOdPTFqJICxQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kF8sOVHs1BMxPjkGcZVmjz+Hz7WckZOD/SFknZIM0fq+EN5eYkKnhoWZH8+OocUcr 2O7TR2fkV5k9jUjG7g1ShHqf6XRy3XoDbzGB/gGhA9Zl8NiVCInZKtj3Wio4wcWURS psHP220cOQxQ4Ew+sshLbXfEw6Nb1DbvZdomT39rAdIbEhID5v/X4bmAiCRawidA6p c9BqfL9UsNUavUhOV34q83uT/LhmTMDbfKWZl21n3GgkBN9MzQRJ9OH1DPWhMJo163 onK18BTp2hw3tUm7FEec46joOKjzVjKEZIQ/OZlLGLviTCtsvFYAHHMJ1J0iPbNK4r NwXGalTr5mGNw== Received: by mail-pl1-f200.google.com with SMTP id d9443c01a7336-2163a2a1ec2so79504125ad.1 for ; Mon, 23 Dec 2024 22:08:31 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735020510; x=1735625310; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5ZW/PEFng4FvP68UML2UsRGI1J55AyoUOdPTFqJICxQ=; b=O9qIXJnKk6lTibD6w4gbEUlXdBUYMYQ6p1heJjyDGnCW0hf5QmxbJo8vKKVP6MULRV Ky8eNIhffyiP+4i4edx5cnW+LENW8+k9MHgkvOWQqvwiun0BqffFrImTHoz5b5bOAxAq PVlVwIBCwRRNpCXs1ktMRVOmxVeusa2bsZsg+YAJQY0JC3ap8Fyr4hOY7dAfSBZ/aZHC TtHEMItOMCkqyHqg7KGTF3el9v/uKdf9L8Vvk0yEUuaWWnAjB0Gn1Tdx02iDRyamPH4z QaoN5qGfjcKsxCFjPr0F+lzHfiBtf9PiQNwYlkvqXQwR9wSxtS9X8cBMW2Zy11EQu6zD Av6A== X-Forwarded-Encrypted: i=1; AJvYcCVg8jDDYxdOoNwH0fHsu2H+ceMnyodyw962X/X0xFBOJbeXUF9a8wms4boo2K24EUBum/2rDEm2GLbmOGY=@vger.kernel.org X-Gm-Message-State: AOJu0YxXpVs6zdeHYqwuZrmlEql+Pw35iJ3549u3+srNtpc7w1gcg1gt gnq8BnB3KuEkHe3Nr8RONstYvnOVIEKL5fO3BLR16qvyMxfgsYyreAxYFj+cxnTxCOu0yWGwMER w1chROEHJSyqfv+XW0Hu82nPB1+WdUTG29yMSAfYYFHpV1bwqYMlWMLd3tJKgtemM5qTP/cTROK ccPA== X-Gm-Gg: ASbGncvnP/iOOfGN5P+YVA9yH6KDzghoXkDhoJFsSoiVCceLUPykYZRpzV6yfASCwg8 ic1AHVSfZc9ltGEW39HBX4hqnhfoxM3hIa7azaZ6sqSJBiyQJh7yK9e3x5w/LmhdthNdC83huYK GU9NniZnzDWW36gkmRq+tUPmfV4g4O5cb4JRmOk6drwHlclplzNXO1iUYHkhFh2zazIQjbOOSTc OPkhHHzbuFiIe56w01wLcQnl5+YBniIYTO4CqgzMm2gUEzoIroX4GsBfg== X-Received: by 2002:a17:903:24e:b0:215:5625:885b with SMTP id d9443c01a7336-219e6f28552mr222598275ad.52.1735020509971; Mon, 23 Dec 2024 22:08:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IHRFfC2tCT/DKU5w4xQITd/O1aq7SCBrIByFjq8+m/b55ZwwD1PTlzcCJJEDwXI5t8nIy4sBg== X-Received: by 2002:a17:903:24e:b0:215:5625:885b with SMTP id d9443c01a7336-219e6f28552mr222598135ad.52.1735020509727; Mon, 23 Dec 2024 22:08:29 -0800 (PST) Received: from z790sl.. ([240f:74:7be:1:7315:8eec:aecb:29a4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dca02a8csm82262235ad.269.2024.12.23.22.08.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Dec 2024 22:08:29 -0800 (PST) From: Koichiro Den To: linux-gpio@vger.kernel.org Cc: linus.walleij@linaro.org, brgl@bgdev.pl, linux-kernel@vger.kernel.org Subject: [PATCH 2/4] gpio: virtuser: fix handling of multiple conn_ids in lookup table Date: Tue, 24 Dec 2024 15:08:17 +0900 Message-ID: <20241224060819.1492472-3-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241224060819.1492472-1-koichiro.den@canonical.com> References: <20241224060819.1492472-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Creating a virtuser device via configfs with multiple conn_ids fails due to incorrect indexing of lookup entries. Correct the indexing logic to ensure proper functionality when multiple gpio_virtuser_lookup are created. Fixes: 91581c4b3f29 ("gpio: virtuser: new virtual testing driver for the GP= IO API") Signed-off-by: Koichiro Den --- drivers/gpio/gpio-virtuser.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-virtuser.c b/drivers/gpio/gpio-virtuser.c index a81e15a4b807..c9700c1e4126 100644 --- a/drivers/gpio/gpio-virtuser.c +++ b/drivers/gpio/gpio-virtuser.c @@ -1410,7 +1410,7 @@ gpio_virtuser_make_lookup_table(struct gpio_virtuser_= device *dev) size_t num_entries =3D gpio_virtuser_get_lookup_count(dev); struct gpio_virtuser_lookup_entry *entry; struct gpio_virtuser_lookup *lookup; - unsigned int i =3D 0; + unsigned int i =3D 0, idx; =20 lockdep_assert_held(&dev->lock); =20 @@ -1424,12 +1424,12 @@ gpio_virtuser_make_lookup_table(struct gpio_virtuse= r_device *dev) return -ENOMEM; =20 list_for_each_entry(lookup, &dev->lookup_list, siblings) { + idx =3D 0; list_for_each_entry(entry, &lookup->entry_list, siblings) { - table->table[i] =3D + table->table[i++] =3D GPIO_LOOKUP_IDX(entry->key, entry->offset < 0 ? U16_MAX : entry->offset, - lookup->con_id, i, entry->flags); - i++; + lookup->con_id, idx++, entry->flags); } } =20 --=20 2.43.0 From nobody Mon Feb 9 03:29:03 2026 Received: from smtp-relay-internal-0.canonical.com (smtp-relay-internal-0.canonical.com [185.125.188.122]) (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 B48F2156236 for ; Tue, 24 Dec 2024 06:15:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.122 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020905; cv=none; b=UArTzWy+gkF1ztmLMA8OWSzFkZT05upO0+hynMX8WGvlGXQIfPms2JJAL03nakiLwED/xlfyZfAgC/NX+2DabY5xz3BY04AAQf4TAHl1SRawFJeXq0kASPP/9tfBKN6xxDFvI9u1o/5q1GMK0vbYNtGysb4WSDH1JUgOl+mBnpg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020905; c=relaxed/simple; bh=cMvDG0BueSdf+zIzu9X8jCotHQSn0EUGYP+uv29jHzM=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=JgaWfLn1zWhrIc0zZ7n9P+QVKswfkMAdUZAmHanKFxuurqlHuSfYyCH2jd0dvhpCgBq80cV6Fat263H96EXFtbI+iSHbj7Eox1dqZz25DFptZUN7tPpA4hB66gP3ygsPZnQlLtwaxpKU47Ekfp5fW4YiN+aNU9wOXrVOKtnxWPc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=p/uTPPVv; arc=none smtp.client-ip=185.125.188.122 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="p/uTPPVv" Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-0.canonical.com (Postfix) with ESMTPS id 6B66B3F8E3 for ; Tue, 24 Dec 2024 06:08:33 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1735020513; bh=bvUHNb8XemzT0n3pS2sxj6xTXk/hDt3GgdHjNnvpT8o=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=p/uTPPVvYPYo6XRC16m2ZeXxECkusBA0KzGt3s3SwXkC9pHKA724T8lSaaimErdem Epkk3zoJwb71o2hicGuXOwMatorkPsI2RoQN09GL0/L4AoWxwLbqbW9VLRotVdnKOj es8YzHqcNzQjhLRXSjf5jOThYN6aVxWyUpi9ZjE60l8myIVjXRfZgFo+QiR44G6YxI jJ5vmN7JtIaF36PmrWRe+5VyHhcmGbhI/bXN3VUocs5vnTHmihGvmUJWrUx/IjU5pL UnDfHJinJ767G4EnmIvReM4bKsjAy88GzUW2LPEmJaCcMUtUye68iSCtkIXwpXl0sg +ySPO9XsoLQNA== Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-2166855029eso46523725ad.0 for ; Mon, 23 Dec 2024 22:08:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735020512; x=1735625312; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=bvUHNb8XemzT0n3pS2sxj6xTXk/hDt3GgdHjNnvpT8o=; b=IYISZOXYAE2Qc1yg+SEchdUiH7QH/jTy2IVyUuo9JxjwS/B5gRGphYJuoT14Z5oX7i GJVn+WUPOyg66rUgCwHK7AoD1cr3H7YaDs/5tv/doO6Jh/jN+C0vZt5YBtK3r+/dI4iZ UY8JLXynHFdxfJ84QVWdWj0zzIMBmPWbUGk1x1imjfmvONe4gujgmsAtf64Ig0E2f812 nSfHBY3XCsrltt9InB3R1YXDPt39yyJQs3d4dzYVj4hxXgKpaed2+ZjHKqxypxMUNS/V oVNE9Iq7d2r4ltYt36QNSklaVN9nQNnUqUASEasKqn3qT6CMTBylBJDYwl6iqtWZoqhX 6yzg== X-Forwarded-Encrypted: i=1; AJvYcCVCXjghvp056Zh+SnhLlCsj/KIqB3YGQY6vOVN2fYXQgcx/Kauychd/EiTftspynYxbOi1gcqKMyyISiw4=@vger.kernel.org X-Gm-Message-State: AOJu0YwXYbp9U/UyHEBpe9WUdRKJuncdItL/MjW8kaogEl6uxCdVH8zX FlrekBqlGNqh8rcZWcb8+UHW+x1etneYOwE2XZKT/vtqg4rcZl1pMrcPCWp3x1sAufnszghv+rJ OPv0wmIPrNT9aRqIJwDmLXcezqKwjcrvAOW50Syb/ELW3jXj3RqwnVPf7buXecE9UhNwIoq+gny vLiA== X-Gm-Gg: ASbGnctb1ZqKWHyqn6sBEgpBNFO5F5umZlfWVo2FmVkh0Nj4oq61Z31+yN+NW6A/7ba mt0tQitcLkpiraBQy6L1wL1GpqdET554+C/yAM8vlFCnS5fZ5HNWc3KB4ZeGcNbwNFXXiRXyc3t 5I2v7XhzkQtGXwI5VTPUqb8ZoiuCDQlJl7hvVCaJnVsLyTwUBgVlzDXziqvmeSf3aR3tSUFyBiu R7Ta8kZeubn8R1JArAaLwVmymScwBpB1A3aTFAgyWZktnJROVsK/3rGmw== X-Received: by 2002:a17:902:dac6:b0:216:59d4:40e7 with SMTP id d9443c01a7336-219e6f25e08mr151410385ad.55.1735020512090; Mon, 23 Dec 2024 22:08:32 -0800 (PST) X-Google-Smtp-Source: AGHT+IEOAv7tCbuJma5e2bZ7olmLZeIwdxAhJgDLtIE55BW4oJwBp6hpQcck5nq7sQNTozUTn6LFfw== X-Received: by 2002:a17:902:dac6:b0:216:59d4:40e7 with SMTP id d9443c01a7336-219e6f25e08mr151410225ad.55.1735020511776; Mon, 23 Dec 2024 22:08:31 -0800 (PST) Received: from z790sl.. ([240f:74:7be:1:7315:8eec:aecb:29a4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dca02a8csm82262235ad.269.2024.12.23.22.08.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Dec 2024 22:08:31 -0800 (PST) From: Koichiro Den To: linux-gpio@vger.kernel.org Cc: linus.walleij@linaro.org, brgl@bgdev.pl, linux-kernel@vger.kernel.org Subject: [PATCH 3/4] gpio: virtuser: lock up configfs that an instantiated device depends on Date: Tue, 24 Dec 2024 15:08:18 +0900 Message-ID: <20241224060819.1492472-4-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241224060819.1492472-1-koichiro.den@canonical.com> References: <20241224060819.1492472-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Once a virtuser device is instantiated and actively used, allowing rmdir for its configfs serves no purpose and can be confusing. Userspace interacts with the virtual consumer at arbitrary times, meaning it depends on its existance. Make the subsystem itself depend on the configfs entry for a virtuser device while it is in active use. Signed-off-by: Koichiro Den --- drivers/gpio/gpio-virtuser.c | 49 ++++++++++++++++++++++++++++++------ 1 file changed, 42 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpio-virtuser.c b/drivers/gpio/gpio-virtuser.c index c9700c1e4126..45b8f192f860 100644 --- a/drivers/gpio/gpio-virtuser.c +++ b/drivers/gpio/gpio-virtuser.c @@ -1533,6 +1533,32 @@ gpio_virtuser_device_deactivate(struct gpio_virtuser= _device *dev) kfree(dev->lookup_table); } =20 +static void +gpio_virtuser_device_lockup_configfs(struct gpio_virtuser_device *dev, boo= l lock) +{ + struct gpio_virtuser_lookup_entry *entry; + struct gpio_virtuser_lookup *lookup; + struct configfs_subsystem *subsys; + + subsys =3D dev->group.cg_subsys; + + /* + * The device only needs to depend on leaf lookup entries. This is + * sufficient to lock up all the configfs entries that the + * instantiated, alive device depends on. + */ + list_for_each_entry(lookup, &dev->lookup_list, siblings) { + list_for_each_entry(entry, &lookup->entry_list, siblings) { + if (lock) + WARN_ON(configfs_depend_item_unlocked( + subsys, &entry->group.cg_item)); + else + configfs_undepend_item_unlocked( + &entry->group.cg_item); + } + } +} + static ssize_t gpio_virtuser_device_config_live_store(struct config_item *item, const char *page, size_t count) @@ -1545,15 +1571,24 @@ gpio_virtuser_device_config_live_store(struct confi= g_item *item, if (ret) return ret; =20 - guard(mutex)(&dev->lock); + if (live) + gpio_virtuser_device_lockup_configfs(dev, true); =20 - if (live =3D=3D gpio_virtuser_device_is_live(dev)) - return -EPERM; + scoped_guard(mutex, &dev->lock) { + if (live =3D=3D gpio_virtuser_device_is_live(dev)) + ret =3D -EPERM; + else if (live) + ret =3D gpio_virtuser_device_activate(dev); + else + gpio_virtuser_device_deactivate(dev); + } =20 - if (live) - ret =3D gpio_virtuser_device_activate(dev); - else - gpio_virtuser_device_deactivate(dev); + /* + * Undepend is required only if device disablement (live =3D=3D 0) + * succeeds or if device enablement (live =3D=3D 1) fails. + */ + if (live =3D=3D !!ret) + gpio_virtuser_device_lockup_configfs(dev, false); =20 return ret ?: count; } --=20 2.43.0 From nobody Mon Feb 9 03:29:03 2026 Received: from smtp-relay-internal-1.canonical.com (smtp-relay-internal-1.canonical.com [185.125.188.123]) (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 0013414900F for ; Tue, 24 Dec 2024 06:08:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=185.125.188.123 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020518; cv=none; b=Z2pr+ZJ8JDg6AXR/8QgNfA458QCU3n8mTUl4DGP4VzX55jygpKsXAMwA9Q5j3ztiwQIP80YjwehdJGSVz8IFLOCY8c1iIk4rKH1HjxtTVoEZ4DB4Ve2rJPU6x3kPLLpaFZ1f0FMSlR/6cNQ4Mi5sby9rECirRLeUtAMBUNh1Lio= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1735020518; c=relaxed/simple; bh=kHy7+BUJB1e02uClmhERH9WN1YkLqPbGi5wICVhX5vg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=sadnR/ZcJx7+frFWrxqkcwZtJE/j4WJHjQlG5+tbevmUFJLhKgWsIJmPGLtZIykoMXvKmsRqpm/bL86yqy57KhK80R1c7cVZ/PLmJCb1tLd0YB0bqdDeQBGG+bO+u/xKD5Nth6RO649O9BRJygy530pqyqIbiXEpr/xyLzHnFa0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com; spf=pass smtp.mailfrom=canonical.com; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b=thUAqVfL; arc=none smtp.client-ip=185.125.188.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=canonical.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=canonical.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=canonical.com header.i=@canonical.com header.b="thUAqVfL" Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by smtp-relay-internal-1.canonical.com (Postfix) with ESMTPS id A9D353F803 for ; Tue, 24 Dec 2024 06:08:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=canonical.com; s=20210705; t=1735020515; bh=XGiVUUuPl1PuSOqM5OdpjxECLZKle/lzbsG6Q9QvzFw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=thUAqVfLfKiLdzcGGslSjKWQ06Fob3eZa4NWWE1xUs4v4+hLFhzqvM/pTMHk4/yo9 AHQpFZs7HN7LgaKXvywkes2VA+rV7xMLuBMDz5rs1ZV5+YodMXIvPDUBhtgFs4K4P+ PMh5T+ycFeeNPAHteuAQiB1qDZM6vqN77wnvVHQDQIwHc4np7ZOnYGHhVDIeRJtQOk pTlpcyjqtxsOHkElpOWj1VXfTSZbo2O6ZlD8Ml0W0zC/JePQd7otm+nrFOHgH8+x2J s8rSw1FnsOwH4GuZbByxSdvrLAVwS0CL4iW9tHrfSQg/dDo47sHct4q++IumWdhqns eUAQYaOi6dV5g== Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-21631cbf87dso41596065ad.3 for ; Mon, 23 Dec 2024 22:08:35 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735020514; x=1735625314; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=XGiVUUuPl1PuSOqM5OdpjxECLZKle/lzbsG6Q9QvzFw=; b=PDUy9qeD2GqBTHVxJ6/hM9Pt4yEA23QhqRyGD4Mi8BepLloVYDa8n92e5z+T9tVK8z hTDGZtN5oOsaWWLERBjZeWvHu1GNwaCcDhHODFhA2JfMoPcvfTfmzxo6MztheAhcWpCZ +FFZlB6gyvBDnK12y53SZT2jTHRA94YJ49gazYZMUmQ8AIwamq5rEctOaXKbumyKTNGd zeoT1i+5ZpynYR7UP88PJGDodpcXl882qc0G8rjq5yHcGjdDiWQ8dzcgczp95Gi7qaby oIgwV8JOaWvXt+KXZfKb5otDJflZvAmE5PMecVP/VLREToJrt47Vb6gETMKbdvQ80rpF TN6A== X-Forwarded-Encrypted: i=1; AJvYcCVWB+G2bGzSDhyyv6p8Iq/fr5rQ6//fAK+0/YFTR53syPBGvHDT84aDmrHpdPWaRhm42BfhOncHqKmTAqk=@vger.kernel.org X-Gm-Message-State: AOJu0YzBoZaIdk12V+NA/rjrwYM6qEvA5eFRhHCBn8BIG/s6eTUnTtYr qFWa82GKgVLq4kcboDlS3ZmJDmuiZsHmd46rx0ViC7UaMiL6HMi0fKxnfS6rlu3aoTeL3ExlQTq X6/fEBKNzo4NQq5r34clO7JW0jJ1uDXatNZTpcvEZz//z7GuPWQfF12OPMrSfzHUdYZ0MgJOdbE yqpMDAViebJQ== X-Gm-Gg: ASbGnctJ14+7tzMJdU5+AJdZ6fy2xfiLikpY9a9CantXNEsNiZJD9Hg/cb5rdhhEvUZ dG2RgB9koBLalOuVzlt9Y3XLcqmYB6mFfxUmDJwY0FUQf4Pj5SZdyBy8A2LGXTTHn3yf8T7P9zt 00RXgN2pcDJL9UGrLKSYZSk8eMuLIu5dnCn045ssuvsF3ybx1uIYCsTAJUfBSd3pbs6cpWv6Boa 5ExayQWDDtZNS+6AsS4PbN/YZmypQnkbi0+ya4jRRirNh46QsggsLGisw== X-Received: by 2002:a17:903:2442:b0:211:7156:4283 with SMTP id d9443c01a7336-219e70c0085mr229534065ad.43.1735020514126; Mon, 23 Dec 2024 22:08:34 -0800 (PST) X-Google-Smtp-Source: AGHT+IHkIdhAHeoj3acO0zFnRMN64v6XmMJRufdO3WywSQS/7mHeIObHyUz54Bte8ccY6fbgkqFqnA== X-Received: by 2002:a17:903:2442:b0:211:7156:4283 with SMTP id d9443c01a7336-219e70c0085mr229533855ad.43.1735020513818; Mon, 23 Dec 2024 22:08:33 -0800 (PST) Received: from z790sl.. ([240f:74:7be:1:7315:8eec:aecb:29a4]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-219dca02a8csm82262235ad.269.2024.12.23.22.08.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Dec 2024 22:08:33 -0800 (PST) From: Koichiro Den To: linux-gpio@vger.kernel.org Cc: linus.walleij@linaro.org, brgl@bgdev.pl, linux-kernel@vger.kernel.org Subject: [PATCH 4/4] gpio: sim: lock up configfs that an instantiated device depends on Date: Tue, 24 Dec 2024 15:08:19 +0900 Message-ID: <20241224060819.1492472-5-koichiro.den@canonical.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20241224060819.1492472-1-koichiro.den@canonical.com> References: <20241224060819.1492472-1-koichiro.den@canonical.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Once a sim device is instantiated and actively used, allowing rmdir for its configfs serves no purpose and can be confusing. Effectively, arbitrary users start depending on its existence. Make the subsystem itself depend on the configfs entry for a sim device whi= le it is in active use. Signed-off-by: Koichiro Den --- drivers/gpio/gpio-sim.c | 50 +++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/drivers/gpio/gpio-sim.c b/drivers/gpio/gpio-sim.c index f387dad81f29..2bd9552c4e1f 100644 --- a/drivers/gpio/gpio-sim.c +++ b/drivers/gpio/gpio-sim.c @@ -1027,6 +1027,32 @@ static void gpio_sim_device_deactivate(struct gpio_s= im_device *dev) dev->pdev =3D NULL; } =20 +static void +gpio_sim_device_lockup_configfs(struct gpio_sim_device *dev, bool lock) +{ + struct configfs_subsystem *subsys; + struct gpio_sim_bank *bank; + struct gpio_sim_line *line; + + subsys =3D dev->group.cg_subsys; + + /* + * The device only needs to depend on leaf line entries. This is + * sufficient to lock up all the configfs entries that the + * instantiated, alive device depends on. + */ + list_for_each_entry(bank, &dev->bank_list, siblings) { + list_for_each_entry(line, &bank->line_list, siblings) { + if (lock) + WARN_ON(configfs_depend_item_unlocked( + subsys, &line->group.cg_item)); + else + configfs_undepend_item_unlocked( + &line->group.cg_item); + } + } +} + static ssize_t gpio_sim_device_config_live_store(struct config_item *item, const char *page, size_t count) @@ -1039,14 +1065,24 @@ gpio_sim_device_config_live_store(struct config_ite= m *item, if (ret) return ret; =20 - guard(mutex)(&dev->lock); + if (live) + gpio_sim_device_lockup_configfs(dev, true); =20 - if (live =3D=3D gpio_sim_device_is_live(dev)) - ret =3D -EPERM; - else if (live) - ret =3D gpio_sim_device_activate(dev); - else - gpio_sim_device_deactivate(dev); + scoped_guard(mutex, &dev->lock) { + if (live =3D=3D gpio_sim_device_is_live(dev)) + ret =3D -EPERM; + else if (live) + ret =3D gpio_sim_device_activate(dev); + else + gpio_sim_device_deactivate(dev); + } + + /* + * Undepend is required only if device disablement (live =3D=3D 0) + * succeeds or if device enablement (live =3D=3D 1) fails. + */ + if (live =3D=3D !!ret) + gpio_sim_device_lockup_configfs(dev, false); =20 return ret ?: count; } --=20 2.43.0