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: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0341f3e4-b43c-7f66-4123-cedc9d5516db@infradead.org>
Date:   Sun, 26 Apr 2020 20:39:10 -0700
From:   Randy Dunlap <rdunlap@...radead.org>
To:     "Ma, Jianpeng" <jianpeng.ma@...el.com>,
        Christoph Hellwig <hch@...radead.org>
Cc:     "axboe@...nel.dk" <axboe@...nel.dk>,
        "Williams, Dan J" <dan.j.williams@...el.com>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>
Subject: Re: block: remove unused header includes.

On 4/26/20 8:35 PM, Ma, Jianpeng wrote:
>> -----Original Message-----
>> From: Randy Dunlap <rdunlap@...radead.org>
>> Sent: Monday, April 27, 2020 11:06 AM
>> To: Ma, Jianpeng <jianpeng.ma@...el.com>; Christoph Hellwig
>> <hch@...radead.org>
>> Cc: axboe@...nel.dk; Williams, Dan J <dan.j.williams@...el.com>; linux-
>> kernel@...r.kernel.org
>> Subject: Re: block: remove unused header includes.
>>
>> Hi,
>>
>> On 4/26/20 7:56 PM, Ma, Jianpeng wrote:
>>> This used deheader(git@...lab.com:esr/deheader.git) to produce.
>>>
>>> Signed-off-by: Jianpeng Ma <jianpeng.ma@...el.com>
>>> ---
>>>  block/badblocks.c        |  6 ------
>>>  block/bfq-cgroup.c       | 10 ----------
>>>  block/bfq-iosched.c      | 13 -------------
>>>  block/bio-integrity.c    |  6 ------
>>>  block/bio.c              | 14 --------------
>>>  block/blk-cgroup.c       | 10 ----------
>>>  block/blk-core.c         | 24 ------------------------
>>>  block/blk-exec.c         |  5 -----
>>>  block/blk-flush.c        | 10 ----------
>>>  block/blk-integrity.c    |  6 ------
>>>  block/blk-ioc.c          |  7 -------
>>>  block/blk-lib.c          |  5 -----
>>>  block/blk-map.c          |  4 ----
>>>  block/blk-merge.c        |  5 -----
>>>  block/blk-mq-cpumap.c    |  8 --------
>>>  block/blk-mq-debugfs.c   |  6 ------
>>>  block/blk-mq-pci.c       |  4 ----
>>>  block/blk-mq-rdma.c      |  1 -
>>>  block/blk-mq-sched.c     |  7 -------
>>>  block/blk-mq-sysfs.c     | 15 +--------------
>>>  block/blk-mq-tag.c       |  5 -----
>>>  block/blk-mq-virtio.c    |  4 ----
>>>  block/blk-mq.c           | 22 ----------------------
>>>  block/blk-pm.c           |  4 ----
>>>  block/blk-settings.c     |  8 --------
>>>  block/blk-softirq.c      |  6 ------
>>>  block/blk-stat.c         |  5 -----
>>>  block/blk-sysfs.c        |  9 ---------
>>>  block/blk-throttle.c     |  5 -----
>>>  block/blk-timeout.c      |  5 -----
>>>  block/blk-wbt.c          |  6 ------
>>>  block/blk-zoned.c        |  7 -------
>>>  block/bounce.c           | 15 ---------------
>>>  block/bsg-lib.c          |  5 -----
>>>  block/bsg.c              | 11 -----------
>>>  block/cmdline-parser.c   |  1 -
>>>  block/elevator.c         | 15 ---------------
>>>  block/genhd.c            | 14 --------------
>>>  block/ioctl.c            |  8 --------
>>>  block/ioprio.c           | 11 -----------
>>>  block/kyber-iosched.c    |  9 ---------
>>>  block/mq-deadline.c      | 14 --------------
>>>  block/partitions/amiga.c |  1 -
>>>  block/partitions/core.c  |  4 ----
>>>  block/partitions/efi.c   |  3 ---
>>>  block/partitions/karma.c |  1 -
>>>  block/partitions/ldm.c   |  4 ----
>>>  block/partitions/mac.c   |  1 -
>>>  block/scsi_ioctl.c       | 14 --------------
>>>  block/sed-opal.c         |  9 ---------
>>>  block/t10-pi.c           |  1 -
>>>  fs/block_dev.c           | 16 ----------------
>>>  52 files changed, 1 insertion(+), 408 deletions(-)
>>>
>>> diff --git a/block/badblocks.c b/block/badblocks.c index
>>> 2e5f5697db35..4e4eb0fc9eb9 100644
>>> --- a/block/badblocks.c
>>> +++ b/block/badblocks.c
>>> @@ -8,12 +8,6 @@
>>>   */
>>>
>>>  #include <linux/badblocks.h>
>>> -#include <linux/seqlock.h>
>>
>> above is used by:
>> 	seq = read_seqbegin(&bb->lock);
>>
>>> -#include <linux/device.h>
>>
>> 	struct device is used in this source file.
>>
>>> -#include <linux/kernel.h>
>>> -#include <linux/module.h>
>>> -#include <linux/stddef.h>
>>
>> 	NULL is used in this source file.
>>
>>> -#include <linux/types.h>
>>
>> 	sector_t is used in this source file.
>>
>>>  #include <linux/slab.h>
>>>
>>>  /**
>>
>>
>>
>> Can you explain the criteria that 'deheader' use to decide that a header file can
>> be removed?
>>
> Deheader iterator remove the #include and do make. If no fail mean this #include can remove.

In some cases it just means that headerfile-a sucks in headerfile-b automagically,
but that's not what we want to see, according to rule #1.
We want all needed header files to be explicitly #included.

> 
>> And are you aware of rule #1 in Documentation/process/submit-checklist.rst:
>>
>> 1) If you use a facility then #include the file that defines/declares
>>    that facility.  Don't depend on other header files pulling in ones
>>    that you use.
>>
> Is this rule mean for #ifdef case?

It depends. We try not to do things like

#ifdef CONFIG_OPTIONA
#include <linux/optiona.h>
#endif

and instead just do
#include <linux/optiona.h>

but that's probably not a universal rule.

-- 
~Randy

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ