[PATCH v8 0/7] Add helper for security policies

Fabian Pflug
2026-04-21T10:30:08Z

This series adds helper functions to the security policy framework to
do additional work based on the selected policy.
Like adding the policy name to the commandline and configuring pinmux
based on the selected policy.

If this series is to be applied after Ahamad's bootm change series, then
the block to change the commandline has to be moved up to roughly line
720 into the function bootm_boot_prep, where all the other
bootm_data->provide_*** checks are, so that the previous context remains
the same.

Signed-off-by: Fabian Pflug <f.pflug@pengutronix.de>
---
Changes in v8:
- rebased on top of v2026.04.0 and resolved conflict
- Link to v7: https://lore.barebox.org/barebox/20260327-v2026-02-0-topic-sconfig_console-v7-0-67a52ff65ed3@pengutronix.de

Changes in v7:
- Replaced > SCONFIG_NUM with >=
- Check for active_policy in bootm
- Add warning, if more then 10 pinctrl names are used in dtb.
- Fix spelling errors
- Link to v6: https://lore.barebox.org/barebox/20260324-v2026-02-0-topic-sconfig_console-v6-0-f0eb6af2cc06@pengutronix.de

Changes in v6:
- Made active_policy static
- Add trailer for Ahamad
- Link to v5: https://lore.barebox.org/barebox/20260320-v2026-02-0-topic-sconfig_console-v5-0-2efcaa7cb03e@pengutronix.de

Changes in v5:
- Fix error in kernel_pinctrl. The array was never written back.
- Link to v4: https://lore.barebox.org/barebox/20260320-v2026-02-0-topic-sconfig_console-v4-0-ac93d797f8cf@pengutronix.de

Changes in v4:
- removed the global variable active_policy and replaced with a getter
function
- add sanity check for is_allow parameter
- add new notifier chain to security_policy on change without checking
policies is_allowed
- rewrote the pinctrl to make use of new notify chain
- changed pinctrl to use barebox,policy-<active-policy>-<name> to
replace pinctrl for <name> instead of replacing 'default'
- Link to v3: https://lore.barebox.org/barebox/20260318-v2026-02-0-topic-sconfig_console-v3-0-e26055294723@pengutronix.de

Changes in v3:
- replaced while loop with of_tree_for_each_node_from
- removed unsused variable definition in base.c
- Link to v2: https://lore.barebox.org/barebox/20260316-v2026-02-0-topic-sconfig_console-v2-0-1eee8c762beb@pengutronix.de

Changes in v2:
- Add of_property_write_string_array function
- Add selftest for of_property_write_string_array
- Add exra-check for active-policy
- Use "linux.bootargs.dyn.policy" instead of version without dyn
- Iterate over device-nodes instead of recurse through tree
- Link to v1: https://lore.barebox.org/barebox/20260312-v2026-02-0-topic-sconfig_console-v1-0-4c3fccafab1e@pengutronix.de

---
Fabian Pflug (7):
of: add of_property_write_string_array()
security: policy: sanity check parameters
security: policy: remove global active_policy var
security: policy: add notifier chain for name change
common: bootm: add policy to commandline
drivers: pinctrl: configure pinctrl based on policy name
security: kernel_pinctrl: fixup pinctrl in kernel dts

commands/sconfig.c | 9 +++++-
common/bootm.c | 24 ++++++++++++++
drivers/of/base.c | 43 +++++++++++++++++++++++++
drivers/pinctrl/pinctrl.c | 73 +++++++++++++++++++++++++++++++++++++++++--
include/bootm.h | 5 +++
include/of.h | 3 ++
include/security/config.h | 1 +
include/security/policy.h | 3 +-
security/Kconfig.policy | 15 ++++++++-
security/Makefile | 1 +
security/kernel_pinctrl.c | 73 +++++++++++++++++++++++++++++++++++++++++++
security/policy.c | 25 ++++++++++-----
test/self/of_manipulation.c | 14 ++++++++-
test/self/of_manipulation.dts | 5 +++
14 files changed, 279 insertions(+), 15 deletions(-)
---
base-commit: c3e3a36f1511a7b4f34061b7be118085b80f7165
change-id: 20260311-v2026-02-0-topic-sconfig_console-194842a14e1d

Best regards,
--
Fabian Pflug <f.pflug@pengutronix.de>