public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ALSA-miXart: Fine-tuning for seven function implementations
@ 2017-11-16 15:32 SF Markus Elfring
  2017-11-16 15:33 ` [PATCH 1/2] ALSA: mixart: Adjust 23 function calls together with a variable assignment SF Markus Elfring
  2017-11-16 15:36 ` [PATCH 2/2] ALSA: mixart: Use common error handling code in snd_mixart_probe() SF Markus Elfring
  0 siblings, 2 replies; 3+ messages in thread
From: SF Markus Elfring @ 2017-11-16 15:32 UTC (permalink / raw)
  To: alsa-devel, Arnd Bergmann, Bhumika Goyal, Jaroslav Kysela,
	Takashi Iwai
  Cc: LKML, kernel-janitors

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 16 Nov 2017 16:27:32 +0100

Two update suggestions were taken into account
from static source code analysis.

Markus Elfring (2):
  Adjust 23 function calls together with a variable assignment
  Use common error handling code in snd_mixart_probe()

 sound/pci/mixart/mixart.c       | 88 ++++++++++++++++++++++-------------------
 sound/pci/mixart/mixart_hwdep.c | 17 +++++---
 sound/pci/mixart/mixart_mixer.c | 44 +++++++++++++++------
 3 files changed, 93 insertions(+), 56 deletions(-)

-- 
2.15.0

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] ALSA: mixart: Adjust 23 function calls together with a variable assignment
  2017-11-16 15:32 [PATCH 0/2] ALSA-miXart: Fine-tuning for seven function implementations SF Markus Elfring
@ 2017-11-16 15:33 ` SF Markus Elfring
  2017-11-16 15:36 ` [PATCH 2/2] ALSA: mixart: Use common error handling code in snd_mixart_probe() SF Markus Elfring
  1 sibling, 0 replies; 3+ messages in thread
From: SF Markus Elfring @ 2017-11-16 15:33 UTC (permalink / raw)
  To: alsa-devel, Arnd Bergmann, Bhumika Goyal, Jaroslav Kysela,
	Takashi Iwai
  Cc: LKML, kernel-janitors

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 16 Nov 2017 15:26:12 +0100

The script "checkpatch.pl" pointed information out like the following.

ERROR: do not use assignment in if condition

Thus fix the affected source code places.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 sound/pci/mixart/mixart.c       | 29 ++++++++++++++++-----------
 sound/pci/mixart/mixart_hwdep.c | 17 +++++++++++-----
 sound/pci/mixart/mixart_mixer.c | 44 ++++++++++++++++++++++++++++++-----------
 3 files changed, 63 insertions(+), 27 deletions(-)

diff --git a/sound/pci/mixart/mixart.c b/sound/pci/mixart/mixart.c
index a74f1ad7e7b8..ff90a06f775e 100644
--- a/sound/pci/mixart/mixart.c
+++ b/sound/pci/mixart/mixart.c
@@ -972,9 +972,10 @@ static int snd_mixart_pcm_analog(struct snd_mixart *chip)
 	char name[32];
 
 	sprintf(name, "miXart analog %d", chip->chip_idx);
-	if ((err = snd_pcm_new(chip->card, name, MIXART_PCM_ANALOG,
-			       MIXART_PLAYBACK_STREAMS,
-			       MIXART_CAPTURE_STREAMS, &pcm)) < 0) {
+	err = snd_pcm_new(chip->card, name, MIXART_PCM_ANALOG,
+			  MIXART_PLAYBACK_STREAMS,
+			  MIXART_CAPTURE_STREAMS, &pcm);
+	if (err < 0) {
 		dev_err(chip->card->dev,
 			"cannot create the analog pcm %d\n", chip->chip_idx);
 		return err;
@@ -1005,9 +1006,10 @@ static int snd_mixart_pcm_digital(struct snd_mixart *chip)
 	char name[32];
 
 	sprintf(name, "miXart AES/EBU %d", chip->chip_idx);
-	if ((err = snd_pcm_new(chip->card, name, MIXART_PCM_DIGITAL,
-			       MIXART_PLAYBACK_STREAMS,
-			       MIXART_CAPTURE_STREAMS, &pcm)) < 0) {
+	err = snd_pcm_new(chip->card, name, MIXART_PCM_DIGITAL,
+			  MIXART_PLAYBACK_STREAMS,
+			  MIXART_CAPTURE_STREAMS, &pcm);
+	if (err < 0) {
 		dev_err(chip->card->dev,
 			"cannot create the digital pcm %d\n", chip->chip_idx);
 		return err;
@@ -1059,7 +1061,8 @@ static int snd_mixart_create(struct mixart_mgr *mgr, struct snd_card *card, int
 	chip->chip_idx = idx;
 	chip->mgr = mgr;
 
-	if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops)) < 0) {
+	err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
+	if (err < 0) {
 		snd_mixart_chip_free(chip);
 		return err;
 	}
@@ -1262,7 +1265,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 	}
 
 	/* enable PCI device */
-	if ((err = pci_enable_device(pci)) < 0)
+	err = pci_enable_device(pci);
+	if (err < 0)
 		return err;
 	pci_set_master(pci);
 
@@ -1286,7 +1290,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 	mgr->irq = -1;
 
 	/* resource assignment */
-	if ((err = pci_request_regions(pci, CARD_NAME)) < 0) {
+	err = pci_request_regions(pci, CARD_NAME);
+	if (err < 0) {
 		kfree(mgr);
 		pci_disable_device(pci);
 		return err;
@@ -1351,7 +1356,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 			"Digigram miXart at 0x%lx & 0x%lx, irq %i [PCM #%d]",
 			mgr->mem[0].phys, mgr->mem[1].phys, mgr->irq, i);
 
-		if ((err = snd_mixart_create(mgr, card, i)) < 0) {
+		err = snd_mixart_create(mgr, card, i);
+		if (err < 0) {
 			snd_card_free(card);
 			snd_mixart_free(mgr);
 			return err;
@@ -1362,7 +1368,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 			snd_mixart_proc_init(mgr->chip[i]);
 		}
 
-		if ((err = snd_card_register(card)) < 0) {
+		err = snd_card_register(card);
+		if (err < 0) {
 			snd_mixart_free(mgr);
 			return err;
 		}
diff --git a/sound/pci/mixart/mixart_hwdep.c b/sound/pci/mixart/mixart_hwdep.c
index 5bfd3ac80db5..61ad356a249d 100644
--- a/sound/pci/mixart/mixart_hwdep.c
+++ b/sound/pci/mixart/mixart_hwdep.c
@@ -318,9 +318,13 @@ static int mixart_first_init(struct mixart_mgr *mgr)
 	int err;
 	struct mixart_msg request;
 
-	if((err = mixart_enum_connectors(mgr)) < 0) return err;
+	err = mixart_enum_connectors(mgr);
+	if (err < 0)
+		return err;
 
-	if((err = mixart_enum_physio(mgr)) < 0) return err;
+	err = mixart_enum_physio(mgr);
+	if (err < 0)
+		return err;
 
 	/* send a synchro command to card (necessary to do this before first MSG_STREAM_START_STREAM_GRP_PACKET) */
 	/* though why not here */
@@ -540,15 +544,18 @@ static int mixart_dsp_load(struct mixart_mgr* mgr, int index, const struct firmw
         for (card_index = 0; card_index < mgr->num_cards; card_index++) {
 		struct snd_mixart *chip = mgr->chip[card_index];
 
-		if ((err = snd_mixart_create_pcm(chip)) < 0)
+		err = snd_mixart_create_pcm(chip);
+		if (err < 0)
 			return err;
 
 		if (card_index == 0) {
-			if ((err = snd_mixart_create_mixer(chip->mgr)) < 0)
+			err = snd_mixart_create_mixer(chip->mgr);
+			if (err < 0)
 	        		return err;
 		}
 
-		if ((err = snd_card_register(chip->card)) < 0)
+		err = snd_card_register(chip->card);
+		if (err < 0)
 			return err;
 	}
 
diff --git a/sound/pci/mixart/mixart_mixer.c b/sound/pci/mixart/mixart_mixer.c
index 2b9496a66c77..4b3043ffbb43 100644
--- a/sound/pci/mixart/mixart_mixer.c
+++ b/sound/pci/mixart/mixart_mixer.c
@@ -1127,10 +1127,14 @@ int snd_mixart_create_mixer(struct mixart_mgr *mgr)
 		temp = mixart_control_analog_level;
 		temp.name = "Master Playback Volume";
 		temp.private_value = 0; /* playback */
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+		err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip));
+		if (err < 0)
 			return err;
 		/* output mute controls */
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&mixart_control_output_switch, chip))) < 0)
+		err = snd_ctl_add(chip->card,
+				  snd_ctl_new1(&mixart_control_output_switch,
+					       chip));
+		if (err < 0)
 			return err;
 
 		/* analog input level control only on first two chips !*/
@@ -1138,7 +1142,9 @@ int snd_mixart_create_mixer(struct mixart_mgr *mgr)
 			temp = mixart_control_analog_level;
 			temp.name = "Master Capture Volume";
 			temp.private_value = 1; /* capture */
-			if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+			err = snd_ctl_add(chip->card,
+					  snd_ctl_new1(&temp, chip));
+			if (err < 0)
 				return err;
 		}
 
@@ -1146,45 +1152,61 @@ int snd_mixart_create_mixer(struct mixart_mgr *mgr)
 		temp.name = "PCM Playback Volume";
 		temp.count = MIXART_PLAYBACK_STREAMS;
 		temp.private_value = 0; /* playback analog */
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+		err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip));
+		if (err < 0)
 			return err;
 
 		temp.name = "PCM Capture Volume";
 		temp.count = 1;
 		temp.private_value = MIXART_VOL_REC_MASK; /* capture analog */
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+		err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip));
+		if (err < 0)
 			return err;
 
 		if(mgr->board_type == MIXART_DAUGHTER_TYPE_AES) {
 			temp.name = "AES Playback Volume";
 			temp.count = MIXART_PLAYBACK_STREAMS;
 			temp.private_value = MIXART_VOL_AES_MASK; /* playback AES/EBU */
-			if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+			err = snd_ctl_add(chip->card,
+					  snd_ctl_new1(&temp, chip));
+			if (err < 0)
 				return err;
 
 			temp.name = "AES Capture Volume";
 			temp.count = 0;
 			temp.private_value = MIXART_VOL_REC_MASK | MIXART_VOL_AES_MASK; /* capture AES/EBU */
-			if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+			err = snd_ctl_add(chip->card,
+					  snd_ctl_new1(&temp, chip));
+			if (err < 0)
 				return err;
 		}
 		temp = mixart_control_pcm_switch;
 		temp.name = "PCM Playback Switch";
 		temp.private_value = 0; /* playback analog */
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+		err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip));
+		if (err < 0)
 			return err;
 
 		if(mgr->board_type == MIXART_DAUGHTER_TYPE_AES) {
 			temp.name = "AES Playback Switch";
 			temp.private_value = MIXART_VOL_AES_MASK; /* playback AES/EBU */
-			if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&temp, chip))) < 0)
+			err = snd_ctl_add(chip->card,
+					  snd_ctl_new1(&temp, chip));
+			if (err < 0)
 				return err;
 		}
 
 		/* monitoring */
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&mixart_control_monitor_vol, chip))) < 0)
+		err = snd_ctl_add(chip->card,
+				  snd_ctl_new1(&mixart_control_monitor_vol,
+					       chip));
+		if (err < 0)
 			return err;
-		if ((err = snd_ctl_add(chip->card, snd_ctl_new1(&mixart_control_monitor_sw, chip))) < 0)
+
+		err = snd_ctl_add(chip->card,
+				  snd_ctl_new1(&mixart_control_monitor_sw,
+					       chip));
+		if (err < 0)
 			return err;
 
 		/* init all mixer data and program the master volumes/switches */
-- 
2.15.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH 2/2] ALSA: mixart: Use common error handling code in snd_mixart_probe()
  2017-11-16 15:32 [PATCH 0/2] ALSA-miXart: Fine-tuning for seven function implementations SF Markus Elfring
  2017-11-16 15:33 ` [PATCH 1/2] ALSA: mixart: Adjust 23 function calls together with a variable assignment SF Markus Elfring
@ 2017-11-16 15:36 ` SF Markus Elfring
  1 sibling, 0 replies; 3+ messages in thread
From: SF Markus Elfring @ 2017-11-16 15:36 UTC (permalink / raw)
  To: alsa-devel, Arnd Bergmann, Bhumika Goyal, Jaroslav Kysela,
	Takashi Iwai
  Cc: LKML, kernel-janitors

From: Markus Elfring <elfring@users.sourceforge.net>
Date: Thu, 16 Nov 2017 16:18:38 +0100

Add jump targets so that a bit of exception handling can be better reused
at the end of this function.

This issue was detected by using the Coccinelle software.

Signed-off-by: Markus Elfring <elfring@users.sourceforge.net>
---
 sound/pci/mixart/mixart.c | 61 ++++++++++++++++++++++++-----------------------
 1 file changed, 31 insertions(+), 30 deletions(-)

diff --git a/sound/pci/mixart/mixart.c b/sound/pci/mixart/mixart.c
index ff90a06f775e..928079520502 100644
--- a/sound/pci/mixart/mixart.c
+++ b/sound/pci/mixart/mixart.c
@@ -1274,16 +1274,16 @@ static int snd_mixart_probe(struct pci_dev *pci,
 	if (dma_set_mask(&pci->dev, DMA_BIT_MASK(32)) < 0) {
 		dev_err(&pci->dev,
 			"architecture does not support 32bit PCI busmaster DMA\n");
-		pci_disable_device(pci);
-		return -ENXIO;
+		err = -ENXIO;
+		goto disable_device;
 	}
 
 	/*
 	 */
 	mgr = kzalloc(sizeof(*mgr), GFP_KERNEL);
 	if (! mgr) {
-		pci_disable_device(pci);
-		return -ENOMEM;
+		err = -ENOMEM;
+		goto disable_device;
 	}
 
 	mgr->pci = pci;
@@ -1293,8 +1293,7 @@ static int snd_mixart_probe(struct pci_dev *pci,
 	err = pci_request_regions(pci, CARD_NAME);
 	if (err < 0) {
 		kfree(mgr);
-		pci_disable_device(pci);
-		return err;
+		goto disable_device;
 	}
 	for (i = 0; i < 2; i++) {
 		mgr->mem[i].phys = pci_resource_start(pci, i);
@@ -1302,8 +1301,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 		if (!mgr->mem[i].virt) {
 			dev_err(&pci->dev, "unable to remap resource 0x%lx\n",
 			       mgr->mem[i].phys);
-			snd_mixart_free(mgr);
-			return -EBUSY;
+			err = -EBUSY;
+			goto free_sound_chip;
 		}
 	}
 
@@ -1311,8 +1310,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 				 snd_mixart_threaded_irq, IRQF_SHARED,
 				 KBUILD_MODNAME, mgr)) {
 		dev_err(&pci->dev, "unable to grab IRQ %d\n", pci->irq);
-		snd_mixart_free(mgr);
-		return -EBUSY;
+		err = -EBUSY;
+		goto free_sound_chip;
 	}
 	mgr->irq = pci->irq;
 
@@ -1345,8 +1344,7 @@ static int snd_mixart_probe(struct pci_dev *pci,
 
 		if (err < 0) {
 			dev_err(&pci->dev, "cannot allocate the card %d\n", i);
-			snd_mixart_free(mgr);
-			return err;
+			goto free_sound_chip;
 		}
 
 		strcpy(card->driver, CARD_NAME);
@@ -1359,8 +1357,7 @@ static int snd_mixart_probe(struct pci_dev *pci,
 		err = snd_mixart_create(mgr, card, i);
 		if (err < 0) {
 			snd_card_free(card);
-			snd_mixart_free(mgr);
-			return err;
+			goto free_sound_chip;
 		}
 
 		if(i==0) {
@@ -1369,10 +1366,8 @@ static int snd_mixart_probe(struct pci_dev *pci,
 		}
 
 		err = snd_card_register(card);
-		if (err < 0) {
-			snd_mixart_free(mgr);
-			return err;
-		}
+		if (err < 0)
+			goto free_sound_chip;
 	}
 
 	/* init firmware status (mgr->dsp_loaded reset in hwdep_new) */
@@ -1382,10 +1377,9 @@ static int snd_mixart_probe(struct pci_dev *pci,
 	size = PAGE_ALIGN( (MIXART_MAX_STREAM_PER_CARD * MIXART_MAX_CARDS *
 			    sizeof(struct mixart_flowinfo)) );
 	if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(pci),
-				size, &mgr->flowinfo) < 0) {
-		snd_mixart_free(mgr);
-		return -ENOMEM;
-	}
+				size, &mgr->flowinfo) < 0)
+		goto e_nomem;
+
 	/* init streaminfo_array */
 	memset(mgr->flowinfo.area, 0, size);
 
@@ -1393,23 +1387,30 @@ static int snd_mixart_probe(struct pci_dev *pci,
 	size = PAGE_ALIGN( (MIXART_MAX_STREAM_PER_CARD * MIXART_MAX_CARDS *
 			    sizeof(struct mixart_bufferinfo)) );
 	if (snd_dma_alloc_pages(SNDRV_DMA_TYPE_DEV, snd_dma_pci_data(pci),
-				size, &mgr->bufferinfo) < 0) {
-		snd_mixart_free(mgr);
-		return -ENOMEM;
-	}
+				size, &mgr->bufferinfo) < 0)
+		goto e_nomem;
+
 	/* init bufferinfo_array */
 	memset(mgr->bufferinfo.area, 0, size);
 
 	/* set up firmware */
 	err = snd_mixart_setup_firmware(mgr);
-	if (err < 0) {
-		snd_mixart_free(mgr);
-		return err;
-	}
+	if (err < 0)
+		goto free_sound_chip;
 
 	pci_set_drvdata(pci, mgr);
 	dev++;
 	return 0;
+
+disable_device:
+	pci_disable_device(pci);
+	return err;
+
+e_nomem:
+	err = -ENOMEM;
+free_sound_chip:
+	snd_mixart_free(mgr);
+	return err;
 }
 
 static void snd_mixart_remove(struct pci_dev *pci)
-- 
2.15.0

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-11-16 15:37 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-11-16 15:32 [PATCH 0/2] ALSA-miXart: Fine-tuning for seven function implementations SF Markus Elfring
2017-11-16 15:33 ` [PATCH 1/2] ALSA: mixart: Adjust 23 function calls together with a variable assignment SF Markus Elfring
2017-11-16 15:36 ` [PATCH 2/2] ALSA: mixart: Use common error handling code in snd_mixart_probe() SF Markus Elfring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox