|
@@ -75,7 +75,7 @@ static int snd_ctl_open(struct inode *inode, struct file *file)
|
|
|
ctl->card = card;
|
|
|
ctl->prefer_pcm_subdevice = -1;
|
|
|
ctl->prefer_rawmidi_subdevice = -1;
|
|
|
- ctl->pid = current->pid;
|
|
|
+ ctl->pid = get_pid(task_pid(current));
|
|
|
file->private_data = ctl;
|
|
|
write_lock_irqsave(&card->ctl_files_rwlock, flags);
|
|
|
list_add_tail(&ctl->list, &card->ctl_files);
|
|
@@ -125,6 +125,7 @@ static int snd_ctl_release(struct inode *inode, struct file *file)
|
|
|
control->vd[idx].owner = NULL;
|
|
|
up_write(&card->controls_rwsem);
|
|
|
snd_ctl_empty_read_queue(ctl);
|
|
|
+ put_pid(ctl->pid);
|
|
|
kfree(ctl);
|
|
|
module_put(card->module);
|
|
|
snd_card_file_remove(card, file);
|
|
@@ -672,7 +673,7 @@ static int snd_ctl_elem_info(struct snd_ctl_file *ctl,
|
|
|
info->access |= SNDRV_CTL_ELEM_ACCESS_LOCK;
|
|
|
if (vd->owner == ctl)
|
|
|
info->access |= SNDRV_CTL_ELEM_ACCESS_OWNER;
|
|
|
- info->owner = vd->owner->pid;
|
|
|
+ info->owner = pid_vnr(vd->owner->pid);
|
|
|
} else {
|
|
|
info->owner = -1;
|
|
|
}
|