From nobody Thu Apr 9 13:57:45 2026 Received: from mail-pj1-f50.google.com (mail-pj1-f50.google.com [209.85.216.50]) (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 3E5183D6CD2 for ; Mon, 2 Mar 2026 13:07:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.216.50 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772456829; cv=none; b=oGBGSzerLGfxTvdlCR49ds+k8uwo88wGPdkJtPyCxNoaYP8KTnWV4R7wv+LHXL1DSjvGz1DTTZ2zQ7k7W87Vi4ZqG8MKZSU8XUUS2hNT4bmPcmJK+8TmtLA2Pmdhf98tCp0B3vaRQsM12QFfaHwerGPDs9ttdHxb/EMzaN0EgVk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1772456829; c=relaxed/simple; bh=aQ7zABqojbwxrU4SsOcLTgZNgpwW7JwcYk5QGDZUQ+0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=kNCG6rZ+okQBjS1YBi32YNLcgIAU031jNMcRATkw9QxAGfEo8JfhFgfqMhKXo+Zkcv5TuOPmornaZ40CmUhep2liu4xeK/qYlDbFkkUWAk8NcH2yRwlnSGnnL7KVKsnHeflNifmpi6znJCXwmNpl40Mfos9IyxddfQRUqoL89Zw= 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=RVIDnc/d; arc=none smtp.client-ip=209.85.216.50 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="RVIDnc/d" Received: by mail-pj1-f50.google.com with SMTP id 98e67ed59e1d1-3598e7155bbso591977a91.2 for ; Mon, 02 Mar 2026 05:07:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1772456827; x=1773061627; 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=bEGlEibZYgaxceaxVmMyXueExIiVmPPFnlkrZeXfPYQ=; b=RVIDnc/daZu0AHoUwfLAfzmswrGuVO3BveOnVd9pragn8tbE6DqjbcgVl5ZZrj3oVK q+NcJoKD9sjESDqhCFmnp3TQbk0ct/wQ89D3VN28j+l3+fF4XhPI0lWdM8jjkfPEcX5A wOS7lW2+uN2gXnfF3c0ykpm6NpJcJs2XA9Rzwlv3Wi8kaW80WRLQ97KEEojsE+hNUlc/ 06Rr07OhzpZS0nj79A0Jg77c7TFD7wPlOL4HnRFeew6rJMDbC89veFw9ZfIwei1kgmsu +Wnoogbk0xZxFy1vvcO93gTniqVZtDUnJHcLTs0uQ69VrSVD0z2/ZI+dFVU5suOPlyge k+xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772456827; x=1773061627; 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=bEGlEibZYgaxceaxVmMyXueExIiVmPPFnlkrZeXfPYQ=; b=MOG62FHEaZpx7imRRLNhehe8O/W2xcAPowJOHBVERj0Znf99uFvs0JU2/x2CM3duix 02a+66aid9W4hq3LjR3b6LXMtT/voiknv1DVjBBIFs0uqIVeCMqZ+tpA9AXWlDlDvtJs I/dwdIfsZsZJMK/QYaeJI3OVTv8WYbzK6SI7uIirzu345H4+Eov8vmThTi1I2xoofK93 dT+uPaHb6EPfYhJhS+wQh8kROCfPNIkAfdhtT/kZslzRNO8VmjQub5rUmGhKZ/4uNEFY 8SAkZRlkfwlJL1mycTvxLxkUA7ZYC+nh6bAx/jATf+srNtZ7BQuBsbuDLEdNhj0iSnpr 1X2A== X-Forwarded-Encrypted: i=1; AJvYcCVU9h32B1BUkN8YH5ce0wAqwuBayJX01y3oP1jqRpWL2QdANYyz7bvhvrjls3p/h8FGVnh9B13m2snblj4=@vger.kernel.org X-Gm-Message-State: AOJu0YzfHoDUSn/GGe6v2lb8CBRnC8MdKXTKMIodFLUWRj3SMnfR3pKF 5T3paG5ltxZBGN7LXFikMKeKBOfQOq7iRQxVGMYTVT3mkRt5hVSw0Wmr X-Gm-Gg: ATEYQzwveH+6Fw+YSe6hykVFw38ZDjY1zX2Np6Lmm+Sp8FntTWf+lWG1nyKVRqMDjZR mO9EzOnOLSML/mDtROyl2NfN5ySR17mPvq1InKZw3qpsjoSivPr2tLV0xNNRIkxEm9t3Yzjn2o0 urcLxEazNHpAsBbJJPgx0TbUZC22O34JaXbiKMom/nZoTMrc0N6hvJkMXyDw8h7mw5H+C+kTA4U RO1nsllOATP32LX3ePOZfX8oFW16dsOvqw3mNpR+PsU44EOvFjOr+SgiYY8KfEqKRFlRkKHx8dL b7qd6jRxFvDfxgHaQrAu6ySFbIrcWodLmBj0rq/9/F5Fm4FGTP6fgUTBaWnfSw+2UVsTsSgBED+ 9TMsD0ATdxySm7EmUAXgDQvj6vIoFQMQ9EYNTTOYHNFW8pz1rIV44afwwQi5CR4yOL4nbhzSyrz 8PB6F5isTasZrrDe13648kih/5KLxM/GRACbt+HhsTLQ== X-Received: by 2002:a17:90b:288b:b0:359:88c5:3ae4 with SMTP id 98e67ed59e1d1-35988c541c3mr3965793a91.25.1772456827351; Mon, 02 Mar 2026 05:07:07 -0800 (PST) Received: from debian.ari ([152.58.176.247]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-3597b448e38sm7444585a91.5.2026.03.02.05.07.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 02 Mar 2026 05:07:06 -0800 (PST) From: Archit Anant To: jic23@kernel.org, lars@metafoo.de, Michael.Hennerich@analog.com Cc: dlechner@baylibre.com, nuno.sa@analog.com, andy@kernel.org, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org, Archit Anant Subject: [PATCH v3 4/4] iio: adc: ad799x: use devm_iio_device_register and drop remove Date: Mon, 2 Mar 2026 18:36:32 +0530 Message-Id: <20260302130632.29144-5-architanant5@gmail.com> X-Mailer: git-send-email 2.39.5 In-Reply-To: <20260302130632.29144-1-architanant5@gmail.com> References: <20260302130632.29144-1-architanant5@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" Convert the driver to use the device-managed versions of iio_device_register() and iio_triggered_buffer_setup(). Because all resources (buffer, regulators, IRQs, IIO device) are now managed by the devm core, the unwinding order is guaranteed to be safe and correct. We can safely remove all manual error handling goto labels in ad799x_probe() and delete the ad799x_remove() function entirely. This eliminates boilerplate code and prevents future resource leaks. Suggested-by: David Lechner Signed-off-by: Archit Anant --- drivers/iio/adc/ad799x.c | 43 ++++++++++------------------------------ 1 file changed, 11 insertions(+), 32 deletions(-) diff --git a/drivers/iio/adc/ad799x.c b/drivers/iio/adc/ad799x.c index 1a96b5417ecf..2b40ef2da7a2 100644 --- a/drivers/iio/adc/ad799x.c +++ b/drivers/iio/adc/ad799x.c @@ -822,7 +822,7 @@ static int ad799x_probe(struct i2c_client *client) return ret; ret =3D regulator_get_voltage(st->reg); if (ret < 0) - goto error_disable_reg; + return ret; st->vcc_uv =3D ret; =20 ret =3D devm_add_action_or_reset(&client->dev, ad799x_reg_disable, st->re= g); @@ -835,7 +835,7 @@ static int ad799x_probe(struct i2c_client *client) ret =3D PTR_ERR_OR_ZERO(st->vref); if (ret) { if (ret !=3D -ENODEV) - goto error_disable_reg; + return ret; st->vref =3D NULL; dev_info(&client->dev, "Using VCC reference voltage\n"); } @@ -845,17 +845,17 @@ static int ad799x_probe(struct i2c_client *client) extra_config |=3D AD7991_REF_SEL; ret =3D regulator_enable(st->vref); if (ret) - goto error_disable_reg; + return ret; =20 ret =3D regulator_get_voltage(st->vref); if (ret < 0) - goto error_disable_vref; + return ret; st->vref_uv =3D ret; =20 ret =3D devm_add_action_or_reset(&client->dev, ad799x_reg_disable, st->vref); if (ret) - goto error_disable_reg; + return ret; } } =20 @@ -870,12 +870,12 @@ static int ad799x_probe(struct i2c_client *client) =20 ret =3D ad799x_update_config(st, st->chip_config->default_config | extra_= config); if (ret) - goto error_disable_vref; + return ret; =20 - ret =3D iio_triggered_buffer_setup(indio_dev, NULL, + ret =3D devm_iio_triggered_buffer_setup(&client->dev, indio_dev, NULL, &ad799x_trigger_handler, NULL); if (ret) - goto error_disable_vref; + return ret; =20 if (client->irq > 0) { ret =3D devm_request_threaded_irq(&client->dev, @@ -887,36 +887,16 @@ static int ad799x_probe(struct i2c_client *client) client->name, indio_dev); if (ret) - goto error_cleanup_ring; + return ret; } =20 mutex_init(&st->lock); =20 - ret =3D iio_device_register(indio_dev); + ret =3D devm_iio_device_register(&client->dev, indio_dev); if (ret) - goto error_cleanup_ring; + return ret; =20 return 0; - -error_cleanup_ring: - iio_triggered_buffer_cleanup(indio_dev); -error_disable_vref: - if (st->vref) - regulator_disable(st->vref); -error_disable_reg: - regulator_disable(st->reg); - - return ret; -} - -static void ad799x_remove(struct i2c_client *client) -{ - struct iio_dev *indio_dev =3D i2c_get_clientdata(client); - struct ad799x_state *st =3D iio_priv(indio_dev); - - iio_device_unregister(indio_dev); - - iio_triggered_buffer_cleanup(indio_dev); } =20 static int ad799x_suspend(struct device *dev) @@ -986,7 +966,6 @@ static struct i2c_driver ad799x_driver =3D { .pm =3D pm_sleep_ptr(&ad799x_pm_ops), }, .probe =3D ad799x_probe, - .remove =3D ad799x_remove, .id_table =3D ad799x_id, }; module_i2c_driver(ad799x_driver); --=20 2.39.5