Re: [PATCH 1/1] netfilter: Deletion of unnecessary checks before two function calls

Pablo Neira Ayuso
2014-11-19T13:38:40Z

On Tue, Nov 18, 2014 at 08:47:31PM +0100, SF Markus Elfring wrote:
> From: Markus Elfring <elfring@users.sourceforge.net>
> Date: Tue, 18 Nov 2014 20:37:05 +0100
>
> The functions free_percpu() and module_put() test whether their argument
> is NULL and then return immediately. Thus the test around the call is
> not needed.

@IPVS folks: Since this involves a nf_tables specific chunk, ack your
chunks and I'll put this into nf-next to speed up things.

Thanks.

> This issue was detected by using the Coccinelle software.
>
> Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
> ---
> net/netfilter/ipvs/ip_vs_ctl.c | 3 +--
> net/netfilter/ipvs/ip_vs_pe.c | 3 +--
> net/netfilter/ipvs/ip_vs_sched.c | 3 +--
> net/netfilter/ipvs/ip_vs_sync.c | 3 +--
> net/netfilter/nf_tables_api.c | 3 +--
> 5 files changed, 5 insertions(+), 10 deletions(-)
>
> diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c
> index fd3f444..7c5e40a 100644
> --- a/net/netfilter/ipvs/ip_vs_ctl.c
> +++ b/net/netfilter/ipvs/ip_vs_ctl.c
> @@ -465,8 +465,7 @@ __ip_vs_bind_svc(struct ip_vs_dest *dest, struct ip_vs_service *svc)
>
> static void ip_vs_service_free(struct ip_vs_service *svc)
> {
> - if (svc->stats.cpustats)
> - free_percpu(svc->stats.cpustats);
> + free_percpu(svc->stats.cpustats);
> kfree(svc);
> }
>
> diff --git a/net/netfilter/ipvs/ip_vs_pe.c b/net/netfilter/ipvs/ip_vs_pe.c
> index 1a82b29..0df17ca 100644
> --- a/net/netfilter/ipvs/ip_vs_pe.c
> +++ b/net/netfilter/ipvs/ip_vs_pe.c
> @@ -37,8 +37,7 @@ struct ip_vs_pe *__ip_vs_pe_getbyname(const char *pe_name)
> rcu_read_unlock();
> return pe;
> }
> - if (pe->module)
> - module_put(pe->module);
> + module_put(pe->module);
> }
> rcu_read_unlock();
>
> diff --git a/net/netfilter/ipvs/ip_vs_sched.c b/net/netfilter/ipvs/ip_vs_sched.c
> index 4dbcda6..199760c 100644
> --- a/net/netfilter/ipvs/ip_vs_sched.c
> +++ b/net/netfilter/ipvs/ip_vs_sched.c
> @@ -104,8 +104,7 @@ static struct ip_vs_scheduler *ip_vs_sched_getbyname(const char *sched_name)
> mutex_unlock(&ip_vs_sched_mutex);
> return sched;
> }
> - if (sched->module)
> - module_put(sched->module);
> + module_put(sched->module);
> }
>
> mutex_unlock(&ip_vs_sched_mutex);
> diff --git a/net/netfilter/ipvs/ip_vs_sync.c b/net/netfilter/ipvs/ip_vs_sync.c
> index eadffb2..cafe28d 100644
> --- a/net/netfilter/ipvs/ip_vs_sync.c
> +++ b/net/netfilter/ipvs/ip_vs_sync.c
> @@ -820,8 +820,7 @@ ip_vs_conn_fill_param_sync(struct net *net, int af, union ip_vs_sync_conn *sc,
>
> p->pe_data = kmemdup(pe_data, pe_data_len, GFP_ATOMIC);
> if (!p->pe_data) {
> - if (p->pe->module)
> - module_put(p->pe->module);
> + module_put(p->pe->module);
> return -ENOMEM;
> }
> p->pe_data_len = pe_data_len;
> diff --git a/net/netfilter/nf_tables_api.c b/net/netfilter/nf_tables_api.c
> index deeb95f..b115f54 100644
> --- a/net/netfilter/nf_tables_api.c
> +++ b/net/netfilter/nf_tables_api.c
> @@ -3472,8 +3472,7 @@ static int nf_tables_abort(struct sk_buff *skb)
> break;
> case NFT_MSG_NEWCHAIN:
> if (nft_trans_chain_update(trans)) {
> - if (nft_trans_chain_stats(trans))
> - free_percpu(nft_trans_chain_stats(trans));
> + free_percpu(nft_trans_chain_stats(trans));
>
> nft_trans_destroy(trans);
> } else {
> --
> 2.1.3
>