lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Date:   Fri, 18 May 2018 16:39:47 +0200
From:   Michael Grzeschik <m.grzeschik@...gutronix.de>
To:     linux-usb@...r.kernel.org
Cc:     valentina.manea.m@...il.com, shuah@...nel.org,
        gregkh@...uxfoundation.org, linux-kernel@...r.kernel.org,
        kernel@...gutronix.de
Subject: [PATCH] usbip: dynamically allocate idev by nports found in sysfs

As the amount of available ports varies by the kernels build
configuration. To remove the limitation of the fixed 128 ports
we allocate the amount of idevs by using the number we get
from the kernel.

Signed-off-by: Michael Grzeschik <m.grzeschik@...gutronix.de>
---
 tools/usb/usbip/libsrc/vhci_driver.c | 11 ++++++++---
 tools/usb/usbip/libsrc/vhci_driver.h |  3 +--
 2 files changed, 9 insertions(+), 5 deletions(-)

diff --git a/tools/usb/usbip/libsrc/vhci_driver.c b/tools/usb/usbip/libsrc/vhci_driver.c
index c9c81614a66ad..9a8acfc7697fa 100644
--- a/tools/usb/usbip/libsrc/vhci_driver.c
+++ b/tools/usb/usbip/libsrc/vhci_driver.c
@@ -266,11 +266,11 @@ int usbip_vhci_driver_open(void)
 	if (vhci_driver->nports <= 0) {
 		err("no available ports");
 		goto err;
-	} else if (vhci_driver->nports > MAXNPORT) {
-		err("port number exceeds %d", MAXNPORT);
-		goto err;
 	}
 
+	vhci_driver->idev = calloc(vhci_driver->nports,
+			sizeof(struct usbip_imported_device));
+
 	vhci_driver->ncontrollers = get_ncontrollers();
 	dbg("available controllers: %d", vhci_driver->ncontrollers);
 
@@ -287,6 +287,9 @@ int usbip_vhci_driver_open(void)
 err:
 	udev_device_unref(vhci_driver->hc_device);
 
+	if (vhci_driver->idev)
+		free(vhci_driver->idev);
+
 	if (vhci_driver)
 		free(vhci_driver);
 
@@ -305,6 +308,8 @@ void usbip_vhci_driver_close(void)
 
 	udev_device_unref(vhci_driver->hc_device);
 
+	free(vhci_driver->idev);
+
 	free(vhci_driver);
 
 	vhci_driver = NULL;
diff --git a/tools/usb/usbip/libsrc/vhci_driver.h b/tools/usb/usbip/libsrc/vhci_driver.h
index 418b404d51210..67dbd1551e159 100644
--- a/tools/usb/usbip/libsrc/vhci_driver.h
+++ b/tools/usb/usbip/libsrc/vhci_driver.h
@@ -13,7 +13,6 @@
 
 #define USBIP_VHCI_BUS_TYPE "platform"
 #define USBIP_VHCI_DEVICE_NAME "vhci_hcd.0"
-#define MAXNPORT 128
 
 enum hub_speed {
 	HUB_SPEED_HIGH = 0,
@@ -41,7 +40,7 @@ struct usbip_vhci_driver {
 
 	int ncontrollers;
 	int nports;
-	struct usbip_imported_device idev[MAXNPORT];
+	struct usbip_imported_device *idev;
 };
 
 
-- 
2.17.0

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ