diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-12-10 15:40:31 +0900 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-12-10 15:40:31 +0900 |
commit | b5c00a3a412857d6f07970984068c450429e051c (patch) | |
tree | 1fde50630cbc24e11a45169f717f281db8eb6dcc /sound/core/control.c | |
parent | ca6f2d7fafd2d48b2f6943f5c6787beaec2014d0 (diff) | |
parent | 3067e02f8f3ae2f3f02ba76400d03b8bcb4942b0 (diff) | |
download | kernel-crypto-b5c00a3a412857d6f07970984068c450429e051c.tar.gz kernel-crypto-b5c00a3a412857d6f07970984068c450429e051c.tar.xz kernel-crypto-b5c00a3a412857d6f07970984068c450429e051c.zip |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into sh/for-2.6.33
Diffstat (limited to 'sound/core/control.c')
-rw-r--r-- | sound/core/control.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/sound/core/control.c b/sound/core/control.c index a8b7fabe645..268ab747122 100644 --- a/sound/core/control.c +++ b/sound/core/control.c @@ -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; } @@ -827,7 +828,6 @@ static int snd_ctl_elem_lock(struct snd_ctl_file *file, result = -EBUSY; else { vd->owner = file; - vd->owner_pid = current->pid; result = 0; } } @@ -858,7 +858,6 @@ static int snd_ctl_elem_unlock(struct snd_ctl_file *file, result = -EPERM; else { vd->owner = NULL; - vd->owner_pid = 0; result = 0; } } @@ -1120,7 +1119,7 @@ static int snd_ctl_tlv_ioctl(struct snd_ctl_file *file, goto __kctl_end; } if (vd->access & SNDRV_CTL_ELEM_ACCESS_TLV_CALLBACK) { - if (file && vd->owner != NULL && vd->owner != file) { + if (vd->owner != NULL && vd->owner != file) { err = -EPERM; goto __kctl_end; } |