Module Name: src
Committed By: hannken
Date: Fri Apr 1 17:40:54 UTC 2011
Modified Files:
src/sys/fs/tmpfs: tmpfs_subr.c
src/tests/fs/vfs: t_vnops.c
Log Message:
Make zero length symlinks work on tmpfs.
Fixes PR #43843 (tmpfs dies with kassert panic for 0 length symlink target)
To generate a diff of this commit:
cvs rdiff -u -r1.62 -r1.63 src/sys/fs/tmpfs/tmpfs_subr.c
cvs rdiff -u -r1.22 -r1.23 src/tests/fs/vfs/t_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/sys/fs/tmpfs/tmpfs_subr.c
diff -u src/sys/fs/tmpfs/tmpfs_subr.c:1.62 src/sys/fs/tmpfs/tmpfs_subr.c:1.63
--- src/sys/fs/tmpfs/tmpfs_subr.c:1.62 Thu Jan 13 13:35:12 2011
+++ src/sys/fs/tmpfs/tmpfs_subr.c Fri Apr 1 17:40:54 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: tmpfs_subr.c,v 1.62 2011/01/13 13:35:12 pooka Exp $ */
+/* $NetBSD: tmpfs_subr.c,v 1.63 2011/04/01 17:40:54 hannken Exp $ */
/*
* Copyright (c) 2005, 2006, 2007 The NetBSD Foundation, Inc.
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: tmpfs_subr.c,v 1.62 2011/01/13 13:35:12 pooka Exp $");
+__KERNEL_RCSID(0, "$NetBSD: tmpfs_subr.c,v 1.63 2011/04/01 17:40:54 hannken Exp $");
#include <sys/param.h>
#include <sys/dirent.h>
@@ -163,6 +163,10 @@
case VLNK:
KASSERT(strlen(target) < MAXPATHLEN);
nnode->tn_size = strlen(target);
+ if (nnode->tn_size == 0) {
+ nnode->tn_spec.tn_lnk.tn_link = NULL;
+ break;
+ }
nnode->tn_spec.tn_lnk.tn_link =
tmpfs_strname_alloc(tmp, nnode->tn_size);
if (nnode->tn_spec.tn_lnk.tn_link == NULL) {
@@ -224,8 +228,9 @@
switch (node->tn_type) {
case VLNK:
- tmpfs_strname_free(tmp, node->tn_spec.tn_lnk.tn_link,
- node->tn_size);
+ if (node->tn_size > 0)
+ tmpfs_strname_free(tmp, node->tn_spec.tn_lnk.tn_link,
+ node->tn_size);
break;
case VREG:
/*
Index: src/tests/fs/vfs/t_vnops.c
diff -u src/tests/fs/vfs/t_vnops.c:1.22 src/tests/fs/vfs/t_vnops.c:1.23
--- src/tests/fs/vfs/t_vnops.c:1.22 Sat Mar 19 20:05:21 2011
+++ src/tests/fs/vfs/t_vnops.c Fri Apr 1 17:40:54 2011
@@ -1,4 +1,4 @@
-/* $NetBSD: t_vnops.c,v 1.22 2011/03/19 20:05:21 hannken Exp $ */
+/* $NetBSD: t_vnops.c,v 1.23 2011/04/01 17:40:54 hannken Exp $ */
/*-
* Copyright (c) 2010 The NetBSD Foundation, Inc.
@@ -527,10 +527,6 @@
RL(rump_sys_chdir(mp));
- if (FSTYPE_TMPFS(tc)) {
- atf_tc_expect_signal(SIGABRT, "PR kern/43843");
- }
-
RL(rump_sys_symlink("", "afile"));
RL(rump_sys_chdir("/"));
}