[PATCH v2 2/6] coresight: configfs: Add in binary attributes to load files
Mathieu Poirier
mathieu.poirier at linaro.org
Wed Feb 2 14:33:09 PST 2022
[...]
> > > +
> > > +/* read "buffer" and unload configuration */
> > > +static ssize_t cscfg_cfg_unload_write(struct config_item *item, const void *buffer, size_t size)
> > > +{
> > > + struct cscfg_fs_configs_grp *configs_grp;
> > > + struct cscfg_fs_load_descs *load_descs;
> > > + const char *name;
> > > + int err;
> > > +
> > > + configs_grp = container_of(to_config_group(item), struct cscfg_fs_configs_grp, group);
> > > + if (size > CSCFG_FILE_MAXSIZE) {
> > > + scnprintf(configs_grp->status, CSCFG_FS_STATUS_STRLEN,
> > > + "Unload error: Input file too large\n");
> > > + return -EINVAL;
> > > + }
> > > +
> > > + err = cscfg_file_read_buffer_first_name(buffer, size, &name);
> > > + if (err) {
> > > + scnprintf(configs_grp->status, CSCFG_FS_STATUS_STRLEN,
> > > + "Unload error: Failed to read input file\n");
> > > + return err;
> > > + }
> > > +
> > > + load_descs = cscfg_find_fs_owned_cfg_by_name(name);
> > > + if (!load_descs) {
> > > + scnprintf(configs_grp->status, CSCFG_FS_STATUS_STRLEN,
> > > + "Unload error: Failed to find configuration %s from input file\n",
> > > + name);
> > > + return err;
> > > + }
> > > + err = cscfg_unload_config_sets(load_descs->owner_info);
> > > + if (err) {
> > > + scnprintf(configs_grp->status, CSCFG_FS_STATUS_STRLEN,
> > > + "Unload error: Cannot unload configuration %s\n",
> > > + name);
> > > + return err;
> > > + }
> > > +
> > > + scnprintf(configs_grp->status, CSCFG_FS_STATUS_STRLEN,
> > > + "OK: configuration file unloaded (%s).\n", name);
> > > +
> > > + kfree((struct cscfg_load_owner_info *)load_descs->owner_info);
> > > + kfree(load_descs);
> > > + return size;
> > > +}
> > > +CONFIGFS_BIN_ATTR_WO(cscfg_cfg_, unload, NULL, CSCFG_FILE_MAXSIZE);
> > > +
> > > +/* show the status of the last load / unload operation */
> > > +static ssize_t cscfg_cfg_last_load_status_show(struct config_item *item, char *page)
> > > +{
> > > + struct cscfg_fs_configs_grp *configs_grp;
> > > +
> > > + configs_grp = container_of(to_config_group(item), struct cscfg_fs_configs_grp, group);
> > > +
> > > + return scnprintf(page, PAGE_SIZE, "%s\n", configs_grp->status);
> >
> > I am still very ambivalent about this status thing... Especially since it only
> > reports on the last item that was loaded/unloaded.
> >
>
> I guess the priciple use is to give feedback to the user if a load
> error occurs. An alternative could be pr_err at point of error.
I'd be fine with a pr_err().
Thanks,
Mathieu
More information about the linux-arm-kernel
mailing list