From nobody Tue Feb 10 05:26:35 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