summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-04-14 18:13:58 +0400
committerTakashi Iwai <tiwai@suse.de>2009-04-14 18:15:09 +0400
commit9d59065cd6fae841ca56c281189d5b8d0817d35f (patch)
treeab9ab1d52db96d7ba7a5235ea0073a34b722a1e0
parent577c9c456f0e1371cbade38eaf91ae8e8a308555 (diff)
downloadlinux-9d59065cd6fae841ca56c281189d5b8d0817d35f.tar.xz
ALSA: add private_data to struct snd_jack
Added private_data and private_free fields to struct snd_jack so that the caller can assign the data. It'll be helpful for avoiding the double-free of the jack instance. Signed-off-by: Takashi Iwai <tiwai@suse.de>
-rw-r--r--include/sound/jack.h2
-rw-r--r--sound/core/jack.c3
2 files changed, 5 insertions, 0 deletions
diff --git a/include/sound/jack.h b/include/sound/jack.h
index 6b013c6f6a04..f236e426a706 100644
--- a/include/sound/jack.h
+++ b/include/sound/jack.h
@@ -50,6 +50,8 @@ struct snd_jack {
int type;
const char *id;
char name[100];
+ void *private_data;
+ void (*private_free)(struct snd_jack *);
};
#ifdef CONFIG_SND_JACK
diff --git a/sound/core/jack.c b/sound/core/jack.c
index c8254c667c62..d54d1a05fe65 100644
--- a/sound/core/jack.c
+++ b/sound/core/jack.c
@@ -35,6 +35,9 @@ static int snd_jack_dev_free(struct snd_device *device)
{
struct snd_jack *jack = device->device_data;
+ if (jack->private_free)
+ jack->private_free(jack);
+
/* If the input device is registered with the input subsystem
* then we need to use a different deallocator. */
if (jack->registered)