From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pj1-f44.google.com (mail-pj1-f44.google.com [209.85.216.44]) (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 2D4C4448D15 for ; Tue, 14 Jul 2026 12:25:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.44 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784031944; cv=none; b=FKnSO7BoLvfMqhgdtZ79fZc55mFPjJjVA/CpDRajmRNWD4+NDkfdsNFNUjWBCOjfVghrEXOqizuASP/EVJaaXS+K1uDw4NFEaMZPM3W1RIivsmb5BK7TpAo38wCpuQgZseJxKnPJG3qspsHI8e0T+8V9fb83p0nImLHPWOhK0yI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1784031944; c=relaxed/simple; bh=YFYrDA/Zup+EeQmmG+q8ETAwHPGN2mpzqyXxNr5vYmY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=RDWTWRN4S+qTS9SQ+NGgkvt2RSHq9hgAyuezWMNd6ovm2SvdrHPu6YAVC5g/S+3ItGTVj9568r7tPsL0oI3tSNXQ/nxjtnKiXPnjlbeyNssUx0yOzaDRTRnnK7h2iH9kzeQm1qh2XipY4JGVej927Q9yXpal8QigoWyYpSTHcPk= 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=oUWDlDK7; arc=none smtp.client-ip=209.85.216.44 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="oUWDlDK7" Received: by mail-pj1-f44.google.com with SMTP id 98e67ed59e1d1-388b404ea89so818478a91.0 for ; Tue, 14 Jul 2026 05:25:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1784031931; x=1784636731; 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:content-type; bh=XwHT4GdFbig2jr1kX2eCEaA4sA1+o5bux1cQhvEpZhw=; b=oUWDlDK7H/4Tml54Hgxl2u5ll4lEGK4qj+nmFxgGFPCvvGT2YWToChfasBlUROrx0J 49NZAbRw0kIoNHZqK9Vpd1RR0Wz6tkJ6RIOBXMdIJ6LQWWNE1W4EQ2SA9IIypYrKqtds B/gN0+shQ1ZCGMxyA51Gj1QxnZHPRpqVeqi9syEXyFiY4g9gpZ0qBr7gv+shm0Qcneuh FK5MQT9qsJyNYFxNrGWMtJ1sbyWIRmjyA9u3xEawAfqcfqR+1Sc9JSPGYMTVIvDxaz0k qf8BIWs49OJtBgnsWdz3yFsVSh0sQrVlMyxEiePWFrkEo+3uc5JyX/S9ds2pswQWZ5D8 llIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784031931; x=1784636731; 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:content-type; bh=XwHT4GdFbig2jr1kX2eCEaA4sA1+o5bux1cQhvEpZhw=; b=VTK+Y4OpQH9RIrmj+5fBIytQVR0wR4VPZ5IDzUPyuWBkdGsL7mhp5g0znuNwhrDorn JOyf45o+YpQ3M2GN00Vgqnsas4jww5M08tzfbkD21OLSk3xM2uTD5cuzzxFfLsE1B3j1 puqTXzoktilwH57oL78jzgu4P4qqQfp28EP0wEg4hV9foNF1a7cYEcL4YCsgP4ORPBvI W+9NY1/Ax6tAPCrlgop0iGL+ifMsLAVfGSg+2mITSWnuG4uTsqr2tfWN+1NlnDdW/Vk8 x/lECWdsUIa6bmRJN/OrQsOiX5Emi+NWsAN7aGWBngVJrbQOfS1xRflWjuEzT5PNbspn eL1A== X-Forwarded-Encrypted: i=1; AHgh+Rorv0BRxvABIjVkkXc13MqrCfvynFCFD0pvJrcOL5KgTTBiO0li9EL5+mD7dEN1tKAIB+Ekc4TapLuj6R0=@vger.kernel.org X-Gm-Message-State: AOJu0Yyv3pxb486cHjxvYSCMqUT9+0Ozpwe2TuViW4SBbn9zHGAJhcNq m4LV42bMQts47qxLUk4bIwf+jdbVueI/eiMjEA694zOpoD2FQ1gDetMU X-Gm-Gg: AfdE7clFxhZzQLjJJhgKVTNEJzApeQgZsZe9bwHUyQhi/J++/Pgo2Ijh+fcxEIBIzXF WMiWLUOba/9FxFKCIsqZ8bJvNGVgW186q4aWCJgU/MHpsqib96doqj9ET9gJZcqFdtpI5xoCHn8 BH+jWRYy5IJclYeiyxAu03NJ2jHP4LYOSmWbuf+M37GUj69Od5uC6TpdXiiJz/o/bGW2Zv17ymm E8NyovHgp5dWHZ3GCdfbVcwiWy9isqXFfEtdA9qd57zMKa9vqUSswcL5Ieqvk6Z/2bRnPjIWZ3N ilZV1m81E/e8gyypCZvdFrgkvrKRDw4choMpU3vGJ+LzMwGqPDu8J9bxDqxcJMjEEFVsFaLveTN c2zXKkj1jBpfzZrDMDpRXB4cUx1KFFSphlnYPIEGAyVK+7L0pq5/wKz/Vm8XuOw3OocyYfTcRs7 8M8KBx+AZGTCYY5jHOncIpM2aTYcFKgVEUOMyFemq636s= X-Received: by 2002:a17:90b:562b:b0:37f:a913:1554 with SMTP id 98e67ed59e1d1-38d1596cd89mr18458990a91.16.1784031931338; Tue, 14 Jul 2026 05:25:31 -0700 (PDT) Received: from localhost.localdomain ([49.207.223.101]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-311747f72a6sm96163178eec.1.2026.07.14.05.25.28 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 14 Jul 2026 05:25:30 -0700 (PDT) From: Biren Pandya To: jic23@kernel.org, dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Cc: Biren Pandya Subject: [PATCH 1/3] iio: accel: kxsd9: validate input before acquiring runtime PM in write_raw runtime PM in write_raw Date: Tue, 14 Jul 2026 17:55:21 +0530 Message-ID: <20260714122520.3201-6-birenpandya@gmail.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: <20260714122520.3201-5-birenpandya@gmail.com> References: <20260714122520.3201-5-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 Currently, kxsd9_write_raw() acquires a runtime PM reference at the very top of the function, before checking if the requested mask or value are actually supported. This causes unnecessary hardware wakeups for invalid inputs. Refactor write_raw to validate inputs first. Additionally, modernize the PM runtime call by replacing pm_runtime_get_sync() with pm_runtime_resume_and_get() and adding the missing error check to prevent proceeding if power-on fails. Suggested-by: Jonathan Cameron Signed-off-by: Biren Pandya --- drivers/iio/accel/kxsd9.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/drivers/iio/accel/kxsd9.c b/drivers/iio/accel/kxsd9.c index 7ac885d94d7f4..b3acb20441d86 100644 --- a/drivers/iio/accel/kxsd9.c +++ b/drivers/iio/accel/kxsd9.c @@ -139,18 +139,21 @@ static int kxsd9_write_raw(struct iio_dev *indio_dev, int val2, long mask) { - int ret = -EINVAL; struct kxsd9_state *st = iio_priv(indio_dev); + int ret; - pm_runtime_get_sync(st->dev); + if (mask != IIO_CHAN_INFO_SCALE) + return -EINVAL; - if (mask == IIO_CHAN_INFO_SCALE) { - /* Check no integer component */ - if (val) - ret = -EINVAL; - else - ret = kxsd9_write_scale(indio_dev, val2); - } + /* Check no integer component */ + if (val) + return -EINVAL; + + ret = pm_runtime_resume_and_get(st->dev); + if (ret < 0) + return ret; + + ret = kxsd9_write_scale(indio_dev, val2); pm_runtime_put_autosuspend(st->dev); -- 2.50.1 (Apple Git-155)