Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp3296230pxb; Fri, 12 Feb 2021 14:46:05 -0800 (PST) X-Google-Smtp-Source: ABdhPJx9R+QJTu9IeP+1PhLyO2x2XZmt35EpN20UJwGQOjCHWQQwJq1XDTxSobcmBaTjYXS4OwA9 X-Received: by 2002:a50:cf02:: with SMTP id c2mr5531590edk.333.1613169965442; Fri, 12 Feb 2021 14:46:05 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1613169965; cv=none; d=google.com; s=arc-20160816; b=gUTp2B38zHfMVB7n17dUC5Nm9NNlXTqobz6teHok7RcbqRHEo/SYbw6LjmGtRoAarA Exjg2W8wL9mHir/mgRUwjAuNVjWBu9sXQpggkNgJlN0+lxcxqA4N2eS+nw/RK+ADafno Q08d4B6qUoCzHs7PsiBEdR1er2fx6zEJ0/o3OH/VexGEWtYJEl2Icbfmaei6agNWIFRk Nnqd3CWjFv1Cwiirj+yW2zWeC3KaILOUvmUkPxcaVijZaVmYdT1eMAaT0dprbs54yafc AElqg0W+yBqtEcNzDtfe5Aq/F0IRTPGNLSB4GoPUoK09q5rxqAU221HrAs7SiBuGi73g Gudw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Hqun1mCL3Uj8nnBET9CEvjX/lw7OX880oHLfK8YQm3E=; b=CGQAbTn9kPvVNZdPzSk0nlAAhZPexwk8K3mLyyny3RIQgjxp3cTV68NW+pmCg0i4GD sAcfkgE1ZcBsYRgtPfoLpZzCokL0gtbyPd1Ri/68kIyJEgdlz6NlTo0gaEBIT9rI0blB YV/Air41IB4rGgb2FmRo9VA30B4pG527Gjil6foObw4wJH9tIX4yUA4r+v840xDPBu22 uJQUKN6KX2rgHPquUwiSBwjsCXLGiLvSig5jaTFmWCyVUzNwra0xFUWz6iOfHbWf1iJh RdYICz88/L+usc2s1VH9H5v/y+BOI3InuMr2ucT84337dXvJ1GFrHYuaXXlYdbbaBJad hYjg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@beagleboard-org.20150623.gappssmtp.com header.s=20150623 header.b=z0oIZhb0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id jv10si7143067ejc.625.2021.02.12.14.45.41; Fri, 12 Feb 2021 14:46:05 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@beagleboard-org.20150623.gappssmtp.com header.s=20150623 header.b=z0oIZhb0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231613AbhBLWnd (ORCPT + 99 others); Fri, 12 Feb 2021 17:43:33 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56290 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232185AbhBLWbE (ORCPT ); Fri, 12 Feb 2021 17:31:04 -0500 Received: from mail-pl1-x634.google.com (mail-pl1-x634.google.com [IPv6:2607:f8b0:4864:20::634]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B4A28C061756 for ; Fri, 12 Feb 2021 14:30:22 -0800 (PST) Received: by mail-pl1-x634.google.com with SMTP id g20so590638plo.2 for ; Fri, 12 Feb 2021 14:30:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=beagleboard-org.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Hqun1mCL3Uj8nnBET9CEvjX/lw7OX880oHLfK8YQm3E=; b=z0oIZhb0JzsRbNMFDHzZw+XcEQqd4fPjxTMRM+ynICX6gDjBSqzsyQh1LUZoKeDnbS 6eloasQgzsH+eywOjGtQVSxctD06RZHYp3SdFL4nOjW0Vqqaa/zUn6+OBbF7Cu19pJye 7fRP+aRaGXyHFuXJJEMpMVU+mCjnwvjDWAxDZhsXuutlnQ1RmcK6kJzp/zjl3HO/Lx0C b03BguXUgKLYnHQBISL4TALAx9aJIemWV+enQHXT4JQPlYNq3RMWKll+65KMJv7foUVG d5I4+TE9bu7zq89Le28gkJBOaH/UelqGgt5PhL1/evbkmBMbd5lrKuaEAvtwRDAO7V+D o8mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=Hqun1mCL3Uj8nnBET9CEvjX/lw7OX880oHLfK8YQm3E=; b=NMQCfU/kilV5qXND4Eytcn+zutOI+Jbrfft8seG7lJXtj0qlQ0El2+dGVyGILN8wVT TUqoDrlLwiVdx3rdh5bhs2Bv8g6Hp9JJ0WalOw/Ou5PXl0mVpLwSiLK7RmKuH5M0cojk 4ZD/2Jx6TSmtoE/E6znI8+66vuj0YxIBImIvkyRkXfjGiIvAOcM+TaC20P82qEjb3vr0 XqyfQUdZNYyQggfi3tkIJrC3kiXFPeac5hCyBrpguYfevxhwvNQds6ymiWV+EVJu4nSW Htmr8IZBMwWFlSX5tcUXTzUGTQUf9SvDqy8DQdN9ckLDMcrokZ4dNe9OInrkaAb5nall Nm6A== X-Gm-Message-State: AOAM532AFKngCXz60FsewFKQUx9bj8cXqI5ZmMAOOyMTrkBXVPfvOhqv A8Ya/czmrHnqcW432uI7k2IO+A== X-Received: by 2002:a17:902:b598:b029:e2:daa2:161c with SMTP id a24-20020a170902b598b02900e2daa2161cmr4616900pls.20.1613169020863; Fri, 12 Feb 2021 14:30:20 -0800 (PST) Received: from x1.hsd1.or.comcast.net ([2601:1c0:4701:ae70:55c2:10c0:c1dd:8558]) by smtp.gmail.com with ESMTPSA id j26sm9530351pfa.35.2021.02.12.14.30.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 12 Feb 2021 14:30:20 -0800 (PST) From: Drew Fustini To: Linus Walleij , linux-gpio@vger.kernel.org, linux-kernel@vger.kernel.org, Tony Lindgren , Andy Shevchenko , Alexandre Belloni , Geert Uytterhoeven , Pantelis Antoniou , Jason Kridner , Robert Nelson , Joe Perches , Dan Carpenter Cc: Drew Fustini Subject: [PATCH v5 0/2] pinctrl: pinmux: Add pinmux-select debugfs file Date: Fri, 12 Feb 2021 14:30:13 -0800 Message-Id: <20210212223015.727608-1-drew@beagleboard.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This series first converts the debugfs files in the pinctrl subsystem to octal permissions and then adds a new debugfs file "pinmux-select". Function name and group name can be written to "pinmux-select" which will cause the function and group to be activated on the pin controller. Notes for PATCH v5: - convert permissions from symbolic to octal for debugfs_create_file() calls in core.c that Joe Perches pointed out I had missed - Linus W: please let me know if I should break this series apart as you already applied an earlier version of octal conversion patch today [1] - switch from sscanf() to just pointing to function name and group name inside of the buffer. This also avoids having to allocate additional buffers for fname and gname. Geert and Andy highlighted this security issue and Andy suggested code to use instead of sscanf(). - switch from devm_kfree() to kfree() after Dan Carpenter warned me - remove .read from pinmux_select_ops per Geert since it is write only - add usage format to error when unable find fname or gname in buffer Notes for PATCH v4: - correct the commit message in the second patch to reference function and group name instead of integer selectors. Apologies for not fixing that in v3 - fix typos in cover letter Notes for PATCH v3: - add Suggested-by: Andy Shevchenko to the "pinctrl: use to octal permissions for debugfs files" patch - change the octal permissions from 0400 to 0444 to correctly match the symbolic permissions (thanks to Joe Perches and Geert Uytterhoeven) - note that S_IFREG flag is added to the mode in __debugfs_create_file() (thanks to Andy for highlighting this and Joe for suggesting I should add a note to the commit message) - fix order of the goto labels so that the buffers are freed correctly as suggested by Dan Carpenter - move from devm_kzalloc() to kzalloc() as the buffers are only used inside the pinmux_select() function and not related to the lifetime of the pin controller device (thanks to Andy for pointing this out) - correct the pinmux-select example in commit message to use the function and group name instead of selector (thanks to Geert) Notes for PATCH v2: - create patch series that includes patch to switch all the debugfs files in pinctrl subsystem over to octal permission - write function name and group name, instead of error-prone selector numbers, to the 'pinmux-select' file - switch from static to dynamic allocation for the kernel buffer filled by strncpy_from_user() - look up function selector from function name using pinmux_func_name_to_selector() - validate group name with get_function_groups() and match_string() - look up selector for group name with pinctrl_get_group_selector() Notes for PATCH v1: - posted seperate patch to switch all the debugfs files in pinctrl subsystem over to octal permission - there is no existing documentation for any of the debugfs enteries for pinctrl, so it seemed to have a bigger scope than just this patch. I also noticed that rst documentation is confusingly named "pinctl" (no 'r') and started thread about that [2]. Linus suggested chaning that to 'pin-control'. Thus I am planning a seperate documentation patch series where the file is renamed, references changed and a section on the pinctrl debugfs files is added. Notes for RFC v2 [3]: - rename debugfs file "pinmux-set" to "pinmux-select" - renmae pinmux_set_write() to pinmux_select() - switch from memdup_user_nul() to strncpy_from_user() - switch from pr_warn() to dev_err() [1] https://lore.kernel.org/linux-gpio/20210126044742.87602-1-drew@beagleboard.org/ [2] https://lore.kernel.org/linux-gpio/20210126050817.GA187797@x1/ [3] https://lore.kernel.org/linux-gpio/20210123064909.466225-1-drew@beagleboard.org/ Drew Fustini (2): pinctrl: use to octal permissions for debugfs files pinctrl: pinmux: Add pinmux-select debugfs file drivers/pinctrl/core.c | 12 ++--- drivers/pinctrl/pinconf.c | 4 +- drivers/pinctrl/pinmux.c | 103 +++++++++++++++++++++++++++++++++++++- 3 files changed, 109 insertions(+), 10 deletions(-) -- 2.25.1