From: linux@roeck-us.net (Guenter Roeck)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 1/3] sysfs: Fix is_visible() support for binary attributes
Date: Tue, 8 Sep 2015 08:30:13 -0700 [thread overview]
Message-ID: <20150908153013.GA6758@roeck-us.net> (raw)
In-Reply-To: <1441714066-5599-2-git-send-email-emilio.lopez@collabora.co.uk>
Emilio,
On Tue, Sep 08, 2015 at 09:07:44AM -0300, Emilio L?pez wrote:
> According to the sysfs header file:
>
> "The returned value will replace static permissions defined in
> struct attribute or struct bin_attribute."
>
> but this isn't the case, as is_visible is only called on
> struct attribute only. This patch adds the code paths required
> to support is_visible() on binary attributes.
>
> Signed-off-by: Emilio L?pez <emilio.lopez@collabora.co.uk>
> ---
> fs/sysfs/group.c | 22 ++++++++++++++++++----
> 1 file changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c
> index 39a0199..eb6996a 100644
> --- a/fs/sysfs/group.c
> +++ b/fs/sysfs/group.c
> @@ -37,10 +37,10 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
> {
> struct attribute *const *attr;
> struct bin_attribute *const *bin_attr;
> - int error = 0, i;
> + int error = 0, i = 0;
>
> if (grp->attrs) {
> - for (i = 0, attr = grp->attrs; *attr && !error; i++, attr++) {
> + for (attr = grp->attrs; *attr && !error; i++, attr++) {
> umode_t mode = (*attr)->mode;
>
> /*
> @@ -73,13 +73,27 @@ static int create_files(struct kernfs_node *parent, struct kobject *kobj,
> }
>
> if (grp->bin_attrs) {
> - for (bin_attr = grp->bin_attrs; *bin_attr; bin_attr++) {
> + for (bin_attr = grp->bin_attrs; *bin_attr; i++, bin_attr++) {
> + umode_t mode = (*bin_attr)->attr.mode;
> +
> if (update)
> kernfs_remove_by_name(parent,
> (*bin_attr)->attr.name);
> + if (grp->is_visible) {
> + mode = grp->is_visible(kobj,
> + &(*bin_attr)->attr, i);
With this, if 'n' is the number of non-binary attributes,
for i < n:
The index passed to is_visible points to a non-binary attribute.
for i >= n:
The index passed to is_visible points to the (index - n)th binary
attribute.
Unless I am missing something, this is not explained anywhere, but it is
not entirely trivial to understand. I think it should be documented.
Also, it might be a good idea to check through existing code to ensure
that this change doesn't accidentially cause trouble (existing drivers
implementing both attribute types may not expect to see an index variable
pointing to a value larger than the number of elements in the attrs array).
Thanks,
Guenter
next prev parent reply other threads:[~2015-09-08 15:30 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-08 12:07 [PATCH 0/3] platform/chrome: vboot context support Emilio López
2015-09-08 12:07 ` [PATCH 1/3] sysfs: Fix is_visible() support for binary attributes Emilio López
2015-09-08 15:30 ` Guenter Roeck [this message]
2015-09-08 19:10 ` Greg KH
2015-09-08 19:30 ` Guenter Roeck
2015-09-09 0:51 ` Emilio López
2015-09-09 1:10 ` Guenter Roeck
2015-09-09 3:58 ` Greg KH
2015-09-09 4:12 ` Guenter Roeck
2015-09-09 13:14 ` Emilio López
2015-09-09 13:30 ` Greg KH
2015-09-09 13:30 ` Guenter Roeck
2015-09-08 12:07 ` [PATCH 2/3] platform/chrome: Support reading/writing the vboot context Emilio López
2015-09-08 12:07 ` [PATCH 3/3] ARM: dts: Enable EC vboot context support on Peach boards Emilio López
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20150908153013.GA6758@roeck-us.net \
--to=linux@roeck-us.net \
--cc=linux-arm-kernel@lists.infradead.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).