lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <appnjr2asjxadbvcf2fosrkvfwj3dkcnvq7tk74i4xa4ku5zr3@c7qedqneukyn>
Date: Wed, 11 Feb 2026 12:55:30 +0000
From: Rodrigo Alencar <455.rodrigo.alencar@...il.com>
To: Andy Shevchenko <andriy.shevchenko@...el.com>, 
	rodrigo.alencar@...log.com
Cc: linux-kernel@...r.kernel.org, linux-iio@...r.kernel.org, 
	devicetree@...r.kernel.org, Michael Hennerich <Michael.Hennerich@...log.com>, 
	Lars-Peter Clausen <lars@...afoo.de>, Jonathan Cameron <jic23@...nel.org>, 
	David Lechner <dlechner@...libre.com>, Andy Shevchenko <andy@...nel.org>, Rob Herring <robh@...nel.org>, 
	Krzysztof Kozlowski <krzk+dt@...nel.org>, Conor Dooley <conor+dt@...nel.org>
Subject: Re: [PATCH v4 03/11] iio: amplifiers: ad8366: remove unused include
 headers

On 26/02/10 09:57PM, Andy Shevchenko wrote:
> On Tue, Feb 10, 2026 at 07:42:03PM +0000, Rodrigo Alencar via B4 Relay wrote:
> 
> > Apply IWYU principle, removing the following headers:
> > - linux/device.h: no usage of devm_add_action_or_reset, device_attr...
> > - linux/kernel.h: no usage of container_of, kasprintf, ...
> > - linux/slab.h: memory management handled by iio
> > - linux/sysfs.h: sysfs interaction is managed by iio
> > - linux/iio/sysfs.h: not using iio device attributes in this driver
> 
> Yeah, but it also means to add (a lot of) missed headers...
> 
> array_size,h
> dev_printk.h
> mod_devicetable.h
> mutex.h
> stddef.h

Are there proper guidelines for IWYU in the kernel?
Include headers end up including a bunch of others, so
the build finishes successfully anyways.
I understand that the concern is build time, so we better
include all small parts that are needed rather than a generic
header that includes that and much more.

This is the output of the iwyu tool without this patch series:

	drivers/iio/amplifiers/ad8366.c should add these lines:
	#include <stddef.h>                     // for NULL
	#include "asm-generic/errno-base.h"     // for EINVAL, ENOMEM
	#include "linux/array_size.h"           // for ARRAY_SIZE
	#include "linux/compiler_attributes.h"  // for __aligned
	#include "linux/dev_printk.h"           // for dev_err
	#include "linux/iio/types.h"            // for iio_chan_info_enum, iio_chan_...
	#include "linux/math.h"                 // for abs
	#include "linux/minmax.h"               // for __cmp_op_max
	#include "linux/mod_devicetable.h"      // for spi_device_id
	#include "linux/mutex.h"                // for mutex_lock, mutex_unlock, mut...
	#include "linux/mutex_types.h"          // for mutex
	#include "vdso/bits.h"                  // for BIT

	drivers/iio/amplifiers/ad8366.c should remove these lines:
	- #include <linux/device.h>  // lines 14-14
	- #include <linux/iio/sysfs.h>  // lines 26-26
	- #include <linux/kernel.h>  // lines 15-15
	- #include <linux/slab.h>  // lines 16-16
	- #include <linux/sysfs.h>  // lines 17-17

	The full include-list for drivers/iio/amplifiers/ad8366.c:
	#include <linux/bitrev.h>               // for bitrev8
	#include <linux/err.h>                  // for IS_ERR, PTR_ERR
	#include <linux/gpio/consumer.h>        // for devm_gpiod_get_optional, gpio...
	#include <linux/iio/iio.h>              // for iio_priv, iio_dev, iio_chan_spec
	#include <linux/module.h>               // for MODULE_AUTHOR, MODULE_DESCRIP...
	#include <linux/regulator/consumer.h>   // for regulator_disable, devm_regul...
	#include <linux/spi/spi.h>              // for spi_device, spi_get_device_id
	#include <stddef.h>                     // for NULL
	#include "asm-generic/errno-base.h"     // for EINVAL, ENOMEM
	#include "linux/array_size.h"           // for ARRAY_SIZE
	#include "linux/compiler_attributes.h"  // for __aligned
	#include "linux/dev_printk.h"           // for dev_err
	#include "linux/iio/types.h"            // for iio_chan_info_enum, iio_chan_...
	#include "linux/math.h"                 // for abs
	#include "linux/minmax.h"               // for __cmp_op_max
	#include "linux/mod_devicetable.h"      // for spi_device_id
	#include "linux/mutex.h"                // for mutex_lock, mutex_unlock, mut...
	#include "linux/mutex_types.h"          // for mutex
	#include "vdso/bits.h"                  // for BIT

After all the patches are applied the output is slightly different:

	drivers/iio/amplifiers/ad8366.c should add these lines:
	#include <stddef.h>                     // for size_t, NULL
	#include "asm-generic/errno-base.h"     // for EINVAL, ENOMEM
	#include "asm-generic/int-ll64.h"       // for u8
	#include "linux/compiler_attributes.h"  // for __aligned
	#include "linux/dev_printk.h"           // for dev_err_probe
	#include "linux/iio/types.h"            // for iio_chan_info_enum, iio_chan_...
	#include "linux/math.h"                 // for DIV_ROUND_CLOSEST
	#include "linux/minmax.h"               // for __cmp_op_max
	#include "linux/mutex_types.h"          // for mutex
	#include "linux/types.h"                // for __be16
	#include "vdso/bits.h"                  // for BIT

	The full include-list for drivers/iio/amplifiers/ad8366.c:
	#include <linux/bitrev.h>               // for bitrev8
	#include <linux/err.h>                  // for IS_ERR, PTR_ERR
	#include <linux/gpio/consumer.h>        // for devm_gpiod_get_optional, gpio...
	#include <linux/iio/iio.h>              // for iio_priv, iio_dev, iio_chan_spec
	#include <linux/mod_devicetable.h>      // for kernel_ulong_t, spi_device_id
	#include <linux/module.h>               // for MODULE_DEVICE_TABLE, MODULE_A...
	#include <linux/mutex.h>                // for mutex_lock, mutex_unlock, dev...
	#include <linux/regulator/consumer.h>   // for devm_regulator_get_enable
	#include <linux/reset.h>                // for devm_reset_control_get_option...
	#include <linux/spi/spi.h>              // for spi_write, spi_get_device_id
	#include <linux/unaligned.h>            // for put_unaligned_be16
	#include <stddef.h>                     // for size_t, NULL
	#include "asm-generic/errno-base.h"     // for EINVAL, ENOMEM
	#include "asm-generic/int-ll64.h"       // for u8
	#include "linux/compiler_attributes.h"  // for __aligned
	#include "linux/dev_printk.h"           // for dev_err_probe
	#include "linux/iio/types.h"            // for iio_chan_info_enum, iio_chan_...
	#include "linux/math.h"                 // for DIV_ROUND_CLOSEST
	#include "linux/minmax.h"               // for __cmp_op_max
	#include "linux/mutex_types.h"          // for mutex
	#include "linux/types.h"                // for __be16
	#include "vdso/bits.h"                  // for BIT

-- 
Kind regards,

Rodrigo Alencar

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ