diff mbox

PCI: pciehp: Always protect pciehp_disable_slot() with hotplug mutex

Message ID 1446415120-14867-1-git-send-email-linux@roeck-us.net
State Accepted
Headers show

Commit Message

Guenter Roeck Nov. 1, 2015, 9:58 p.m. UTC
When called from pciehp_sysfs_disable_slot(), the call to
pciehp_disable_slot() was not protected by the hotplug mutex.

Cc: Rajat Jain <rajatxjain@gmail.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
 drivers/pci/hotplug/pciehp_ctrl.c | 2 ++
 1 file changed, 2 insertions(+)

Comments

Rajat Jain Nov. 5, 2015, 3:01 a.m. UTC | #1
Geez... I wonder how did I miss it. Thanks for fixing this.
Looks good to me.

Reviewed-by: Rajat Jain <rajatxjain@gmail.com>

On Sun, Nov 1, 2015 at 1:58 PM, Guenter Roeck <linux@roeck-us.net> wrote:
> When called from pciehp_sysfs_disable_slot(), the call to
> pciehp_disable_slot() was not protected by the hotplug mutex.
>
> Cc: Rajat Jain <rajatxjain@gmail.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
>  drivers/pci/hotplug/pciehp_ctrl.c | 2 ++
>  1 file changed, 2 insertions(+)
>
> diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
> index 4c8f4cde6854..880978b6d534 100644
> --- a/drivers/pci/hotplug/pciehp_ctrl.c
> +++ b/drivers/pci/hotplug/pciehp_ctrl.c
> @@ -511,7 +511,9 @@ int pciehp_sysfs_disable_slot(struct slot *p_slot)
>         case STATIC_STATE:
>                 p_slot->state = POWEROFF_STATE;
>                 mutex_unlock(&p_slot->lock);
> +               mutex_lock(&p_slot->hotplug_lock);
>                 retval = pciehp_disable_slot(p_slot);
> +               mutex_unlock(&p_slot->hotplug_lock);
>                 mutex_lock(&p_slot->lock);
>                 p_slot->state = STATIC_STATE;
>                 break;
> --
> 2.1.4
>
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Guenter Roeck Nov. 5, 2015, 5:14 a.m. UTC | #2
On 11/04/2015 06:59 PM, Rajat Jain wrote:
> Geez... I wonder how did I miss it. Thanks for fixing this.
> Looks good to me.
>
Hi Rajat,

easy to miss. I only found it accidentally.

Thanks a lot for the review!

Guenter

> Reviewed-by: Rajat Jain <rajatxjain@gmail.com <mailto:rajatxjain@gmail.com>>
>
> On Sun, Nov 1, 2015 at 1:58 PM, Guenter Roeck <linux@roeck-us.net <mailto:linux@roeck-us.net>> wrote:
>
>     When called from pciehp_sysfs_disable_slot(), the call to
>     pciehp_disable_slot() was not protected by the hotplug mutex.
>
>     Cc: Rajat Jain <rajatxjain@gmail.com <mailto:rajatxjain@gmail.com>>
>     Signed-off-by: Guenter Roeck <linux@roeck-us.net <mailto:linux@roeck-us.net>>
>     ---
>       drivers/pci/hotplug/pciehp_ctrl.c | 2 ++
>       1 file changed, 2 insertions(+)
>
>     diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
>     index 4c8f4cde6854..880978b6d534 100644
>     --- a/drivers/pci/hotplug/pciehp_ctrl.c
>     +++ b/drivers/pci/hotplug/pciehp_ctrl.c
>     @@ -511,7 +511,9 @@ int pciehp_sysfs_disable_slot(struct slot *p_slot)
>              case STATIC_STATE:
>                      p_slot->state = POWEROFF_STATE;
>                      mutex_unlock(&p_slot->lock);
>     +               mutex_lock(&p_slot->hotplug_lock);
>                      retval = pciehp_disable_slot(p_slot);
>     +               mutex_unlock(&p_slot->hotplug_lock);
>                      mutex_lock(&p_slot->lock);
>                      p_slot->state = STATIC_STATE;
>                      break;
>     --
>     2.1.4
>
>

--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjorn Helgaas Nov. 25, 2015, 5:48 p.m. UTC | #3
On Sun, Nov 01, 2015 at 01:58:40PM -0800, Guenter Roeck wrote:
> When called from pciehp_sysfs_disable_slot(), the call to
> pciehp_disable_slot() was not protected by the hotplug mutex.
> 
> Cc: Rajat Jain <rajatxjain@gmail.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>

Applied with Rajat's Reviewed-by to pci/hotplug for v4.5, thanks!

> ---
>  drivers/pci/hotplug/pciehp_ctrl.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
> index 4c8f4cde6854..880978b6d534 100644
> --- a/drivers/pci/hotplug/pciehp_ctrl.c
> +++ b/drivers/pci/hotplug/pciehp_ctrl.c
> @@ -511,7 +511,9 @@ int pciehp_sysfs_disable_slot(struct slot *p_slot)
>  	case STATIC_STATE:
>  		p_slot->state = POWEROFF_STATE;
>  		mutex_unlock(&p_slot->lock);
> +		mutex_lock(&p_slot->hotplug_lock);
>  		retval = pciehp_disable_slot(p_slot);
> +		mutex_unlock(&p_slot->hotplug_lock);
>  		mutex_lock(&p_slot->lock);
>  		p_slot->state = STATIC_STATE;
>  		break;
> -- 
> 2.1.4
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-pci" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/pci/hotplug/pciehp_ctrl.c b/drivers/pci/hotplug/pciehp_ctrl.c
index 4c8f4cde6854..880978b6d534 100644
--- a/drivers/pci/hotplug/pciehp_ctrl.c
+++ b/drivers/pci/hotplug/pciehp_ctrl.c
@@ -511,7 +511,9 @@  int pciehp_sysfs_disable_slot(struct slot *p_slot)
 	case STATIC_STATE:
 		p_slot->state = POWEROFF_STATE;
 		mutex_unlock(&p_slot->lock);
+		mutex_lock(&p_slot->hotplug_lock);
 		retval = pciehp_disable_slot(p_slot);
+		mutex_unlock(&p_slot->hotplug_lock);
 		mutex_lock(&p_slot->lock);
 		p_slot->state = STATIC_STATE;
 		break;