From patchwork Fri May 2 07:09:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Penkler X-Patchwork-Id: 887376 Received: from mail-ed1-f44.google.com (mail-ed1-f44.google.com [209.85.208.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 4A5C52676E6; Fri, 2 May 2025 07:09:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.44 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746169792; cv=none; b=LF+tMXEBAWScfQGc8ZGUOpT2x7Qgez6jnFCIOn7r8qCzOXyXI9nDMr3vEyZk7iEVay8FcMxvcJN9wzOOSo/S/N9Czbh/D3At74jnAlWL2fYb0+lEhluzwhNTgfWSe2KQhSD5MPwlDKIcW4gJVehBX3ToZ3BVpudRpRBT8PJ8Qek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746169792; c=relaxed/simple; bh=Xs8Fk7NsM7tIMnlQLra7COF0M+LwbFvlMNaKkvTfWYI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=mxTjNDcPxyaBm0hwq82dGbsBU6bek0VLRkRSaneDdWKUQeaOp/+/hV2dDhFZxxkNYuyDzBLIVM0spWOWHj2afGC3BFyF0pV/XZoEVKBR0lRuFMgio+2zuZzM1xgVnGM6c1XQ4XkT2fOETa1ufTebBX4B+Cy3wlOzfguc1Ushfp4= 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=gN2LMMS5; arc=none smtp.client-ip=209.85.208.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="gN2LMMS5" Received: by mail-ed1-f44.google.com with SMTP id 4fb4d7f45d1cf-5e677f59438so2514759a12.2; Fri, 02 May 2025 00:09:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746169788; x=1746774588; 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=he0PjLi0f/fa9kPWWLvSTfkZuLEj/6CyEwfwOCJhSIU=; b=gN2LMMS5nu6CoxKsp47eMZMfiVjtZdX81Q5UFmOXDHUedHAWjB273N5xh+nzZWfrq8 rgXe/mCimpPjHTISgS/qqMgN2WiL7sV8w0IQQI1ieGeqn3OFpvFlDbZo1JGLqH698oQf BRPsI7H78hYL9mcbs/LNfFUcJTbAX/zctf0tXwQ/2bKhVDUu2Pm8VzJTkkMgBQVORS7N pe2F8cW2EgtmHegHN7b9d30dSLyX/f+dPKwQhmjEeBE9zjkIVQp0iQQB2p8hdFlvzVUP K3lBbK69G5vPHkvOl0333FPRjL803XHmeiwU6fuMEgd68/vwHNXbKEfiCcz114SLC22Y caQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746169788; x=1746774588; 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=he0PjLi0f/fa9kPWWLvSTfkZuLEj/6CyEwfwOCJhSIU=; b=aEdvaMo4cXWq9c9IhzsVIVEf6FtYvF9bdqn9P4Wjhw08DDXzIYmvO21Eg+Lqhp5yrP 6Dd3hhEZllIjOhCy94eNESoQKyiZSlpdohSnlBpuGT2RUXmxh//QniU1X8EMn/gQ8P/u d0Y0uNyaKW9jfGoCAGDieqRYMj1QVO7AZUbYZidw+3QLnH0NNGW8Iu9CJU5NzNmXnvHs Tnitl7e3AnLTAc7LTt6ncfEkqT7HrOX55W0E6yjTtChVy2Lv0DYF7K2g8ewuDSbPriDL TXZNZs0Nk2AHy0l4g5kr7YFNNrj6Bxmd37/dAlnf2Tk4JubTnwv4Ra4ysm67fnpkCfqG C6ZQ== X-Forwarded-Encrypted: i=1; AJvYcCU+/pVHD1IibXhGIylb/qh85hhcJAny2oKQgKWeyEURatL6tXor0F5iV2I5z9MvJEtWDTk3M0nDfPQ=@vger.kernel.org, AJvYcCVhfEKiIO6zu73RS03YT7P5kYnzL+jNaoC3R90RhX/KDaxeLmHSdyfdXUXhIf/Ulrkw9CkG8qiU@vger.kernel.org X-Gm-Message-State: AOJu0YyPKj0N4wx1fSGJXljC6yq4HsC273zMX9CQ73St9xh8l/kobvju 4FCs59+Bj9Kya4oiQ1FSUUBj0t1DLdiyh8eqm9T3Cdmxb0wBTylC X-Gm-Gg: ASbGncvGXydw2Z46nBC88Kf+P7E5WDG2leKGFA3FUIOfEWEnFJ6Psg8nlgv3R7IKcX8 g0iHBE3QvKy1iA9PlmzG6LDkVGpbZhlmPhIdNtQ+r2tqViilYLonf6Gq4khGH+MY7mOKXO1DuKl xixLsV/+MEar52gWBpP3v3Unoc61YFGx8h8Kqfs84zpl+zsOe7zkmqBckVGXmd4zGl7/wDglHhJ mPyCBJ4oto1CqYIjGTPNTKZ9ksZqtW8rKTCoWjHC8q/uHI5nLto2IifeIa24sb/3khbvRuPGVQX zzYK4B4YfprX/SdKGCbZxJGz/NBRMpThCBPAtDFl5TBMss5Echg= X-Google-Smtp-Source: AGHT+IEfPbN7VawBj2HeP2QF+fXs/yng0btJZHnVv5B8noHYrBvKdbLGp8wGJ8dEa4/OhcJkjox6AQ== X-Received: by 2002:a05:6402:510d:b0:5f8:6460:7e38 with SMTP id 4fb4d7f45d1cf-5fa78005c21mr1371307a12.11.1746169788289; Fri, 02 May 2025 00:09:48 -0700 (PDT) Received: from localhost.localdomain ([178.25.124.12]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77bf3ec0sm753513a12.79.2025.05.02.00.09.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 May 2025 00:09:47 -0700 (PDT) From: Dave Penkler To: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org Cc: guido.kiener@rohde-schwarz.com, stable@vger.kernel.org, Dave Penkler , Michael Katzmann Subject: [PATCH 1/3 V3] usb: usbtmc: Fix erroneous get_stb ioctl error returns Date: Fri, 2 May 2025 09:09:39 +0200 Message-ID: <20250502070941.31819-2-dpenkler@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250502070941.31819-1-dpenkler@gmail.com> References: <20250502070941.31819-1-dpenkler@gmail.com> Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 wait_event_interruptible_timeout returns a long The return was being assigned to an int causing an integer overflow when the remaining jiffies > INT_MAX resulting in random error returns. Use a long return value and convert to int ioctl return only on error. When the return value of wait_event_interruptible_timeout was <= INT_MAX the number of remaining jiffies was returned which has no meaning for the user. Return 0 on success. Reported-by: Michael Katzmann Fixes: dbf3e7f654c0 ("Implement an ioctl to support the USMTMC-USB488 READ_STATUS_BYTE operation.") Cc: stable@vger.kernel.org Signed-off-by: Dave Penkler --- Change V1 -> V2 Correct commit message wrongly stating the return value on success was from usb_control_msg Change V2 -> V3 Add cc to stable line drivers/usb/class/usbtmc.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index 34e46ef308ab..e24277fef54a 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -482,6 +482,7 @@ static int usbtmc_get_stb(struct usbtmc_file_data *file_data, __u8 *stb) u8 *buffer; u8 tag; int rv; + long wait_rv; dev_dbg(dev, "Enter ioctl_read_stb iin_ep_present: %d\n", data->iin_ep_present); @@ -511,16 +512,17 @@ static int usbtmc_get_stb(struct usbtmc_file_data *file_data, __u8 *stb) } if (data->iin_ep_present) { - rv = wait_event_interruptible_timeout( + wait_rv = wait_event_interruptible_timeout( data->waitq, atomic_read(&data->iin_data_valid) != 0, file_data->timeout); - if (rv < 0) { - dev_dbg(dev, "wait interrupted %d\n", rv); + if (wait_rv < 0) { + dev_dbg(dev, "wait interrupted %ld\n", wait_rv); + rv = wait_rv; goto exit; } - if (rv == 0) { + if (wait_rv == 0) { dev_dbg(dev, "wait timed out\n"); rv = -ETIMEDOUT; goto exit; @@ -539,6 +541,8 @@ static int usbtmc_get_stb(struct usbtmc_file_data *file_data, __u8 *stb) dev_dbg(dev, "stb:0x%02x received %d\n", (unsigned int)*stb, rv); + rv = 0; + exit: /* bump interrupt bTag */ data->iin_bTag += 1; From patchwork Fri May 2 07:09:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Penkler X-Patchwork-Id: 886912 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (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 D6602221FB8; Fri, 2 May 2025 07:09:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746169795; cv=none; b=Fit9ZUeo7sN27qAHfvLx6Dcce/NKLe5BNJZvCiTmqOfKVBZ/N8nLa4+KJDnBIvB6FbktZ26aWtyga7hzh7VB2e6HqXc9u5CUTFMw+CxB+4RC3oWlOTv5s/p8CtcRAh6LC8e7hVHWmHzY6xZNFKyN0J9TnBe7UuoKkcpcH/csTG0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746169795; c=relaxed/simple; bh=FNP3f8vTF+eq4+o2gW9MFt1Ri5yXjJT6HdncG9sVSy8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=B2zEWCkUKOslVg7GcToIZB1EbxPEErB4nKP41E7FlfedZEtu2yUIGU4CG63OEvxfUMpWnIf102QSizjtsVw5fr9bFu5ejXx+lr6fX5h5JqciD3h2W6Saj+3dz/AdBI2N7xmDEFU6KH2GpgRfAVdE7kqLv71dM8KFzm8WLhGHJTg= 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=bSpky7ah; arc=none smtp.client-ip=209.85.208.51 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="bSpky7ah" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-5f4d28d9fd8so2265644a12.3; Fri, 02 May 2025 00:09:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746169791; x=1746774591; 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=d10r9kauN9gqIusKigQu41oSQY9xgEgrDUOGrp8WcZM=; b=bSpky7ahc2lFqoTK2IS0ur9Km9MpGJoeSG4LMQYZeeDqcDFpEx6O2P2pElJGg+Ct+U WCmSuvolBII6YfMw/O0knGOwzXzDCxI9JUaD5dWdz+fA3Mj5/unlEYRQQ/ZbZeQuAa/V 3uGjTbtyGIts6ntpohAfgIBQPBLSVb2Qnrt0ph9VKHy4XTOu9+jD83TvThoZ7slaHSPf ZQI6xrCtuLVQutFYeTDLyuaBGIo0YQYVj0S0oN0JN+HcehsMfA/YFdwSzTEJvdfoOWtN R2/Ibg76kzANlfTPVy6ZxVfP5W/KbXDTPhpAsMmdoOGYQi1DrRfFWPwYrsm28xDN8X7S EwmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746169791; x=1746774591; 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=d10r9kauN9gqIusKigQu41oSQY9xgEgrDUOGrp8WcZM=; b=t4cFrrH2rn04b1XTnlyUcQ2SHbJsqpgbZxz+V4PZE/LrETlwJ+eFeb4V1hHFEVRSde XJg6e697M8a//BgINajIRwmm3yxAZHt1XLYCb1oZjCobYP8PrTFbS8TtOQ0HkziqKN5Z kD5QQrOfNBjHOLfcQaG8edyvQzbcCY69OcW0rlTgCP0zcJ75ypTM8NIuJnhAPsZWhXbL tHxLkCAMTtN95/vhwn+b9u9i+tmlXKRyBnZJwFAoNVmzLB5wmXudphGYEVMJRm1QYrT8 Hh8AU1iMIMrg2+/0nS+0lR7GBBs+yGHA1RiUmBg8VLa+leSj2GVdZDyuCZmdr9o3MUTA qt6Q== X-Forwarded-Encrypted: i=1; AJvYcCU2/41lAy7NfS3fdfThkJi6UdQuWoPQVg1ETfGDNNIeBJ1KXadEgaJpoX98q3jDmi544SPU9KfK@vger.kernel.org, AJvYcCU2wZofVIekSJqK1KRBfmjP5mh1NxaNO76q8PMkgiytWRugW4COx/uWybcUY2XhkzDaRMTR0BpJ/1w=@vger.kernel.org X-Gm-Message-State: AOJu0YySNLdn+mgo2gldnkQlmO4CX5JB6iJTdjqbp5vQIg1FAEcivjou zOeo5ouX8ei1am2gE4FQDVhM51zH89Bqc6scEqtYlA7I/ZMjcx27 X-Gm-Gg: ASbGncuUMjgvMx7vcSTJ4vqXAfO3E5P2u+GVoCdplR+F/AfuD5wd76ueRRkU2RU0M7z ilCdZ57rpgcYz9WDSLyWFmsguq7F9FeOrMjGLbT1kCLIZ9i1fdcGyWFGkWdVWKJrVrJoitydO/r dpO/A2luANm3dQwcJl8tL7la3LAcc4Yj/KiOVl7+tvBkmJyKnnfx9LL9Gh21X0pylgQYxsjGJMl D1Cog/Y/StFnz2Gfyk02FHR+oC5TXGpJ1Owtv4hqyFJpFn5RQUNahzwo93P47FKTDl3PLP1DvxN bh4AIYr1w/9Tlv3kalAGOnbmFVAL/nC3HkIEo681N9woFOwlyONwnJVBhFxmmA== X-Google-Smtp-Source: AGHT+IEG5Oc4OzRT/asqmi8pWTft3MdCGbkEVBzoRc9nvk+wHU/VK8Fq+93Anl6/WhrA0Otg9lGZ5w== X-Received: by 2002:a05:6402:3506:b0:5f8:eaa7:793e with SMTP id 4fb4d7f45d1cf-5fa788e4634mr1404597a12.25.1746169791104; Fri, 02 May 2025 00:09:51 -0700 (PDT) Received: from localhost.localdomain ([178.25.124.12]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77bf3ec0sm753513a12.79.2025.05.02.00.09.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 May 2025 00:09:49 -0700 (PDT) From: Dave Penkler To: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org Cc: guido.kiener@rohde-schwarz.com, stable@vger.kernel.org, Dave Penkler Subject: [PATCH 2/3 V3] usb: usbtmc: Fix erroneous wait_srq ioctl return Date: Fri, 2 May 2025 09:09:40 +0200 Message-ID: <20250502070941.31819-3-dpenkler@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250502070941.31819-1-dpenkler@gmail.com> References: <20250502070941.31819-1-dpenkler@gmail.com> Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 wait_event_interruptible_timeout returns a long The return was being assigned to an int causing an integer overflow when the remaining jiffies > INT_MAX resulting in random error returns. Use a long return value, converting to the int ioctl return only on error. Fixes: 739240a9f6ac ("usb: usbtmc: Add ioctl USBTMC488_IOCTL_WAIT_SRQ") Cc: stable@vger.kernel.org Signed-off-by: Dave Penkler --- Change V1 -> V2 Add cc to stable line drivers/usb/class/usbtmc.c | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index e24277fef54a..b3ca89b0dab7 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -606,9 +606,9 @@ static int usbtmc488_ioctl_wait_srq(struct usbtmc_file_data *file_data, { struct usbtmc_device_data *data = file_data->data; struct device *dev = &data->intf->dev; - int rv; u32 timeout; unsigned long expire; + long wait_rv; if (!data->iin_ep_present) { dev_dbg(dev, "no interrupt endpoint present\n"); @@ -622,25 +622,24 @@ static int usbtmc488_ioctl_wait_srq(struct usbtmc_file_data *file_data, mutex_unlock(&data->io_mutex); - rv = wait_event_interruptible_timeout( - data->waitq, - atomic_read(&file_data->srq_asserted) != 0 || - atomic_read(&file_data->closing), - expire); + wait_rv = wait_event_interruptible_timeout( + data->waitq, + atomic_read(&file_data->srq_asserted) != 0 || + atomic_read(&file_data->closing), + expire); mutex_lock(&data->io_mutex); /* Note! disconnect or close could be called in the meantime */ if (atomic_read(&file_data->closing) || data->zombie) - rv = -ENODEV; + return -ENODEV; - if (rv < 0) { - /* dev can be invalid now! */ - pr_debug("%s - wait interrupted %d\n", __func__, rv); - return rv; + if (wait_rv < 0) { + dev_dbg(dev, "%s - wait interrupted %ld\n", __func__, wait_rv); + return wait_rv; } - if (rv == 0) { + if (wait_rv == 0) { dev_dbg(dev, "%s - wait timed out\n", __func__); return -ETIMEDOUT; } From patchwork Fri May 2 07:09:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dave Penkler X-Patchwork-Id: 887375 Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) (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 23C45267393; Fri, 2 May 2025 07:09:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746169796; cv=none; b=Q0khg4NyITJBmE85FC44y1Tg3Oqx1MAiFOl/z5Fw5L1Ys5G8gjQLJcfpUdUExkfA0sbqZZIXjK2WFQtP8CwAp2tGwf7ysbh4pfFFCQHfb3mk/4VGk9uXqrWbC6P1y83qGkltpA790ZCjExycgsPDyLnPvkcLT6ddqGHoswFEWgA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1746169796; c=relaxed/simple; bh=uzVjkm7xuS851VrFWNmL0auSaJTNbIuq8hK/utJoN/8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=T/+6D5qNg7BrHYrQoANEoc3Y6aAB6ZMbsWetXcnHI34FeIr1t0wReR6cUrB9WL2o41XpkuTIEXxy9BHSrGRIXvkmJoGts5xeQM2YM+TO0R0OiHvhDlaJNyoYZn9mApI/XL/blKlHRkPXiNLleb+w/Xsv2xVCyzAGlQvq5AivSPo= 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=CF7296w8; arc=none smtp.client-ip=209.85.208.43 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="CF7296w8" Received: by mail-ed1-f43.google.com with SMTP id 4fb4d7f45d1cf-5f62d3ed994so3078927a12.2; Fri, 02 May 2025 00:09:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1746169793; x=1746774593; 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=bzt4aSgxAuWrJytcX/gjPBd3APIFdgE8OTpFBrBgGjo=; b=CF7296w8z9Exr8tgCdAjV2ZdHMsIygPZspGP337fcS+YR0FZKfQy3QP+RWpedx0d/t XFIW95Yj368L+hFvqTRpQGVPOwxqleV36BTvb71e4EujFma3/DUU+DGxvAfFyEJRh1EQ H34un/1K4NIwRpv0qvdhS7PYQXfWoXeD+IYbAv9O/RtX/tQe7f0UlV5MLAreu/iOlWLH 5FDcDxTSTtbA5kEx+RDRrzRO1RffWOgqjTHCeKKNlkKDORbXyW46q60f3ltyUPk/7R2J X9Zp6WmMVzRNkVEPbCgC15RrgA5X21lbXbpr3Nzbw1KnK6n7+Do+oShFoEMDAsDD4/py eCKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1746169793; x=1746774593; 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=bzt4aSgxAuWrJytcX/gjPBd3APIFdgE8OTpFBrBgGjo=; b=lr8Mct2GmmZf5ta2p9Z1ZjZR9mVLzEVjqqjFoMjR6inlbqJMy8S3rX5SXmzM0rUgkx QQB2dp9DGoL7xJ0+1jGUfcx1cxzVxpoNFY7jJbYGSWSVXTVM2w81tCPlU5fZhSQEqMym Hu7yZ9fvrxN5q9T6sHhwEplAjBENESCSdiUNhiWo2fXPZESEHDQ3OJZz+dlM/30eIVth xwy3Kyp3/901tcgRPxT27S/CBa12On3sp9pqRaaoH6Ewp9T4syASo+1A6jKyITI9lQYt 9tF/VinEIiuwGEobzcCl58c5VatNDM4iwiUhASAd2jLQLkhcOA1954IvuT6DIqXDHwwV r8QQ== X-Forwarded-Encrypted: i=1; AJvYcCUb+w95LpjNad85kPoBAtZqXRVYYCD7In46FHFvnpU1vjXgtRaXUIxWMSQwGFQG8nUi/sBgusPG@vger.kernel.org, AJvYcCWS8E7tt9ESbhlvETCP/4KohCk/OB/FP0i15wgCd5zT92b6EfpSgxaWNWYOqfHB4/OHylvhum0c2w8=@vger.kernel.org X-Gm-Message-State: AOJu0Yz+V9pjLxW9LXytJXK+tuhHxuM4GOqgJVcS7solpWsMT7jzIBcC fj/Pds5tnZTHTppggmhieeSn7QbAopgc8+XYeLvqHyrECVAsJ+nKao+2N8LFA0M= X-Gm-Gg: ASbGncsCUFkp1Qy9SCLWYhIC2C9O8juwjw+7zA5bnvt+1dk2G/eB+chnN47l0gELtZw lIbBkiLFJWOVGQcAwJQiPO88bABXhYu7ZQALc7irBS+yOFAVEmGduVwwVEv6Xyajlmq3+oDYHsM JD2C/NzP8V6vVGJcl2Dfe1PtOPmSD22Ts5bD6xBXyP9Kv+OFIWJEVp3hFRp0jhC8kqTrmoAk+0k jqB4Mlr7g6ErMLzlf64kzrxan1oPcvT6Of/X2X8ZSU/WtkRDgeEJlOR3bH5tFbHCpNYXoUJX2Cd 7HIGlGa+rjCWk4go+Eg7wthD0zWv0vekhDb4+yCPNvioZl8UVedUkiJ6BEPD3A== X-Google-Smtp-Source: AGHT+IFyXuzhV6UZrEksw3NwHNzRWAy3BH2tt0jPz8Wbd7C48KiPovJ6jkGs8b9hRPnBmEkrQybSMg== X-Received: by 2002:a05:6402:3554:b0:5f6:c5e3:faab with SMTP id 4fb4d7f45d1cf-5fa77fd765bmr1101612a12.1.1746169793206; Fri, 02 May 2025 00:09:53 -0700 (PDT) Received: from localhost.localdomain ([178.25.124.12]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5fa77bf3ec0sm753513a12.79.2025.05.02.00.09.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 02 May 2025 00:09:52 -0700 (PDT) From: Dave Penkler To: gregkh@linuxfoundation.org, linux-usb@vger.kernel.org Cc: guido.kiener@rohde-schwarz.com, stable@vger.kernel.org, Dave Penkler Subject: [PATCH 3/3 V3] usb: usbtmc: Fix erroneous generic_read ioctl return Date: Fri, 2 May 2025 09:09:41 +0200 Message-ID: <20250502070941.31819-4-dpenkler@gmail.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250502070941.31819-1-dpenkler@gmail.com> References: <20250502070941.31819-1-dpenkler@gmail.com> Precedence: bulk X-Mailing-List: linux-usb@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 wait_event_interruptible_timeout returns a long The return value was being assigned to an int causing an integer overflow when the remaining jiffies > INT_MAX which resulted in random error returns. Use a long return value, converting to the int ioctl return only on error. Fixes: bb99794a4792 ("usb: usbtmc: Add ioctl for vendor specific read") Cc: stable@vger.kernel.org Signed-off-by: Dave Penkler --- Change V1 -> V2 Acc cc to stable line drivers/usb/class/usbtmc.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/drivers/usb/class/usbtmc.c b/drivers/usb/class/usbtmc.c index b3ca89b0dab7..025a7aa795e3 100644 --- a/drivers/usb/class/usbtmc.c +++ b/drivers/usb/class/usbtmc.c @@ -833,6 +833,7 @@ static ssize_t usbtmc_generic_read(struct usbtmc_file_data *file_data, unsigned long expire; int bufcount = 1; int again = 0; + long wait_rv; /* mutex already locked */ @@ -945,19 +946,24 @@ static ssize_t usbtmc_generic_read(struct usbtmc_file_data *file_data, if (!(flags & USBTMC_FLAG_ASYNC)) { dev_dbg(dev, "%s: before wait time %lu\n", __func__, expire); - retval = wait_event_interruptible_timeout( + wait_rv = wait_event_interruptible_timeout( file_data->wait_bulk_in, usbtmc_do_transfer(file_data), expire); - dev_dbg(dev, "%s: wait returned %d\n", - __func__, retval); + dev_dbg(dev, "%s: wait returned %ld\n", + __func__, wait_rv); + + if (wait_rv < 0) { + retval = wait_rv; + goto error; + } - if (retval <= 0) { - if (retval == 0) - retval = -ETIMEDOUT; + if (wait_rv == 0) { + retval = -ETIMEDOUT; goto error; } + } urb = usb_get_from_anchor(&file_data->in_anchor);