diff options
Diffstat (limited to 'sound/core/pcm.c')
-rw-r--r-- | sound/core/pcm.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/core/pcm.c b/sound/core/pcm.c index c69c60b2a48a..6884ae031f6f 100644 --- a/sound/core/pcm.c +++ b/sound/core/pcm.c | |||
@@ -435,6 +435,7 @@ static void snd_pcm_substream_proc_status_read(struct snd_info_entry *entry, | |||
435 | return; | 435 | return; |
436 | } | 436 | } |
437 | snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state)); | 437 | snd_iprintf(buffer, "state: %s\n", snd_pcm_state_name(status.state)); |
438 | snd_iprintf(buffer, "owner_pid : %d\n", pid_vnr(substream->pid)); | ||
438 | snd_iprintf(buffer, "trigger_time: %ld.%09ld\n", | 439 | snd_iprintf(buffer, "trigger_time: %ld.%09ld\n", |
439 | status.trigger_tstamp.tv_sec, status.trigger_tstamp.tv_nsec); | 440 | status.trigger_tstamp.tv_sec, status.trigger_tstamp.tv_nsec); |
440 | snd_iprintf(buffer, "tstamp : %ld.%09ld\n", | 441 | snd_iprintf(buffer, "tstamp : %ld.%09ld\n", |
@@ -809,7 +810,7 @@ int snd_pcm_attach_substream(struct snd_pcm *pcm, int stream, | |||
809 | card = pcm->card; | 810 | card = pcm->card; |
810 | read_lock(&card->ctl_files_rwlock); | 811 | read_lock(&card->ctl_files_rwlock); |
811 | list_for_each_entry(kctl, &card->ctl_files, list) { | 812 | list_for_each_entry(kctl, &card->ctl_files, list) { |
812 | if (kctl->pid == current->pid) { | 813 | if (kctl->pid == task_pid(current)) { |
813 | prefer_subdevice = kctl->prefer_pcm_subdevice; | 814 | prefer_subdevice = kctl->prefer_pcm_subdevice; |
814 | if (prefer_subdevice != -1) | 815 | if (prefer_subdevice != -1) |
815 | break; | 816 | break; |
@@ -900,6 +901,7 @@ int snd_pcm_attach_substream(struct snd_pcm *pcm, int stream, | |||
900 | substream->private_data = pcm->private_data; | 901 | substream->private_data = pcm->private_data; |
901 | substream->ref_count = 1; | 902 | substream->ref_count = 1; |
902 | substream->f_flags = file->f_flags; | 903 | substream->f_flags = file->f_flags; |
904 | substream->pid = get_pid(task_pid(current)); | ||
903 | pstr->substream_opened++; | 905 | pstr->substream_opened++; |
904 | *rsubstream = substream; | 906 | *rsubstream = substream; |
905 | return 0; | 907 | return 0; |
@@ -921,6 +923,8 @@ void snd_pcm_detach_substream(struct snd_pcm_substream *substream) | |||
921 | kfree(runtime->hw_constraints.rules); | 923 | kfree(runtime->hw_constraints.rules); |
922 | kfree(runtime); | 924 | kfree(runtime); |
923 | substream->runtime = NULL; | 925 | substream->runtime = NULL; |
926 | put_pid(substream->pid); | ||
927 | substream->pid = NULL; | ||
924 | substream->pstr->substream_opened--; | 928 | substream->pstr->substream_opened--; |
925 | } | 929 | } |
926 | 930 | ||