From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) (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 ACEAC2030A for ; Sun, 14 Jun 2026 07:16:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.169 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781421366; cv=none; b=vDFNKv8OkvFBOlwd6bIcLlYHRZdZNDIZAYqoS6JyZyvX5wp4Cm0kzngW176oZYmyy7vhCaYnmVu2nGw8EZwkMaOidT5Spsqmt76c1JQR0jhqgUxYaE+kg7qNGpbV3SGg/fgjnTnRcBUY9lNEv/g7IrSBLvPvM73H5AT2cGRqfUw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1781421366; c=relaxed/simple; bh=Q/HEefTnk+HMBECsWjuwyiZGiULsgxVX0PT+SNENidA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pGrfohcmLWDTSWzhd6XazjrIzgph84WqzGFpXKHtwSBmgcVjqPQ16OftRaiagrpUv2qSyF7/63AuAswSUfrcDHG1aEW3S4+1qJHFcLI3F22Bi4Y6pEC008qoIn5ZTfIlVCDw2X64qzty9x3VIqXF832VchIkb5wRV8tRxSelXQQ= 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=TUJllCaH; arc=none smtp.client-ip=209.85.214.169 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="TUJllCaH" Received: by mail-pl1-f169.google.com with SMTP id d9443c01a7336-2c0a5354da1so18918495ad.0 for ; Sun, 14 Jun 2026 00:16:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1781421365; x=1782026165; 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=S6W9hVs9rgfrH0Ohbm4YeCJWMFoA5fpt1e9nnZXUhFk=; b=TUJllCaHPalQ6HTEeemcsrnicKHTexYHJWpEUCZFPNdcNswY+jrNadiN1FlBVJpMnF aW1g2x3Jh1DX6jAWVQ9V88+37S/KwpjkcRc3FtiRW3Q6WVK2Y31C+sjPUmNHOINHzS2+ giuEedM2aQ9vcP+bugIfNLTwCbxz6/tlLAtx6n0GSewWZVGVkt733kNOUIPB8IxFrXSz P6e2LC9WpotOtjYrV6aKbdg3WauPI2OMTgPqAlyEZ6hughLgES6c4kFMdFU3M8SVElUg p4SMDFPQSg0Lc7Xt17fKfRGLadtzCFiBqpGoMk5D3qS+25+Kwot9U+Uf/ze3eGDw5rHN 5sqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781421365; x=1782026165; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=S6W9hVs9rgfrH0Ohbm4YeCJWMFoA5fpt1e9nnZXUhFk=; b=eanC5ul1uFRET9cuMcUxlf0A4TYpgJIoHEFYNwbpGEw+EbG5q7Js4aVss7MCN6ArCD /mCgFs7YlRLavrSGYRq4ox1G5cFcyxFCfK21RSWQ/KDuC2dDMzJi/nEv7QjySPWtZfqA mwgu4g3rwoeZODCQoJmpsCWMprQrApw0OHg+CeUk3Jh7VJHDedy2dHMjWTxc5ZAkhQC8 abRZNqV0lXj+rd+hAhR2C0NKeaGyVrapQgpzTd7mAcdanzM3my1g/j4HAqRAuFGjBKrC E3ZA+ojKdmOYFSiNyT8fH3MeKOPBSk8z9VTNzzbU/TKTeWT5V123Gkp4tlPi5dJ+gdRY Tk5Q== X-Forwarded-Encrypted: i=1; AFNElJ8dkHTCMb3b5VYbscYaDcilz35ccWYrEl86KNMM5XKCeRfwXqe+V9V/+XBLxaRoCcyr50tnOa1iQggxgWg=@vger.kernel.org X-Gm-Message-State: AOJu0YxiGd5hLcSBBEiChpW8G9ncG38pEQTlggi9FINdvLYUp6CZbBto IEySDJTE6Pa2oF+S4pxYXHkFq0LaM04i30kDKUA41rnKQBbs5zTjrAjN X-Gm-Gg: Acq92OHTnijhRboMp7V99unzBqNdk7tmZB2X10y/G7V+/PA3uk8HuYZKfl0fQ7ivXyG C6jEHbDWHne/pe69VLqMw702lp4qfusbVaGbHNWkVTuZTJAjZyF24Q7ZeW9frQx3zLCnf20tMif w/BTkyB9tX+4jAWB3A/1IjqLG08JRRmlsziEL0eTqbb9vXPvXxsldrt2GP9eptq+j1nPvmLMmvv TftPwAC5MFb6ptMmxA1fgcOGbgClUyFSKt4KSzo8JmdqWs3gF7N1NQt+BKdgaU7C5B1olksyy0I GZIkC/UCmRLQISIMCe3UiKXhWaTRvlrj0COOmRQODumrce17xZWvQRJ+mFi0mjwzWr/k3P7oFFE pbUesInoWn68N9nq6cVCbbcFxIABLc83OzG4rm4Uwc/NPVmGVL12gk1Jue58gRK3B7wc5yPVebi gIVVwwekc+jUjAyGUqFtc6cehaXvxT/oNQYYxg8SK3AQqJzw2eoMXriHQ1uj0p6XU= X-Received: by 2002:a17:902:f552:b0:2c6:6425:b343 with SMTP id d9443c01a7336-2c66425b436mr44729515ad.6.1781421365151; Sun, 14 Jun 2026 00:16:05 -0700 (PDT) Received: from localhost.localdomain ([49.207.217.37]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c4327ac794sm65595295ad.46.2026.06.14.00.16.01 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Sun, 14 Jun 2026 00:16:04 -0700 (PDT) From: Biren Pandya To: Jonathan Cameron Cc: Linus Walleij , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Biren Pandya Subject: [PATCH v1 2/4] iio: gyro: mpu3050: fix runtime PM leak when enabling trigger fails Date: Sun, 14 Jun 2026 12:45:47 +0530 Message-ID: <20260614071549.81920-3-birenpandya@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260614071549.81920-1-birenpandya@gmail.com> References: <20260614071549.81920-1-birenpandya@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: 8bit mpu3050_drdy_trigger_set_state() calls pm_runtime_get_sync() when the trigger is enabled, but several error paths in the enable branch return directly without dropping the usage counter again. pm_runtime_get_sync() increments the usage counter, so every failed enable leaks a runtime PM reference and the device can no longer autosuspend. The driver state flag hw_irq_trigger is also left set after a failed enable. Jump to a common error label that drops the reference and clears hw_irq_trigger, mirroring the disable path. The success path deliberately keeps the reference, as the device must stay resumed while the trigger is active. Signed-off-by: Biren Pandya Assisted-by: Claude:claude-opus-4-8 coccinelle --- drivers/iio/gyro/mpu3050-core.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/drivers/iio/gyro/mpu3050-core.c b/drivers/iio/gyro/mpu3050-core.c index d84e04e4b431..783be9a786df 100644 --- a/drivers/iio/gyro/mpu3050-core.c +++ b/drivers/iio/gyro/mpu3050-core.c @@ -994,14 +994,14 @@ static int mpu3050_drdy_trigger_set_state(struct iio_trigger *trig, /* Disable all things in the FIFO */ ret = regmap_write(mpu3050->map, MPU3050_FIFO_EN, 0); if (ret) - return ret; + goto err_power_down; /* Reset and enable the FIFO */ ret = regmap_set_bits(mpu3050->map, MPU3050_USR_CTRL, MPU3050_USR_CTRL_FIFO_EN | MPU3050_USR_CTRL_FIFO_RST); if (ret) - return ret; + goto err_power_down; mpu3050->pending_fifo_footer = false; @@ -1013,12 +1013,12 @@ static int mpu3050_drdy_trigger_set_state(struct iio_trigger *trig, MPU3050_FIFO_EN_GYRO_ZOUT | MPU3050_FIFO_EN_FOOTER); if (ret) - return ret; + goto err_power_down; /* Configure the sample engine */ ret = mpu3050_start_sampling(mpu3050); if (ret) - return ret; + goto err_power_down; /* Clear IRQ flag */ ret = regmap_read(mpu3050->map, MPU3050_INT_STATUS, &val); @@ -1037,10 +1037,16 @@ static int mpu3050_drdy_trigger_set_state(struct iio_trigger *trig, ret = regmap_write(mpu3050->map, MPU3050_INT_CFG, val); if (ret) - return ret; + goto err_power_down; } return 0; + +err_power_down: + pm_runtime_put_autosuspend(mpu3050->dev); + mpu3050->hw_irq_trigger = false; + + return ret; } static const struct iio_trigger_ops mpu3050_trigger_ops = { -- 2.50.1 (Apple Git-155)