From nobody Tue Dec 16 16:35:59 2025 Received: from mail-pl1-f170.google.com (mail-pl1-f170.google.com [209.85.214.170]) (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 5591927E7EC for ; Thu, 11 Dec 2025 06:49:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765435790; cv=none; b=gnYbtd4kH8Dvkbs215nbNJRhylq7M0X0wAX7RB+0XYCBGpOMr3WS5n4DQ0RBxQ6ClVZeSY025Dx+FA6IrvMmmfgTMmjwt4H3OaCz5vy+pMo8WkOStQPxJGX2xeI81bv8s9L80A5CkT7/5NVO7EjLaKv5IFiBORVDpKYx+Qsxoys= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1765435790; c=relaxed/simple; bh=jLIEbOil8JUvwvgoHLS0xgagSdpZFVnP6mw3L4Fg5os=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=lSTGUXgJEkR2pWRmH2FCj09CWhZRqkBiMCIpeFZWDodnBzt/T6y3it680GFKhqBOc8iOha3+1kv2/fz0JBP1JU+9yCHPYf0pEL0DTUaTUMHAUou5jLWC22vKOS8mmFzO721iC6fpoU/wTBJDpd/CST0qJmhAJOnBiqSrb/iK5Fo= 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=X4lCIV7K; arc=none smtp.client-ip=209.85.214.170 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="X4lCIV7K" Received: by mail-pl1-f170.google.com with SMTP id d9443c01a7336-29844c68068so8567395ad.2 for ; Wed, 10 Dec 2025 22:49:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1765435788; x=1766040588; 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=A930R/Xs4QOYTiiYr4F9dDu2dd52LTZ9/1wSdEBmY94=; b=X4lCIV7KIkrdHL97r40ojr5tWwjy1SLV27XpVWFgLUDTyXT0E1BTgsPRsyGsKUq0BH 3L3uq4xyMRakOPLe+PMUXAmZF0A8lveTiJ/I0Lev8Q2ml3q4oGMVOE4/fbTV3Um9Gqfs 3okM/7vXTGxWUMxipkIUW91euh3Lnk/XKSOhzQu+4Cznb4cIA5fTvY21KkyhjGNjLpMp P0YKwasupl6R0WSvydYwkL1pvU58uFLb0hmcV8P0+NMjIBj9kAgYc0E/ekqwoyjen84c 0LeacveXue4iNh0ZiburhIOhda6+QI7K4+TCbHpeteXjMTVmqVIXxLb5MVbzrGbcarv/ KucQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1765435788; x=1766040588; 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=A930R/Xs4QOYTiiYr4F9dDu2dd52LTZ9/1wSdEBmY94=; b=H9cPst4Z07kJcYwv/e4h0my0orhK8LJRi2Nk3FbMdVbJwD39jbyMWtiWy09IHaMafH 1FofqOOLhWBhy0gRSVSa98h15v9nVhuOY/5Mz3T1vzr8z8k+q6bOrJDNu+lCNxTLFFT/ qa4Gm97gGapc9auycdKs3bxvS5JanMWNpkT9lCvkNB7OYhzayTEHPB1qHnUcuHOYG1XJ mPCxtzGv+ElfbW1GeeVXpxk3pOrgaKp4upf497SleNKspeMb7hVERBy87vfPdjyLitk2 a8jFfafw797z0QwRRT7jKFaAJXoU527IvUtKc3UwTDCifBc71WfMt+LiQXoDi1YVAvPA oFBg== X-Forwarded-Encrypted: i=1; AJvYcCWqnGK3HTvf1TEisIs35F6Zk2e1fw73Nal6o6v1SEyzjc3Rb84wM39wNh75lZtxtDlZTU5Mj29izdh6TX0=@vger.kernel.org X-Gm-Message-State: AOJu0YxMzzxkLhsBaFzPFT2M5lePsLwQRCDGLET3Q1D83RocqHbJHoOQ GjxCnEzu8nR5e6su/PbhVtYEMovjBpesRgpBOEuKqjOteZFPaoYd0Gpb X-Gm-Gg: AY/fxX6/82VELYLj7oVJ/hSmVmTk2UKl0/4vaDC/WLplBgM3i7gOVnskIYZpdDizVt9 uucE5EZXFCJzzb2shTqW3EIJb8+2zrnfqT+mZUQEqp2CMhYOekQquwxlpn6IjrTd4eOSviG9EPr uD9Mve6TOlrmbdzlTNzE/JjwkMVbglQ/Yvywc/cXHFVc4ROwNUsPlSZy6SkHbi9PznzVdCBeI6E aLR/+u9+8r2VPAHtw8BQUO1vssjsz5/HqR14HYaXQ+rI6gBOB6Igoh27Ggd0XToXFC2hBXbrImI ccQLUET6t8c+9fKL+s4LeRP9l4Bi5mYv8xVpuvaaL5kxJaIMJf7jG3IjNFbGaRvYfgPGz6XRj3B fqjW1IDDY8ZKUBlT3uM+/aiTQEixoNpTNQERNYx5KKt19UNxu4Voy8DLSW/oLhRI1OqKPOEupN3 t7dQD8oO65XBQsJuzYcfEybQRlF8XIPoR73Q== X-Google-Smtp-Source: AGHT+IHpmykci4B0OIJtBdbWIngC1cFWd1IKB2ZOgzuk8178NaUix/BQGoMHNT6ECQIxjsjZDCl8TQ== X-Received: by 2002:a17:903:1904:b0:295:73f:90d0 with SMTP id d9443c01a7336-29ec27b8670mr40699845ad.50.1765435788379; Wed, 10 Dec 2025 22:49:48 -0800 (PST) Received: from c45b92c47440.. ([202.120.234.58]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-29eea016ef4sm13694335ad.56.2025.12.10.22.49.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Dec 2025 22:49:47 -0800 (PST) From: Miaoqian Lin To: Thinh Nguyen , Greg Kroah-Hartman , Felipe Balbi , Robin Murphy , linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Cc: linmq006@gmail.com, stable@vger.kernel.org Subject: [PATCH] usb: dwc3: of-simple: fix clock resource leak in dwc3_of_simple_probe Date: Thu, 11 Dec 2025 10:49:36 +0400 Message-Id: <20251211064937.2360510-1-linmq006@gmail.com> X-Mailer: git-send-email 2.25.1 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 clk_bulk_prepare_enable() fails, the error path jumps to err_resetc_assert, skipping clk_bulk_put_all() and leaking the clock references acquired by clk_bulk_get_all(). Add err_clk_put_all label to properly release clock resources in all error paths. Found via static analysis and code review. Fixes: c0c61471ef86 ("usb: dwc3: of-simple: Convert to bulk clk API") Cc: stable@vger.kernel.org Signed-off-by: Miaoqian Lin --- drivers/usb/dwc3/dwc3-of-simple.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/usb/dwc3/dwc3-of-simple.c b/drivers/usb/dwc3/dwc3-of-s= imple.c index a4954a21be93..c116143335d9 100644 --- a/drivers/usb/dwc3/dwc3-of-simple.c +++ b/drivers/usb/dwc3/dwc3-of-simple.c @@ -70,11 +70,11 @@ static int dwc3_of_simple_probe(struct platform_device = *pdev) simple->num_clocks =3D ret; ret =3D clk_bulk_prepare_enable(simple->num_clocks, simple->clks); if (ret) - goto err_resetc_assert; + goto err_clk_put_all; =20 ret =3D of_platform_populate(np, NULL, NULL, dev); if (ret) - goto err_clk_put; + goto err_clk_disable; =20 pm_runtime_set_active(dev); pm_runtime_enable(dev); @@ -82,8 +82,9 @@ static int dwc3_of_simple_probe(struct platform_device *p= dev) =20 return 0; =20 -err_clk_put: +err_clk_disable: clk_bulk_disable_unprepare(simple->num_clocks, simple->clks); +err_clk_put_all: clk_bulk_put_all(simple->num_clocks, simple->clks); =20 err_resetc_assert: --=20 2.25.1