Re: [PATCH] fw_cfg: use __ATTR_RO_MODE to define rev sysfs

From: Wei Yang
Date: Wed Feb 27 2019 - 00:34:05 EST


On Tue, Feb 26, 2019 at 11:10:06AM -0500, Michael S. Tsirkin wrote:
>On Tue, Feb 26, 2019 at 03:31:59PM +0800, Wei Yang wrote:
>> Leverage __ATTR_RO_MODE to define rev sysfs instead of using open code
>> to define the attribute.
>>
>> Signed-off-by: Wei Yang <richardw.yang@xxxxxxxxxxxxxxx>
>> ---
>> drivers/firmware/qemu_fw_cfg.c | 13 ++++---------
>> 1 file changed, 4 insertions(+), 9 deletions(-)
>>
>> diff --git a/drivers/firmware/qemu_fw_cfg.c b/drivers/firmware/qemu_fw_cfg.c
>> index 039e0f91dba8..a1293cbd7adb 100644
>> --- a/drivers/firmware/qemu_fw_cfg.c
>> +++ b/drivers/firmware/qemu_fw_cfg.c
>> @@ -296,18 +296,13 @@ static int fw_cfg_do_platform_probe(struct platform_device *pdev)
>> return 0;
>> }
>>
>> -static ssize_t fw_cfg_showrev(struct kobject *k, struct attribute *a, char *buf)
>> +static ssize_t fw_cfg_rev_show(struct kobject *k, struct kobj_attribute *a,
>> + char *buf)
>> {
>> return sprintf(buf, "%u\n", fw_cfg_rev);
>> }
>> -
>> -static const struct {
>> - struct attribute attr;
>> - ssize_t (*show)(struct kobject *k, struct attribute *a, char *buf);
>> -} fw_cfg_rev_attr = {
>> - .attr = { .name = "rev", .mode = S_IRUSR },
>> - .show = fw_cfg_showrev,
>> -};
>> +static const struct kobj_attribute fw_cfg_rev_attr =
>> + __ATTR_RO_MODE(fw_cfg_rev, 0400);
>>
>> /* fw_cfg_sysfs_entry type */
>> struct fw_cfg_sysfs_entry {
>
>
>Looks like this will change the name from "rev" to "fw_cfg_rev".
>That's a userspace visible change which we should not do lightly.

You are right, I should keep the interface untouched.

To keep it user un-visible, we could change like below:

- __ATTR_RO(fw_cfg_rev);
+ __ATTR_RO(rev);

Is this better for you?

>> --
>> 2.19.1

--
Wei Yang
Help you, Help me