From nobody Wed Jun 17 06:28:06 2026 Received: from mail-wr1-f52.google.com (mail-wr1-f52.google.com [209.85.221.52]) (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 A7AA53B8920 for ; Mon, 27 Apr 2026 11:27:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.52 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777289276; cv=none; b=T/eSo58BJEFZX5Nb3wGKn6jfPoW1Zrt8wAZ0v9ojlV8/Po3VWTm+/CntsOToT8sjHnkvv3fNPHgXemORNN+gP0l68zoQtlYvplgoBUVqPhRIV47EslhuhbOEFp8hkMLy7uiDPEd0XcXSf7jzj1XBBt2kCx86MnqyqGc6q+mT3Bc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777289276; c=relaxed/simple; bh=RBabLqD+tGh8IYvzJyarXxDfNs7n/EFI2FJh1Goq9zA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=l1nInemefSoiRenGvKmstqG1DkqsiR1ZVFKtlra6oDFmo9qBDO6qBCjrkj++z9kuBF9NFKRStQatnbFWesvOFlBYog6Q4EX9fwEwuRgwtmqusPGzguEYtWFb8f4VN4YVSPyCgdIpJObxwnyATnIr9BF9IkUyO6yNxIZk+TAhNtM= 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=iUNG8VHT; arc=none smtp.client-ip=209.85.221.52 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="iUNG8VHT" Received: by mail-wr1-f52.google.com with SMTP id ffacd0b85a97d-43d7dab87e1so1201770f8f.3 for ; Mon, 27 Apr 2026 04:27:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1777289273; x=1777894073; 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=WMwv0fkBxFJwWQsLP7Ii5ugXzxTh1cB00PWr4huj+AQ=; b=iUNG8VHT5Y6XfozrKbnAHMFrRxs9m3lDZ55YyAfpdmZGNmByLL2A1Q+Cil3ir8m2Bg 4xlV9je93kxjFCnLQfqdnIyuQthcVmmNsHnAaIxUj3ANhef0MXBC/SctU7+4uEmzG4rt XMKCxYgr0A+odL5iTdkTKbfq1q9pSBd5j0rW7gDIPUBzzVkYuYdl7IgDuggb04mulp5O VAmICfBZIaweuAqxvmah2UEUKc3Aj/Lpg4pUM+o1KcU2ZYjYO+RscogvkrJ8itFm03fi gcmqstfFn1J2Rrvg+hL2i4+/xBBJr5WKsaA9pc1XkGDsx/eSLB1TvO/Ec3i4K52VLAg4 6jBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777289273; x=1777894073; 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=WMwv0fkBxFJwWQsLP7Ii5ugXzxTh1cB00PWr4huj+AQ=; b=Lt6WTA8Blrt0b0B5r40usFxsMCZTfkuyewXjtFrWojRC7dTwm7JFTZkHRRrmd9P4n5 qEbYZ56+quZivU6S2nUcDmBRXa2oG2sfQwF14nXVQkvaOqWS0nq4f6Ggcjj7srRT51x0 3XTZVvOiy1VFrkNShqBiOAgtQVi+m7pqFIhtjsE02htSLhTLo4cEjeirJ5bfKl5cE6af Fbmr7Pp2bjg3rW1oTauJitQKKEi4FG0Yse4qJbzHrqwU6sncTaWdukNJeXGYi2bQedZO 0G+e7Ws9CXz70XdNFGSjwBEM5MdSnJy8+5Piid3FGE9fVq/NyaiB33nbiS0Yv7fOH/TA /AUw== X-Forwarded-Encrypted: i=1; AFNElJ9q12gg5PM+0ZhimzYX9cdtyjaKzNNf5yVJ8k8XeCGSrOaantywe6Q2g3FkrlNaclbaXPBptyih7bhUiV0=@vger.kernel.org X-Gm-Message-State: AOJu0Yy+ooy1FkdXBpYMlAl6iPCyn0t1Y4aTi0lHraZhI5Erzk4jT1LO cYlZ1SsqFsoST5puzdFeGVlvq0y8B0yAFzpXUgipUndbpzQByk/7swum X-Gm-Gg: AeBDievJhCxwWtsmq5qJTvUEnb2J1OVR5Jr5I6Cool5QBlpLFpNxfLGmdwitwJEGvwR hZqzkacX6FrxbjbVcvVgBXiCy+9P9b713CQ431oL6liUvVvX2R4YXiLeWv7lP5nIXjJ0V9ynmnn s9hS8XhCuzqVza8adhYJme21pYrO8xB3dkWCqK35NeFqgddNoDHEQ5MzirL8YrUiO1jNdTYPZGg +VJ/eF2JJ1PAi1X3jxSiqktYXf/5Q77Xd2D7CRJ4NDhghekXt7umgFjfInByuY1MKEKHmFnQiSN RHt9q6Ngo+nCbE4JqypLDP9cq2XCNwvLHOw7Y0iYdLyHM7lXyl71G2VX4CBLcPZ+4rPSigwrxYl 4eNIHAIy3v2Cz3X1IaZxyUPCqi+8QoLY/aXn1FyHsIBhUEg0PF0VpR5E+MIhsCdV3kuDwWc8Im2 CnTIOXKzcqWz0CtZq6FK5co7uRINkX9UpSI2cGHjkQzcfljKEXM1JfxbjGpArP9a27mXKjkmZog 5yHKRd7ewOoa5dUPR1vq/dR2fKY7JrZlEehEzEESDMLseX2ikPibPBoHF+JnyI= X-Received: by 2002:a05:600c:154c:b0:48a:5758:7999 with SMTP id 5b1f17b1804b1-48a57587e4bmr202154105e9.4.1777289272811; Mon, 27 Apr 2026 04:27:52 -0700 (PDT) Received: from fedora ([149.3.87.76]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-488fc0f82bbsm1342961895e9.3.2026.04.27.04.27.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Apr 2026 04:27:52 -0700 (PDT) From: Giorgi Tchankvetadze To: antoniu.miclaus@analog.com, 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, Giorgi Tchankvetadze , Jonathan Cameron , Andy Shevchenko Subject: [PATCH v2] iio: adc: ti-ads7138: replace kmalloc() with stack allocation in i2c_write_block Date: Mon, 27 Apr 2026 15:27:07 +0400 Message-ID: <20260427112705.71138-3-giorgitchankvetadze1997@gmail.com> X-Mailer: git-send-email 2.52.0 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" The ads7138_i2c_write_block() function currently utilizes kmalloc() to allocate a buffer for I2C transfers. However, the length parameter passed to this function is strictly 2 bytes across all driver invocations, making the total payload buffer size exactly 4 bytes. Invoking the heap allocator for a 4-byte buffer introduces unnecessary SLUB overhead.=20 Replace the kmalloc() call with a statically sized 4-byte stack array. Add a boundary check returning -EINVAL to ensure future driver modifications do not overflow the stack buffer if a length greater than 2 is requested. Furthermore, dropping the dynamic allocation entirely removes the need to include (which was the original motivation for this patch) and streamlines the PIO transfer path. Suggested-by: Jonathan Cameron Suggested-by: Andy Shevchenko Signed-off-by: Giorgi Tchankvetadze --- drivers/iio/adc/ti-ads7138.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/iio/adc/ti-ads7138.c b/drivers/iio/adc/ti-ads7138.c index ee5c1b8e3a8e..172893cbc17d 100644 --- a/drivers/iio/adc/ti-ads7138.c +++ b/drivers/iio/adc/ti-ads7138.c @@ -102,21 +102,20 @@ static const int ads7138_oversampling_ratios[] =3D { static int ads7138_i2c_write_block(const struct i2c_client *client, u8 reg, u8 *values, u8 length) { + u8 buf[4]; int ret; - int len =3D length + 2; /* "+ 2" for OPCODE and reg */ =20 - u8 *buf __free(kfree) =3D kmalloc(len, GFP_KERNEL); - if (!buf) - return -ENOMEM; + if (length !=3D 2) + return -EINVAL; =20 buf[0] =3D ADS7138_OPCODE_BLOCK_WRITE; buf[1] =3D reg; memcpy(&buf[2], values, length); =20 - ret =3D i2c_master_send(client, buf, len); + ret =3D i2c_master_send(client, buf, ARRAY_SIZE(buf)); if (ret < 0) return ret; - if (ret !=3D len) + if (ret !=3D ARRAY_SIZE(buf)) return -EIO; =20 return 0; --=20 2.52.0