From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-yx1-f45.google.com (mail-yx1-f45.google.com [74.125.224.45]) (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 351E4449ED2 for ; Mon, 29 Jun 2026 16:03:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.224.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782748996; cv=none; b=GIyVdJbcP0lo7WSOeJ9FP7XV0CfA8uZPoahyAQME6MBKx5ECpW14ojBnIYyykEXZvz2zb0F1c9MEmmltmaehAEJJpOs/ERP1q7R8KNvlrz8/8CgKk6G4wOB1K/+xchXuN3+BnQN8E6nJi6Q30iiPXJthMB3Jjt5uB/qPLvIAVJs= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782748996; c=relaxed/simple; bh=lQmecfKWXMNpAC1+Cnv36CUgf5YpezZ1D5mIRnH5Eeo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=hSh7FpSlEeBmr9hqc6+gaC0gLP93eeX/+1FaIi5G7jp1SbwhKsQEH5wFSpV6gVd1l8RAH7eR5suH+BQOsTgtn4L/mdemofyImbPCRRtXVJh5Yg4JvUJ9Vf07DuBefIVP47fGbnwQyEdWQbCut3K2K+Jtn4DT3gbZJJuN+DoNztk= 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=LGm+x0Qp; arc=none smtp.client-ip=74.125.224.45 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="LGm+x0Qp" Received: by mail-yx1-f45.google.com with SMTP id 956f58d0204a3-664c1cf7445so1879824d50.2 for ; Mon, 29 Jun 2026 09:03:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1782748993; x=1783353793; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=GXjqjkEnArKhELdb/6igy1wcxHxSmnOWp+uuYS8u7bY=; b=LGm+x0Qp10dprJDZ1i/VVZ5ES9R1WT6Xk8PirxUfQb64A8vZ4ZnqVwx0eBaVbbgiOx mkHGkUAwSiGKWcURB2e8/cwV0242XNpK3oV0HJvX8cRUh3aQSs9Ki9niMazcd8yVBIcN Pk6V5LrNWbhoeOnkmFTjOy/caNaT85YsDT1RqkbooEVy4Kw0e+AP71UM8G9KcEFSXPNZ Jdntpg4aFkZGdILrymp8PX+AN4LCeCGrrC+Z/Zhqc+EK/j53cXDpVpGD+7h0a7lIWFDA 2Aht5kVB4QAhYjcSkMPk0WP+SjC2CvFOdFfrSF9GSjcxvhT86nga5OcjnYPzdHgPThaX 8HvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782748993; x=1783353793; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=GXjqjkEnArKhELdb/6igy1wcxHxSmnOWp+uuYS8u7bY=; b=oFaJnS742emnq2WqmL/vhQOyTIwdxtfiQikZuuU7yGivUMWJiyPl2ESp2yCQAS43LR Sb3795vRcaoUmJQyoQfqchn9CM5nKRWsuItvoGLpnua+LJ3/aABQYdAQO4GjJiL5O3KN PKxz+hxsFvLyDmsX8Yma06/CcFDGEDf8nqmR9RDrKU6OgrvOkZWTu/NMX18HnSJTsloR kDvS2MI6OdROWThNRXddiXoc1Fdat2/BR1if62e8cmKJRMbe5LUauEm6hvhOFJy6Ii9C KkpZiFQi6w6GFafOBRBWrKIk5mQH7bq1rnda8dSQ0ZG+HNoVuWswg5HA+MGOa6Sp7RNc W0xw== X-Forwarded-Encrypted: i=1; AHgh+RrFCXc/K3l1dYAuX7Og8Q3AIIAY6AsoyxsNJwiFyLCn5W2oGU+zFDlc4yDjnRgx9uEGHi2ASe6V55AFUXA=@vger.kernel.org X-Gm-Message-State: AOJu0YyE8l4vcWvrFu5/bgFUZ9VggRnf1H1KirWmD6jawFYzxI+5K6V+ njBk1X2cgElUvbc5Fd3XKws9yBHdeRZGMu/TdMoXsqfnn+KDi79s+4NVNr/+VgYAJAY= X-Gm-Gg: AfdE7cmy2Sidm/wy13gFu8Ux4WjnMRw4iu38fwX15Uf79z45MG1g2WIBC6kB9Gk0oqW 1bjjFYKS8isfRMK8h0nD2RgysQRiG2G/SZvfE6BCb0oXPQ5V41q1Y02z8ItFfNse8ln3zBK+2lx WX/Ly4cbNxy16P8WVq4blxk/01L9eJsnQ/1cPmhXnTWHw/oODxWbXTr2wtWOVK2ehz14y0j5jdL HdRTbEpIPJb+RAPIbCFCP7r9ZHnvJRsyYJcCysbW0mqHAuG7xgtSzyke0eWdabOuf8/kcSsdw2o oo/C8Jl8Jxm+e6xqREXT/FPHIGvFYznvRyMNgkl25DD5WLlcngv6yreyW6HAWIBoS3gRd1PGAqQ C9j2wZlQdchGkhVT9KymLlHq+xNl7z+P/b9m+1r+suDruvpgBUruk/rtlox6Mc+rTuMgQxvKYnb YBQ0Rl6q+v/8ml1KnK8/TngZlpHg== X-Received: by 2002:a05:690e:484b:b0:664:d447:7474 with SMTP id 956f58d0204a3-664f99fdcd0mr159824d50.57.1782748992767; Mon, 29 Jun 2026 09:03:12 -0700 (PDT) Received: from Dev-Null-MSI ([2a0d:3344:52ac:a808:98a4:4381:be45:536f]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-664a4076f53sm4905211d50.11.2026.06.29.09.03.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 29 Jun 2026 09:03:12 -0700 (PDT) From: Yousef Alhouseen To: "Geoffrey D . Bennett" Cc: Jaroslav Kysela , Takashi Iwai , linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, Yousef Alhouseen Subject: [PATCH] ALSA: usb-audio: scarlett2: unwind notify URB init failures Date: Mon, 29 Jun 2026 18:02:32 +0200 Message-ID: <20260629160232.29158-1-alhouseenyousef@gmail.com> X-Mailer: git-send-email 2.54.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit scarlett2_init_notify() stores the newly allocated URB in mixer->urb before allocating the transfer buffer and submitting the URB. If a later step fails, the function returns an error while leaving a partially initialized notification URB attached to the mixer. Clean up the URB and transfer buffer locally on those failure paths. Leave mixer->urb NULL so later cleanup or retry paths do not see a stale notification URB. Signed-off-by: Yousef Alhouseen --- sound/usb/mixer_scarlett2.c | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/sound/usb/mixer_scarlett2.c b/sound/usb/mixer_scarlett2.c index 78fb72e626ca..67a089ad7723 100644 --- a/sound/usb/mixer_scarlett2.c +++ b/sound/usb/mixer_scarlett2.c @@ -8729,6 +8729,7 @@ static int scarlett2_init_notify(struct usb_mixer_interface *mixer) struct scarlett2_data *private = mixer->private_data; unsigned int pipe = usb_rcvintpipe(dev, private->bEndpointAddress); void *transfer_buffer; + int err; if (mixer->urb) { usb_audio_err(mixer->chip, @@ -8744,8 +8745,11 @@ static int scarlett2_init_notify(struct usb_mixer_interface *mixer) return -ENOMEM; transfer_buffer = kmalloc(private->wMaxPacketSize, GFP_KERNEL); - if (!transfer_buffer) + if (!transfer_buffer) { + usb_free_urb(mixer->urb); + mixer->urb = NULL; return -ENOMEM; + } usb_fill_int_urb(mixer->urb, dev, pipe, transfer_buffer, private->wMaxPacketSize, @@ -8753,7 +8757,17 @@ static int scarlett2_init_notify(struct usb_mixer_interface *mixer) init_completion(&private->cmd_done); - return usb_submit_urb(mixer->urb, GFP_KERNEL); + err = usb_submit_urb(mixer->urb, GFP_KERNEL); + if (err) { + usb_audio_err(mixer->chip, + "%s: usb_submit_urb failed: %d\n", + __func__, err); + kfree(transfer_buffer); + usb_free_urb(mixer->urb); + mixer->urb = NULL; + } + + return err; } /* Cargo cult proprietary initialisation sequence */ -- 2.54.0