From nobody Sun Feb 8 08:42:29 2026 Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A0AD3197A67 for ; Sat, 18 Jan 2025 14:51:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737211868; cv=none; b=DTuJ4rhUgR1DAHzyrjOWkry1x9nZUdDy7R8P4Ll+zvrszCU5eDg0QFmvjGpvd2LdwwbRKtPGq9J8Hh5u+mEVXW8+OLEjhLhivhI/LohwkIc7M210HEAXDRxTFzSdRgyPpICxism2ICb7dCWVW/6HcSG4HaTZx3+p3gCeOpWxZv8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737211868; c=relaxed/simple; bh=0oZu/oNzQjJDG7FZuy3LOM3J7EyGV+I6MYjuxkqW1lI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WFLZrpSwNLhoYBgEN6HESkgd0A6VyKVxRQF7kM3/Y+3VV5v0cwRDWBtHD9kRXVTY7cOQ5zApWdiLxmU86NswMQb+bdeHq4HLWjg/P39t4T7URZoF0LYF+dL8okXxamfmllar4YQ2eMYtTXLe+JqXO6VCGLmJlzcW4xbtSiba9e0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=D/vQE3xK; arc=none smtp.client-ip=209.85.128.50 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="D/vQE3xK" Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-43635796b48so19053265e9.0 for ; Sat, 18 Jan 2025 06:51:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737211864; x=1737816664; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=lsRkYHRIphje2UKglTi53au0YUGaH++C1fvSlmQIJyg=; b=D/vQE3xKc5TurfUsQylKtqD8NW4+id0Ui9uuYYWuBlYM1dWdJtTddTF6tGTS8XkQNt acfDIdzTidx3uPSGW74Z7/wPVFT5ekigcAsA4NDggWw4Vf8kLdmxj4XvhAJIcDrK3icn KneiGkCHBgY9IU+y0WqOlP8UA12lwYONtCD5OuV51IKQ4gjjZ/glMBLjrE5//6SLP3R6 zwuc18MTbuNhHTG/5Q/+UVqcpIxaMKKy5PQS+xuV60Dwo24yCnRZAk65uM86qumLLgsj T6d+M8KamB0iIlbJdeWFRj+rOSQnIMma0FYjbJGERLgvDy3bfHaNvrA2DWcQ/p61kSYg nuSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737211864; x=1737816664; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lsRkYHRIphje2UKglTi53au0YUGaH++C1fvSlmQIJyg=; b=xRkIuuoD7vb+lgAUi906hVKhRWfCoPJWQ+YbIKQctuyVnQuB2QnisueKc/hVsOQAS0 JHJu7kIxyWWM9WgvSU7YhJaFFFghabCALDgNoI3SMXRfG0vJQWwCRSJrr4N64VbV2ua3 buPeMqnnfarWh89fEPA/hLgG6mh5B5GXc2BEUcM/ccjqIV2IHHYJuN77ZAf+IJ5DLPhw K4y48E0TWG6E3RSv0AmElQeOe8h4EFbB0+peWt5aHSrbzmtruT6MD/LdHCH2SdqzbLHi NJF4LL7aTPhP7+VxzW1U3KwalMd+CwpXFwdeCmhzbZw1M9as0iYQqHTfH6FCOPNotm/s u+uw== X-Forwarded-Encrypted: i=1; AJvYcCU7U6niXwmDAN1V2dnrUSwf5BhCwGjkiUjv+xQZVsbxWsED5OLPJf7KjUMBVRAQ7sjhq9Nj4j8f60furV0=@vger.kernel.org X-Gm-Message-State: AOJu0YyLRk3DzVP3zBqLeW3PetINxMpq7ABSiS6LwGTIdYaQY+9xDHiG qhJQv2nISMvaPucRPrNsG2kRAMXDOc56EV2oAfbx9ou5szLjRRnY X-Gm-Gg: ASbGncvD11FyKhnEp0VA/1oEx9PPvkc01e8QVbosspdEjQJn0cYo9hjW2nAYSl/WUN3 YtimKfvP3jz+SS4Z3+5Dyg6ME0vuPnp4ykJ8f8wUfMFQtgmFxlC9iJ3z0rjy3HgOp21PZGz4ar7 neEjYXa3XfPK1QWchQNrRR0aJoKUcUcDMIwhK2MWO5CXw5+azJQm9yb4CnuVnRqrni46oR+n6GI cJOadmytxNiGOVFbcqOdktQaU6L0IJa5NSoW+ns/qwxMY4mUiVXORb3LRyoPtkgpsHTzypic70m MAMg5BBhCtrk6JIWSozZoquT26jWAA== X-Google-Smtp-Source: AGHT+IFdoOHXMrF4eM3ozHfrh0C9QsRmxgPCruVE8QcbdRcWdhE0KoHF7nSmM8P7+nQk04iciupuEA== X-Received: by 2002:a05:600c:1c21:b0:434:f3d8:62db with SMTP id 5b1f17b1804b1-438918b9b23mr58668585e9.2.1737211863604; Sat, 18 Jan 2025 06:51:03 -0800 (PST) Received: from localhost.localdomain (82-64-73-52.subs.proxad.net. [82.64.73.52]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-437c103f0afsm74701735e9.2.2025.01.18.06.51.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Jan 2025 06:51:02 -0800 (PST) From: Dave Penkler To: gregkh@linuxfoundation.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Cc: Dave Penkler Subject: [PATCH 2/2] staging: gpib: Agilent usb code cleanup Date: Sat, 18 Jan 2025 15:50:46 +0100 Message-ID: <20250118145046.12181-3-dpenkler@gmail.com> X-Mailer: git-send-email 2.47.1 In-Reply-To: <20250118145046.12181-1-dpenkler@gmail.com> References: <20250118145046.12181-1-dpenkler@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Remove useless #ifdef RESET_USB_CONFIG code. Change kalloc / memset to kzalloc The attach function was not freeing the private data on error returns. Separate the releasing of urbs and private data and add a common error exit for attach failure. Set the board private data pointer to NULL after freeing the private data. Reduce console spam by emitting only one attach message. Change last pr_err in attach to dev_err Signed-off-by: Dave Penkler --- .../gpib/agilent_82357a/agilent_82357a.c | 84 ++++++++----------- 1 file changed, 36 insertions(+), 48 deletions(-) diff --git a/drivers/staging/gpib/agilent_82357a/agilent_82357a.c b/drivers= /staging/gpib/agilent_82357a/agilent_82357a.c index 2aaccebc3c7b..69f0e490d401 100644 --- a/drivers/staging/gpib/agilent_82357a/agilent_82357a.c +++ b/drivers/staging/gpib/agilent_82357a/agilent_82357a.c @@ -1146,25 +1146,6 @@ static int agilent_82357a_setup_urbs(gpib_board_t *b= oard) return retval; } =20 -#ifdef RESET_USB_CONFIG -static int agilent_82357a_reset_usb_configuration(gpib_board_t *board) -{ - struct agilent_82357a_priv *a_priv =3D board->private_data; - struct usb_device *usb_dev =3D interface_to_usbdev(a_priv->bus_interface); - struct usb_device *usb_dev; - int retval; - - if (!a_priv->bus_interface) - return -ENODEV; - usb_dev =3D interface_to_usbdev(a_priv->bus_interface); - retval =3D usb_reset_configuration(usb_dev); - if (retval) - dev_err(&usb_dev->dev, "%s: usb_reset_configuration() returned %i\n", - __func__, retval); - return retval; -} -#endif - static void agilent_82357a_cleanup_urbs(struct agilent_82357a_priv *a_priv) { if (a_priv && a_priv->bus_interface) { @@ -1175,15 +1156,23 @@ static void agilent_82357a_cleanup_urbs(struct agil= ent_82357a_priv *a_priv) } }; =20 +static void agilent_82357a_release_urbs(struct agilent_82357a_priv *a_priv) +{ + if (a_priv) { + usb_free_urb(a_priv->interrupt_urb); + a_priv->interrupt_urb =3D NULL; + kfree(a_priv->interrupt_buffer); + } +} + static int agilent_82357a_allocate_private(gpib_board_t *board) { struct agilent_82357a_priv *a_priv; =20 - board->private_data =3D kmalloc(sizeof(struct agilent_82357a_priv), GFP_K= ERNEL); + board->private_data =3D kzalloc(sizeof(struct agilent_82357a_priv), GFP_K= ERNEL); if (!board->private_data) return -ENOMEM; a_priv =3D board->private_data; - memset(a_priv, 0, sizeof(struct agilent_82357a_priv)); mutex_init(&a_priv->bulk_transfer_lock); mutex_init(&a_priv->bulk_alloc_lock); mutex_init(&a_priv->control_alloc_lock); @@ -1191,11 +1180,11 @@ static int agilent_82357a_allocate_private(gpib_boa= rd_t *board) return 0; } =20 -static void agilent_82357a_free_private(struct agilent_82357a_priv *a_priv) +static void agilent_82357a_free_private(gpib_board_t *board) { - usb_free_urb(a_priv->interrupt_urb); - kfree(a_priv->interrupt_buffer); - kfree(a_priv); + kfree(board->private_data); + board->private_data =3D NULL; + } =20 static int agilent_82357a_init(gpib_board_t *board) @@ -1342,16 +1331,14 @@ static int agilent_82357a_attach(gpib_board_t *boar= d, const gpib_board_config_t a_priv->bus_interface =3D agilent_82357a_driver_interfaces[i]; usb_set_intfdata(agilent_82357a_driver_interfaces[i], board); usb_dev =3D interface_to_usbdev(a_priv->bus_interface); - dev_info(&usb_dev->dev, - "bus %d dev num %d attached to gpib minor %d, agilent usb interface %= i\n", - usb_dev->bus->busnum, usb_dev->devnum, board->minor, i); break; } } if (i =3D=3D MAX_NUM_82357A_INTERFACES) { - mutex_unlock(&agilent_82357a_hotplug_lock); - pr_err("No Agilent 82357 gpib adapters found, have you loaded its firmwa= re?\n"); - return -ENODEV; + dev_err(board->gpib_dev, + "No Agilent 82357 gpib adapters found, have you loaded its firmware?\n"= ); + retval =3D -ENODEV; + goto attach_fail; } product_id =3D le16_to_cpu(interface_to_usbdev(a_priv->bus_interface)->de= scriptor.idProduct); switch (product_id) { @@ -1365,21 +1352,13 @@ static int agilent_82357a_attach(gpib_board_t *boar= d, const gpib_board_config_t break; default: dev_err(&usb_dev->dev, "bug, unhandled product_id in switch?\n"); - mutex_unlock(&agilent_82357a_hotplug_lock); - return -EIO; - } -#ifdef RESET_USB_CONFIG - retval =3D agilent_82357a_reset_usb_configuration(board); - if (retval < 0) { - mutex_unlock(&agilent_82357a_hotplug_lock); - return retval; + retval =3D -EIO; + goto attach_fail; } -#endif + retval =3D agilent_82357a_setup_urbs(board); - if (retval < 0) { - mutex_unlock(&agilent_82357a_hotplug_lock); - return retval; - } + if (retval < 0) + goto attach_fail; =20 timer_setup(&a_priv->bulk_timer, agilent_82357a_timeout_handler, 0); =20 @@ -1388,11 +1367,19 @@ static int agilent_82357a_attach(gpib_board_t *boar= d, const gpib_board_config_t retval =3D agilent_82357a_init(board); =20 if (retval < 0) { - mutex_unlock(&agilent_82357a_hotplug_lock); - return retval; + agilent_82357a_cleanup_urbs(a_priv); + agilent_82357a_release_urbs(a_priv); + goto attach_fail; } =20 - dev_info(&usb_dev->dev, "%s: attached\n", __func__); + dev_info(&usb_dev->dev, + "bus %d dev num %d attached to gpib minor %d, agilent usb interface %i\= n", + usb_dev->bus->busnum, usb_dev->devnum, board->minor, i); + mutex_unlock(&agilent_82357a_hotplug_lock); + return retval; + +attach_fail: + agilent_82357a_free_private(board); mutex_unlock(&agilent_82357a_hotplug_lock); return retval; } @@ -1455,7 +1442,8 @@ static void agilent_82357a_detach(gpib_board_t *board) mutex_lock(&a_priv->bulk_alloc_lock); mutex_lock(&a_priv->interrupt_alloc_lock); agilent_82357a_cleanup_urbs(a_priv); - agilent_82357a_free_private(a_priv); + agilent_82357a_release_urbs(a_priv); + agilent_82357a_free_private(board); } dev_info(board->gpib_dev, "%s: detached\n", __func__); mutex_unlock(&agilent_82357a_hotplug_lock); --=20 2.47.1