From nobody Sat Feb 7 23:23:10 2026 Received: from mail-wm1-f44.google.com (mail-wm1-f44.google.com [209.85.128.44]) (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 E47C118FDBD for ; Sat, 18 Jan 2025 14:51:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737211865; cv=none; b=QeoZA69r0DSTvRaNIM2B0lez7BAqR4de6iRErviENvnzFay9Fh1HJKxITFDfOkNgOs0jKW0ERt8UfP3lY1ohjkST8OzTJtlBEVeEhZNl/cOhYcwLuoSEiRNrTnFs1wsx/MW28JgNethbE0H5B/nV6Eh79jaG0IRowL8P1/pb0Vw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1737211865; c=relaxed/simple; bh=CEBNE5aqF58645wo8cHthYPuUfVRK/7AczWCqYZ6Flc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=t98X1F1ockcECapk9EoPvXtjtXCHSC6YZCGQIAsc7jXD5qRPOdUSP5p7VkwpgefJyNBXtCU04TmPvTxHO2E1d6rIFtQ66DYrsUiYIvJloH4OkBIefvxQfCRBGTtrzUYkHNYVfqQKCQ7S41lfi7mSCfmKPDEIrxnqXfvh41Olp+Q= 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=DFuObGTq; arc=none smtp.client-ip=209.85.128.44 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="DFuObGTq" Received: by mail-wm1-f44.google.com with SMTP id 5b1f17b1804b1-43624b2d453so32076005e9.2 for ; Sat, 18 Jan 2025 06:51:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737211862; x=1737816662; 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=1UV4T0AyhTiydD8vQiYizGE0EyIbVgUsUfJj0/tNcZk=; b=DFuObGTqGlB5B5wWuIXYaXhSiOxnklOxzyb6dzWTEFGgMVdkEkH9qUmV4n1FjXIxHs QsHxZoCQxhQrREeD8i/kDHD03iserdwHZfKGAMoGPfD6hNOaS3Btoi43YodZxpEyouee HDY8rxwrRdICX3qXwtMmvdplbMPbHqZRjKWEv/VDOafby1i5uJOeTjxQ3hgp+j80XbMH S++UYXqrt33dHP1d54QJCQY/Ry8CozkCNSqmlCecNnLXMNmrUVx+1hnXq6KUCZew0dJO 8vZm0OzB5iM7H/3x6cOCz6tTRbIiplA/uKhQOH9UezpytRgUF0wSFUTEEEsKJRN4afOb VVCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737211862; x=1737816662; 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=1UV4T0AyhTiydD8vQiYizGE0EyIbVgUsUfJj0/tNcZk=; b=qBKq4jt2MYBnCI9LHfPENefbNFxbDdjSDEQzF+TmrYGstIUU75ogI/OAhXSmcrcZ2+ FK5vzqh4+WEwjD2y+QrmVb7Vw2dbN4Bcl5jd12LBiA4sroRHvDSRaf/psbgOVPu2maQB bS7mNPvecisHQJZNGd3s5hqAoK3YfaI3JVuXQoTF7QtSEzlEv/A1wEFQ/3EJCbdL4H5M irvmC6hggcLJdx9ZRoOrlb8o368NzN5DLJXMFT4zU1nRwndmwhqIxNvHJDYGtY/QhTNf ZebqUtMWufVElCKNZV5qk7Vk2SV9ce+DY3XljJx3gWJFcI5KGLzse0yOdwcTpdP0AxR9 B+Kg== X-Forwarded-Encrypted: i=1; AJvYcCXIXyBu+dAisWeGTEgHxNpklNht2noQXbcDlnGlhkGPkVV/Bc/84VWmktpDFhbK5NJexchw+sFWKVIPd00=@vger.kernel.org X-Gm-Message-State: AOJu0YwYIW8/x31fDVxh6+x1bdCMxRebq4FDiBSlQqCvVOjngtWQScy4 45brjAfDokdMj670ujTOCAdK1fAy4CvZyl5jgu02f0lfLVv5z3k0 X-Gm-Gg: ASbGnct56m9mnDyTsl9FaniVmH1doCXEetc2A+o0tfwDc+zG0ATIRE2t8khuCX/04co 8iOp+0JFz8xEInZf+386QVRZ+JTWrBtXDAjyoXb2Kynp97jatYMqgkw221MMZlgKRe3E0SVRGWM 0suLJ04SQViAFksq4YeVDcNs/R1G02107wyUX39qqp6sOqcTfbdN/XwdSXCZ6NFDEI6FV0/Qh9l fy4NHrvakuSdc+g7v7Gu5w0p8CPzQY5+4foigi4hDshSPdcV/K8UQPUhmmxNdZfCKoliRVD5804 nH8eS4ErMk/RK3ASNF+U2jyEXfs9hw== X-Google-Smtp-Source: AGHT+IFprDQmQq1Ux5LjJhPX1ZQwUvRsHWEBK4lQQbtL259/eEmbL6vlcbnz4lL3fKQuoQIm5IErEA== X-Received: by 2002:a05:6000:1a85:b0:38a:88f8:aac6 with SMTP id ffacd0b85a97d-38bf57a77c7mr6364687f8f.41.1737211860466; Sat, 18 Jan 2025 06:51:00 -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.50.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 18 Jan 2025 06:50:59 -0800 (PST) From: Dave Penkler To: gregkh@linuxfoundation.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org Cc: Dave Penkler Subject: [PATCH 1/2] staging: gpib: Fix NULL pointer dereference in detach Date: Sat, 18 Jan 2025 15:50:45 +0100 Message-ID: <20250118145046.12181-2-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" When the detach function is called after a failed attach the usb_dev initialization can cause a NULL pointer dereference. This happens when the usb device is not found in the attach procedure. Remove the usb_dev variable and initialization and change the dev in the dev_info message from the usb_dev to the gpib_dev. Fixes: fbae7090f30c ("staging: gpib: Update messaging and usb_device refs i= n agilent_usb") Signed-off-by: Dave Penkler --- drivers/staging/gpib/agilent_82357a/agilent_82357a.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/staging/gpib/agilent_82357a/agilent_82357a.c b/drivers= /staging/gpib/agilent_82357a/agilent_82357a.c index 34d85a1bdb37..2aaccebc3c7b 100644 --- a/drivers/staging/gpib/agilent_82357a/agilent_82357a.c +++ b/drivers/staging/gpib/agilent_82357a/agilent_82357a.c @@ -1442,12 +1442,10 @@ static int agilent_82357a_go_idle(gpib_board_t *boa= rd) static void agilent_82357a_detach(gpib_board_t *board) { struct agilent_82357a_priv *a_priv; - struct usb_device *usb_dev; =20 mutex_lock(&agilent_82357a_hotplug_lock); =20 a_priv =3D board->private_data; - usb_dev =3D interface_to_usbdev(a_priv->bus_interface); if (a_priv) { if (a_priv->bus_interface) { agilent_82357a_go_idle(board); @@ -1459,7 +1457,7 @@ static void agilent_82357a_detach(gpib_board_t *board) agilent_82357a_cleanup_urbs(a_priv); agilent_82357a_free_private(a_priv); } - dev_info(&usb_dev->dev, "%s: detached\n", __func__); + dev_info(board->gpib_dev, "%s: detached\n", __func__); mutex_unlock(&agilent_82357a_hotplug_lock); } =20 --=20 2.47.1 From nobody Sat Feb 7 23:23:10 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