diff options
Diffstat (limited to 'drivers/usb/core/devio.c')
| -rw-r--r-- | drivers/usb/core/devio.c | 10 | 
1 files changed, 6 insertions, 4 deletions
diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c index 2bccefebff1..aa79280df15 100644 --- a/drivers/usb/core/devio.c +++ b/drivers/usb/core/devio.c @@ -574,6 +574,7 @@ static int usbdev_open(struct inode *inode, struct file *file)  {  	struct usb_device *dev = NULL;  	struct dev_state *ps; +	const struct cred *cred = current_cred();  	int ret;  	lock_kernel(); @@ -617,8 +618,8 @@ static int usbdev_open(struct inode *inode, struct file *file)  	init_waitqueue_head(&ps->wait);  	ps->discsignr = 0;  	ps->disc_pid = get_pid(task_pid(current)); -	ps->disc_uid = current->uid; -	ps->disc_euid = current->euid; +	ps->disc_uid = cred->uid; +	ps->disc_euid = cred->euid;  	ps->disccontext = NULL;  	ps->ifclaimed = 0;  	security_task_getsecid(current, &ps->secid); @@ -967,6 +968,7 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,  	struct usb_host_endpoint *ep;  	struct async *as;  	struct usb_ctrlrequest *dr = NULL; +	const struct cred *cred = current_cred();  	unsigned int u, totlen, isofrmlen;  	int ret, ifnum = -1;  	int is_in; @@ -1174,8 +1176,8 @@ static int proc_do_submiturb(struct dev_state *ps, struct usbdevfs_urb *uurb,  	as->signr = uurb->signr;  	as->ifnum = ifnum;  	as->pid = get_pid(task_pid(current)); -	as->uid = current->uid; -	as->euid = current->euid; +	as->uid = cred->uid; +	as->euid = cred->euid;  	security_task_getsecid(current, &as->secid);  	if (!is_in) {  		if (copy_from_user(as->urb->transfer_buffer, uurb->buffer,  | 
