Commit d7dd8a72 authored by Linus Torvalds's avatar Linus Torvalds

Use the new "kill_proc_info_as_uid()" for USB disconnect too

All the same issues - we can't just save the pointer to the thread, we
must save the pid/uid/euid combination.
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 46113830
...@@ -530,7 +530,9 @@ static int usbdev_open(struct inode *inode, struct file *file) ...@@ -530,7 +530,9 @@ static int usbdev_open(struct inode *inode, struct file *file)
INIT_LIST_HEAD(&ps->async_completed); INIT_LIST_HEAD(&ps->async_completed);
init_waitqueue_head(&ps->wait); init_waitqueue_head(&ps->wait);
ps->discsignr = 0; ps->discsignr = 0;
ps->disctask = current; ps->disc_pid = current->pid;
ps->disc_uid = current->uid;
ps->disc_euid = current->euid;
ps->disccontext = NULL; ps->disccontext = NULL;
ps->ifclaimed = 0; ps->ifclaimed = 0;
wmb(); wmb();
......
...@@ -713,7 +713,7 @@ void usbfs_remove_device(struct usb_device *dev) ...@@ -713,7 +713,7 @@ void usbfs_remove_device(struct usb_device *dev)
sinfo.si_errno = EPIPE; sinfo.si_errno = EPIPE;
sinfo.si_code = SI_ASYNCIO; sinfo.si_code = SI_ASYNCIO;
sinfo.si_addr = ds->disccontext; sinfo.si_addr = ds->disccontext;
send_sig_info(ds->discsignr, &sinfo, ds->disctask); kill_proc_info_as_uid(ds->discsignr, &sinfo, ds->disc_pid, ds->disc_uid, ds->disc_euid);
} }
} }
usbfs_update_special(); usbfs_update_special();
......
...@@ -52,7 +52,8 @@ struct dev_state { ...@@ -52,7 +52,8 @@ struct dev_state {
struct list_head async_completed; struct list_head async_completed;
wait_queue_head_t wait; /* wake up if a request completed */ wait_queue_head_t wait; /* wake up if a request completed */
unsigned int discsignr; unsigned int discsignr;
struct task_struct *disctask; pid_t disc_pid;
uid_t disc_uid, disc_euid;
void __user *disccontext; void __user *disccontext;
unsigned long ifclaimed; unsigned long ifclaimed;
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment