From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.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 88E912F5321 for ; Sat, 22 Aug 2026 08:08:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.50 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787386107; cv=none; b=oxrN0w1iS1LN+kQJmnFV8zC++19oUrJhLxOJF592z5GG6PdxKz5tokdoAbzmOrisVXTS/CuWkbZdNbo+E4tHDsgvgj1qxuEcQc6ZmYAxhROSr6T9mDboDb5S9bNolsBnJnVemdEsRoRzN9AHRhztJ20P/eZ/1yescJgKS9OUd0Y= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787386107; c=relaxed/simple; bh=wqmQ16BAqy86KFYeJLtEnDMdkphx8CsFzjaDh5ONv+0=; h=Date:From:To:Cc:Subject:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=VFjVw24eCIyqq1vn6YyiRCM3kunvOwjm119bjhPqf7mc6zo17Q4HK79o99kbGN2WppfEK+9PSpT+NZsZkhWYp9i6SRUl45wk7tfdtySV40liuC/k+hyzfgIG6GRjpIxsh9xIQqx+x1aNLrA/N+czllBdKUsMPauVVVTkmK/MecY= 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=FU/JqV1F; arc=none smtp.client-ip=209.85.208.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="FU/JqV1F" Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-6a1542cdb53so2288189a12.2 for ; Sat, 22 Aug 2026 01:08:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787386104; x=1787990904; darn=vger.kernel.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:from:to:cc:subject :date:message-id:reply-to:content-type; bh=gIM9PtSc7DDddvJO+LR6IiAnlyIuGLagxq0nTtp4UGM=; b=FU/JqV1FRV9tY+Yn7qAH7oGHpQo5TFLvPmQtcdHpF58ySScNNR0n/aFEQ5APd5WnBz 6ibONB+vA1L2HZyjCtykBoXM4FVh+mxKcLoEIBlf0CwOLieEdvZnhEJYYUxX4Py8aPkk G1sOBBmS9Lz8oi2aVudnObBOFi1tUIovnJJlbW65PQaWwMjTvZbRkLEAzOLtOmYyA0cF pb2sx1LBr3ljml8nf6F65Au1XUCy1SwZpjaslf85QtD7Fde8ym+1BOO5TuaC+ZB6nGL9 JcGw5Pk34pEwjSVAHf5JtPw1nWkrZf/aABGBKmYxRrxfc1pLCfW2zNCr3YiNSN9O3ewl 1Jfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787386104; x=1787990904; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:subject:cc:to:from:date:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=gIM9PtSc7DDddvJO+LR6IiAnlyIuGLagxq0nTtp4UGM=; b=Bh5NoknXYd1mX7tQHTGxOuoGE6t+BHPOvHjEOVLHCdlRwTtDvlGND69nmdlFqx9taz SjzHtFCnNBrRyS+fZrg33J5cuNl7NMqsydibkibDji9gRmZq5T91VNNSojWohisy/36I 3kbEBYnNJhr7QpBOqdsya/PziKaxKXTbV9Wwb6S61ZCNhYdedXHlYNiuWoKG+MN8FdDE RmQP5Ja0wxV5RzERswNYpEuQ6shlFhqpcyzMWiHfKqG+c2OnDul6X/eILq6qnXA7oaOb m3gNqwxWEyGwZfxNOhR0FkHFKwlqL89Zs9SVJMJfaxp9ZcR2AhmFx8XeKWUS9ZC4GMaC RhOg== X-Forwarded-Encrypted: i=1; AHgh+RqM0k+dvLTmLK2b9W3uNcH4o6mklHHtMvTbW1pDrwUiIHywhg2LhcjytWuftCLShEjZFC05JhJSGlhQuac=@vger.kernel.org X-Gm-Message-State: AFuF++kE696HVpxf1giF/HQAgspx84bwqqK4Q6TC/nABkA4Kud16iu5U 0rM/EQYIIzujrIsP8Z+UGb+jtgEzrTOkj3jR4TkOjhpUuoPPpSkTUxbEmibwdCcgRZQ= X-Gm-Gg: AR+sD10VfEYngtiOLFTqdxQ0Tr9c+9vpSiNTj0Npk4WwHXlSJ45Y7ffDj1llOgsJEk5 mDwRwGRZAib8mjZU8xXrvNX/YyFwrNvwG/N46BG9tmxO0z/QDavi8aMCGVs2SIDXKV0VxT3yBzk /Ho5iFicNH8RMnsHqIoC1mhYv9Wgpuv5Q2AjJzRihTUuzM+cttVS91V4ztIOG4oyK1Tv5J+1EfG dN63kMFqIyqKcV4Ur34finSWCsKupXoPN2A3A2okOv/5qK1yXeiAdl5/FkriA3NnqIzR2PjNnlU 0YmAyH6p+8JV5BSmzHvKyvHN9AmXl0BD0QHTELf7gWrLNrG6Dx3KKrzOfsziH8qOkVUh/5LO1iD Ih7ft/PyZO1KJ14vdgZhkrJSbG2TqyrQqiHqZF//cHQdp2Iof1GlLKAO20MS1syjKMZjxNxTUig JuLqBHWMopF03TaVO9m1nXwCI/NcQj7k0f1lqLiCxegjTWivsulehaPZdPx9wDVkhyU40FxhfNR xJGVvoM3uQ31A1o5ZM77WulqMYjT5Qiybaz/odfq4j8iAGWIY8dDvEK43UQyIBLCBTAamqf1+Af Edvk3uHPexKDlypHHJiCKSQk68CEyWJQPPzGHA1YqKg/aOE7fExLFC7iwAfWL3KYM3abnfqSpih jBfg0JnYysO4HXvrUNpkv X-Received: by 2002:a05:6402:434a:b0:6a3:691a:9d82 with SMTP id 4fb4d7f45d1cf-6a582af951cmr4955201a12.3.1787386103677; Sat, 22 Aug 2026 01:08:23 -0700 (PDT) Received: from systembl0wer ([2a02:8308:4092:11f0::f9f]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-6a3ff178289sm10954557a12.30.2026.08.22.01.08.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 22 Aug 2026 01:08:23 -0700 (PDT) Date: Sat, 22 Aug 2026 10:08:22 +0200 From: Joshua Crofts To: Salah Triki Cc: Nuno =?UTF-8?B?U8Oh?= , Michael Hennerich , Esteban Blanc , Jonathan Cameron , David Lechner , Andy Shevchenko , linux@analog.com, linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH] iio: adc: ad4030: fix invalid oversampling_ratio validation Message-ID: <20260822100822.2a4725d4@systembl0wer> In-Reply-To: <20260822021935.17058-1-salah.triki@gmail.com> References: <20260822021935.17058-1-salah.triki@gmail.com> X-Mailer: Claws Mail 4.4.0 (GTK 3.24.52; x86_64-redhat-linux-gnu) Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit On Sat, 22 Aug 2026 03:19:35 +0100 Salah Triki wrote: > ad4030_set_avg_frame_len() computes avg_log2 = ilog2(avg_val) before > validating avg_val, and the subsequent range check only rejects > negative values or values above the maximum supported OSR. It does > not reject avg_val == 0, nor values that are not exact powers of 2. > > - avg_val == 0 passes the check (0 is not < 0 and not > max), so > ilog2(0) is called with an undefined/garbage result. > > - Non-power-of-2 values (e.g. avg_val == 3) also pass the check and > silently get rounded down by ilog2() to the nearest lower power of > 2, so userspace can write a value to the oversampling_ratio sysfs > attribute that does not match what actually gets programmed into > hardware, without any error being reported. > > Only powers of 2 in [1, 65536] are valid OSR values, as listed in > ad4030_average_modes[]. Validate avg_val fully before computing its > log2, using is_power_of_2() and requiring avg_val > 0. > > Fixes: 949abd1ca5a4 ("iio: adc: ad4030: add averaging support") > Signed-off-by: Salah Triki > --- > drivers/iio/adc/ad4030.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/drivers/iio/adc/ad4030.c b/drivers/iio/adc/ad4030.c > index 9c5f19321e3b..93d9f143cc91 100644 > --- a/drivers/iio/adc/ad4030.c > +++ b/drivers/iio/adc/ad4030.c > @@ -751,9 +751,11 @@ static int ad4030_set_avg_frame_len(struct iio_dev *dev, int avg_val) > int freq_hz; > int ret; > > - if (avg_val < 0 || avg_val > ad4030_average_modes[last_avg_idx]) > + if (avg_val <= 0 || avg_val > ad4030_average_modes[last_avg_idx] || !is_power_of_2(avg_val)) > return -EINVAL; > > + avg_log2 = ilog2(avg_val); > + > if (st->offload_trigger) { > /* > * The sample averaging and sampling frequency configurations This seems correct. How was this found? By reading the code or some tool/LLM? -- Kind regards, Joshua Crofts