From nobody Sat Jun 13 06:01:04 2026 Received: from mail-oi1-f175.google.com (mail-oi1-f175.google.com [209.85.167.175]) (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 1B24B1F63D9 for ; Sat, 9 May 2026 12:52:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778331125; cv=none; b=Ao0oL72yMrcdR54+/Hoeuflmsf92pJ6bTUxWiHxbXgfPLL3Y/vJDSPhsb3FXWA/YkTiYSBA6HUUdRz+GLjGo2S3n3JqqnPpgeQIfUf+NgfsnvBrAhVuObtwBTt+olEMuZdwlCyzCeqJ4RSlF8zEGz4/2xboE+ysMkcS6EUfT2Q4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778331125; c=relaxed/simple; bh=Is/luQILOTRTzOueYyGOzSnqu8p6mu2iWPMLegwUpKo=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=JxlTvxvn0F83vQIWlseOSEwwTrS8cZshq+iL66S65fMu7+PeDU9HNdLUlXqRfQttkHWF9kW6oj+q4Bz9PFj5p3V20Tychb6rPUOUYID8pcmNCjjSwYANcJINJM6XTxk5TjX6ng/XubwXhqGSK08hBwdXl2VkljehR4RMVtpf46s= 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=Gj2rqhnl; arc=none smtp.client-ip=209.85.167.175 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="Gj2rqhnl" Received: by mail-oi1-f175.google.com with SMTP id 5614622812f47-479aa2dbea2so1214231b6e.0 for ; Sat, 09 May 2026 05:52:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778331123; x=1778935923; 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=T45aydPJRbvh8SgBOmoAMmbmCUpht/fm7lQKE9iIbos=; b=Gj2rqhnlCSy5iB3XX+6NO/sOCznla8VNTfs0QMhE77WOghjdpKOi8tV5HlGPiQJ0Vr CJcAGOt1bJwZ+iXJDQ4wRcE6HDSlMXXRyV6GFw0QdEczTLWxFwZnkFn6N5C4Dfzqj1cg IdbPVcD+sBw258o3J0l27jM8L1usgznoIbULsiHo8MJpVkt77hOF0MH1dYdhOMfeIIGl KwJQn5ujotTsMv6eHacJqUt7OuaYJ8Wm9C60rpQ1YV/8Yut3/DiPvejdPQ2UkUA5uV7O QAmB37eRLTlCY/Ct6JHzVro6+bKo798RWz9Z7sbT+CW13xV9jjsLWVkC41O610rR8yVF S8FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778331123; x=1778935923; 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=T45aydPJRbvh8SgBOmoAMmbmCUpht/fm7lQKE9iIbos=; b=B1vCOHahjmq1DPBJfyqqijQJZ5hrLKwrOyy9Zw+GlYgUqYSmTuAYRcrp19HZH1icWW Klu2aaWhRw9zfcnq/1fgjRb6lmF0eGP9RW7j8Mn12fzDsHngms2ib7hajbep1pY4dDYU MAOiYNsgsKe018vmutho87+qRJSFNeeyilBWj0hMNK8oGdscyewo+2bGjrPDi6By8tJh YFwzsVq1xMXtSdDYAR4sOy1SUgDWZQXDnlhLofntELkbyTvmcGgvLYLLcMc/VFYNkLGo RV0mtc3Q61Hjk1bzTtWaoScrjA5LbG/Rq8DocjJk0d4+lbgEfOttO3ksSLJaIlKBnU4S Lsgg== X-Forwarded-Encrypted: i=1; AFNElJ+6zvczK9aQVnzuiaGh8Fg3rwdh29QlJ6L/rfIpiySuxfJmPVAUiRUSxPF1r+bZXY/68zcYsgtNmkun6TA=@vger.kernel.org X-Gm-Message-State: AOJu0YwjlPqCEMlSGK3H7te75TjHSI/RnaYpEKPlEA+dg5RgWpxE0cZg 5trGp0XMDg/gc9wIlP7FjWEx8ohgLYfnnl0XUyaW7oFyYbbhBd9mBluM X-Gm-Gg: Acq92OEkY3G3M9bUAY1S/1Kjg1XY1YRwEmC4xs0dN0a+uoDJLtSOn6Jc4ry+MxhVje/ tv85BTt9VqbqkIGumgpdzCj3gt5uLejl6weRa4vgfs+sOlmUkhFjifI8YxZYMxu9+IghbYWgKRB HN7btM5r4P3kkSzoHhzCfooO8ePPbv5sMxK7B6upg5skyKeYPvv3OFTEl6FNtNKHLy6apySYzjx eBffbc1KlHg4XKbi3kI3hKKdfAQV3+pnTxU4jfVWRrlScoIgJ7fK30pDBarwF+k14nH57kQ8fF1 hrg77jL4LZf0n4L7+wpAQMOnhtjQRK5o+jPvFutwZDYIy0kexgujZ1RlRJw09SsbLMb1P3Hur3T btpwAWJmNXxzwIef9IH4+r+x8uY/kR6i+aDb2kRzn94dE4NdDkKfM602Vck22Sk7z958QwFgzPt k3HwffnR8+sNpX/125vOu1qhbAadRRib9jKmNw3CnY/gtMfA6jbnawW1/6+g== X-Received: by 2002:a05:6808:1709:b0:47b:c703:4239 with SMTP id 5614622812f47-4804252476fmr9072780b6e.37.1778331123001; Sat, 09 May 2026 05:52:03 -0700 (PDT) Received: from linuxescape.lan (23-88-128-2.fttp.usinternet.com. [23.88.128.2]) by smtp.gmail.com with ESMTPSA id 5614622812f47-47c76936271sm16444083b6e.9.2026.05.09.05.52.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 09 May 2026 05:52:02 -0700 (PDT) From: Maxwell Doose To: tduszyns@gmail.com, jic23@kernel.org Cc: David Lechner , =?UTF-8?q?Nuno=20S=C3=A1?= , Andy Shevchenko , linux-iio@vger.kernel.org (open list:IIO SUBSYSTEM AND DRIVERS), linux-kernel@vger.kernel.org (open list) Subject: [PATCH] iio: chemical: sps30: Replace manual locking with RAII locking Date: Sat, 9 May 2026 07:52:00 -0500 Message-ID: <20260509125201.29872-1-m32285159@gmail.com> X-Mailer: git-send-email 2.54.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" Replace manual mutex_lock() and mutex_unlock() calls with the much newer guard(mutex)() and scoped_guard() macros to enable RAII patterns, modernize the driver, and to increase readability. Signed-off-by: Maxwell Doose Reviewed-by: Joshua Crofts --- drivers/iio/chemical/sps30.c | 60 +++++++++++++++++------------------- 1 file changed, 29 insertions(+), 31 deletions(-) diff --git a/drivers/iio/chemical/sps30.c b/drivers/iio/chemical/sps30.c index a934bf0298dd..186dec4cfd78 100644 --- a/drivers/iio/chemical/sps30.c +++ b/drivers/iio/chemical/sps30.c @@ -5,6 +5,7 @@ * Copyright (c) Tomasz Duszynski */ =20 +#include #include #include #include @@ -111,9 +112,9 @@ static irqreturn_t sps30_trigger_handler(int irq, void = *p) aligned_s64 ts; } scan; =20 - mutex_lock(&state->lock); - ret =3D sps30_do_meas(state, scan.data, ARRAY_SIZE(scan.data)); - mutex_unlock(&state->lock); + scoped_guard(mutex, &state->lock) + ret =3D sps30_do_meas(state, scan.data, ARRAY_SIZE(scan.data)); + if (ret) goto err; =20 @@ -136,23 +137,23 @@ static int sps30_read_raw(struct iio_dev *indio_dev, case IIO_CHAN_INFO_PROCESSED: switch (chan->type) { case IIO_MASSCONCENTRATION: - mutex_lock(&state->lock); - /* read up to the number of bytes actually needed */ - switch (chan->channel2) { - case IIO_MOD_PM1: - ret =3D sps30_do_meas(state, data, 1); - break; - case IIO_MOD_PM2P5: - ret =3D sps30_do_meas(state, data, 2); - break; - case IIO_MOD_PM4: - ret =3D sps30_do_meas(state, data, 3); - break; - case IIO_MOD_PM10: - ret =3D sps30_do_meas(state, data, 4); - break; + scoped_guard(mutex, &state->lock) { + /* read up to the number of bytes actually needed */ + switch (chan->channel2) { + case IIO_MOD_PM1: + ret =3D sps30_do_meas(state, data, 1); + break; + case IIO_MOD_PM2P5: + ret =3D sps30_do_meas(state, data, 2); + break; + case IIO_MOD_PM4: + ret =3D sps30_do_meas(state, data, 3); + break; + case IIO_MOD_PM10: + ret =3D sps30_do_meas(state, data, 4); + break; + } } - mutex_unlock(&state->lock); if (ret) return ret; =20 @@ -197,9 +198,9 @@ static ssize_t start_cleaning_store(struct device *dev, if (kstrtoint(buf, 0, &val) || val !=3D 1) return -EINVAL; =20 - mutex_lock(&state->lock); - ret =3D state->ops->clean_fan(state); - mutex_unlock(&state->lock); + scoped_guard(mutex, &state->lock) + ret =3D state->ops->clean_fan(state); + if (ret) return ret; =20 @@ -215,9 +216,9 @@ static ssize_t cleaning_period_show(struct device *dev, __be32 val; int ret; =20 - mutex_lock(&state->lock); - ret =3D state->ops->read_cleaning_period(state, &val); - mutex_unlock(&state->lock); + scoped_guard(mutex, &state->lock) + ret =3D state->ops->read_cleaning_period(state, &val); + if (ret) return ret; =20 @@ -238,12 +239,11 @@ static ssize_t cleaning_period_store(struct device *d= ev, struct device_attribute (val > SPS30_AUTO_CLEANING_PERIOD_MAX)) return -EINVAL; =20 - mutex_lock(&state->lock); + guard(mutex)(&state->lock); + ret =3D state->ops->write_cleaning_period(state, cpu_to_be32(val)); - if (ret) { - mutex_unlock(&state->lock); + if (ret) return ret; - } =20 msleep(20); =20 @@ -256,8 +256,6 @@ static ssize_t cleaning_period_store(struct device *dev= , struct device_attribute dev_warn(dev, "period changed but reads will return the old value\n"); =20 - mutex_unlock(&state->lock); - return len; } =20 --=20 2.54.0