From nobody Mon Sep 28 23:07:08 2026 Received: from mail-pl1-f179.google.com (mail-pl1-f179.google.com [209.85.214.179]) (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 E87D6397AEF for ; Sat, 15 Aug 2026 15:17:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786807066; cv=none; b=oFDJYvH8CT20zwBaKL/h+BP5k9z2+OSfkM0X4U9yxdKflMFOCKxHWj+tjucr6Whp87FheQreZMUzChrgS6lEuTEypXF6j4+JZhmC0hxJyY+I+5uXSjWs72TMxUoqY3jcUvfV6R4Lu8EVgbulSI8hiMx7WsDKEsTa51Euzh8xRd4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786807066; c=relaxed/simple; bh=2hxmW94Ek8ehSolOWjXwAwJbXBuSZJ7x17/QTqOc8NI=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=KpFEIfb8xReOcs6Ud/2aQupazS56WKX5JpOdBcdAGXRkhKZN3tlTeUtRFMR7OCbs/cSTrLVVa+gmswabkrZOTEoD579E+prvPjirGZVaB/aTp7aHB0jby+bo2N+0PXb5sFvgoPrAzVpvp/NOTdQCpHHxSg4QkFwwCrLyuOl2zmI= 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=nLcYJ5K8; arc=none smtp.client-ip=209.85.214.179 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="nLcYJ5K8" Received: by mail-pl1-f179.google.com with SMTP id d9443c01a7336-2ceab75934dso24372255ad.2 for ; Sat, 15 Aug 2026 08:17:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786807064; x=1787411864; 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:content-type; bh=pcWSfdSSYCgCNkMPSpeHhusssgttiSmPauVCrrfM4Qo=; b=nLcYJ5K8Rv29xC9QMt7ZFvOZM/Xa4rKkPuXMPoAElKJHFcsXmI6KTjx8wGicbfkL77 tEYjg5gZMYbwf+SiiveRRKNhNVWZMXLD98rqILjDnBGw7mB42R2Rf7vD57iFt+Nqc0MJ AKs8JqvJdYbviImaDCC8YZNHRQgeZI0ivYmZrzj8U7i6x1mgav3E4KtIQVW/mJ4tK7id PB/0hGu4Ov7ZZIHsk+rOrR+/Zew3hJRU2kL4zywUCctw9fFvAkXIsWuZdYR5xulOSAG8 Bj5Y3Cg2frUtgn0xh7+UdBnOIvfiS9AGLpocEZ2d+yv3BeoYQYIictPiA9ZNhgF3mcgU lOgA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786807064; x=1787411864; 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:content-type; bh=pcWSfdSSYCgCNkMPSpeHhusssgttiSmPauVCrrfM4Qo=; b=bcYCcEINXxbWv7KBCdKowjOf4I5mO4/t6VWOhU2bh6uWPrIDicgQUq19qAvhvIitnR CIXYazMTdeMJISBtSkOm+9QSSDUeXHt7be1QOyz+Cy37GMrFOA0gNCkX1wN1xHs61Br3 D0/csISdyknDyxJUKz9GD9KZ888YHhjx1c0yevMDA5XiX0PCE+NTcJx7c/ghruEhOl2o AtFbgNGdvDnSOaC7Si48gJRynze781Mnq43SuUJm/RxgWC8BmIExxlHpimeboxSgQ6uy dsujNbej91HFqQ7qAZUl09x50FBBBg/5Wr6YdwkI5Sumlt3vV3icFP144TCDE/LZjnvV DESw== X-Forwarded-Encrypted: i=1; AHgh+RoxRJ+5rtvs0zQ95lMg8mrnIKPrO3SXzTCFP0I09oDWwp5vXrfhvwJ/yo+3BZQX6q33KgG7tIoSGk2kHe0=@vger.kernel.org X-Gm-Message-State: AOJu0Yz2S76Id5Tf0FgXF8+Dk5VoRFWX3xs8e1o6EsBb1UsxmI+ULO8n 0i073moWuxWnmLvXRddTlvo1IX8R45atK/ZOcRrbPnGOUFK+Jr7tDC3H X-Gm-Gg: AR+sD128kQM26oDjYt9EuX3oyVXznDCH1/ajFjrdHXQ1GPth+q3QV1QmGYitv/ocdwE JW+TWnFz5vqcwwMR+jTzOFjJaf41ZIfAnjx1N3A46q4mUNMpUIDenYSwgu3Km1D7Bo77iHvDv2y y+kzBkAwird4P/IEelucY8GsD8m/ZY9PgiEvyH11ulUkGvTrfrH1MuTV/8t2/1TQ/WILmyqkN+K D1HcjTwmHohe3t/ijgcNYu/bWXQxMT7BkzgHhafA37gFd2r4lZWzO4VNXAD9S9ruWR3RHP8VbKX t2I/ocw/8d6+9fKZbKPGsHuXltbwVUZJKEjOkc4TzHqhTBU0Uk74ewVv0IMjhyeyoJOxbWk0PeB ol05RKiJ8MVNJGlRfb17qHujfxYSy+aJ/KcCOL4Ei16obbU6SS0h73htXxsGpD9OwrEaZhIoZc4 3g8G5Vs2oATmt9fmzSfElhBl/czQaMMlQR6pq4J66aEeqFQfAX/Ww6BZ6FPEKqQ3j9VKDubGeF0 nbRndpHyDtDsbu6fNs= X-Received: by 2002:a17:903:1250:b0:2ca:62e:cc4f with SMTP id d9443c01a7336-2d3b0f6e3a0mr145318985ad.23.1786807064198; Sat, 15 Aug 2026 08:17:44 -0700 (PDT) Received: from haichao.tail057a43.ts.net ([2001:da8:e000:1206:5225:2a2e:8e7c:13a7]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2d3ae7aae00sm20326745ad.22.2026.08.15.08.17.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 08:17:43 -0700 (PDT) From: Ruoyu Wang To: Alex Elder , Andrew Lunn , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Ruoyu Wang , Alex Elder Subject: [PATCH net v2] net: ipa: balance runtime PM reference on remove error Date: Sat, 15 Aug 2026 23:17:37 +0800 Message-ID: <20260815151737.3758320-1-ruoyuw560@gmail.com> X-Mailer: git-send-email 2.51.0 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" ipa_remove() takes a runtime PM reference before accessing IPA hardware during teardown. If a concurrent modem start or stop keeps ipa_modem_stop() busy across both attempts, the callback intentionally returns without releasing the remaining resources because proceeding with teardown could crash. That return also skips the matching pm_runtime_put_noidle(), leaving the callback's usage-count reference held. Drop only this runtime PM reference before returning. pm_runtime_put_noidle() does not request an idle transition, so the hardware and resources retained on this exceptional path remain untouched while the usage count stays balanced. This issue was found by a static analysis checker and confirmed by manual source review. Fixes: 923a6b698447 ("net: ipa: get clock in ipa_probe()") Assisted-by: unnamed:gpt-5.5 typestate Signed-off-by: Ruoyu Wang Reviewed-by: Alex Elder --- Changes in v2: - Simplify the teardown comment as requested. - Add the Assisted-by tag. v1: https://lore.kernel.org/r/20260814134047.1387177-1-ruoyuw560@gmail.com/ --- drivers/net/ipa/ipa_main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c index 788dd99af2a4dc..8d82fd5bb24b97 100644 --- a/drivers/net/ipa/ipa_main.c +++ b/drivers/net/ipa/ipa_main.c @@ -969,12 +969,12 @@ static void ipa_remove(struct platform_device *pdev) } if (ret) { /* - * Not cleaning up here properly might also yield a - * crash later on. As the device is still unregistered - * in this case, this might even yield a crash later on. + * Continuing teardown after failing to stop the modem + * could crash, so leave the remaining resources allocated. */ dev_err(dev, "Failed to stop modem (%pe), leaking resources\n", ERR_PTR(ret)); + pm_runtime_put_noidle(dev); return; } =20 --=20 2.51.0