2015-09-13 12:26:02

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 00/39] drop null test before destroy functions

Recent commits to kernel/git/torvalds/linux.git have made the following
functions able to tolerate NULL arguments:

kmem_cache_destroy (commit 3942d29918522)
mempool_destroy (commit 4e3ca3e033d1)
dma_pool_destroy (commit 44d7175da6ea)

These patches remove the associated NULL tests for the files that I found
easy to compile test. If these changes are OK, I will address the
remainder later.

---

arch/x86/kvm/mmu.c | 6 --
block/bio-integrity.c | 7 --
block/bio.c | 7 --
block/blk-core.c | 3 -
block/elevator.c | 3 -
drivers/atm/he.c | 7 --
drivers/block/aoe/aoedev.c | 3 -
drivers/block/drbd/drbd_main.c | 21 ++-----
drivers/block/pktcdvd.c | 3 -
drivers/block/rbd.c | 6 --
drivers/dma/dmaengine.c | 6 --
drivers/firmware/google/gsmi.c | 3 -
drivers/gpu/drm/i915/i915_dma.c | 19 ++----
drivers/iommu/amd_iommu_init.c | 7 --
drivers/md/bcache/bset.c | 3 -
drivers/md/bcache/request.c | 3 -
drivers/md/bcache/super.c | 9 +--
drivers/md/dm-bufio.c | 3 -
drivers/md/dm-cache-target.c | 3 -
drivers/md/dm-crypt.c | 6 --
drivers/md/dm-io.c | 3 -
drivers/md/dm-log-userspace-base.c | 3 -
drivers/md/dm-region-hash.c | 4 -
drivers/md/dm.c | 13 +---
drivers/md/multipath.c | 3 -
drivers/md/raid1.c | 6 --
drivers/md/raid10.c | 9 +--
drivers/md/raid5.c | 3 -
drivers/mtd/nand/nandsim.c | 3 -
drivers/mtd/ubi/attach.c | 4 -
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 3 -
drivers/staging/lustre/lustre/llite/super25.c | 16 +----
drivers/staging/lustre/lustre/obdclass/genops.c | 24 ++------
drivers/staging/lustre/lustre/obdclass/lu_object.c | 6 --
drivers/staging/rdma/hfi1/user_sdma.c | 3 -
drivers/thunderbolt/ctl.c | 3 -
drivers/usb/gadget/udc/bdc/bdc_core.c | 3 -
drivers/usb/gadget/udc/gr_udc.c | 3 -
drivers/usb/gadget/udc/mv_u3d_core.c | 3 -
drivers/usb/gadget/udc/mv_udc_core.c | 3 -
drivers/usb/host/fotg210-hcd.c | 12 +---
drivers/usb/host/fusbh200-hcd.c | 12 +---
drivers/usb/host/whci/init.c | 3 -
drivers/usb/host/xhci-mem.c | 12 +---
fs/btrfs/backref.c | 3 -
fs/btrfs/delayed-inode.c | 3 -
fs/btrfs/delayed-ref.c | 12 +---
fs/btrfs/disk-io.c | 3 -
fs/btrfs/extent_io.c | 6 --
fs/btrfs/extent_map.c | 3 -
fs/btrfs/file.c | 3 -
fs/btrfs/inode.c | 18 ++----
fs/btrfs/ordered-data.c | 3 -
fs/dlm/memory.c | 6 --
fs/ecryptfs/main.c | 3 -
fs/ext4/crypto.c | 9 +--
fs/ext4/extents_status.c | 3 -
fs/ext4/mballoc.c | 3 -
fs/f2fs/crypto.c | 9 +--
fs/gfs2/main.c | 29 ++--------
fs/jbd2/journal.c | 15 +----
fs/jbd2/revoke.c | 12 +---
fs/jbd2/transaction.c | 6 --
fs/jffs2/malloc.c | 27 +++------
fs/nfsd/nfscache.c | 6 --
fs/nilfs2/super.c | 12 +---
fs/ocfs2/dlm/dlmlock.c | 3 -
fs/ocfs2/dlm/dlmmaster.c | 16 +----
fs/ocfs2/super.c | 18 ++----
fs/ocfs2/uptodate.c | 3 -
lib/debugobjects.c | 3 -
net/core/sock.c | 12 +---
net/dccp/ackvec.c | 12 +---
net/dccp/ccid.c | 3 -
net/sunrpc/sched.c | 12 +---
75 files changed, 180 insertions(+), 381 deletions(-)


2015-09-13 12:26:07

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 22/39] nfsd: drop null test before destroy functions

Remove unneeded NULL test.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@ expression x; @@
-if (x != NULL) {
\(kmem_cache_destroy\|mempool_destroy\|dma_pool_destroy\)(x);
x = NULL;
-}
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
fs/nfsd/nfscache.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
index 46ec934..116940c 100644
--- a/fs/nfsd/nfscache.c
+++ b/fs/nfsd/nfscache.c
@@ -217,10 +217,8 @@ void nfsd_reply_cache_shutdown(void)
drc_hashtbl = NULL;
drc_hashsize = 0;

- if (drc_slab) {
- kmem_cache_destroy(drc_slab);
- drc_slab = NULL;
- }
+ kmem_cache_destroy(drc_slab);
+ drc_slab = NULL;
}

/*


2015-09-13 12:26:03

by Julia Lawall

[permalink] [raw]
Subject: [PATCH 14/39] SUNRPC: drop null test before destroy functions

Remove unneeded NULL test.

The semantic patch that makes this change is as follows:
(http://coccinelle.lip6.fr/)

// <smpl>
@@ expression x; @@
-if (x != NULL)
\(kmem_cache_destroy\|mempool_destroy\|dma_pool_destroy\)(x);
// </smpl>

Signed-off-by: Julia Lawall <[email protected]>

---
net/sunrpc/sched.c | 12 ++++--------
1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
index b140c09..425ca2f 100644
--- a/net/sunrpc/sched.c
+++ b/net/sunrpc/sched.c
@@ -1092,14 +1092,10 @@ void
rpc_destroy_mempool(void)
{
rpciod_stop();
- if (rpc_buffer_mempool)
- mempool_destroy(rpc_buffer_mempool);
- if (rpc_task_mempool)
- mempool_destroy(rpc_task_mempool);
- if (rpc_task_slabp)
- kmem_cache_destroy(rpc_task_slabp);
- if (rpc_buffer_slabp)
- kmem_cache_destroy(rpc_buffer_slabp);
+ mempool_destroy(rpc_buffer_mempool);
+ mempool_destroy(rpc_task_mempool);
+ kmem_cache_destroy(rpc_task_slabp);
+ kmem_cache_destroy(rpc_buffer_slabp);
rpc_destroy_wait_queue(&delay_queue);
}



2015-09-14 11:56:40

by SF Markus Elfring

[permalink] [raw]
Subject: Re: [PATCH 00/39] drop null test before destroy functions

> Recent commits to kernel/git/torvalds/linux.git have made the following
> functions able to tolerate NULL arguments:
>
> kmem_cache_destroy (commit 3942d29918522)
> mempool_destroy (commit 4e3ca3e033d1)
> dma_pool_destroy (commit 44d7175da6ea)

How do you think about to extend an other SmPL script?

Related topic:
scripts/coccinelle/free: Delete NULL test before freeing functions
https://systeme.lip6.fr/pipermail/cocci/2015-May/001960.html
https://www.mail-archive.com/[email protected]/msg01855.html


> If these changes are OK, I will address the remainder later.

Would anybody like to reuse my general SmPL approach for similar source
code clean-up?

Regards,
Markus

2015-09-14 16:07:11

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH 14/39] SUNRPC: drop null test before destroy functions

ACK, but assuming Trond takes this one.--b.

On Sun, Sep 13, 2015 at 02:15:07PM +0200, Julia Lawall wrote:
> Remove unneeded NULL test.
>
> The semantic patch that makes this change is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @@ expression x; @@
> -if (x != NULL)
> \(kmem_cache_destroy\|mempool_destroy\|dma_pool_destroy\)(x);
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> net/sunrpc/sched.c | 12 ++++--------
> 1 file changed, 4 insertions(+), 8 deletions(-)
>
> diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
> index b140c09..425ca2f 100644
> --- a/net/sunrpc/sched.c
> +++ b/net/sunrpc/sched.c
> @@ -1092,14 +1092,10 @@ void
> rpc_destroy_mempool(void)
> {
> rpciod_stop();
> - if (rpc_buffer_mempool)
> - mempool_destroy(rpc_buffer_mempool);
> - if (rpc_task_mempool)
> - mempool_destroy(rpc_task_mempool);
> - if (rpc_task_slabp)
> - kmem_cache_destroy(rpc_task_slabp);
> - if (rpc_buffer_slabp)
> - kmem_cache_destroy(rpc_buffer_slabp);
> + mempool_destroy(rpc_buffer_mempool);
> + mempool_destroy(rpc_task_mempool);
> + kmem_cache_destroy(rpc_task_slabp);
> + kmem_cache_destroy(rpc_buffer_slabp);
> rpc_destroy_wait_queue(&delay_queue);
> }
>

2015-09-14 16:06:59

by J. Bruce Fields

[permalink] [raw]
Subject: Re: [PATCH 22/39] nfsd: drop null test before destroy functions

Thanks, applying.--b.

On Sun, Sep 13, 2015 at 02:15:15PM +0200, Julia Lawall wrote:
> Remove unneeded NULL test.
>
> The semantic patch that makes this change is as follows:
> (http://coccinelle.lip6.fr/)
>
> // <smpl>
> @@ expression x; @@
> -if (x != NULL) {
> \(kmem_cache_destroy\|mempool_destroy\|dma_pool_destroy\)(x);
> x = NULL;
> -}
> // </smpl>
>
> Signed-off-by: Julia Lawall <[email protected]>
>
> ---
> fs/nfsd/nfscache.c | 6 ++----
> 1 file changed, 2 insertions(+), 4 deletions(-)
>
> diff --git a/fs/nfsd/nfscache.c b/fs/nfsd/nfscache.c
> index 46ec934..116940c 100644
> --- a/fs/nfsd/nfscache.c
> +++ b/fs/nfsd/nfscache.c
> @@ -217,10 +217,8 @@ void nfsd_reply_cache_shutdown(void)
> drc_hashtbl = NULL;
> drc_hashsize = 0;
>
> - if (drc_slab) {
> - kmem_cache_destroy(drc_slab);
> - drc_slab = NULL;
> - }
> + kmem_cache_destroy(drc_slab);
> + drc_slab = NULL;
> }
>
> /*

2015-09-14 16:25:17

by Trond Myklebust

[permalink] [raw]
Subject: Re: [PATCH 14/39] SUNRPC: drop null test before destroy functions

On Mon, Sep 14, 2015 at 12:07 PM, J. Bruce Fields <[email protected]> wrote:
> ACK, but assuming Trond takes this one.--b.

No problem. I'll pick it up...

Cheers
Trond

> On Sun, Sep 13, 2015 at 02:15:07PM +0200, Julia Lawall wrote:
>> Remove unneeded NULL test.
>>
>> The semantic patch that makes this change is as follows:
>> (http://coccinelle.lip6.fr/)
>>
>> // <smpl>
>> @@ expression x; @@
>> -if (x != NULL)
>> \(kmem_cache_destroy\|mempool_destroy\|dma_pool_destroy\)(x);
>> // </smpl>
>>
>> Signed-off-by: Julia Lawall <[email protected]>
>>
>> ---
>> net/sunrpc/sched.c | 12 ++++--------
>> 1 file changed, 4 insertions(+), 8 deletions(-)
>>
>> diff --git a/net/sunrpc/sched.c b/net/sunrpc/sched.c
>> index b140c09..425ca2f 100644
>> --- a/net/sunrpc/sched.c
>> +++ b/net/sunrpc/sched.c
>> @@ -1092,14 +1092,10 @@ void
>> rpc_destroy_mempool(void)
>> {
>> rpciod_stop();
>> - if (rpc_buffer_mempool)
>> - mempool_destroy(rpc_buffer_mempool);
>> - if (rpc_task_mempool)
>> - mempool_destroy(rpc_task_mempool);
>> - if (rpc_task_slabp)
>> - kmem_cache_destroy(rpc_task_slabp);
>> - if (rpc_buffer_slabp)
>> - kmem_cache_destroy(rpc_buffer_slabp);
>> + mempool_destroy(rpc_buffer_mempool);
>> + mempool_destroy(rpc_task_mempool);
>> + kmem_cache_destroy(rpc_task_slabp);
>> + kmem_cache_destroy(rpc_buffer_slabp);
>> rpc_destroy_wait_queue(&delay_queue);
>> }
>>