From owner-svn-src-head@FreeBSD.ORG Sun Jun 9 01:19:23 2013 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id CAA4C4F3; Sun, 9 Jun 2013 01:19:23 +0000 (UTC) (envelope-from pfg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id BCCEB12F0; Sun, 9 Jun 2013 01:19:23 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.7/8.14.7) with ESMTP id r591JNBY090801; Sun, 9 Jun 2013 01:19:23 GMT (envelope-from pfg@svn.freebsd.org) Received: (from pfg@localhost) by svn.freebsd.org (8.14.7/8.14.5/Submit) id r591JNnx090799; Sun, 9 Jun 2013 01:19:23 GMT (envelope-from pfg@svn.freebsd.org) Message-Id: <201306090119.r591JNnx090799@svn.freebsd.org> From: "Pedro F. Giffuni" Date: Sun, 9 Jun 2013 01:19:23 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r251561 - head/lib/libstand X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 09 Jun 2013 01:19:23 -0000 Author: pfg Date: Sun Jun 9 01:19:22 2013 New Revision: 251561 URL: http://svnweb.freebsd.org/changeset/base/251561 Log: libstand: Reset the seek pointer in ext2fs as done in UFS. Based on r134760: Reset the seek pointer to 0 when a file is successfully opened, since otherwise the initial seek offset will contain the directory offset of the filesystem block that contained its directory entry. This bug was mostly harmless because typically the directory is less than one filesystem block in size so the offset would be zero. It did however generally break loading a kernel from the (large) kernel compile directory. Also reset the seek pointer when a new inode is opened in read_inode(), though this is not actually necessary now because all callers set it afterwards. PR: 177328 Submitted by: Eric van Gyzen Reviewed by: iedowse MFC after: 5 days Modified: head/lib/libstand/ext2fs.c Modified: head/lib/libstand/ext2fs.c ============================================================================== --- head/lib/libstand/ext2fs.c Sat Jun 8 23:48:13 2013 (r251560) +++ head/lib/libstand/ext2fs.c Sun Jun 9 01:19:22 2013 (r251561) @@ -536,6 +536,7 @@ ext2fs_open(const char *upath, struct op * Found terminal component. */ error = 0; + fp->f_seekp = 0; out: if (buf) free(buf); @@ -584,6 +585,7 @@ read_inode(ino_t inumber, struct open_fi for (level = 0; level < NIADDR; level++) fp->f_blkno[level] = -1; fp->f_buf_blkno = -1; + fp->f_seekp = 0; out: free(buf);