Message ID | 20190226073159.13434-1-richardw.yang@linux.intel.com |
---|---|
State | New |
Headers | show |
Series | fw_cfg: use __ATTR_RO_MODE to define rev sysfs | expand |
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@linux.intel.com> > --- > 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. > -- > 2.19.1
Hi Wei, On 2/26/19 8:31 AM, 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@linux.intel.com> > --- > 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); Why not keep S_IRUSR? > > /* fw_cfg_sysfs_entry type */ > struct fw_cfg_sysfs_entry { >
On 2/26/19 5:10 PM, 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@linux.intel.com> >> --- >> 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. We could name the function rev_show but this stay fragile, we'd also need a comment "don't rename this". >> -- >> 2.19.1 >
On Tue, Feb 26, 2019 at 07:47:35PM +0100, Philippe Mathieu-Daudé wrote: > On 2/26/19 5:10 PM, 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@linux.intel.com> > >> --- > >> 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. > > We could name the function rev_show but this stay fragile, we'd also > need a comment "don't rename this". It's a given that one must not rename attributes. > >> -- > >> 2.19.1 > >
On Tue, Feb 26, 2019 at 07:45:46PM +0100, Philippe Mathieu-Daudé wrote: >Hi Wei, > >On 2/26/19 8:31 AM, 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@linux.intel.com> >> --- >> 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); > >Why not keep S_IRUSR? > Because scripts/checkpatch.pl suggest not use S_IRUSR :-) I am not sure about the particular reason. >> >> /* fw_cfg_sysfs_entry type */ >> struct fw_cfg_sysfs_entry { >>
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@linux.intel.com> >> --- >> 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
On Wed, Feb 27, 2019 at 01:33:19PM +0800, Wei Yang wrote: > 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@linux.intel.com> > >> --- > >> 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? Also why use 0400 and not S_IRUSR? > >> -- > >> 2.19.1 > > -- > Wei Yang > Help you, Help me
On Wed, Feb 27, 2019 at 11:07:16AM +0800, Wei Yang wrote: > On Tue, Feb 26, 2019 at 07:45:46PM +0100, Philippe Mathieu-Daudé wrote: > >Hi Wei, > > > >On 2/26/19 8:31 AM, 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@linux.intel.com> > >> --- > >> 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); > > > >Why not keep S_IRUSR? > > > > Because scripts/checkpatch.pl suggest not use S_IRUSR :-) > > I am not sure about the particular reason. Oh yea. http://lkml.kernel.org/r/CA+55aFw5v23T-zvDZp-MmD_EYxF8WbafwwB59934FV7g21uMGQ@mail.gmail.com maybe mention this in the commit log. > >> > >> /* fw_cfg_sysfs_entry type */ > >> struct fw_cfg_sysfs_entry { > >> > > -- > Wei Yang > Help you, Help me
On Wed, Feb 27, 2019 at 08:51:11AM -0500, Michael S. Tsirkin wrote: >On Wed, Feb 27, 2019 at 01:33:19PM +0800, Wei Yang wrote: >> 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@linux.intel.com> >> >> --- >> >> 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? > > >Also why use 0400 and not S_IRUSR? > This is interesting. The scripts/checkpatch.pl suggest to use 0400. I am not sure why the script give this suggestion. Maybe we need to fix the script? >> >> -- >> >> 2.19.1 >> >> -- >> Wei Yang >> Help you, Help me
On Wed, Feb 27, 2019 at 08:54:58AM -0500, Michael S. Tsirkin wrote: >On Wed, Feb 27, 2019 at 11:07:16AM +0800, Wei Yang wrote: >> On Tue, Feb 26, 2019 at 07:45:46PM +0100, Philippe Mathieu-Daudé wrote: >> >Hi Wei, >> > >> >On 2/26/19 8:31 AM, 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@linux.intel.com> >> >> --- >> >> 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); >> > >> >Why not keep S_IRUSR? >> > >> >> Because scripts/checkpatch.pl suggest not use S_IRUSR :-) >> >> I am not sure about the particular reason. > >Oh yea. > >http://lkml.kernel.org/r/CA+55aFw5v23T-zvDZp-MmD_EYxF8WbafwwB59934FV7g21uMGQ@mail.gmail.com > >maybe mention this in the commit log. > Thanks :-) >> >> >> >> /* fw_cfg_sysfs_entry type */ >> >> struct fw_cfg_sysfs_entry { >> >> >> >> -- >> Wei Yang >> Help you, Help me
On Wed, Feb 27, 2019 at 08:51:11AM -0500, Michael S. Tsirkin wrote: >On Wed, Feb 27, 2019 at 01:33:19PM +0800, Wei Yang wrote: >> 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@linux.intel.com> >> >> --- >> >> 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? > > >Also why use 0400 and not S_IRUSR? > In case this is the proper way to use 0400 and after keeping the name un-changed, would you mind I sending v2 for this? >> >> -- >> >> 2.19.1 >> >> -- >> Wei Yang >> Help you, Help me
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 {
Leverage __ATTR_RO_MODE to define rev sysfs instead of using open code to define the attribute. Signed-off-by: Wei Yang <richardw.yang@linux.intel.com> --- drivers/firmware/qemu_fw_cfg.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)