[alsa-devel] [PATCH 04/10] ALSA: core: Use standard printk helpers

Takashi Iwai tiwai at suse.de
Wed Feb 12 19:57:35 CET 2014


At Wed, 12 Feb 2014 12:33:06 +0100,
Takashi Iwai wrote:
> 
> Use dev_err() & co as much as possible.  If not available (no device
> assigned at the calling point), use pr_xxx() helpers instead.
> 
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
> ---
>  sound/core/device.c   | 19 ++++++++++++++-----
>  sound/core/info.c     | 11 ++++++++---
>  sound/core/init.c     | 20 ++++++++++----------
>  sound/core/isadma.c   |  2 +-
>  sound/core/memalloc.c |  4 ++--
>  sound/core/sound.c    |  4 ++--
>  sound/core/vmaster.c  |  2 +-
>  7 files changed, 38 insertions(+), 24 deletions(-)
> 
> diff --git a/sound/core/device.c b/sound/core/device.c
> index d622bcd4ff53..cbc7ded11a26 100644
> --- a/sound/core/device.c
> +++ b/sound/core/device.c
> @@ -25,6 +25,13 @@
>  #include <linux/errno.h>
>  #include <sound/core.h>
>  
> +#define error(card, fmt, args...) do {	\
> +	if (card)		   \
> +		dev_err((card)->dev, fmt, ##args);	\
> +	else \
> +		pr_err(KERN_ERR "ALSA: " fmt, ##args);	\
> +	} while (0)
> +
>  /**
>   * snd_device_new - create an ALSA device component
>   * @card: the card instance
> @@ -51,7 +58,7 @@ int snd_device_new(struct snd_card *card, enum snd_device_type type,
>  		return -ENXIO;
>  	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
>  	if (dev == NULL) {
> -		snd_printk(KERN_ERR "Cannot allocate device\n");
> +		error(dev->card, "Cannot allocate device, type=%d\n", type);

This leads to Oops.  The fixed patch is below.


Takashi

-- 8< --
From: Takashi Iwai <tiwai at suse.de>
Subject: [PATCH v2] ALSA: core: Use standard printk helpers

Use dev_err() & co as much as possible.  If not available (no device
assigned at the calling point), use pr_xxx() helpers instead.

Signed-off-by: Takashi Iwai <tiwai at suse.de>
---
 sound/core/device.c   | 19 ++++++++++++++-----
 sound/core/info.c     | 11 ++++++++---
 sound/core/init.c     | 20 ++++++++++----------
 sound/core/isadma.c   |  2 +-
 sound/core/memalloc.c |  4 ++--
 sound/core/sound.c    |  4 ++--
 sound/core/vmaster.c  |  2 +-
 7 files changed, 38 insertions(+), 24 deletions(-)

diff --git a/sound/core/device.c b/sound/core/device.c
index d622bcd4ff53..2f443a7798d1 100644
--- a/sound/core/device.c
+++ b/sound/core/device.c
@@ -25,6 +25,13 @@
 #include <linux/errno.h>
 #include <sound/core.h>
 
+#define error(card, fmt, args...) do {	\
+	if (card)		   \
+		dev_err((card)->dev, fmt, ##args);	\
+	else \
+		pr_err(KERN_ERR "ALSA: " fmt, ##args);	\
+	} while (0)
+
 /**
  * snd_device_new - create an ALSA device component
  * @card: the card instance
@@ -51,7 +58,7 @@ int snd_device_new(struct snd_card *card, enum snd_device_type type,
 		return -ENXIO;
 	dev = kzalloc(sizeof(*dev), GFP_KERNEL);
 	if (dev == NULL) {
-		snd_printk(KERN_ERR "Cannot allocate device\n");
+		error(card, "Cannot allocate device, type=%d\n", type);
 		return -ENOMEM;
 	}
 	INIT_LIST_HEAD(&dev->list);
@@ -78,7 +85,8 @@ static int __snd_device_disconnect(struct snd_device *dev)
 	if (dev->state == SNDRV_DEV_REGISTERED) {
 		if (dev->ops->dev_disconnect &&
 		    dev->ops->dev_disconnect(dev))
-			snd_printk(KERN_ERR "device disconnect failure\n");
+			error(dev->card, "device disconnect failure, type=%d\n",
+			      dev->type);
 		dev->state = SNDRV_DEV_DISCONNECTED;
 	}
 	return 0;
@@ -92,7 +100,8 @@ static int __snd_device_free(struct snd_device *dev)
 	__snd_device_disconnect(dev);
 	if (dev->ops->dev_free) {
 		if (dev->ops->dev_free(dev))
-			snd_printk(KERN_ERR "device free failure\n");
+			error(dev->card, "device free failure, type=%d\n",
+			      dev->type);
 	}
 	kfree(dev);
 	return 0;
@@ -130,8 +139,8 @@ int snd_device_free(struct snd_card *card, void *device_data)
 	dev = look_for_dev(card, device_data);
 	if (dev)
 		return __snd_device_free(dev);
-	snd_printd("device free %p (from %pF), not found\n", device_data,
-		   __builtin_return_address(0));
+	dev_dbg(card->dev, "device free %p (from %pF), not found\n",
+		device_data, __builtin_return_address(0));
 	return -ENXIO;
 }
 EXPORT_SYMBOL(snd_device_free);
diff --git a/sound/core/info.c b/sound/core/info.c
index 7916c07b9324..051d55b05521 100644
--- a/sound/core/info.c
+++ b/sound/core/info.c
@@ -418,9 +418,14 @@ static int snd_info_entry_release(struct inode *inode, struct file *file)
 			if (entry->c.text.write) {
 				entry->c.text.write(entry, data->wbuffer);
 				if (data->wbuffer->error) {
-					snd_printk(KERN_WARNING "data write error to %s (%i)\n",
-						entry->name,
-						data->wbuffer->error);
+					if (entry->card)
+						dev_warn(entry->card->dev, "info: data write error to %s (%i)\n",
+							 entry->name,
+							 data->wbuffer->error);
+					else
+						pr_warn("ALSA: info: data write error to %s (%i)\n",
+							entry->name,
+							data->wbuffer->error);
 				}
 			}
 			kfree(data->wbuffer->buffer);
diff --git a/sound/core/init.c b/sound/core/init.c
index 3fdb4e2ce5ea..ad7234a63a7b 100644
--- a/sound/core/init.c
+++ b/sound/core/init.c
@@ -113,11 +113,11 @@ static inline int init_info_for_card(struct snd_card *card)
 	struct snd_info_entry *entry;
 
 	if ((err = snd_info_card_register(card)) < 0) {
-		snd_printd("unable to create card info\n");
+		dev_dbg(card->dev, "unable to create card info\n");
 		return err;
 	}
 	if ((entry = snd_info_create_card_entry(card, "id", card->proc_root)) == NULL) {
-		snd_printd("unable to create card entry\n");
+		dev_dbg(card->dev, "unable to create card entry\n");
 		return err;
 	}
 	entry->c.text.read = snd_card_id_read;
@@ -217,7 +217,7 @@ int snd_card_new(struct device *parent, int idx, const char *xid,
 		err = -ENODEV;
 	if (err < 0) {
 		mutex_unlock(&snd_card_mutex);
-		snd_printk(KERN_ERR "cannot find the slot for index %d (range 0-%i), error: %d\n",
+		dev_err(parent, "cannot find the slot for index %d (range 0-%i), error: %d\n",
 			 idx, snd_ecards_limit - 1, err);
 		kfree(card);
 		return err;
@@ -254,12 +254,12 @@ int snd_card_new(struct device *parent, int idx, const char *xid,
 	/* snd_cards_bitmask and snd_cards are set with snd_card_register */
 	err = snd_ctl_create(card);
 	if (err < 0) {
-		snd_printk(KERN_ERR "unable to register control minors\n");
+		dev_err(parent, "unable to register control minors\n");
 		goto __error;
 	}
 	err = snd_info_card_create(card);
 	if (err < 0) {
-		snd_printk(KERN_ERR "unable to create card info\n");
+		dev_err(parent, "unable to create card info\n");
 		goto __error_ctl;
 	}
 	*card_ret = card;
@@ -422,7 +422,7 @@ int snd_card_disconnect(struct snd_card *card)
 	/* notify all devices that we are disconnected */
 	err = snd_device_disconnect_all(card);
 	if (err < 0)
-		snd_printk(KERN_ERR "not all devices for card %i can be disconnected\n", card->number);
+		dev_err(card->dev, "not all devices for card %i can be disconnected\n", card->number);
 
 	snd_info_card_disconnect(card);
 	if (card->registered) {
@@ -455,14 +455,14 @@ static int snd_card_do_free(struct snd_card *card)
 		snd_mixer_oss_notify_callback(card, SND_MIXER_OSS_NOTIFY_FREE);
 #endif
 	if (snd_device_free_all(card) < 0) {
-		snd_printk(KERN_ERR "unable to free all devices\n");
+		dev_err(card->dev, "unable to free all devices\n");
 		/* Fatal, but this situation should never occur */
 	}
 	if (card->private_free)
 		card->private_free(card);
 	snd_info_free_entry(card->proc_id);
 	if (snd_info_card_free(card) < 0) {
-		snd_printk(KERN_WARNING "unable to free card info\n");
+		dev_warn(card->dev, "unable to free card info\n");
 		/* Not fatal error */
 	}
 	if (card->release_completion)
@@ -588,7 +588,7 @@ static void snd_card_set_id_no_lock(struct snd_card *card, const char *src,
 		goto again;
 	}
 	/* last resort... */
-	snd_printk(KERN_ERR "unable to set card id (%s)\n", id);
+	dev_err(card->dev, "unable to set card id (%s)\n", id);
 	if (card->proc_root->name)
 		strlcpy(card->id, card->proc_root->name, sizeof(card->id));
 }
@@ -940,7 +940,7 @@ int snd_card_file_remove(struct snd_card *card, struct file *file)
 	}
 	spin_unlock(&card->files_lock);
 	if (!found) {
-		snd_printk(KERN_ERR "ALSA card file remove problem (%p)\n", file);
+		dev_err(card->dev, "card file remove problem (%p)\n", file);
 		return -ENOENT;
 	}
 	kfree(found);
diff --git a/sound/core/isadma.c b/sound/core/isadma.c
index e2b386156a4c..31e8544d7f2d 100644
--- a/sound/core/isadma.c
+++ b/sound/core/isadma.c
@@ -106,7 +106,7 @@ unsigned int snd_dma_pointer(unsigned long dma, unsigned int size)
 		result = result1;
 #ifdef CONFIG_SND_DEBUG
 	if (result > size)
-		snd_printk(KERN_ERR "pointer (0x%x) for DMA #%ld is greater than transfer size (0x%x)\n", result, dma, size);
+		pr_err("ALSA: pointer (0x%x) for DMA #%ld is greater than transfer size (0x%x)\n", result, dma, size);
 #endif
 	if (result >= size || result == 0)
 		return 0;
diff --git a/sound/core/memalloc.c b/sound/core/memalloc.c
index 4595f93d151e..082509eb805d 100644
--- a/sound/core/memalloc.c
+++ b/sound/core/memalloc.c
@@ -207,7 +207,7 @@ int snd_dma_alloc_pages(int type, struct device *device, size_t size,
 		break;
 #endif
 	default:
-		printk(KERN_ERR "snd-malloc: invalid device type %d\n", type);
+		pr_err("snd-malloc: invalid device type %d\n", type);
 		dmab->area = NULL;
 		dmab->addr = 0;
 		return -ENXIO;
@@ -284,7 +284,7 @@ void snd_dma_free_pages(struct snd_dma_buffer *dmab)
 		break;
 #endif
 	default:
-		printk(KERN_ERR "snd-malloc: invalid device type %d\n", dmab->dev.type);
+		pr_err("snd-malloc: invalid device type %d\n", dmab->dev.type);
 	}
 }
 
diff --git a/sound/core/sound.c b/sound/core/sound.c
index 4aaa53161644..60ab9b1f44b9 100644
--- a/sound/core/sound.c
+++ b/sound/core/sound.c
@@ -458,7 +458,7 @@ static int __init alsa_sound_init(void)
 	snd_major = major;
 	snd_ecards_limit = cards_limit;
 	if (register_chrdev(major, "alsa", &snd_fops)) {
-		snd_printk(KERN_ERR "unable to register native major device number %d\n", major);
+		pr_err("ALSA core: unable to register native major device number %d\n", major);
 		return -EIO;
 	}
 	if (snd_info_init() < 0) {
@@ -467,7 +467,7 @@ static int __init alsa_sound_init(void)
 	}
 	snd_info_minor_register();
 #ifndef MODULE
-	printk(KERN_INFO "Advanced Linux Sound Architecture Driver Initialized.\n");
+	pr_info("Advanced Linux Sound Architecture Driver Initialized.\n");
 #endif
 	return 0;
 }
diff --git a/sound/core/vmaster.c b/sound/core/vmaster.c
index 842a97d5fc3a..6c58e6f73a01 100644
--- a/sound/core/vmaster.c
+++ b/sound/core/vmaster.c
@@ -101,7 +101,7 @@ static int slave_init(struct link_slave *slave)
 	if (slave->info.count > 2  ||
 	    (slave->info.type != SNDRV_CTL_ELEM_TYPE_INTEGER &&
 	     slave->info.type != SNDRV_CTL_ELEM_TYPE_BOOLEAN)) {
-		snd_printk(KERN_ERR "invalid slave element\n");
+		pr_err("ALSA: vmaster: invalid slave element\n");
 		kfree(uinfo);
 		return -EINVAL;
 	}
-- 
1.8.5.2



More information about the Alsa-devel mailing list