From nobody Wed Apr 1 10:02:08 2026 Received: from mail-vk1-f179.google.com (mail-vk1-f179.google.com [209.85.221.179]) (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 E4C7A408239 for ; Tue, 31 Mar 2026 15:32:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.179 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774971176; cv=none; b=G8FTJCNcxfd0WiXenHPU4gCnkh4hwqpf7N5almEnYd7uiHYNUSzRXNZqXKQokZDFrYpOXgl8cYjTZgptjTKzKR3mw1izcnEG9RbRtURClYGEdLMjJH4uWhLTwmzFWA6rIP61kCSFaRfM0mjnowdBuI2I7ErzJw2KBwFrJIoIXi4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774971176; c=relaxed/simple; bh=x6tyjelC4H3L6zPzPZxHnUGgUmhQoi+UZRklAGtLICw=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=GF3TwEZYrbp8a4Q6ugFesXUjcMGr99yP/9YiErjgkxtlZowME7pfd0s0mTqz8jb70nq/KVrpMYN/bh6t/V8uX6uEGW5UbV6x8w+oPYwP4jxn8z6fiT6w7tZytZvdwzU9KTgQ9gWGciVcd9vDzbCFAsX+K6H4JyPUKsoeSllKO14= 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=KTM70Qd4; arc=none smtp.client-ip=209.85.221.179 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="KTM70Qd4" Received: by mail-vk1-f179.google.com with SMTP id 71dfb90a1353d-5637886c92aso2771499e0c.0 for ; Tue, 31 Mar 2026 08:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1774971166; x=1775575966; 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=1Jsfk26F9qEIjJYOEqoKp7gki9gIgb4WS48DZZCXcG0=; b=KTM70Qd4Xu9mkW9eLpzX5DQLlE7/IZrHvLggFfeud5k5sUttkdInXRLTIie+3916T+ 7Cl7Mz3iMkQ7H2sB9ZiRFvK2I7I7QDh1kidi0gi+aj38biye7HAKEEaMjwbx1KOcPcCw JPZZC0fUXZZoWKBxTBk9nfjJE4PtMRry4ns3pLyqL0S0FhyTdLLShgfbgp3DVP/N7ClY 8Uwvh7vJ4KGEbm5hMZGPgMGMYQXQMJLvJbsRxHzJ4RUcGqPNQCWDsiahSsodwdRRwWPF WgNmnvNW+ZVvaWaUalTN1sVbBTkYg5faRi81f/cJ0FEp2p36Xs7qkKkAzJ459e6xxMkk 36Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774971166; x=1775575966; 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=1Jsfk26F9qEIjJYOEqoKp7gki9gIgb4WS48DZZCXcG0=; b=lN1EG77rd5j8sKtAob6wZ4XrU+Jh9GdXvcX2XivVflVxuBvJJETPEVCfFl2l2NQmZG 7MR/uq+E8KzJeq6wjx3DGrAa0oa+JV2nhceBN6An5jyK14PcXmmnVEvv8cj1Y7M/8fAH WetsCquRhbJ56EH7sCiTvwi2M1AWOC4PdYG6HFWl6SgxMtc5u3J2L6vseecpnchTYYtW m4CjWuKF6rEkpXBQYtJFI0aVjhdF8dUhXR51SvcM/99B7quBu/27kEfUx1VuUSJzYh0M wxhyFoE2iJmIUrfc8GioS3mCwImd36uSlq8+Rx9IIvjq7JhvLtYMR8WeEYAj+NWmMSCV bsXw== X-Forwarded-Encrypted: i=1; AJvYcCVC8V4/qEBa0v671Wbgnmt1meevPJgarADP2vwWLJPdRKWYltwYGlA+U+pNf1ZWHr2yGTK7T449d4tLdJg=@vger.kernel.org X-Gm-Message-State: AOJu0YyDkyYlfvq756FDKb5WCpDvh2sEdWjiKeD8LNTY3nWki5gEUhzx h0ZnjUeZm/raQ6Ava+kkQ5hnK0htP6xwTr7meC22CFVQnqdOPvKAKc8a X-Gm-Gg: ATEYQzzAIr22uaFNW7aV3rSklSina5Ade1LajNK63v83U3dE6CqWrqF4Ojnao9j1j1q JgIoTSyAe3zQkBzZWuHXpNX+jxZ8OxfilcRg7UW27UoOcHAZtqvRPFQx1r/atBWcfu19gJqiYXG MrtqLSqwznGiCUu93jnuV9Ec3+adwq/HCey1kGfUv2BO3rRcyymLkmCWYGvxpMjy6d6v1UWk1jC UceY4QtlVY7XkJASV0GC+3AFzhdUUEE3d9NuKbKVU2mEYRqI5A86YM6TFH2WajcOT6uKWFKl6aH F6VsThj64aDR0O18mk7ufFCXMyWYeS0hapiUlvI8g5kMU3VmUBg/IAta0V1sG3O4/pwcTjvgVXZ 9ou8lGBVm4PTvJp/Y65n6UjCXrFYFOemrO2bj3pZ2nImmV0paUwmH5dmSCwY650tj4XMru51Vnq P8dd0q5VTPmvE96wt2ekJ4LFQ7+58pOab3i9unkQ== X-Received: by 2002:a05:6122:318c:b0:56c:ca38:ebfe with SMTP id 71dfb90a1353d-56d4a6aa8ccmr6485345e0c.16.1774971148129; Tue, 31 Mar 2026 08:32:28 -0700 (PDT) Received: from localhost.localdomain ([2804:1cd8:df54:18b0:b0fe:e504:f5b7:5]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56d88e0ac0bsm552314e0c.12.2026.03.31.08.32.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 31 Mar 2026 08:32:27 -0700 (PDT) From: Matheus Giarola X-Google-Original-From: Matheus Giarola To: lars@metafoo.de, Michael.Hennerich@analog.com, jic23@kernel.org Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, matheusgiarola@usp.br, arthurpilone@usp.br, davidbtadokoro@ime.usp.br Subject: [PATCH v2] iio: adc: ad7280a: replace mutex_lock() with guard(mutex) Date: Tue, 31 Mar 2026 12:31:59 -0300 Message-ID: <20260331153159.204124-1-matheusgiarola@usp.br> X-Mailer: git-send-email 2.47.3 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" Use guard(mutex) instead of mutex_lock()/mutex_unlock(), ensuring the mutex is released automatically when leaving the function scope. The change improves error handling and avoids issues such as missing unlocks. It also simplifies the code by removing 'err_unlock' label and several mutex_unlock() calls. As suggested, in ad7280_read_raw(), wrap the IIO_CHAN_INFO_RAW case in braces, providing a scope for the implicit variable declared by guard(mutex). Suggested-by: Jonathan Cameron Reported-by: kernel test robot Closes: https://lore.kernel.org/oe-kbuild-all/202603210357.KTWqlL36-lkp@int= el.com/ Closes: https://lore.kernel.org/oe-kbuild-all/202603210411.t4KwH3aX-lkp@int= el.com/ Signed-off-by: Matheus Giarola --- v2:=20 - fix missing scope in ad7280_read_raw() by wrapping IIO_CHAN_INFO_RAW case in braces so as to fix build errors. drivers/iio/adc/ad7280a.c | 30 ++++++++++-------------------- 1 file changed, 10 insertions(+), 20 deletions(-) diff --git a/drivers/iio/adc/ad7280a.c b/drivers/iio/adc/ad7280a.c index ba12a3796e2b..f34514be1648 100644 --- a/drivers/iio/adc/ad7280a.c +++ b/drivers/iio/adc/ad7280a.c @@ -496,7 +496,7 @@ static ssize_t ad7280_store_balance_sw(struct iio_dev *= indio_dev, devaddr =3D chan->address >> 8; ch =3D chan->address & 0xFF; =20 - mutex_lock(&st->lock); + guard(mutex)(&st->lock); if (readin) st->cb_mask[devaddr] |=3D BIT(ch); else @@ -505,7 +505,6 @@ static ssize_t ad7280_store_balance_sw(struct iio_dev *= indio_dev, ret =3D ad7280_write(st, devaddr, AD7280A_CELL_BALANCE_REG, 0, FIELD_PREP(AD7280A_CELL_BALANCE_CHAN_BITMAP_MSK, st->cb_mask[devaddr])); - mutex_unlock(&st->lock); =20 return ret ? ret : len; } @@ -519,10 +518,9 @@ static ssize_t ad7280_show_balance_timer(struct iio_de= v *indio_dev, unsigned int msecs; int ret; =20 - mutex_lock(&st->lock); + guard(mutex)(&st->lock); ret =3D ad7280_read_reg(st, chan->address >> 8, (chan->address & 0xFF) + AD7280A_CB1_TIMER_REG); - mutex_unlock(&st->lock); =20 if (ret < 0) return ret; @@ -551,11 +549,10 @@ static ssize_t ad7280_store_balance_timer(struct iio_= dev *indio_dev, if (val > 31) return -EINVAL; =20 - mutex_lock(&st->lock); + guard(mutex)(&st->lock); ret =3D ad7280_write(st, chan->address >> 8, (chan->address & 0xFF) + AD7280A_CB1_TIMER_REG, 0, FIELD_PREP(AD7280A_CB_TIMER_VAL_MSK, val)); - mutex_unlock(&st->lock); =20 return ret ? ret : len; } @@ -737,7 +734,7 @@ static int ad7280a_write_thresh(struct iio_dev *indio_d= ev, if (val2 !=3D 0) return -EINVAL; =20 - mutex_lock(&st->lock); + guard(mutex)(&st->lock); switch (chan->type) { case IIO_VOLTAGE: value =3D ((val - 1000) * 100) / 1568; /* LSB 15.68mV */ @@ -760,8 +757,7 @@ static int ad7280a_write_thresh(struct iio_dev *indio_d= ev, st->cell_threshlow =3D value; break; default: - ret =3D -EINVAL; - goto err_unlock; + return -EINVAL; } break; case IIO_TEMP: @@ -785,18 +781,12 @@ static int ad7280a_write_thresh(struct iio_dev *indio= _dev, st->aux_threshlow =3D value; break; default: - ret =3D -EINVAL; - goto err_unlock; + return -EINVAL; } break; default: - ret =3D -EINVAL; - goto err_unlock; + return -EINVAL; } - -err_unlock: - mutex_unlock(&st->lock); - return ret; } =20 @@ -884,14 +874,13 @@ static int ad7280_read_raw(struct iio_dev *indio_dev, int ret; =20 switch (m) { - case IIO_CHAN_INFO_RAW: - mutex_lock(&st->lock); + case IIO_CHAN_INFO_RAW: { + guard(mutex)(&st->lock); if (chan->address =3D=3D AD7280A_ALL_CELLS) ret =3D ad7280_read_all_channels(st, st->scan_cnt, NULL); else ret =3D ad7280_read_channel(st, chan->address >> 8, chan->address & 0xFF); - mutex_unlock(&st->lock); =20 if (ret < 0) return ret; @@ -899,6 +888,7 @@ static int ad7280_read_raw(struct iio_dev *indio_dev, *val =3D ret; =20 return IIO_VAL_INT; + } case IIO_CHAN_INFO_SCALE: if ((chan->address & 0xFF) <=3D AD7280A_CELL_VOLTAGE_6_REG) *val =3D 4000; --=20 2.47.3