IB/ipath: Make ipath_portdata work with struct pid * not pid_t
The official reason is "with the presence of pid namespaces in the
kernel using pid_t-s inside one is no longer safe."
But the reason I fix this right now is the following:
About a month ago (when 2.6.25 was not yet released) there still was a
one last caller of a to-be-deprecated-soon function find_pid() - the
kill_proc() function, which in turn was only used by nfs callback
code.
During the last merge window, this last caller was finally eliminated
by some NFS patch(es) and I was about to finally kill this kill_proc()
and find_pid(), but found, that I was late and the kill_proc is now
called from the ipath driver since commit 58411d1c
("IB/ipath: Head of
Line blocking vs forward progress of user apps").
So here's a patch that fixes this code to use struct pid * and (!)
the kill_pid routine.
Signed-off-by: Pavel Emelyanov <xemul@openvz.org>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Šī revīzija ir iekļauta:

revīziju iesūtīja
Roland Dreier

vecāks
74116f580b
revīzija
40d97692fb
@@ -2616,7 +2616,7 @@ int ipath_reset_device(int unit)
|
||||
ipath_dbg("unit %u port %d is in use "
|
||||
"(PID %u cmd %s), can't reset\n",
|
||||
unit, i,
|
||||
dd->ipath_pd[i]->port_pid,
|
||||
pid_nr(dd->ipath_pd[i]->port_pid),
|
||||
dd->ipath_pd[i]->port_comm);
|
||||
ret = -EBUSY;
|
||||
goto bail;
|
||||
@@ -2654,19 +2654,21 @@ bail:
|
||||
static int ipath_signal_procs(struct ipath_devdata *dd, int sig)
|
||||
{
|
||||
int i, sub, any = 0;
|
||||
pid_t pid;
|
||||
struct pid *pid;
|
||||
|
||||
if (!dd->ipath_pd)
|
||||
return 0;
|
||||
for (i = 1; i < dd->ipath_cfgports; i++) {
|
||||
if (!dd->ipath_pd[i] || !dd->ipath_pd[i]->port_cnt ||
|
||||
!dd->ipath_pd[i]->port_pid)
|
||||
if (!dd->ipath_pd[i] || !dd->ipath_pd[i]->port_cnt)
|
||||
continue;
|
||||
pid = dd->ipath_pd[i]->port_pid;
|
||||
if (!pid)
|
||||
continue;
|
||||
|
||||
dev_info(&dd->pcidev->dev, "context %d in use "
|
||||
"(PID %u), sending signal %d\n",
|
||||
i, pid, sig);
|
||||
kill_proc(pid, sig, 1);
|
||||
i, pid_nr(pid), sig);
|
||||
kill_pid(pid, sig, 1);
|
||||
any++;
|
||||
for (sub = 0; sub < INFINIPATH_MAX_SUBPORT; sub++) {
|
||||
pid = dd->ipath_pd[i]->port_subpid[sub];
|
||||
@@ -2674,8 +2676,8 @@ static int ipath_signal_procs(struct ipath_devdata *dd, int sig)
|
||||
continue;
|
||||
dev_info(&dd->pcidev->dev, "sub-context "
|
||||
"%d:%d in use (PID %u), sending "
|
||||
"signal %d\n", i, sub, pid, sig);
|
||||
kill_proc(pid, sig, 1);
|
||||
"signal %d\n", i, sub, pid_nr(pid), sig);
|
||||
kill_pid(pid, sig, 1);
|
||||
any++;
|
||||
}
|
||||
}
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user