Received: by 2002:ac0:a594:0:0:0:0:0 with SMTP id m20-v6csp1837085imm; Tue, 22 May 2018 10:05:47 -0700 (PDT) X-Google-Smtp-Source: AB8JxZpbZlG0uK0SD5E9w1wwBO1CLrbZHHwtmwTYQmKtGMDlVJrpBj31snN9w37/w1WWD0QrJfhg X-Received: by 2002:a63:b64f:: with SMTP id v15-v6mr8092492pgt.276.1527008747890; Tue, 22 May 2018 10:05:47 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1527008747; cv=none; d=google.com; s=arc-20160816; b=Jv7s+hs7wM9K3jMhdSpKlIxcp1BEvxxa+cpg2dAtkQMWu0kce9jA2AbLondWb9Ha/Y ABEH7YK+k56du915Jnjl6x29LjmsNAQQLXfXOVmEAiW18DyGoBPD12lv3teAY5pDYhbP MahU1113+PkYP7RJyEai/fVbTeWy8+tRylgEMOB/p7pttrgyrymVf3oMohX7OdQzDn/2 YtmJbClR9MvS39zpqdNjN++stAn3gVzVyqa0M2AAc4e/5RwhAT1yo8Pj0gcQ6TsPx99E 2+dlXu9IYkHLM5OJCyH8jveE84BztfSyx2Bw2WHcbpfDM2MHyceZ6zqo0ZGHFDdDheEC QCEQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:arc-authentication-results; bh=qcT8DxmtV+87mx+wlPkIJQnjnsz5jAzDcdCUoRCjka0=; b=s2b5yhRJYPQNxv7hdnAKwplgAzbIZCOEMz2Q1Rj6nt9CwZ4dP9t86l6/5cqwRD0SKQ n91WdyydoFrPHKH4yD1Wa7trOtzRFsLxHdpXwrAsGn/q9w+TkEU1T2ryWOpusVqztZ9H 8NPwVk3n0h+ofaDqHANvZYKDtk8FkptmnywgegkNYbW09I44OWl9a4I/0VEWixXUtNQy rjPVWTa3Wf6UQAW1DmKvfZ63kag2iG/bvkFQRK21PXX8w+5EjpBjYvVOBodDDRB6v2Je S960I0wh+w4JuvrJ06dxF8wg7LTMHx6JJuMbuWLgezda/dX1jquVZvE2BNa/yfwPFcfj cFjQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m8-v6si16170196plt.29.2018.05.22.10.05.32; Tue, 22 May 2018 10:05:47 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751768AbeEVREq (ORCPT + 99 others); Tue, 22 May 2018 13:04:46 -0400 Received: from metis.ext.pengutronix.de ([85.220.165.71]:45727 "EHLO metis.ext.pengutronix.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751737AbeEVREp (ORCPT ); Tue, 22 May 2018 13:04:45 -0400 Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1fLAiG-0004Bx-Vq; Tue, 22 May 2018 19:04:40 +0200 Received: from mgr by dude.hi.pengutronix.de with local (Exim 4.91) (envelope-from ) id 1fLAiG-0002jN-ER; Tue, 22 May 2018 19:04:40 +0200 From: Michael Grzeschik To: shuah@kernel.org, linux-usb@vger.kernel.org Cc: valentina.manea.m@gmail.com, gregkh@linuxfoundation.org, linux-kernel@vger.kernel.org, kernel@pengutronix.de Subject: [PATCH v2] usbip: dynamically allocate idev by nports found in sysfs Date: Tue, 22 May 2018 19:04:07 +0200 Message-Id: <20180522170407.10102-1-m.grzeschik@pengutronix.de> X-Mailer: git-send-email 2.17.0 In-Reply-To: <05a0fd16-cd54-1bb8-7566-0d88e1bd73cf@kernel.org> References: <05a0fd16-cd54-1bb8-7566-0d88e1bd73cf@kernel.org> X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: mgr@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-kernel@vger.kernel.org Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 --- v1 -> v2: - reworked memory allocation into one calloc call - added error path on allocation failure tools/usb/usbip/libsrc/vhci_driver.c | 14 +++++++++----- tools/usb/usbip/libsrc/vhci_driver.h | 3 +-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/usb/usbip/libsrc/vhci_driver.c b/tools/usb/usbip/libsrc/vhci_driver.c index c9c81614a66ad..6e2a9edfd1f0d 100644 --- a/tools/usb/usbip/libsrc/vhci_driver.c +++ b/tools/usb/usbip/libsrc/vhci_driver.c @@ -242,13 +242,20 @@ static int read_record(int rhport, char *host, unsigned long host_len, int usbip_vhci_driver_open(void) { + int nports = get_nports(); + udev_context = udev_new(); if (!udev_context) { err("udev_new failed"); return -1; } - vhci_driver = calloc(1, sizeof(struct usbip_vhci_driver)); + vhci_driver = calloc(1, sizeof(struct usbip_vhci_driver) + + nports * sizeof(struct usbip_imported_device)); + if (!vhci_driver) { + err("vhci_driver allocation failed"); + return -1; + } /* will be freed in usbip_driver_close() */ vhci_driver->hc_device = @@ -260,15 +267,12 @@ int usbip_vhci_driver_open(void) goto err; } - vhci_driver->nports = get_nports(); + vhci_driver->nports = nports; dbg("available ports: %d", vhci_driver->nports); 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->ncontrollers = get_ncontrollers(); diff --git a/tools/usb/usbip/libsrc/vhci_driver.h b/tools/usb/usbip/libsrc/vhci_driver.h index 418b404d51210..6c9aca2167051 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