From nobody Fri Apr 3 21:13:27 2026 Received: from mail-vk1-f169.google.com (mail-vk1-f169.google.com [209.85.221.169]) (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 C524F35AC06 for ; Thu, 2 Apr 2026 03:15:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.169 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775099729; cv=none; b=ZX1MobRr2SjZWYTxBPGybp1q7DWn2+JDA1l1I8hfsXY17Zc9w0QOZPgE25caXvohsHlNR7cueJtUKZjTzARlMYoSM15HIFSgbWZL1ua+1WQ7E7ODldagahUwzOXlAnLeDf73h3Jnz30HdCqVPHlU78j5grXP5/sQG5MiDpIpy2Y= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1775099729; c=relaxed/simple; bh=mHU1EGjHak2fUPiGOB/lBaNe1/0E0ZQ2GsLOi7IziJk=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=kbWsr6l1MEeqYO7GTsohh8NJyD8lnFZd6cmmNX9hxCCq4UDPvpIM0AnlSfYjdkgMGorG9bBK8tFJXgOS+LnqJObhhjcJ7y1j7GFrXUk3ZHX/T9Y3mRuxOYGj+GukuIU4kf0OEiZ8z7Ipp45xDjSLBORsXY1IvOYwevQKth3+x4k= 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=m5qTATWj; arc=none smtp.client-ip=209.85.221.169 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="m5qTATWj" Received: by mail-vk1-f169.google.com with SMTP id 71dfb90a1353d-56d89f35940so161322e0c.2 for ; Wed, 01 Apr 2026 20:15:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775099727; x=1775704527; 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=l/+cYI48e4dsSXmUJSv4Ut0MOgOPobb/gGRcAqckbUE=; b=m5qTATWjMKyPGO4IDBDPNdK3XdhqZsYvmL6+3U/GBwkWNH/pjYk+HDL8myR64jglSw 8yvd7kQ5UWdU0XQ3f7co9GbylaIKj7A0A0sTZHygLnVbn+VO72/Ij446jipyW4GsNio3 WzOa2OiCKfgNN2zPz/qZthVFiAQBuTlTl6C8oGMwX6r6m2xIjI7TFxFErUcIDPobI7mX 8Vlp6KVS0F1547Qz2Dy24C/wzUxkKEMo5jyqK8+SdQ3K9Dbbi6hTG9lXg9w3dahEBhKK IWnaNU2BDx3jPbo1hDW9cpWIQ0F1CUPL1O/yljWrS6yz+b880K3FDmnpGSMJu2zqGnwy MRVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775099727; x=1775704527; 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=l/+cYI48e4dsSXmUJSv4Ut0MOgOPobb/gGRcAqckbUE=; b=Xl5p4zgZ4bTEnBcThNsiJBnFmtUILEEMWBszReYGg5tLVogbrjBAO8KDOlry3CUo3M r5HNZdoagUhDKMo7BV1DsldAFHwbyNp7jpnydMnyAggemOa3tjsUXE4LO8eUy+887+/d 5h7Ot20oZqAJ1ZWSDnWc1jhOTZu/enAPjNTpONAmBr4+PgIcA7Vj966MhKNfeddAqswN n6weEgXPtIagQmQeBsBUSoRcQw56ogCynBOV8QKFkyNsxtGYoroRpO+LgG4yq4j1ailL PpxiYGUkGr6vPgcagO42AfYIg90CkKCARzy3ZZASsd73SD5f7Xddv/xQWx7ywwV88/fy wGnw== X-Forwarded-Encrypted: i=1; AJvYcCVzq97GWO22OmCf0eTAfPzsONp6XSckZ/gCo5FO0HmYVmuYCd6W1h3jIHEel8SMkazzbuxqio62IG3CIL8=@vger.kernel.org X-Gm-Message-State: AOJu0YxBEFNnx8kf7tkdSRbVEhT15U3Q2NrgkZKXZezL1AxPow91qkCB 1vhYOmPDKzE02cveSvu7ZLqfPjp9KmEQL4ds7BDVVWRVlo6QFtXnZL/h X-Gm-Gg: ATEYQzw2PfszK8IdfSMjjKAVU2xgKX08JWxlOmlNxNTAJVEWl/ErDJ6wGHA+GdDR10E p18LxzcPzkEnKh7F8s/9NQYPn/SseObF01U01tVAXLSNc9xucML8QAL8iU0CD+0qcZ2q3G/hchy O3fexp/Kh+tSkqw78iV2/ksVfSJrXVZr8pejF0jAqip8FQnO0VjXx9q5YVsQb5aPAOB0qwZ5mZM ROhaLxE30oGbpbmEokrvYEhYRd/mJFhRkCywkTMb2W0FMe7SOCeLTS77hANDNpp5oM/PB4Xzc3x wu//lw+DFLdnDDrX5kRm1pM0/kvxKonRZatW0KPoUoawJlBveNMvspHAXhtKw3ytg/cqEt0N8Q0 N3OJ+eOOFRUvdkExCGrb1SUz5c8PEMjroi5Nt1jIjuENQI8gxWwtnHV3cHmlbWAsNFZOotBZgQC oMvMPyLYZv+xFZNGiTdfNriefE/RsLdz6yfM0NdA== X-Received: by 2002:a05:6122:3290:b0:56d:3c26:20a8 with SMTP id 71dfb90a1353d-56d8a81bd3dmr2512203e0c.3.1775099726655; Wed, 01 Apr 2026 20:15:26 -0700 (PDT) Received: from localhost.localdomain ([2804:1cd8:df54:18b0:b0fe:e504:f5b7:5]) by smtp.gmail.com with ESMTPSA id 71dfb90a1353d-56d9ba81b53sm1897035e0c.4.2026.04.01.20.15.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 01 Apr 2026 20:15:26 -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 v3] iio: adc: ad7280a: replace mutex_lock() with guard(mutex) Date: Thu, 2 Apr 2026 00:15:06 -0300 Message-ID: <20260402031506.237467-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 Signed-off-by: Matheus Giarola --- v3: - correct v2 patch tags v2: - 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