From nobody Fri Apr 3 07:42:03 2026 Received: from mail-yw1-f175.google.com (mail-yw1-f175.google.com [209.85.128.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 11D7C2DEA64 for ; Wed, 18 Feb 2026 04:37:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.175 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771389470; cv=none; b=BaOKjNRnHm/T29mCHF9xpFoD0yBWDv4ViImgxPTnmpmWbJ32jKuh7mlEy9DyZtwoT89DgkMCJQ0tdrBncw20ZLN1XEhp/cwb/3OU1c9y8LZ6aJq89iBXIoP09PqS/5Gld+jR7HYzab5WpM4hs5TcPWBmrI4vBC9DDcUFgbzpAHo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1771389470; c=relaxed/simple; bh=//HHuTCerFcSwwiBqOvc0pkJJAPvk1SqJGx0RZE0gZU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kpZp8X1JXZb7NxwSd7tE5uzwJbnl2EfLXJBff7U5bENQz7sgim6eG/SkmJ6XFGCHjl4hNdDjMLjhVC0LAMLsMh2Oa4Nvkue4h97QsgbI9Q94DTRv8ghSH7pGWN0cz2K35vHe8Q7N/gewxTeqM9h/xK9OR3QIaTqMnA8/mK/Qqeo= 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=Cxz0hrhT; arc=none smtp.client-ip=209.85.128.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="Cxz0hrhT" Received: by mail-yw1-f175.google.com with SMTP id 00721157ae682-794fe698e36so44578527b3.2 for ; Tue, 17 Feb 2026 20:37:48 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771389468; x=1771994268; 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; bh=CbCY9XCvRZytZp9MDEYN7XDbxm37YVD92nmqKbkfDRs=; b=Cxz0hrhT5bSD4YYpkEJnQGgg8IHpKKIA2q9vD4xzE2vadvbb42wHnK5opQlh2WzcDF sWuPe7+pyi2DWTbdOzGyBcjWYBtf6AQV7Zqz/tU3euGN/J9Ur222trEk+vR0CC3dwY8x 2B2TJjMxMS+mIVnvnPUsoQ3pQIl02to1suau8gzxi3p6lsgz3bZ7iO3urevjyZXaC80a oNxJOJEnhgb6xDT9YuaOJ5kgn2BT97fi0GIc2zD4b8VxcoaQxcUln4r1AEpgX37uk1qd yDvuR1YTU7XJZ7tp+NZ1czcHBp82u1K4kD4cCrLI/h10kJyCvNtfgGMrau/4QE1cOkKu d2Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771389468; x=1771994268; 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; bh=CbCY9XCvRZytZp9MDEYN7XDbxm37YVD92nmqKbkfDRs=; b=uh0XeByukOOzE5PWardxVLymH0muTTw+nhzo3Gin6p/R6mK0bWiBj6k4/1RICexNaF 4XJeVz0VcgkItCdPyMHHINOBJRJQ7Ky/GedinJKcpqEcyIrylLPX9SKOZPwuOqCP0KpG 0krsQQLfc6k8CV+uhKMpQBkCE3Isu+Hp74oMpEHSYLPdTUCthf9Vx9+C2lt2zMz2yj0E JPQD9hVI4qI1/RPHNkthC5XPA9ROUmvuK4GLAZ2GE2KJ4hzI031n3r58n0fmo5IXcnEd 1Q6h9OLlPe4KfXJzwQICnRxPzQKhOJkfA5/BKpwwS4kN1G7tURSND0ShOGkCRIdGxjop QsSw== X-Forwarded-Encrypted: i=1; AJvYcCXwdwHGX5XV1eJRzxEil08Hu5fO5oqbkkBVLxE45L70T+bZmgimIzRKXb765TPHbo+0Po2IwlahGRPxfnw=@vger.kernel.org X-Gm-Message-State: AOJu0YxPK6Gred4JTS56NUMtwc2FyICtLCs29ipMwnVwVblz0k51ewi/ D8pNQe6cDzCOj4KCR160XatnW6cAnM4YEUBzHyGuOF+sh1dx5tYkAxrD X-Gm-Gg: AZuq6aJmoOI6wkmoc41Mv/KIz2wVeq3jHkRHqnH0sWfFV3VK/Qop8t06Z8HFkbdn9c4 0aoRlw+Dx6ah8Ih70Nd8An2AHYnQxBTVGA03IHL4fwoA9F3ajLt9xqPfCbDQGUyUIPvFrVEPyMi udcZIh3OKkyJBo1L5IPMx0acJyxbPx/hzFZD3sbydIESjG/M1hdJL1m8Qflfxor84crhl13S4pn RT9fFi6y8IqIo1yhMPReESbN6VM9AYESjLdwELD4DrKztqdsODJwFLeeDTorYuXK0a1QKu3rsxK dcHgCz6km6LLWISsUA8/GGUJSD1J2Uji3Ks8kS2gyr8xvg7ukviuSxZdgYKZfP9D27QZACDRQim RBJcxTjOFwqAWEGjO+2MUusF4y8UjmQbyUwh3aaqWlOQp1mEfCQ4YU2kcxn29zcM8k9AXzxRMSz WfAA+LNhxhXp0W2Z2quhsh0vv5LrRTcRCQuHr8Weoz3It/TthJKHpla25Co3aqM9ljuf1HaJd7k 1Zzln8NGztXQ8IRJiKQ7XU1JUK2A4FQT1jZSa0q0/8= X-Received: by 2002:a05:690c:6e11:b0:796:4bae:934b with SMTP id 00721157ae682-797f73f2bf8mr4193407b3.63.1771389468094; Tue, 17 Feb 2026 20:37:48 -0800 (PST) Received: from tux ([2601:7c0:c37c:4c00:e3a8:26f7:7e08:88e1]) by smtp.gmail.com with ESMTPSA id 00721157ae682-7966c23e4bdsm119850617b3.32.2026.02.17.20.37.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 17 Feb 2026 20:37:47 -0800 (PST) From: Ethan Tidmore To: jic23@kernel.org, andy@kernel.org Cc: dlechner@baylibre.com, nuno.sa@analog.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Ethan Tidmore Subject: [PATCH v4 1/9] iio: light: gp2ap020a00f: simplify locking with guard() Date: Tue, 17 Feb 2026 22:37:20 -0600 Message-ID: <20260218043728.609659-2-ethantidmore06@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <20260218043728.609659-1-ethantidmore06@gmail.com> References: <20260218043728.609659-1-ethantidmore06@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: quoted-printable Content-Type: text/plain; charset="utf-8" Use the guard() cleanup handler to manage the device lock. This simplifies the code by removing the need for manual unlocking and goto error handling paths. Suggested-by: Jonathan Cameron Signed-off-by: Ethan Tidmore --- v4: - Remove whitespace between assignment and check. v3: - Remove Fixes: tag. - Added Smatch warning. v2: - Fixed gp2ap020a00f_get_thresh_reg() parameter alignment. - Removed unneeded whitespace between assignment and check. drivers/iio/light/gp2ap020a00f.c | 66 ++++++++++---------------------- 1 file changed, 20 insertions(+), 46 deletions(-) diff --git a/drivers/iio/light/gp2ap020a00f.c b/drivers/iio/light/gp2ap020a= 00f.c index c7df4b258e2c..91fdcb980111 100644 --- a/drivers/iio/light/gp2ap020a00f.c +++ b/drivers/iio/light/gp2ap020a00f.c @@ -31,6 +31,7 @@ * the other one. */ =20 +#include #include #include #include @@ -1024,17 +1025,13 @@ static int gp2ap020a00f_write_event_val(struct iio_= dev *indio_dev, bool event_en =3D false; u8 thresh_val_id; u8 thresh_reg_l; - int err =3D 0; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 thresh_reg_l =3D gp2ap020a00f_get_thresh_reg(chan, dir); thresh_val_id =3D GP2AP020A00F_THRESH_VAL_ID(thresh_reg_l); - - if (thresh_val_id > GP2AP020A00F_THRESH_PH) { - err =3D -EINVAL; - goto error_unlock; - } + if (thresh_val_id > GP2AP020A00F_THRESH_PH) + return -EINVAL; =20 switch (thresh_reg_l) { case GP2AP020A00F_TH_L_REG: @@ -1046,30 +1043,23 @@ static int gp2ap020a00f_write_event_val(struct iio_= dev *indio_dev, &data->flags); break; case GP2AP020A00F_PH_L_REG: - if (val =3D=3D 0) { - err =3D -EINVAL; - goto error_unlock; - } + if (val =3D=3D 0) + return -EINVAL; + event_en =3D test_bit(GP2AP020A00F_FLAG_PROX_RISING_EV, &data->flags); break; case GP2AP020A00F_PL_L_REG: - if (val =3D=3D 0) { - err =3D -EINVAL; - goto error_unlock; - } + if (val =3D=3D 0) + return -EINVAL; + event_en =3D test_bit(GP2AP020A00F_FLAG_PROX_FALLING_EV, &data->flags); break; } =20 data->thresh_val[thresh_val_id] =3D val; - err =3D gp2ap020a00f_write_event_threshold(data, thresh_val_id, - event_en); -error_unlock: - mutex_unlock(&data->lock); - - return err; + return gp2ap020a00f_write_event_threshold(data, thresh_val_id, event_en); } =20 static int gp2ap020a00f_read_event_val(struct iio_dev *indio_dev, @@ -1081,23 +1071,16 @@ static int gp2ap020a00f_read_event_val(struct iio_d= ev *indio_dev, { struct gp2ap020a00f_data *data =3D iio_priv(indio_dev); u8 thresh_reg_l; - int err =3D IIO_VAL_INT; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 thresh_reg_l =3D gp2ap020a00f_get_thresh_reg(chan, dir); - - if (thresh_reg_l > GP2AP020A00F_PH_L_REG) { - err =3D -EINVAL; - goto error_unlock; - } + if (thresh_reg_l > GP2AP020A00F_PH_L_REG) + return -EINVAL; =20 *val =3D data->thresh_val[GP2AP020A00F_THRESH_VAL_ID(thresh_reg_l)]; =20 -error_unlock: - mutex_unlock(&data->lock); - - return err; + return IIO_VAL_INT; } =20 static int gp2ap020a00f_write_prox_event_config(struct iio_dev *indio_dev, @@ -1165,7 +1148,7 @@ static int gp2ap020a00f_write_event_config(struct iio= _dev *indio_dev, enum gp2ap020a00f_cmd cmd; int err; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 switch (chan->type) { case IIO_PROXIMITY: @@ -1186,8 +1169,6 @@ static int gp2ap020a00f_write_event_config(struct iio= _dev *indio_dev, err =3D -EINVAL; } =20 - mutex_unlock(&data->lock); - return err; } =20 @@ -1199,7 +1180,7 @@ static int gp2ap020a00f_read_event_config(struct iio_= dev *indio_dev, struct gp2ap020a00f_data *data =3D iio_priv(indio_dev); int event_en =3D 0; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 switch (chan->type) { case IIO_PROXIMITY: @@ -1223,8 +1204,6 @@ static int gp2ap020a00f_read_event_config(struct iio_= dev *indio_dev, break; } =20 - mutex_unlock(&data->lock); - return event_en; } =20 @@ -1385,7 +1364,7 @@ static int gp2ap020a00f_buffer_postenable(struct iio_= dev *indio_dev) struct gp2ap020a00f_data *data =3D iio_priv(indio_dev); int i, err =3D 0; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 /* * Enable triggers according to the scan_mask. Enabling either @@ -1413,15 +1392,12 @@ static int gp2ap020a00f_buffer_postenable(struct ii= o_dev *indio_dev) } =20 if (err < 0) - goto error_unlock; + return err; =20 data->buffer =3D kmalloc(indio_dev->scan_bytes, GFP_KERNEL); if (!data->buffer) err =3D -ENOMEM; =20 -error_unlock: - mutex_unlock(&data->lock); - return err; } =20 @@ -1430,7 +1406,7 @@ static int gp2ap020a00f_buffer_predisable(struct iio_= dev *indio_dev) struct gp2ap020a00f_data *data =3D iio_priv(indio_dev); int i, err =3D 0; =20 - mutex_lock(&data->lock); + guard(mutex)(&data->lock); =20 iio_for_each_active_channel(indio_dev, i) { switch (i) { @@ -1452,8 +1428,6 @@ static int gp2ap020a00f_buffer_predisable(struct iio_= dev *indio_dev) if (err =3D=3D 0) kfree(data->buffer); =20 - mutex_unlock(&data->lock); - return err; } =20 --=20 2.53.0