Messages in this thread Patch in this message | | | From | kdp0101@hpmail ... | Subject | [PATCH] More statfs error checking in the VFS | Date | Sat, 19 Jul 1997 17:19:08 METDST |
| |
Hello Linus,
This patch adds statfs error checking to sys_ustat() and to sys_fstatfs(). It also removes an unnecessary verify_area(). Patch against 2.1.45.
--- fs/super.c~ Thu Jul 17 14:48:55 1997 +++ fs/super.c Thu Jul 17 23:00:02 1997 @@ -473,14 +473,16 @@ old_fs = get_fs(); set_fs(get_ds()); - s->s_op->statfs(s,&sbuf,sizeof(struct statfs)); + err = s->s_op->statfs(s,&sbuf,sizeof(struct statfs)); set_fs(old_fs); + if (err) + goto out; memset(&tmp,0,sizeof(struct ustat)); tmp.f_tfree = sbuf.f_bfree; tmp.f_tinode = sbuf.f_ffree; - err = copy_to_user(ubuf,&tmp,sizeof(struct ustat)) ? -EFAULT : 0; + err = copy_to_user(ubuf,&tmp,sizeof(struct ustat)) ? -EFAULT : 0; out: unlock_kernel(); return err; --- fs/open.c~ Thu Jul 17 14:48:52 1997 +++ fs/open.c Thu Jul 17 23:01:33 1997 @@ -53,9 +53,6 @@ int error; lock_kernel(); - error = verify_area(VERIFY_WRITE, buf, sizeof(struct statfs)); - if (error) - goto out; if (fd >= NR_OPEN || !(file = current->files->fd[fd])) error = -EBADF; else if (!(dentry = file->f_dentry)) @@ -67,8 +64,7 @@ else if (!inode->i_sb->s_op->statfs) error = -ENOSYS; else - inode->i_sb->s_op->statfs(inode->i_sb, buf, sizeof(struct statfs)); -out: + error = inode->i_sb->s_op->statfs(inode->i_sb, buf, sizeof(struct statfs)); unlock_kernel(); return error; } -Andi
| |