linux-api.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Michał Mirosław" <mirqus-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Mike Waychison <mikew-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
Cc: simon.kagstrom-vI6UBbBVNY+JA8cjQkG2/g@public.gmane.org,
	davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org,
	nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org,
	"Matt Mackall" <mpm-VDJrAJ4Gl5ZBDgjK7y7TUQ@public.gmane.org>,
	adurbin-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	chavey-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org,
	"Greg KH" <greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>,
	netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	"Américo Wang"
	<xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org,
	linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH v3 02/22] netconsole: Introduce locking over the netpoll fields
Date: Wed, 15 Dec 2010 00:15:23 +0100	[thread overview]
Message-ID: <AANLkTi=reqRMrv4k5EZKdj7pmsomApw9=Kwh9nxfKCuJ@mail.gmail.com> (raw)
In-Reply-To: <20101214212904.17022.16604.stgit-tzAwxxnF6Tt6FDdRrpk8kO4/NqBCd+6Q@public.gmane.org>

2010/12/14 Mike Waychison <mikew-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>:
> The netconsole driver currently doesn't do any locking over its
> configuration fields.  This can cause problems if we were to ever have
> concurrent writing to fields while somebody is enabling the service.
>
> For simplicity, this patch extends targets_list_lock to cover all
> configuration fields within the targets.  Macros are also added here to
> wrap accessors so that we check whether the target has been enabled with
> locking handled.
>
> Signed-off-by: Mike Waychison <mikew-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org>
> Acked-by: Matt Mackall <mpm-VDJrAJ4Gl5ZBDgjK7y7TUQ@public.gmane.org>
> ---
>  drivers/net/netconsole.c |  114 ++++++++++++++++++++++++++--------------------
>  1 files changed, 64 insertions(+), 50 deletions(-)
>
> diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
> index c87a49e..6e16888 100644
> --- a/drivers/net/netconsole.c
> +++ b/drivers/net/netconsole.c
> @@ -327,6 +327,7 @@ static ssize_t store_enabled(struct netconsole_target *nt,
>                             const char *buf,
>                             size_t count)
>  {
> +       unsigned long flags;
>        int err;
>        long enabled;
>
> @@ -335,6 +336,10 @@ static ssize_t store_enabled(struct netconsole_target *nt,
>                return enabled;
>
>        if (enabled) {  /* 1 */
> +               spin_lock_irqsave(&target_list_lock, flags);
> +               if (nt->enabled)
> +                       goto busy;
> +               spin_unlock_irqrestore(&target_list_lock, flags);
>

This looks wrong. Unless there is another lock or mutex covering this
function, at this point (after spin_unlock_irqrestore()) another
thread might set nt->enabled = 1.

Best Regards,
Michał Mirosław

  parent reply	other threads:[~2010-12-14 23:15 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-12-14 21:28 [PATCH v3 00/22] netoops support Mike Waychison
2010-12-14 21:28 ` [PATCH v3 01/22] netconsole: Remove unneeded reference counting Mike Waychison
2010-12-14 21:29 ` [PATCH v3 02/22] netconsole: Introduce locking over the netpoll fields Mike Waychison
     [not found]   ` <20101214212904.17022.16604.stgit-tzAwxxnF6Tt6FDdRrpk8kO4/NqBCd+6Q@public.gmane.org>
2010-12-14 23:15     ` Michał Mirosław [this message]
2010-12-14 23:30       ` Mike Waychison
2010-12-14 21:29 ` [PATCH v3 03/22] netconsole: Introduce 'enabled' state-machine Mike Waychison
     [not found]   ` <20101214212909.17022.96801.stgit-tzAwxxnF6Tt6FDdRrpk8kO4/NqBCd+6Q@public.gmane.org>
2010-12-14 23:21     ` Michał Mirosław
2010-12-14 23:33       ` Mike Waychison
2010-12-17 20:52   ` Neil Horman
2010-12-17 21:20     ` Mike Waychison
2010-12-14 21:29 ` [PATCH v3 04/22] netconsole: Call netpoll_cleanup() in process context Mike Waychison
2010-12-14 21:29 ` [PATCH v3 05/22] netconsole: Wrap the list and locking in a structure Mike Waychison
2010-12-14 21:29 ` [PATCH v3 06/22] netconsole: Push configfs_subsystem into netpoll_targets Mike Waychison
2010-12-14 21:29 ` [PATCH v3 07/22] netconsole: Move netdev_notifier " Mike Waychison
2010-12-14 21:29 ` [PATCH v3 09/22] netconsole: Add pointer to netpoll_targets Mike Waychison
2010-12-14 21:29 ` [PATCH v3 10/22] netconsole: Rename netconsole_target -> netpoll_target Mike Waychison
2010-12-14 21:29 ` [PATCH v3 11/22] netconsole: Abstract away the subsystem name Mike Waychison
2010-12-14 21:29 ` [PATCH v3 12/22] netconsole: Move setting of default ports Mike Waychison
2010-12-14 21:30 ` [PATCH v3 13/22] netpoll: Introduce netpoll_target configs Mike Waychison
2010-12-14 21:30 ` [PATCH v3 14/22] netpoll: Move target code into netpoll_targets.c Mike Waychison
2010-12-15  0:07   ` Mike Waychison
2010-12-14 21:30 ` [PATCH v3 16/22] kmsg_dumper: Pass pt_regs along to dumpers Mike Waychison
2010-12-14 21:30 ` [PATCH v3 17/22] kmsg_dumper: Introduce a new 'SOFT' dump reason Mike Waychison
2010-12-14 21:30 ` [PATCH v3 18/22] sys-rq: Add option to soft dump Mike Waychison
     [not found] ` <20101214212846.17022.64836.stgit-tzAwxxnF6Tt6FDdRrpk8kO4/NqBCd+6Q@public.gmane.org>
2010-12-14 21:29   ` [PATCH v3 08/22] netconsole: Split out netpoll_targets init/exit Mike Waychison
2010-12-14 21:30   ` [PATCH v3 15/22] Oops: Pass regs to oops_exit() Mike Waychison
2010-12-14 21:30   ` [PATCH v3 19/22] netoops: add core functionality Mike Waychison
2010-12-14 21:30 ` [PATCH v3 20/22] netoops: Add x86 specific bits to packet headers Mike Waychison
2010-12-14 21:30 ` [PATCH v3 21/22] netoops: Add user-programmable boot_id Mike Waychison
     [not found]   ` <20101214213048.17022.58746.stgit-tzAwxxnF6Tt6FDdRrpk8kO4/NqBCd+6Q@public.gmane.org>
2010-12-14 21:42     ` Matt Mackall
2010-12-14 21:59       ` Mike Waychison
2010-12-14 22:06         ` Matt Mackall
2010-12-14 22:33           ` Mike Waychison
     [not found]             ` <AANLkTineeFcSNx09P=2SZGcBHeq5p_LQ54nU=uGVv_Ck-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-14 22:47               ` Matt Mackall
2010-12-14 23:19                 ` Mike Waychison
     [not found]                   ` <AANLkTinugLaeuHjOAY6s=Vhwo-VOYr9dz7OE7GZFH+xK-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2010-12-15  2:16                     ` Ted Ts'o
2010-12-14 21:30 ` [PATCH v3 22/22] netoops: Add a user programmable blob to the netoops packet Mike Waychison

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='AANLkTi=reqRMrv4k5EZKdj7pmsomApw9=Kwh9nxfKCuJ@mail.gmail.com' \
    --to=mirqus-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
    --cc=adurbin-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=akpm-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org \
    --cc=chavey-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org \
    --cc=greg-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org \
    --cc=linux-api-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=mikew-hpIqsD4AKlfQT0dZR+AlfA@public.gmane.org \
    --cc=mpm-VDJrAJ4Gl5ZBDgjK7y7TUQ@public.gmane.org \
    --cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=nhorman-2XuSBdqkA4R54TAoqtyWWQ@public.gmane.org \
    --cc=simon.kagstrom-vI6UBbBVNY+JA8cjQkG2/g@public.gmane.org \
    --cc=xiyou.wangcong-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.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).