All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Russell King <linux@armlinux.org.uk>,
	Adrian Salido <salidoa@google.com>,
	Nicolai Stange <nstange@suse.de>,
	Sasha Levin <Alexander.Levin@microsoft.com>,
	Todd Kjos <tkjos@android.com>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/4] ARM: amba: Fix race condition with driver_override
Date: Wed, 25 Apr 2018 18:06:45 +0200	[thread overview]
Message-ID: <20180425160645.GA16732@kroah.com> (raw)
In-Reply-To: <1523366506-19832-3-git-send-email-geert+renesas@glider.be>

On Tue, Apr 10, 2018 at 03:21:44PM +0200, Geert Uytterhoeven wrote:
> The driver_override implementation is susceptible to a race condition
> when different threads are reading vs storing a different driver
> override.  Add locking to avoid this race condition.
> 
> Cfr. commits 6265539776a0810b ("driver core: platform: fix race
> condition with driver_override") and 9561475db680f714 ("PCI: Fix race
> condition with driver_override").
> 
> Fixes: 3cf385713460eb2b ("ARM: 8256/1: driver coamba: add device binding path 'driver_override'")
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> Reviewed-by: Todd Kjos <tkjos@google.com>
> Cc: stable <stable@vger.kernel.org>
> ---
>  drivers/amba/bus.c | 11 +++++++++--
>  1 file changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/amba/bus.c b/drivers/amba/bus.c
> index 6ffd778352e6d953..36c5653ced5742b7 100644
> --- a/drivers/amba/bus.c
> +++ b/drivers/amba/bus.c
> @@ -69,8 +69,12 @@ static ssize_t driver_override_show(struct device *_dev,
>  				    struct device_attribute *attr, char *buf)
>  {
>  	struct amba_device *dev = to_amba_device(_dev);
> +	ssize_t len;
>  
> -	return sprintf(buf, "%s\n", dev->driver_override);
> +	device_lock(_dev);
> +	len = sprintf(buf, "%s\n", dev->driver_override);
> +	device_unlock(_dev);
> +	return len;
>  }
>  
>  static ssize_t driver_override_store(struct device *_dev,
> @@ -78,7 +82,7 @@ static ssize_t driver_override_store(struct device *_dev,
>  				     const char *buf, size_t count)
>  {
>  	struct amba_device *dev = to_amba_device(_dev);
> -	char *driver_override, *old = dev->driver_override, *cp;
> +	char *driver_override, *old, *cp;
>  
>  	if (count > PATH_MAX)
>  		return -EINVAL;
> @@ -91,12 +95,15 @@ static ssize_t driver_override_store(struct device *_dev,
>  	if (cp)
>  		*cp = '\0';
>  
> +	device_lock(_dev);
> +	old = dev->driver_override;
>  	if (strlen(driver_override)) {
>  		dev->driver_override = driver_override;
>  	} else {
>  	       kfree(driver_override);
>  	       dev->driver_override = NULL;
>  	}
> +	device_unlock(_dev);
>  
>  	kfree(old);
>  
> -- 
> 2.7.4

As this should go to stable kernels, I've fixed it up to apply without
patch 1 as that's not a real "fix" that anyone needs...

Please try to remember to put fixes first, and then "trivial" things
later on in a series.

thanks,

greg k-h

  parent reply	other threads:[~2018-04-25 16:06 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-10 13:21 [PATCH v2 0/4] ARM: amba: driver_override improvements and fixes Geert Uytterhoeven
2018-04-10 13:21 ` [PATCH v2 1/4] ARM: amba: Make driver_override output consistent with other buses Geert Uytterhoeven
2018-04-25 15:53   ` Todd Kjos
2018-04-10 13:21 ` [PATCH v2 2/4] ARM: amba: Fix race condition with driver_override Geert Uytterhoeven
2018-04-25 15:56   ` Todd Kjos
2018-04-25 16:06   ` Greg Kroah-Hartman [this message]
2018-04-25 17:53     ` Geert Uytterhoeven
2018-04-26  7:04       ` Greg Kroah-Hartman
2018-04-26  7:40         ` Geert Uytterhoeven
2018-04-26  8:35           ` Greg Kroah-Hartman
2018-04-26  8:45             ` Geert Uytterhoeven
2018-05-09 10:39               ` Russell King - ARM Linux
2018-05-09 13:32                 ` Geert Uytterhoeven
2018-05-09 14:50                   ` Greg Kroah-Hartman
2018-04-10 13:21 ` [PATCH v2 3/4] ARM: amba: Don't read past the end of sysfs "driver_override" buffer Geert Uytterhoeven
2018-04-25 15:56   ` Todd Kjos
2018-04-10 13:21 ` [PATCH v2 4/4] ARM: amba: Fix wrong indentation in driver_override_store() Geert Uytterhoeven
2018-04-25 15:58   ` Todd Kjos
2018-04-10 22:19 ` [PATCH v2 0/4] ARM: amba: driver_override improvements and fixes Russell King - ARM Linux
2018-04-25 16:08   ` Greg Kroah-Hartman
2018-04-25 17:27   ` Geert Uytterhoeven

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=20180425160645.GA16732@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=Alexander.Levin@microsoft.com \
    --cc=geert+renesas@glider.be \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=nstange@suse.de \
    --cc=salidoa@google.com \
    --cc=tkjos@android.com \
    /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.