From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) (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 3D0CE3859CB for ; Wed, 3 Jun 2026 14:16:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780496209; cv=none; b=Kj2qxYk8h1ImqOxpC2l3ivRwTEkeRFlKCFkAdn/4Pe6SHhH5c/hD/s57jfPkMfAQ6e082OGOqobHicqn4hVJLAouuoc2Smjv8QfLgce8Wk3jbt8pjZdj2wtbzvkuMRZG3tM57Q+VrO0O+lZjF1RAZHUx6yBTar85bLdSF16QMKE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780496209; c=relaxed/simple; bh=ah9xfzgM92eXLddOxDq/JlXQ1OjtgcGukZnCaH2pRO4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=BOjGwA7RZQS8Dt5GoHyYP1DYeZTIriMSSZmX+tmjteVeXgV4VSyj5Il1+RSgFznlyyWcVuV0kjbXf6lJPDVTAfxHoPXiL2ieR6xp4xtkHmcU9zxl9g8cF0Qw4PBJvcsTK2S6D2dxx0Mchigk1xtkAiAMurorqHHsa9pjfDtD148= 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=FCWk2v+5; arc=none smtp.client-ip=209.85.214.172 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="FCWk2v+5" Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-2bf22d29dabso42519715ad.2 for ; Wed, 03 Jun 2026 07:16:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780496207; x=1781101007; 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=M+NwVbHm0E3Ls8aygQ9mOq7lXbu26hGo6QJSyEvKkCw=; b=FCWk2v+53S7Yj9voyduchdzjUMWnKf2shoa4CI+++LGv7wQMnIk+/ie67C8tyJ1Usn +tTPI2PpOoZWEl8nROP2wMiJahogFeEd8uSMgO+vBfOAtDRWGeOOvFkXlTx5OO0PpvSf HEB78VUVf1q4K/CMS/YvCWiNeQdr+lMXTNl3Y5y+4T/vdhVl/65009+H8BBUdZJh4i0T GPXp5f98/7jMPxaE7RZbhnaT7mROEe4n9sCWNQrnqgPQ0w1uAVeAEyFWWmELERh3JZ5i 3ztscc4ZAYOJk9nem5ndyNJDTNh28wTbViRXc41qB37VqCyvjLj+F2ZPEtXibiLz3Vbj +nMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780496207; x=1781101007; 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=M+NwVbHm0E3Ls8aygQ9mOq7lXbu26hGo6QJSyEvKkCw=; b=eSa1MTazTMkfWsYVwSetRebOhhPpZoFX9o6b0eseYsreN91RNBsfwQm/tlqxlQuQ3A 9jbLwp5KsXb8HweHZrw7Lf9CCVR9oHRNSva2hIqUQXupA/jtDLXAUoEHeN0JRR82AJXV uF9B4f6G9BtXOkjRI2jgaaHZXbaQEEjPDMt5ueNViRqlEN81lD15eEBiZZkVDqSpDMKy CRRWUHg2xdtOZ6WZ84CMMqrVooq6RhtNDYkhUbk7ISgfR6cYZ1R356Meu/sIYvwhNzBQ pkA7EM2pnO2WebRRnUeB7a3WheFZSvUaMPf3ad+EvpPFkycsbJkwJzIzw4EkiAPsGuR/ jjCg== X-Forwarded-Encrypted: i=1; AFNElJ8nzD5SaLqiH19ly0PeoH2CtJZjM8bxUdk+CkBNN3OW6vupYjGgJ1gPz9tneLYwXpSC+Q/xA44MrUPwXXU=@vger.kernel.org X-Gm-Message-State: AOJu0YxcsMmME3BxIfw0k2TY5uY2pyOBCLKSJeIAyq+qLwtNTkpgAQLZ tSxidsT4q2Gwhkhv2R5cp7ykLK7QsDkxZDR+G6seFptnbJwBPP+7ksr42Qi+Z7j54ug= X-Gm-Gg: Acq92OF8NSakm7Z3I/Z6u4hhOUNgQH3AEvixZrMm5ZEd5/kaVVJxs0Q0izfHWS2RG40 0Bedg5mVjm6Xh0hb8zPE5ekgExy2lEz02fcULCvX2wFSvCwdASepclbT/kPz4NvtrYO1FJYjlbV 2H8ALPIZGaJmjlT0+q2AjICdQH909aQf4xAKY+1IS9SyGpNYBj6tW4d2pvUGDCWa57MhMOWYVNX KGAoXfOj86dZJDiYPs7k8NkvKonQhZbk1n41Kg6H2cOj/nkR3yakuknZV0/a3S9110+vWANgAs1 UpfYsuxVQoqvaCkND8NstfKIoAPmzqEVs1/FzXqF+SjdNaV15c3xBmoTbTJhC5wqnrRHu9/fV+S w7UHGp6+W/VQikpz7DQ2dAH8NImLzMOHumsp3u1yPeFFcWDrjd35zrSfIE6FIzAcUelohUnn4ny 84SsfjsDhQWETvb4hwb9O5zps= X-Received: by 2002:a17:903:3887:b0:2bd:9061:d544 with SMTP id d9443c01a7336-2c1644b829bmr37259575ad.34.1780496207463; Wed, 03 Jun 2026 07:16:47 -0700 (PDT) Received: from lgs.. ([152.32.188.52]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f6e294sm27832925ad.6.2026.06.03.07.16.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 03 Jun 2026 07:16:46 -0700 (PDT) From: Guangshuo Li To: Linus Walleij , Jonathan Cameron , David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , Ethan Tidmore , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Guangshuo Li Subject: [PATCH] iio: gyro: mpu3050: avoid double free_irq after trigger failure Date: Wed, 3 Jun 2026 22:16:33 +0800 Message-ID: <20260603141633.1398943-1-lgs201920130244@gmail.com> X-Mailer: git-send-email 2.43.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 commit 4216db1043a3b ("iio: gyro: mpu3050: Fix irq resource leak") made mpu3050_trigger_probe() release the IRQ when iio_trigger_register() fails after request_threaded_irq() succeeds. However, that failure is non-fatal to mpu3050_common_probe(). The caller only logs the trigger setup failure and continues to register the IIO device. Since mpu3050_trigger_probe() leaves mpu3050->irq set after freeing the IRQ, later cleanup still believes the driver owns that IRQ. If iio_device_register() fails, the probe error path frees the IRQ again. If probe succeeds, mpu3050_common_remove() frees it again during unbind. Clear mpu3050->irq after releasing the IRQ, and use mpu3050->irq rather than the original irq argument to decide whether the probe error path still has an IRQ to release. Fixes: 4216db1043a3b ("iio: gyro: mpu3050: Fix irq resource leak") Signed-off-by: Guangshuo Li --- drivers/iio/gyro/mpu3050-core.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/iio/gyro/mpu3050-core.c b/drivers/iio/gyro/mpu3050-core.c index d84e04e4b431..0fd881fdd1ad 100644 --- a/drivers/iio/gyro/mpu3050-core.c +++ b/drivers/iio/gyro/mpu3050-core.c @@ -1137,6 +1137,7 @@ static int mpu3050_trigger_probe(struct iio_dev *indio_dev, int irq) err_iio_trigger: free_irq(mpu3050->irq, mpu3050->trig); + mpu3050->irq = 0; return ret; } @@ -1260,7 +1261,7 @@ int mpu3050_common_probe(struct device *dev, pm_runtime_get_sync(dev); pm_runtime_put_noidle(dev); pm_runtime_disable(dev); - if (irq) + if (mpu3050->irq) free_irq(mpu3050->irq, mpu3050->trig); iio_triggered_buffer_cleanup(indio_dev); err_power_down: -- 2.43.0