Blob Blame History Raw
From fb1d125f2e5b2c25a16320347065f2ecf99a0795 Mon Sep 17 00:00:00 2001
From: Oliver Neukum <oneukum@suse.com>
Date: Thu, 17 Nov 2022 13:23:57 +0100
Subject: [PATCH] usbip: stub_dev: remake locking for kABI
Patch-mainline: Never (kABI fixup)
References: git-fixes

use the global lock to preserve kABI

signed-off-by: Oliver Neukum <oneukum@suse.com>
---
 drivers/usb/core/devices.c   |    1 +
 drivers/usb/usbip/stub_dev.c |    9 ++++-----
 2 files changed, 5 insertions(+), 5 deletions(-)

--- a/drivers/usb/core/devices.c
+++ b/drivers/usb/core/devices.c
@@ -49,6 +49,7 @@
 #include "usb.h"
 
 DEFINE_MUTEX(suse_big_usbip_lock);
+EXPORT_SYMBOL(suse_big_usbip_lock);
 
 /* Define ALLOW_SERIAL_NUMBER if you want to see the serial number of devices */
 #define ALLOW_SERIAL_NUMBER
--- a/drivers/usb/usbip/stub_dev.c
+++ b/drivers/usb/usbip/stub_dev.c
@@ -63,7 +63,7 @@ static ssize_t usbip_sockfd_store(struct
 
 		dev_info(dev, "stub up\n");
 
-		mutex_lock(&sdev->ud.sysfs_lock);
+		mutex_lock(&suse_big_usbip_lock);
 		spin_lock_irq(&sdev->ud.lock);
 
 		if (sdev->ud.status != SDEV_ST_AVAILABLE) {
@@ -113,7 +113,7 @@ static ssize_t usbip_sockfd_store(struct
 		wake_up_process(sdev->ud.tcp_rx);
 		wake_up_process(sdev->ud.tcp_tx);
 
-		mutex_unlock(&sdev->ud.sysfs_lock);
+		mutex_unlock(&suse_big_usbip_lock);
 
 	} else {
 		dev_info(dev, "stub down\n");
@@ -125,7 +125,7 @@ static ssize_t usbip_sockfd_store(struct
 		spin_unlock_irq(&sdev->ud.lock);
 
 		usbip_event_add(&sdev->ud, SDEV_EVENT_DOWN);
-		mutex_unlock(&sdev->ud.sysfs_lock);
+		mutex_unlock(&suse_big_usbip_lock);
 	}
 
 	return count;
@@ -135,7 +135,7 @@ sock_err:
 err:
 	spin_unlock_irq(&sdev->ud.lock);
 unlock_mutex:
-	mutex_unlock(&sdev->ud.sysfs_lock);
+	mutex_unlock(&suse_big_usbip_lock);
 	return -EINVAL;
 }
 static DEVICE_ATTR_WO(usbip_sockfd);
@@ -301,7 +301,6 @@ static struct stub_device *stub_device_a
 	sdev->ud.side		= USBIP_STUB;
 	sdev->ud.status		= SDEV_ST_AVAILABLE;
 	spin_lock_init(&sdev->ud.lock);
-	mutex_init(&sdev->ud.sysfs_lock);
 	sdev->ud.tcp_socket	= NULL;
 	sdev->ud.sockfd		= -1;