Module Name:    src
Committed By:   dholland
Date:           Tue Sep 15 15:02:01 UTC 2015

Modified Files:
        src/sbin/fsck_lfs: dir.c inode.c pass2.c
        src/sbin/newfs_lfs: make_lfs.c
        src/sys/ufs/lfs: lfs.h lfs_accessors.h lfs_rename.c ulfs_dirhash.c
            ulfs_lookup.c ulfs_vnops.c

Log Message:
Add an accessor function for directory names.


To generate a diff of this commit:
cvs rdiff -u -r1.41 -r1.42 src/sbin/fsck_lfs/dir.c
cvs rdiff -u -r1.65 -r1.66 src/sbin/fsck_lfs/inode.c
cvs rdiff -u -r1.30 -r1.31 src/sbin/fsck_lfs/pass2.c
cvs rdiff -u -r1.52 -r1.53 src/sbin/newfs_lfs/make_lfs.c
cvs rdiff -u -r1.187 -r1.188 src/sys/ufs/lfs/lfs.h
cvs rdiff -u -r1.25 -r1.26 src/sys/ufs/lfs/lfs_accessors.h
cvs rdiff -u -r1.11 -r1.12 src/sys/ufs/lfs/lfs_rename.c
cvs rdiff -u -r1.10 -r1.11 src/sys/ufs/lfs/ulfs_dirhash.c
cvs rdiff -u -r1.30 -r1.31 src/sys/ufs/lfs/ulfs_lookup.c \
    src/sys/ufs/lfs/ulfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sbin/fsck_lfs/dir.c
diff -u src/sbin/fsck_lfs/dir.c:1.41 src/sbin/fsck_lfs/dir.c:1.42
--- src/sbin/fsck_lfs/dir.c:1.41	Tue Sep 15 15:01:38 2015
+++ src/sbin/fsck_lfs/dir.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: dir.c,v 1.41 2015/09/15 15:01:38 dholland Exp $	 */
+/* $NetBSD: dir.c,v 1.42 2015/09/15 15:02:01 dholland Exp $	 */
 
 /*
  * Copyright (c) 1980, 1986, 1993
@@ -198,8 +198,8 @@ fsck_readdir(struct uvnode *vp, struct i
 		lfs_dir_setnamlen(fs, dp, 0);
 		lfs_dir_setreclen(fs, dp, LFS_DIRBLKSIZ);
 		/* for now at least, don't zero the old contents */
-		/*lfs_copydirname(fs, dp->d_name, "", 0, LFS_DIRBLKSIZ);*/
-		dp->d_name[0] = '\0';
+		/*lfs_copydirname(fs, lfs_dir_nameptr(fs, dp), "", 0, LFS_DIRBLKSIZ);*/
+		lfs_dir_nameptr(fs, dp)[0] = '\0';
 		if (fix)
 			VOP_BWRITE(bp);
 		else
@@ -281,7 +281,7 @@ dircheck(struct inodesc *idesc, struct l
 		printf("reclen<size, filesize<size, namlen too large, or type>15\n");
 		return (0);
 	}
-	cp = dp->d_name;
+	cp = lfs_dir_nameptr(fs, dp);
 	for (size = 0; size < namlen; size++)
 		if (*cp == '\0' || (*cp++ == '/')) {
 			printf("name contains NUL or /\n");
@@ -400,7 +400,7 @@ mkentry(struct inodesc *idesc)
 	lfs_dir_setreclen(fs, dirp, newreclen);
 	lfs_dir_settype(fs, dirp, typemap[idesc->id_parent]);
 	lfs_dir_setnamlen(fs, dirp, namlen);
-	lfs_copydirname(fs, dirp->d_name, idesc->id_name,
+	lfs_copydirname(fs, lfs_dir_nameptr(fs, dirp), idesc->id_name,
 			namlen, newreclen);
 
 	return (ALTERED | STOP);
@@ -413,7 +413,7 @@ chgino(struct inodesc *idesc)
 	int namlen;
 
 	namlen = lfs_dir_getnamlen(fs, dirp);
-	if (memcmp(dirp->d_name, idesc->id_name, namlen + 1))
+	if (memcmp(lfs_dir_nameptr(fs, dirp), idesc->id_name, namlen + 1))
 		return (KEEPON);
 	lfs_dir_setino(fs, dirp, idesc->id_parent);
 	lfs_dir_settype(fs, dirp, typemap[idesc->id_parent]);

Index: src/sbin/fsck_lfs/inode.c
diff -u src/sbin/fsck_lfs/inode.c:1.65 src/sbin/fsck_lfs/inode.c:1.66
--- src/sbin/fsck_lfs/inode.c:1.65	Tue Sep 15 15:01:22 2015
+++ src/sbin/fsck_lfs/inode.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: inode.c,v 1.65 2015/09/15 15:01:22 dholland Exp $	 */
+/* $NetBSD: inode.c,v 1.66 2015/09/15 15:02:01 dholland Exp $	 */
 
 /*-
  * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc.
@@ -515,7 +515,7 @@ findname(struct inodesc * idesc)
 	}
 	/* this is namebuf with utils.h */
 	buf = __UNCONST(idesc->id_name);
-	(void)memcpy(buf, dirp->d_name, len);
+	(void)memcpy(buf, lfs_dir_nameptr(fs, dirp), len);
 	return (STOP | FOUND);
 }
 
@@ -528,7 +528,7 @@ findino(struct inodesc * idesc)
 	ino = lfs_dir_getino(fs, dirp);
 	if (ino == 0)
 		return (KEEPON);
-	if (strcmp(dirp->d_name, idesc->id_name) == 0 &&
+	if (strcmp(lfs_dir_nameptr(fs, dirp), idesc->id_name) == 0 &&
 	    ino >= ULFS_ROOTINO && ino < maxino) {
 		idesc->id_parent = ino;
 		return (STOP | FOUND);

Index: src/sbin/fsck_lfs/pass2.c
diff -u src/sbin/fsck_lfs/pass2.c:1.30 src/sbin/fsck_lfs/pass2.c:1.31
--- src/sbin/fsck_lfs/pass2.c:1.30	Tue Sep 15 15:01:38 2015
+++ src/sbin/fsck_lfs/pass2.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: pass2.c,v 1.30 2015/09/15 15:01:38 dholland Exp $	 */
+/* $NetBSD: pass2.c,v 1.31 2015/09/15 15:02:01 dholland Exp $	 */
 
 /*
  * Copyright (c) 1980, 1986, 1993
@@ -226,7 +226,7 @@ pass2check(struct inodesc * idesc)
 	 */
 	if (idesc->id_entryno != 0)
 		goto chk1;
-	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(dirp->d_name, ".") == 0) {
+	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(lfs_dir_nameptr(fs, dirp), ".") == 0) {
 		if (lfs_dir_getino(fs, dirp) != idesc->id_number) {
 			direrror(idesc->id_number, "BAD INODE NUMBER FOR '.'");
 			if (reply("FIX") == 1) {
@@ -249,16 +249,16 @@ pass2check(struct inodesc * idesc)
 	lfs_dir_setnamlen(fs, &proto, 1);
 	entrysize = LFS_DIRECTSIZ(1);
 	lfs_dir_setreclen(fs, &proto, entrysize);
-	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(dirp->d_name, "..") != 0) {
+	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(lfs_dir_nameptr(fs, dirp), "..") != 0) {
 		pfatal("CANNOT FIX, FIRST ENTRY IN DIRECTORY CONTAINS %s\n",
-		    dirp->d_name);
+		    lfs_dir_nameptr(fs, dirp));
 	} else if (lfs_dir_getreclen(fs, dirp) < entrysize) {
 		pfatal("CANNOT FIX, INSUFFICIENT SPACE TO ADD '.'\n");
 	} else if (lfs_dir_getreclen(fs, dirp) < 2 * entrysize) {
 		/* convert this entry to a . entry */
 		lfs_dir_setreclen(fs, &proto, lfs_dir_getreclen(fs, dirp));
 		memcpy(dirp, &proto, sizeof(proto));
-		lfs_copydirname(fs, dirp->d_name, ".", 1,
+		lfs_copydirname(fs, lfs_dir_nameptr(fs, dirp), ".", 1,
 				lfs_dir_getreclen(fs, dirp));
 		if (reply("FIX") == 1)
 			ret |= ALTERED;
@@ -266,7 +266,7 @@ pass2check(struct inodesc * idesc)
 		/* split this entry and use the beginning for the . entry */
 		n = lfs_dir_getreclen(fs, dirp) - entrysize;
 		memcpy(dirp, &proto, sizeof(proto));
-		lfs_copydirname(fs, dirp->d_name, ".", 1,
+		lfs_copydirname(fs, lfs_dir_nameptr(fs, dirp), ".", 1,
 				lfs_dir_getreclen(fs, dirp));
 		idesc->id_entryno++;
 		lncntp[lfs_dir_getino(fs, dirp)]--;
@@ -297,7 +297,7 @@ chk1:
 		memset(dirp, 0, lfs_dir_getreclen(fs, &proto));
 		lfs_dir_setreclen(fs, dirp, lfs_dir_getreclen(fs, &proto));
 	}
-	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(dirp->d_name, "..") == 0) {
+	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(lfs_dir_nameptr(fs, dirp), "..") == 0) {
 		inp->i_dotdot = lfs_dir_getino(fs, dirp);
 		if (lfs_dir_gettype(fs, dirp) != LFS_DT_DIR) {
 			direrror(idesc->id_number, "BAD TYPE VALUE FOR '..'");
@@ -307,10 +307,10 @@ chk1:
 		}
 		goto chk2;
 	}
-	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(dirp->d_name, ".") != 0) {
+	if (lfs_dir_getino(fs, dirp) != 0 && strcmp(lfs_dir_nameptr(fs, dirp), ".") != 0) {
 		fileerror(inp->i_parent, idesc->id_number, "MISSING '..'");
 		pfatal("CANNOT FIX, SECOND ENTRY IN DIRECTORY CONTAINS %s\n",
-		    dirp->d_name);
+		    lfs_dir_nameptr(fs, dirp));
 		inp->i_dotdot = (ino_t) - 1;
 	} else if (lfs_dir_getreclen(fs, dirp) < entrysize) {
 		fileerror(inp->i_parent, idesc->id_number, "MISSING '..'");
@@ -324,7 +324,7 @@ chk1:
 		fileerror(inp->i_parent, idesc->id_number, "MISSING '..'");
 		lfs_dir_setreclen(fs, &proto, lfs_dir_getreclen(fs, dirp));
 		memcpy(dirp, &proto, (size_t) entrysize);
-		lfs_copydirname(fs, dirp->d_name, "..", 2,
+		lfs_copydirname(fs, lfs_dir_nameptr(fs, dirp), "..", 2,
 				lfs_dir_getreclen(fs, dirp));
 		if (reply("FIX") == 1)
 			ret |= ALTERED;
@@ -337,7 +337,7 @@ chk2:
 	if (lfs_dir_getino(fs, dirp) == 0)
 		return (ret | KEEPON);
 	if (lfs_dir_getnamlen(fs, dirp) <= 2 &&
-	    dirp->d_name[0] == '.' &&
+	    lfs_dir_nameptr(fs, dirp)[0] == '.' &&
 	    idesc->id_entryno >= 2) {
 		if (lfs_dir_getnamlen(fs, dirp) == 1) {
 			direrror(idesc->id_number, "EXTRA '.' ENTRY");
@@ -347,7 +347,7 @@ chk2:
 			}
 			return (KEEPON | ret);
 		}
-		if (dirp->d_name[1] == '.') {
+		if (lfs_dir_nameptr(fs, dirp)[1] == '.') {
 			direrror(idesc->id_number, "EXTRA '..' ENTRY");
 			if (reply("FIX") == 1) {
 				lfs_dir_setino(fs, dirp, 0);

Index: src/sbin/newfs_lfs/make_lfs.c
diff -u src/sbin/newfs_lfs/make_lfs.c:1.52 src/sbin/newfs_lfs/make_lfs.c:1.53
--- src/sbin/newfs_lfs/make_lfs.c:1.52	Tue Sep 15 15:01:38 2015
+++ src/sbin/newfs_lfs/make_lfs.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: make_lfs.c,v 1.52 2015/09/15 15:01:38 dholland Exp $	*/
+/*	$NetBSD: make_lfs.c,v 1.53 2015/09/15 15:02:01 dholland Exp $	*/
 
 /*-
  * Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -62,7 +62,7 @@
 #if 0
 static char sccsid[] = "@(#)lfs.c	8.5 (Berkeley) 5/24/95";
 #else
-__RCSID("$NetBSD: make_lfs.c,v 1.52 2015/09/15 15:01:38 dholland Exp $");
+__RCSID("$NetBSD: make_lfs.c,v 1.53 2015/09/15 15:02:01 dholland Exp $");
 #endif
 #endif /* not lint */
 
@@ -380,7 +380,7 @@ make_dir(struct lfs *fs, void *bufp,
 		lfs_dir_setreclen(fs, ep, reclen);
 		lfs_dir_settype(fs, ep, protodir[i].dp_type);
 		lfs_dir_setnamlen(fs, ep, namlen);
-		lfs_copydirname(fs, ep->d_name, protodir[i].dp_name,
+		lfs_copydirname(fs, lfs_dir_nameptr(fs, ep), protodir[i].dp_name,
 				namlen, reclen);
 		ep = LFS_NEXTDIR(fs, ep);
 	}

Index: src/sys/ufs/lfs/lfs.h
diff -u src/sys/ufs/lfs/lfs.h:1.187 src/sys/ufs/lfs/lfs.h:1.188
--- src/sys/ufs/lfs/lfs.h:1.187	Tue Sep 15 14:59:58 2015
+++ src/sys/ufs/lfs/lfs.h	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs.h,v 1.187 2015/09/15 14:59:58 dholland Exp $	*/
+/*	$NetBSD: lfs.h,v 1.188 2015/09/15 15:02:01 dholland Exp $	*/
 
 /*  from NetBSD: dinode.h,v 1.22 2013/01/22 09:39:18 dholland Exp  */
 /*  from NetBSD: dir.h,v 1.21 2009/07/22 04:49:19 dholland Exp  */
@@ -376,16 +376,6 @@ struct lfs_direct {
 	char	  d_name[LFS_MAXNAMLEN + 1];/* name with length <= LFS_MAXNAMLEN */
 };
 
-/* Note that this does *not* byteswap and should probably be phased out */
-#define LFS_DIRECT_INITIALIZER(ino, type, namlen, name) \
-	{							\
-		.d_ino = (ino),					\
-		.d_reclen = LFS_DIRECTSIZE(namlen),		\
-		.d_type = (type),				\
-		.d_namlen = (namlen),				\
-		.d_name = (name)				\
-	}
-
 /*
  * Template for manipulating directories.  Should use struct lfs_direct's,
  * but the name field is LFS_MAXNAMLEN - 1, and this just won't do.

Index: src/sys/ufs/lfs/lfs_accessors.h
diff -u src/sys/ufs/lfs/lfs_accessors.h:1.25 src/sys/ufs/lfs/lfs_accessors.h:1.26
--- src/sys/ufs/lfs/lfs_accessors.h:1.25	Tue Sep 15 15:01:38 2015
+++ src/sys/ufs/lfs/lfs_accessors.h	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_accessors.h,v 1.25 2015/09/15 15:01:38 dholland Exp $	*/
+/*	$NetBSD: lfs_accessors.h,v 1.26 2015/09/15 15:02:01 dholland Exp $	*/
 
 /*  from NetBSD: lfs.h,v 1.165 2015/07/24 06:59:32 dholland Exp  */
 /*  from NetBSD: dinode.h,v 1.22 2013/01/22 09:39:18 dholland Exp  */
@@ -244,6 +244,12 @@
 #define LFS_NEXTDIR(fs, dp) \
 	((struct lfs_direct *)((char *)(dp) + lfs_dir_getreclen(fs, dp)))
 
+static __unused inline char *
+lfs_dir_nameptr(const STRUCT_LFS *fs, struct lfs_direct *dp)
+{
+	return (char *)(&dp->d_header + 1);
+}
+
 static __unused inline uint32_t
 lfs_dir_getino(const STRUCT_LFS *fs, const struct lfs_direct *dp)
 {

Index: src/sys/ufs/lfs/lfs_rename.c
diff -u src/sys/ufs/lfs/lfs_rename.c:1.11 src/sys/ufs/lfs/lfs_rename.c:1.12
--- src/sys/ufs/lfs/lfs_rename.c:1.11	Tue Sep 15 15:00:32 2015
+++ src/sys/ufs/lfs/lfs_rename.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: lfs_rename.c,v 1.11 2015/09/15 15:00:32 dholland Exp $	*/
+/*	$NetBSD: lfs_rename.c,v 1.12 2015/09/15 15:02:01 dholland Exp $	*/
 /*  from NetBSD: ufs_rename.c,v 1.6 2013/01/22 09:39:18 dholland Exp  */
 
 /*-
@@ -89,7 +89,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: lfs_rename.c,v 1.11 2015/09/15 15:00:32 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: lfs_rename.c,v 1.12 2015/09/15 15:02:01 dholland Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -442,7 +442,7 @@ ulfs_rename_recalculate_fulr(struct vnod
 		if (fcnp->cn_namelen != ulfs_direct_namlen(ep, dvp))
 			goto next;	/* Wrong name length.  */
 
-		if (memcmp(ep->d_name, fcnp->cn_nameptr, fcnp->cn_namelen))
+		if (memcmp(lfs_dir_nameptr(fs, ep), fcnp->cn_nameptr, fcnp->cn_namelen))
 			goto next;	/* Wrong name.  */
 
 		/* Got it!  */

Index: src/sys/ufs/lfs/ulfs_dirhash.c
diff -u src/sys/ufs/lfs/ulfs_dirhash.c:1.10 src/sys/ufs/lfs/ulfs_dirhash.c:1.11
--- src/sys/ufs/lfs/ulfs_dirhash.c:1.10	Tue Sep 15 14:58:06 2015
+++ src/sys/ufs/lfs/ulfs_dirhash.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ulfs_dirhash.c,v 1.10 2015/09/15 14:58:06 dholland Exp $	*/
+/*	$NetBSD: ulfs_dirhash.c,v 1.11 2015/09/15 15:02:01 dholland Exp $	*/
 /*  from NetBSD: ufs_dirhash.c,v 1.34 2009/10/05 23:48:08 rmind Exp  */
 
 /*
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_dirhash.c,v 1.10 2015/09/15 14:58:06 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_dirhash.c,v 1.11 2015/09/15 15:02:01 dholland Exp $");
 
 /*
  * This implements a hash-based lookup scheme for ULFS directories.
@@ -236,7 +236,7 @@ ulfsdirhash_build(struct inode *ip)
 		}
 		if (lfs_dir_getino(fs, ep) != 0) {
 			/* Add the entry (simplified ulfsdirhash_add). */
-			slot = ulfsdirhash_hash(dh, ep->d_name,
+			slot = ulfsdirhash_hash(dh, lfs_dir_nameptr(fs, ep),
 						lfs_dir_getnamlen(fs, ep));
 			while (DH_ENTRY(dh, slot) != DIRHASH_EMPTY)
 				slot = WRAPINCR(slot, dh->dh_hlen);
@@ -433,7 +433,7 @@ restart:
 			return (EJUSTRETURN);
 		}
 		if (lfs_dir_getnamlen(fs, dp) == namelen &&
-		    memcmp(dp->d_name, name, namelen) == 0) {
+		    memcmp(lfs_dir_nameptr(fs, dp), name, namelen) == 0) {
 			/* Found. Get the prev offset if needed. */
 			if (prevoffp != NULL) {
 				if (offset & (dirblksiz - 1)) {
@@ -650,7 +650,8 @@ ulfsdirhash_add(struct inode *ip, struct
 	}
 
 	/* Find a free hash slot (empty or deleted), and add the entry. */
-	slot = ulfsdirhash_hash(dh, dirp->d_name, lfs_dir_getnamlen(fs, dirp));
+	slot = ulfsdirhash_hash(dh, lfs_dir_nameptr(fs, dirp),
+				lfs_dir_getnamlen(fs, dirp));
 	while (DH_ENTRY(dh, slot) >= 0)
 		slot = WRAPINCR(slot, dh->dh_hlen);
 	if (DH_ENTRY(dh, slot) == DIRHASH_EMPTY)
@@ -687,7 +688,7 @@ ulfsdirhash_remove(struct inode *ip, str
 
 	KASSERT(offset < dh->dh_dirblks * dirblksiz);
 	/* Find the entry */
-	slot = ulfsdirhash_findslot(dh, dirp->d_name,
+	slot = ulfsdirhash_findslot(dh, lfs_dir_nameptr(fs, dirp),
 				    lfs_dir_getnamlen(fs, dirp), offset);
 
 	/* Remove the hash entry. */
@@ -722,7 +723,7 @@ ulfsdirhash_move(struct inode *ip, struc
 	KASSERT(oldoff < dh->dh_dirblks * ip->i_lfs->um_dirblksiz &&
 	    newoff < dh->dh_dirblks * ip->i_lfs->um_dirblksiz);
 	/* Find the entry, and update the offset. */
-	slot = ulfsdirhash_findslot(dh, dirp->d_name,
+	slot = ulfsdirhash_findslot(dh, lfs_dir_nameptr(fs, dirp),
 				    lfs_dir_getnamlen(fs, dirp), oldoff);
 	DH_ENTRY(dh, slot) = newoff;
 	DIRHASH_UNLOCK(dh);
@@ -872,7 +873,8 @@ ulfsdirhash_checkblock(struct inode *ip,
 		}
 
 		/* Check that the entry	exists (will panic if it doesn't). */
-		ulfsdirhash_findslot(dh, dp->d_name, lfs_dir_getnamlen(fs, dp),
+		ulfsdirhash_findslot(dh, lfs_dir_nameptr(fs, dp),
+				     lfs_dir_getnamlen(fs, dp),
 				     offset + i);
 
 		nfree += lfs_dir_getreclen(fs, dp) - LFS_DIRSIZ(fs, dp);

Index: src/sys/ufs/lfs/ulfs_lookup.c
diff -u src/sys/ufs/lfs/ulfs_lookup.c:1.30 src/sys/ufs/lfs/ulfs_lookup.c:1.31
--- src/sys/ufs/lfs/ulfs_lookup.c:1.30	Tue Sep 15 15:01:22 2015
+++ src/sys/ufs/lfs/ulfs_lookup.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ulfs_lookup.c,v 1.30 2015/09/15 15:01:22 dholland Exp $	*/
+/*	$NetBSD: ulfs_lookup.c,v 1.31 2015/09/15 15:02:01 dholland Exp $	*/
 /*  from NetBSD: ufs_lookup.c,v 1.122 2013/01/22 09:39:18 dholland Exp  */
 
 /*
@@ -38,7 +38,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.30 2015/09/15 15:01:22 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_lookup.c,v 1.31 2015/09/15 15:02:01 dholland Exp $");
 
 #ifdef _KERNEL_OPT
 #include "opt_lfs.h"
@@ -377,7 +377,7 @@ searchloop:
 
 			namlen = lfs_dir_getnamlen(fs, ep);
 			if (namlen == cnp->cn_namelen &&
-			    !memcmp(cnp->cn_nameptr, ep->d_name,
+			    !memcmp(cnp->cn_nameptr, lfs_dir_nameptr(fs, ep),
 			    (unsigned)namlen)) {
 #ifdef LFS_DIRHASH
 foundentry:
@@ -683,7 +683,7 @@ ulfs_dirbadentry(struct vnode *dp, struc
 	}
 	if (lfs_dir_getino(fs, ep) == 0)
 		return (0);
-	name = ep->d_name;
+	name = lfs_dir_nameptr(fs, ep);
 	for (i = 0; i < namlen; i++)
 		if (name[i] == '\0') {
 			/*return (1); */
@@ -719,8 +719,8 @@ ulfs_direntry_assign(struct lfs *fs, str
 	lfs_dir_setino(fs, dirp, inum);
 	lfs_dir_setnamlen(fs, dirp, namlen);
 	lfs_dir_settype(fs, dirp, dtype);
-	memcpy(dirp->d_name, name, namlen);
-	dirp->d_name[namlen] = '\0';
+	memcpy(lfs_dir_nameptr(fs, dirp), name, namlen);
+	lfs_dir_nameptr(fs, dirp)[namlen] = '\0';
 }
 
 /*
@@ -907,7 +907,7 @@ ulfs_direnter(struct vnode *dvp, const s
 	 */
 	if (lfs_dir_getino(fs, ep) == 0 ||
 	    (lfs_dir_getino(fs, ep) == ULFS_WINO &&
-	     memcmp(ep->d_name, name, namlen) == 0)) {
+	     memcmp(lfs_dir_nameptr(fs, ep), name, namlen) == 0)) {
 		if (spacefree + dsize < newentrysize)
 			panic("ulfs_direnter: compact1");
 		reclen = spacefree + dsize;
@@ -1160,7 +1160,7 @@ ulfs_dirempty(struct inode *ip, ino_t pa
 			continue;
 		/* accept only "." and ".." */
 		namlen = lfs_dir_getnamlen(fs, dp);
-		name = dp->d_name;
+		name = lfs_dir_nameptr(fs, dp);
 		if (namlen > 2)
 			return (0);
 		if (name[0] != '.')
Index: src/sys/ufs/lfs/ulfs_vnops.c
diff -u src/sys/ufs/lfs/ulfs_vnops.c:1.30 src/sys/ufs/lfs/ulfs_vnops.c:1.31
--- src/sys/ufs/lfs/ulfs_vnops.c:1.30	Tue Sep 15 15:00:32 2015
+++ src/sys/ufs/lfs/ulfs_vnops.c	Tue Sep 15 15:02:01 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: ulfs_vnops.c,v 1.30 2015/09/15 15:00:32 dholland Exp $	*/
+/*	$NetBSD: ulfs_vnops.c,v 1.31 2015/09/15 15:02:01 dholland Exp $	*/
 /*  from NetBSD: ufs_vnops.c,v 1.213 2013/06/08 05:47:02 kardel Exp  */
 
 /*-
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.30 2015/09/15 15:00:32 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ulfs_vnops.c,v 1.31 2015/09/15 15:02:01 dholland Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_lfs.h"
@@ -863,7 +863,8 @@ ulfs_readdir(void *v)
 		    _DIRENT_MINSIZE(ndp) > endp)
 			break;
 		ndp->d_fileno = lfs_dir_getino(fs, cdp);
-		(void)memcpy(ndp->d_name, cdp->d_name, ndp->d_namlen);
+		(void)memcpy(ndp->d_name, lfs_dir_nameptr(fs, cdp),
+			     ndp->d_namlen);
 		memset(&ndp->d_name[ndp->d_namlen], 0,
 		    ndp->d_reclen - _DIRENT_NAMEOFF(ndp) - ndp->d_namlen);
 		off += lfs_dir_getreclen(fs, cdp);

Reply via email to