Messages in this thread | | | Subject | Re: [PATCH v2] checkpatch: check for nested unlikely calls | From | Denis Efremov <> | Date | Wed, 28 Aug 2019 18:36:53 +0300 |
| |
On 8/28/19 4:32 PM, Denis Efremov wrote: > IS_ERR, IS_ERR_OR_NULL, IS_ERR_VALUE already contain unlikely optimization > internally. Thus, there is no point in calling these functions under > likely/unlikely.
It looks like this rule could be extended with this list: CHECK_DATA_CORRUPTION GLOCK_BUG_ON SPIN_BUG_ON RWLOCK_BUG_ON DCCP_BUG_ON GEM_BUG_ON BUG_ON WARN WARN_TAINT WARN_ON_ONCE WARN_ONCE WARN_TAINT_ONCE WARN_ON_SMP
However, grep shows that maybe only BUG_ON, WARN_ON, WARN, WARN_ON_ONCE worth checking: git grep 'likely(\s*\(CHECK_DATA_CORRUPTION\|GLOCK_BUG_ON\|SPIN_BUG_ON\|RWLOCK_BUG_ON\|DCCP_BUG_ON\|GEM_BUG_ON\|BUG_ON\|WARN\|WARN_TAINT\|WARN_ON_ONCE\|WARN_ONCE\|WARN_TAINT_ONCE\|WARN_ON_SMP\)' . drivers/gpu/drm/msm/disp/mdp5/mdp5_ctl.c: if (unlikely(WARN_ON(!mixer))) { drivers/gpu/drm/msm/disp/mdp5/mdp5_ctl.c: if (unlikely(WARN_ON(ctl_cfg->count > MAX_CTL))) { drivers/gpu/drm/msm/disp/mdp_format.c: if (unlikely(WARN_ON(type >= CSC_MAX))) drivers/net/ethernet/mellanox/mlx5/core/en_accel/ktls_tx.c: if (unlikely(WARN_ON_ONCE(tls_ctx->netdev != netdev))) drivers/net/wimax/i2400m/tx.c: if (unlikely(WARN_ON(pad_buf == NULL drivers/xen/events/events_base.c: if (unlikely(WARN(irq >= nr_irqs, "Invalid irq %d!\n", irq))) fs/open.c: if (unlikely(WARN_ON(!f->f_op))) { fs/xfs/xfs_buf.c: if (unlikely(WARN_ON(!bp->b_ops || !bp->b_ops->magic[idx]))) fs/xfs/xfs_buf.c: if (unlikely(WARN_ON(!bp->b_ops || !bp->b_ops->magic16[idx])))
> +# nested likely/unlikely calls if ($line =~ /\b(?:(?:un)?likely)\s*\(\s*!?\s*((?:IS_ERR(?:_OR_NULL|_VALUE)?)|(?:BUG_ON|WARN(?:_ON(?:_ONCE)?)?)))/) { or maybe even to match all possible WARNs: if ($line =~ /\b(?:(?:un)?likely)\s*\(\s*!?\s*((?:IS_ERR(?:_OR_NULL|_VALUE)?)|(?:BUG_ON|WARN)))/) { > + WARN("LIKELY_MISUSE", > + "nested (un)?likely calls, unlikely already used in $1 internally\n" . $herecurr); > + }
Any suggestions for v3?
Thanks, Denis
| |