From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-oo1-f45.google.com (mail-oo1-f45.google.com [209.85.161.45]) (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 F18EE2FD69A for ; Tue, 5 May 2026 00:55:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.45 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777942510; cv=none; b=NNZQ5mOwvM6ngku96YTWJmw0j7X8vJnGvkD6T/6pKHc0B/T9Ln85atv1WvyNvbq1yAq1eaIHy7RFkogVTYfOC3AxePtp3buBXdHWkY2aiIYaN/+ACWLD9LlW7hNgJv07xA9ZpHjwpLPltoxHj6hANWkC6h7K4y2uE1X6rpsYTXc= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777942510; c=relaxed/simple; bh=HcCAi4XZWr4VI9YnxqL/9prvlesZPWwyc2UQVr0F5B4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=IBwPtDyGQFKYYZ8iYWKXVQRp8ahjMCGIrXch1bBML+71/PftFTmOWAlRf0xa4IULWrrqE/wDR2EJCDwfBf9Esi0t57qyqxuZBIez4LeNfIYBRD0Zpi7GnNtAz61Z+27QHw5IP9o8kwGXD5JSnQ9YVlvN5v9w7S2leN7jq1fjXvI= 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=BzyduO9E; arc=none smtp.client-ip=209.85.161.45 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="BzyduO9E" Received: by mail-oo1-f45.google.com with SMTP id 006d021491bc7-6969c864c89so1433723eaf.2 for ; Mon, 04 May 2026 17:55:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777942508; x=1778547308; 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=S+BIg5IZCVor1FBDgkb7U/DMcxDxLFNQWGvO8VPvc5U=; b=BzyduO9E4t0cdOZ3KY9qVjc9Klv0T0KMpaAuMkZ7tRIU63kyecBwyflyHep9qCv0Ag mWz7v63AiH0ALxdbfLlR4maI61ZaEBYgWwiALiZG2JqjvCVIBbnx20qDlNy4dLkcG/XD 9P5mJmyZiZaAh575gm8UyEwYl8MKkU/vrErQpmRzQFjvTezOJx2sRVAGQRTXtOaJTmlR rroho8PHBvELTpWTl6ZujTYK52diLCi/mBJJzOLqF0y8yopG/Yi2Y3vaA8cLIvjsTbB6 dEvrM/jDulAZdVkAD9c6R2iWRXCTSSvATEja+DpyhY8qpbSmFJ8Nb4E9W3tn73mQLcSz /XkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777942508; x=1778547308; 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=S+BIg5IZCVor1FBDgkb7U/DMcxDxLFNQWGvO8VPvc5U=; b=GqLNBnN0Lhu+uoolTGGCy64vsJkLfsNxFEpUlLo9VFlGz6jWP4Wv/eeMumb9v2PsGd qXQSR4mtZSou8TFTNeABcra9rpHP3dgqBDvvbxd9qQmgC2dMzzn4a+zawXu0NxFWF9/m RGIl0gbmu0adY6BoXFtzRzkMQGJIzm6ZHvBNFvd1AUHEpY9DxqnZEDNLIUDNb7nanx2A V6jkr6vIPgWK7OeEMu3QmYP/n9yS6dc8dtgagoDwWdSQRdizYJEfIT0DdahSkOIKS8oG 0stpPpzTUfVDx38WzPd1ORk3jcQOVQQQzb2FT29iWmtRD5Q8yzqwDuQp/RqG7i5e6Oe/ zNQA== X-Forwarded-Encrypted: i=1; AFNElJ8IVGofZtRO+ce7AwnJM+abUI5jwY70wvtmqI6Id0W45bF9KUYMa/RuMm28aPEk6WO5JKadZAvRwWf2qiQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyRuwH773yZFPesOYadbonr28Pkt2CJsfIkpnbUC1KFCS53UW9W uvs1kODVSgeZxswLGfU24NRxexUH0/M+9EvX6dNg3gVUUwrxkzJCXOSi X-Gm-Gg: AeBDievXjFXHSJ/B42m1ThWh1D26lKy3OpELLqlcscwV+MJaBtbGxa0Cicfmnh6YnzA 6HeewCp8BuLLGVbyJ+FK5fM0fqFilT/Z7KAVLEyoAvcZsJixByTAZmnmZ9836+XNtyNNc3UH9DB 17AGY2aJx2udDYlL3/j7KULMFWVQl2SDsOh9uePS4xEirNmqGIAKF/uNbKHFNcUWGu25kGBoWNR IK+lDgP+rRBeAOFx01Bu8SBFjb32alCsUJZwdhZBWsaem3DtHozN6ech07atDbhvZW/HfL2Sh85 yq2xnIQ2wqnTkKiGgfniBPhHlDwGQhT2dHwdc1Ct3+jk5U8bCzZFvIAB/yvYLCnWFUa+uoSUvd/ AengUYKyIwJ2rgLSh3GpPi9eoVhEoah2sq2tN0fIc99i32zDom5ost9UY8qS1UlU5aXy6w+YZBO Nz5e8p6tzOTL1e72eXK+FrDnzh1Segk7pj0jyVldH8jl+0UUK9RHjUhkZlgHYm3pHLLYt3 X-Received: by 2002:a05:6820:f034:b0:696:2cb1:9ffb with SMTP id 006d021491bc7-69697e17b24mr6591039eaf.55.1777942507787; Mon, 04 May 2026 17:55:07 -0700 (PDT) Received: from linuxescape.lan (23-88-128-2.fttp.usinternet.com. [23.88.128.2]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-43454942dc1sm11263209fac.5.2026.05.04.17.55.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 May 2026 17:55:07 -0700 (PDT) From: Maxwell Doose To: 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 v2] iio: imu: kmx61: Use guard(mutex)() family over manual locking Date: Mon, 4 May 2026 19:55:05 -0500 Message-ID: <20260505005506.160891-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: 8bit Include linux/cleanup.h to take advantage of new macros. Replace manual mutex_lock() and mutex_unlock() calls across the file with guard(mutex)() and scoped_guard() where appropriate. This will help modernize the driver with up-to-date functions/macros. Remove now redundant gotos and ret variables, as the new RAII macros make them unneeded. Signed-off-by: Maxwell Doose --- v2: - Remove redundant blank line per Andy. - Put kmx61_set_mode() function call in kmx61_runtime_suspend() on one line per Andy. drivers/iio/imu/kmx61.c | 76 ++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 51 deletions(-) diff --git a/drivers/iio/imu/kmx61.c b/drivers/iio/imu/kmx61.c index 3cd91d8a89ee..6d2e98607d35 100644 --- a/drivers/iio/imu/kmx61.c +++ b/drivers/iio/imu/kmx61.c @@ -7,6 +7,7 @@ * IIO driver for KMX61 (7-bit I2C slave address 0x0E or 0x0F). */ +#include #include #include #include @@ -794,25 +795,20 @@ static int kmx61_read_raw(struct iio_dev *indio_dev, default: return -EINVAL; } - mutex_lock(&data->lock); + guard(mutex)(&data->lock); ret = kmx61_set_power_state(data, true, chan->address); - if (ret) { - mutex_unlock(&data->lock); + if (ret) return ret; - } ret = kmx61_read_measurement(data, base_reg, chan->scan_index); if (ret < 0) { kmx61_set_power_state(data, false, chan->address); - mutex_unlock(&data->lock); return ret; } *val = sign_extend32(ret >> chan->scan_type.shift, chan->scan_type.realbits - 1); ret = kmx61_set_power_state(data, false, chan->address); - - mutex_unlock(&data->lock); if (ret) return ret; return IIO_VAL_INT; @@ -834,9 +830,8 @@ static int kmx61_read_raw(struct iio_dev *indio_dev, if (chan->type != IIO_ACCEL && chan->type != IIO_MAGN) return -EINVAL; - mutex_lock(&data->lock); - ret = kmx61_get_odr(data, val, val2, chan->address); - mutex_unlock(&data->lock); + scoped_guard(mutex, &data->lock) + ret = kmx61_get_odr(data, val, val2, chan->address); if (ret) return -EINVAL; return IIO_VAL_INT_PLUS_MICRO; @@ -856,19 +851,15 @@ static int kmx61_write_raw(struct iio_dev *indio_dev, if (chan->type != IIO_ACCEL && chan->type != IIO_MAGN) return -EINVAL; - mutex_lock(&data->lock); - ret = kmx61_set_odr(data, val, val2, chan->address); - mutex_unlock(&data->lock); - return ret; + guard(mutex)(&data->lock); + return kmx61_set_odr(data, val, val2, chan->address); case IIO_CHAN_INFO_SCALE: switch (chan->type) { case IIO_ACCEL: if (val != 0) return -EINVAL; - mutex_lock(&data->lock); - ret = kmx61_set_scale(data, val2); - mutex_unlock(&data->lock); - return ret; + guard(mutex)(&data->lock); + return kmx61_set_scale(data, val2); default: return -EINVAL; } @@ -945,28 +936,25 @@ static int kmx61_write_event_config(struct iio_dev *indio_dev, if (state && data->ev_enable_state) return 0; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); if (!state && data->motion_trig_on) { data->ev_enable_state = false; - goto err_unlock; + return ret; } ret = kmx61_set_power_state(data, state, KMX61_ACC); if (ret < 0) - goto err_unlock; + return ret; ret = kmx61_setup_any_motion_interrupt(data, state); if (ret < 0) { kmx61_set_power_state(data, false, KMX61_ACC); - goto err_unlock; + return ret; } data->ev_enable_state = state; -err_unlock: - mutex_unlock(&data->lock); - return ret; } @@ -1020,11 +1008,11 @@ static int kmx61_data_rdy_trigger_set_state(struct iio_trigger *trig, struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig); struct kmx61_data *data = kmx61_get_data(indio_dev); - mutex_lock(&data->lock); + guard(mutex)(&data->lock); if (!state && data->ev_enable_state && data->motion_trig_on) { data->motion_trig_on = false; - goto err_unlock; + return ret; } if (data->acc_dready_trig == trig || data->motion_trig == trig) @@ -1034,7 +1022,7 @@ static int kmx61_data_rdy_trigger_set_state(struct iio_trigger *trig, ret = kmx61_set_power_state(data, state, device); if (ret < 0) - goto err_unlock; + return ret; if (data->acc_dready_trig == trig || data->mag_dready_trig == trig) ret = kmx61_setup_new_data_interrupt(data, state, device); @@ -1042,7 +1030,7 @@ static int kmx61_data_rdy_trigger_set_state(struct iio_trigger *trig, ret = kmx61_setup_any_motion_interrupt(data, state); if (ret < 0) { kmx61_set_power_state(data, false, device); - goto err_unlock; + return ret; } if (data->acc_dready_trig == trig) @@ -1051,8 +1039,6 @@ static int kmx61_data_rdy_trigger_set_state(struct iio_trigger *trig, data->mag_dready_trig_on = state; else data->motion_trig_on = state; -err_unlock: - mutex_unlock(&data->lock); return ret; } @@ -1195,19 +1181,17 @@ static irqreturn_t kmx61_trigger_handler(int irq, void *p) else base = KMX61_MAG_XOUT_L; - mutex_lock(&data->lock); + guard(mutex)(&data->lock); iio_for_each_active_channel(indio_dev, bit) { ret = kmx61_read_measurement(data, base, bit); if (ret < 0) { - mutex_unlock(&data->lock); - goto err; + iio_trigger_notify_done(indio_dev->trig); + return IRQ_HANDLED; } buffer[i++] = ret; } - mutex_unlock(&data->lock); iio_push_to_buffers(indio_dev, buffer); -err: iio_trigger_notify_done(indio_dev->trig); return IRQ_HANDLED; @@ -1419,22 +1403,16 @@ static void kmx61_remove(struct i2c_client *client) iio_trigger_unregister(data->motion_trig); } - mutex_lock(&data->lock); + guard(mutex)(&data->lock); kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, true); - mutex_unlock(&data->lock); } static int kmx61_suspend(struct device *dev) { - int ret; struct kmx61_data *data = i2c_get_clientdata(to_i2c_client(dev)); - mutex_lock(&data->lock); - ret = kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, - false); - mutex_unlock(&data->lock); - - return ret; + guard(mutex)(&data->lock); + return kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, false); } static int kmx61_resume(struct device *dev) @@ -1453,13 +1431,9 @@ static int kmx61_resume(struct device *dev) static int kmx61_runtime_suspend(struct device *dev) { struct kmx61_data *data = i2c_get_clientdata(to_i2c_client(dev)); - int ret; - mutex_lock(&data->lock); - ret = kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, true); - mutex_unlock(&data->lock); - - return ret; + guard(mutex)(&data->lock); + return kmx61_set_mode(data, KMX61_ALL_STBY, KMX61_ACC | KMX61_MAG, true); } static int kmx61_runtime_resume(struct device *dev) base-commit: 7fd2df204f342fc17d1a0bfcd474b24232fb0f32 -- 2.54.0