|
@@ -407,7 +407,7 @@ static void async_completed(struct urb *urb)
|
|
|
sinfo.si_errno = as->status;
|
|
|
sinfo.si_code = SI_ASYNCIO;
|
|
|
sinfo.si_addr = as->userurb;
|
|
|
- pid = as->pid;
|
|
|
+ pid = get_pid(as->pid);
|
|
|
uid = as->uid;
|
|
|
euid = as->euid;
|
|
|
secid = as->secid;
|
|
@@ -422,9 +422,11 @@ static void async_completed(struct urb *urb)
|
|
|
cancel_bulk_urbs(ps, as->bulk_addr);
|
|
|
spin_unlock(&ps->lock);
|
|
|
|
|
|
- if (signr)
|
|
|
+ if (signr) {
|
|
|
kill_pid_info_as_uid(sinfo.si_signo, &sinfo, pid, uid,
|
|
|
euid, secid);
|
|
|
+ put_pid(pid);
|
|
|
+ }
|
|
|
|
|
|
wake_up(&ps->wait);
|
|
|
}
|