From: Greg KH <gregkh@linuxfoundation.org>
To: Tri Vo <trong@android.com>
Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net>,
Viresh Kumar <viresh.kumar@linaro.org>,
"Rafael J. Wysocki" <rafael@kernel.org>,
Hridya Valsaraju <hridya@google.com>,
Sandeep Patil <sspatil@google.com>,
LKML <linux-kernel@vger.kernel.org>,
Linux PM <linux-pm@vger.kernel.org>,
"Cc: Android Kernel" <kernel-team@android.com>
Subject: Re: [PATCH] PM / wakeup: show wakeup sources stats in sysfs
Date: Wed, 26 Jun 2019 09:46:33 +0800 [thread overview]
Message-ID: <20190626014633.GA22610@kroah.com> (raw)
In-Reply-To: <CANA+-vBoabFTD=fMz+0d5Sbe9rPwnxcuxJxaMCT3KAwXYHSD7w@mail.gmail.com>
On Tue, Jun 25, 2019 at 06:33:08PM -0700, Tri Vo wrote:
> On Tue, Jun 25, 2019 at 6:12 PM Greg KH <gregkh@linuxfoundation.org> wrote:
> > > +static ssize_t wakeup_source_count_show(struct wakeup_source *ws,
> > > + struct wakeup_source_attribute *attr,
> > > + char *buf)
> > > +{
> > > + unsigned long flags;
> > > + unsigned long var;
> > > +
> > > + spin_lock_irqsave(&ws->lock, flags);
> > > + if (strcmp(attr->attr.name, "active_count") == 0)
> > > + var = ws->active_count;
> > > + else if (strcmp(attr->attr.name, "event_count") == 0)
> > > + var = ws->event_count;
> > > + else if (strcmp(attr->attr.name, "wakeup_count") == 0)
> > > + var = ws->wakeup_count;
> > > + else
> > > + var = ws->expire_count;
> > > + spin_unlock_irqrestore(&ws->lock, flags);
> > > +
> > > + return sprintf(buf, "%lu\n", var);
> > > +}
> >
> > Why is this lock always needed to be grabbed? You are just reading a
> > value, who cares if it changes inbetween reading it and returning the
> > buffer string as it can change at that point in time anyway?
>
> Right, we don't care if the value changes in between us reading and
> printing it. However, IIUC not grabbing this lock results in a data
> race, which is undefined behavior.
A data race where? Writing to the value? How can that happen? All you
are doing is incrementing this variable elsewhere, what is the worst
that can happen?
thanks,
greg k-h
next prev parent reply other threads:[~2019-06-26 1:48 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-26 0:54 [PATCH] PM / wakeup: show wakeup sources stats in sysfs Tri Vo
2019-06-26 0:59 ` Tri Vo
2019-06-26 1:12 ` Greg KH
2019-06-26 1:33 ` Tri Vo
2019-06-26 1:46 ` Greg KH [this message]
2019-06-26 22:26 ` Tri Vo
2019-06-26 22:48 ` Tri Vo
2019-06-27 0:04 ` Greg KH
2019-06-27 22:53 ` [PATCH v2] " Tri Vo
2019-06-28 15:10 ` Greg KH
2019-07-04 10:31 ` Rafael J. Wysocki
2019-07-08 3:33 ` Tri Vo
2019-07-15 20:11 ` [PATCH v3] " Tri Vo
2019-07-15 20:36 ` Greg KH
2019-07-15 21:43 ` [PATCH v4] " Tri Vo
2019-07-15 21:48 ` Rafael J. Wysocki
2019-07-16 2:11 ` Greg Kroah-Hartman
2019-07-16 4:16 ` Tri Vo
2019-07-16 8:30 ` Rafael J. Wysocki
2019-07-16 8:39 ` Greg Kroah-Hartman
2019-07-16 9:36 ` Rafael J. Wysocki
2019-07-15 21:48 ` [PATCH v3] " Tri Vo
2019-07-16 2:12 ` Greg KH
2019-06-27 22:57 ` [PATCH] " Tri Vo
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=20190626014633.GA22610@kroah.com \
--to=gregkh@linuxfoundation.org \
--cc=hridya@google.com \
--cc=kernel-team@android.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=rafael@kernel.org \
--cc=rjw@rjwysocki.net \
--cc=sspatil@google.com \
--cc=trong@android.com \
--cc=viresh.kumar@linaro.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.