ALSA/ASoC: replace ternary operator with min()

Message ID 3d74bcaf.5.1840fa4d439.Coremail.wangkailong@jari.cn
State New
Headers
Series ALSA/ASoC: replace ternary operator with min() |

Commit Message

KaiLong Wang Oct. 25, 2022, 2:56 p.m. UTC
  Fix the following coccicheck warning:

sound/soc/soc-ops.c:817: WARNING opportunity for min()
sound/core/vmaster.c:73: WARNING opportunity for min()
sound/pci/hda/hda_codec.c:337: WARNING opportunity for min()
sound/pci/ctxfi/ctatc.c:448: WARNING opportunity for min()
sound/pci/ctxfi/ctatc.c:387: WARNING opportunity for min()

Signed-off-by: KaiLong Wang <wangkailong@jari.cn>
---
 sound/core/vmaster.c      | 2 +-
 sound/pci/ctxfi/ctatc.c   | 4 ++--
 sound/pci/hda/hda_codec.c | 2 +-
 sound/soc/soc-ops.c       | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)
  

Comments

Mark Brown Oct. 25, 2022, 5:01 p.m. UTC | #1
On Tue, Oct 25, 2022 at 10:56:11PM +0800, wangkailong@jari.cn wrote:
> Fix the following coccicheck warning:
> 
> sound/soc/soc-ops.c:817: WARNING opportunity for min()

>  	kfree(uctl);
> -	return err < 0 ? err : 0;
> +	return min(err, 0);

I don't think this is a good warning, while I'm no big fan of the
ternery operator the new code is less clear about the intent than the
old code.
  
Takashi Iwai Oct. 26, 2022, 5:28 a.m. UTC | #2
On Tue, 25 Oct 2022 19:01:32 +0200,
Mark Brown wrote:
> 
> On Tue, Oct 25, 2022 at 10:56:11PM +0800, wangkailong@jari.cn wrote:
> > Fix the following coccicheck warning:
> > 
> > sound/soc/soc-ops.c:817: WARNING opportunity for min()
> 
> >  	kfree(uctl);
> > -	return err < 0 ? err : 0;
> > +	return min(err, 0);
> 
> I don't think this is a good warning, while I'm no big fan of the
> ternery operator the new code is less clear about the intent than the
> old code.

Agreed.  That use of ternery is a standard idiom.

If we have to eliminate the use of ternery inevitably, it'd be better
to introduce a new macro for clarity instead.


thanks,

Takashi
  
Mark Brown Oct. 26, 2022, 12:25 p.m. UTC | #3
On Wed, Oct 26, 2022 at 07:28:26AM +0200, Takashi Iwai wrote:
> Mark Brown wrote:
> > On Tue, Oct 25, 2022 at 10:56:11PM +0800, wangkailong@jari.cn wrote:

> > > sound/soc/soc-ops.c:817: WARNING opportunity for min()

> > >  	kfree(uctl);
> > > -	return err < 0 ? err : 0;
> > > +	return min(err, 0);

> > I don't think this is a good warning, while I'm no big fan of the
> > ternery operator the new code is less clear about the intent than the
> > old code.

> Agreed.  That use of ternery is a standard idiom.

> If we have to eliminate the use of ternery inevitably, it'd be better
> to introduce a new macro for clarity instead.

It looks like it's more about identifying a pattern that could be min()
but not being able to detect the semantics of why we're comparing
numbers.
  

Patch

diff --git a/sound/core/vmaster.c b/sound/core/vmaster.c
index d0f11f37889b..704a09f4bfd6 100644
--- a/sound/core/vmaster.c
+++ b/sound/core/vmaster.c
@@ -70,7 +70,7 @@  static int follower_update(struct link_follower *follower)
 		follower->vals[ch] = uctl->value.integer.value[ch];
  error:
 	kfree(uctl);
-	return err < 0 ? err : 0;
+	return min(err, 0);
 }
 
 /* get the follower ctl info and save the initial values */
diff --git a/sound/pci/ctxfi/ctatc.c b/sound/pci/ctxfi/ctatc.c
index fbdb8a3d5b8e..9fea50b72cfb 100644
--- a/sound/pci/ctxfi/ctatc.c
+++ b/sound/pci/ctxfi/ctatc.c
@@ -384,7 +384,7 @@  static int atc_pcm_playback_start(struct ct_atc *atc, struct ct_atc_pcm *apcm)
 	apcm->started = 1;
 
 	max_cisz = src->multi * src->rsc.msr;
-	max_cisz = 0x80 * (max_cisz < 8 ? max_cisz : 8);
+	max_cisz = 0x80 * min(max_cisz, 8);
 
 	src->ops->set_sa(src, apcm->vm_block->addr);
 	src->ops->set_la(src, apcm->vm_block->addr + apcm->vm_block->size);
@@ -445,7 +445,7 @@  atc_pcm_playback_position(struct ct_atc *atc, struct ct_atc_pcm *apcm)
 
 	size = apcm->vm_block->size;
 	max_cisz = src->multi * src->rsc.msr;
-	max_cisz = 128 * (max_cisz < 8 ? max_cisz : 8);
+	max_cisz = 128 * min(max_cisz, 8);
 
 	return (position + size - max_cisz - apcm->vm_block->addr) % size;
 }
diff --git a/sound/pci/hda/hda_codec.c b/sound/pci/hda/hda_codec.c
index b4d1e658c556..c195f99bd8d5 100644
--- a/sound/pci/hda/hda_codec.c
+++ b/sound/pci/hda/hda_codec.c
@@ -334,7 +334,7 @@  int snd_hda_get_devices(struct hda_codec *codec, hda_nid_t nid,
 		return 0;
 
 	dev_len = parm + 1;
-	dev_len = dev_len < max_devices ? dev_len : max_devices;
+	dev_len = min(dev_len, max_devices);
 
 	devices = 0;
 	while (devices < dev_len) {
diff --git a/sound/soc/soc-ops.c b/sound/soc/soc-ops.c
index bd88de056358..d71d10055ed7 100644
--- a/sound/soc/soc-ops.c
+++ b/sound/soc/soc-ops.c
@@ -814,7 +814,7 @@  int snd_soc_bytes_tlv_callback(struct snd_kcontrol *kcontrol, int op_flag,
 				unsigned int size, unsigned int __user *tlv)
 {
 	struct soc_bytes_ext *params = (void *)kcontrol->private_value;
-	unsigned int count = size < params->max ? size : params->max;
+	unsigned int count = min_t(unsigned int, size, params->max);
 	int ret = -ENXIO;
 
 	switch (op_flag) {