| Message ID | 20260831111738.334857-8-ssrish@linux.ibm.com (mailing list archive) |
|---|---|
| State | New |
| Headers | show |
| Series | Extend PKWM to support user-created wrapping keys | expand |
On 31.08.2026 4:47 PM, Srish Srinivasan wrote: > The PLPKS wrapping features config is only valid on systems that support > the "Key Wrapping" feature. Currently the config is always exposed, even > when the feature is unavailable. > > Add is_visible attribute_group callback to suppress the wrapping features > sysfs attribute when the "Key Wrapping" feature is not supported. Declare > the attribute group static const, as it is not modified after > initialization. > > Fixes: 447eb1d5ef00 ("pseries/plpks: expose PowerVM wrapping features via the sysfs") > Cc: stable@vger.kernel.org > Signed-off-by: Srish Srinivasan <ssrish@linux.ibm.com> Tested-by: R Nageswara Sastry <rnsastry@linux.ibm.com> Tested on ppc64le PowerVM LPARs: - Firmware with wrap/unwrap support: /sys/firmware/plpks/config/wrapping_features is present and readable. - Firmware without wrap/unwrap support: the wrapping_features attribute is correctly absent from sysfs. > --- > arch/powerpc/platforms/pseries/plpks-sysfs.c | 20 +++++++++++++++----- > 1 file changed, 15 insertions(+), 5 deletions(-) > > diff --git a/arch/powerpc/platforms/pseries/plpks-sysfs.c b/arch/powerpc/platforms/pseries/plpks-sysfs.c > index c2ebcbb41ae3..f2436229f323 100644 > --- a/arch/powerpc/platforms/pseries/plpks-sysfs.c > +++ b/arch/powerpc/platforms/pseries/plpks-sysfs.c > @@ -45,6 +45,16 @@ static const struct attribute *config_attrs[] = { > > static struct kobject *plpks_kobj, *plpks_config_kobj; > > +static umode_t plpks_config_attr_is_visible(struct kobject *kobj, > + struct attribute *attr, int n) > +{ > + if (attr == &attr_wrapping_features.attr && > + !plpks_wrapping_is_supported()) > + return 0; > + > + return attr->mode; > +} > + > int plpks_config_create_softlink(struct kobject *from) > { > if (!plpks_config_kobj) > @@ -52,13 +62,13 @@ int plpks_config_create_softlink(struct kobject *from) > return sysfs_create_link(from, plpks_config_kobj, "config"); > } > > +static const struct attribute_group config_group = { > + .attrs = (struct attribute **)config_attrs, > + .is_visible = plpks_config_attr_is_visible, > +}; > + > static __init int plpks_sysfs_config(struct kobject *kobj) > { > - struct attribute_group config_group = { > - .name = NULL, > - .attrs = (struct attribute **)config_attrs, > - }; > - > return sysfs_create_group(kobj, &config_group); > } >
diff --git a/arch/powerpc/platforms/pseries/plpks-sysfs.c b/arch/powerpc/platforms/pseries/plpks-sysfs.c index c2ebcbb41ae3..f2436229f323 100644 --- a/arch/powerpc/platforms/pseries/plpks-sysfs.c +++ b/arch/powerpc/platforms/pseries/plpks-sysfs.c @@ -45,6 +45,16 @@ static const struct attribute *config_attrs[] = { static struct kobject *plpks_kobj, *plpks_config_kobj; +static umode_t plpks_config_attr_is_visible(struct kobject *kobj, + struct attribute *attr, int n) +{ + if (attr == &attr_wrapping_features.attr && + !plpks_wrapping_is_supported()) + return 0; + + return attr->mode; +} + int plpks_config_create_softlink(struct kobject *from) { if (!plpks_config_kobj) @@ -52,13 +62,13 @@ int plpks_config_create_softlink(struct kobject *from) return sysfs_create_link(from, plpks_config_kobj, "config"); } +static const struct attribute_group config_group = { + .attrs = (struct attribute **)config_attrs, + .is_visible = plpks_config_attr_is_visible, +}; + static __init int plpks_sysfs_config(struct kobject *kobj) { - struct attribute_group config_group = { - .name = NULL, - .attrs = (struct attribute **)config_attrs, - }; - return sysfs_create_group(kobj, &config_group); }
The PLPKS wrapping features config is only valid on systems that support the "Key Wrapping" feature. Currently the config is always exposed, even when the feature is unavailable. Add is_visible attribute_group callback to suppress the wrapping features sysfs attribute when the "Key Wrapping" feature is not supported. Declare the attribute group static const, as it is not modified after initialization. Fixes: 447eb1d5ef00 ("pseries/plpks: expose PowerVM wrapping features via the sysfs") Cc: stable@vger.kernel.org Signed-off-by: Srish Srinivasan <ssrish@linux.ibm.com> --- arch/powerpc/platforms/pseries/plpks-sysfs.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-)