[2.0.31] stability patch (proc oops)

Gordon Oliver (gordo@telsur.cl)
Fri, 31 Oct 1997 17:41:03 -0300


I don't know if this has already been put in for 2.0.32, but I found this
(reproducible) oops, and fixed it a while back... it has been posted to this
list before. It didn't make it in to 2.0.31, but it should be put in 2.0.32.
-gordo
--
---------------------------------------------------------------
Gordon Oliver	(gordo@telsur.cl)	Independent Consultant
	... Available for consulting on Linux  ...

diff -ur linux-2.0.31/fs/proc/fd.c linux/fs/proc/fd.c --- linux-2.0.31/fs/proc/fd.c Fri Dec 22 08:00:19 1995 +++ linux/fs/proc/fd.c Tue Oct 14 19:04:46 1997 @@ -106,8 +106,9 @@ if (!pid || i >= NR_TASKS) return -ENOENT; - if (fd >= NR_OPEN || !p->files->fd[fd] || !p->files->fd[fd]->f_inode) - return -ENOENT; + if (fd >= NR_OPEN || !p->files || !p->files->fd[fd] + || !p->files->fd[fd]->f_inode) + return -ENOENT; ino = (pid << 16) + (PROC_PID_FD_DIR << 8) + fd; diff -ur linux-2.0.31/fs/proc/inode.c linux/fs/proc/inode.c --- linux-2.0.31/fs/proc/inode.c Sat Nov 30 07:21:21 1996 +++ linux/fs/proc/inode.c Tue Oct 14 19:02:32 1997 @@ -236,7 +236,7 @@ switch (ino >> 8) { case PROC_PID_FD_DIR: ino &= 0xff; - if (ino >= NR_OPEN || !p->files->fd[ino]) + if (ino >= NR_OPEN || !p->files || !p->files->fd[ino]) return; inode->i_op = &proc_link_inode_operations; inode->i_size = 64; diff -ur linux-2.0.31/fs/proc/link.c linux/fs/proc/link.c --- linux-2.0.31/fs/proc/link.c Fri Dec 22 08:00:19 1995 +++ linux/fs/proc/link.c Tue Oct 14 19:03:11 1997 @@ -121,7 +121,7 @@ if (!p->files) break; ino &= 0xff; - if (ino < NR_OPEN && p->files->fd[ino]) { + if (ino < NR_OPEN && p->files && p->files->fd[ino]) { new_inode = p->files->fd[ino]->f_inode; } break;