Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d7dd8a72 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

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
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -530,7 +530,9 @@ static int usbdev_open(struct inode *inode, struct file *file)
	INIT_LIST_HEAD(&ps->async_completed);
	init_waitqueue_head(&ps->wait);
	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->ifclaimed = 0;
	wmb();
+1 −1
Original line number Diff line number Diff line
@@ -713,7 +713,7 @@ void usbfs_remove_device(struct usb_device *dev)
			sinfo.si_errno = EPIPE;
			sinfo.si_code = SI_ASYNCIO;
			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();
+2 −1
Original line number Diff line number Diff line
@@ -52,7 +52,8 @@ struct dev_state {
	struct list_head async_completed;
	wait_queue_head_t wait;     /* wake up if a request completed */
	unsigned int discsignr;
	struct task_struct *disctask;
	pid_t disc_pid;
	uid_t disc_uid, disc_euid;
	void __user *disccontext;
	unsigned long ifclaimed;
};