Date: Wed, 8 Nov 2006 18:44:42 -0500 From: Jung-uk Kim <jkim@FreeBSD.org> To: freebsd-emulation@FreeBSD.org Subject: [PATCH] fixes for LTP mknod01, mknod07 and mknod09 Message-ID: <200611081844.44550.jkim@FreeBSD.org>
next in thread | raw e-mail | index | archive | help
[-- Attachment #1 --]
The attached patch fixes LTP mknod01, mknod07 and mknod09. This is
not a critical fix but it fixes a very annoying problem, i.e., LTP
leaves a corrupt directory after each run.
# rm -rf mknAawlFy
rm: mknAawlFy/tnode: Bad file descriptor
rm: mknAawlFy: Directory not empty
# ls -al mknAawlFy
ls: tnode: Bad file descriptor
total 4
drwxrwxrwx 2 root wheel 512 11 7 17:06 .
drwxrwxrwt 12 root wheel 512 11 8 18:41 ..
Jung-uk Kim
[-- Attachment #2 --]
--- src/sys/compat/linux/linux_misc.c.orig Tue Nov 7 17:46:33 2006
+++ src/sys/compat/linux/linux_misc.c Wed Nov 8 18:11:38 2006
@@ -890,11 +890,34 @@
printf(ARGS(mknod, "%s, %d, %d"), path, args->mode, args->dev);
#endif
- if (S_ISFIFO(args->mode))
+ switch (args->mode & S_IFMT) {
+ case S_IFIFO:
+ case S_IFSOCK:
error = kern_mkfifo(td, path, UIO_SYSSPACE, args->mode);
- else
+ break;
+
+ case S_IFCHR:
+ case S_IFBLK:
error = kern_mknod(td, path, UIO_SYSSPACE, args->mode,
args->dev);
+ break;
+
+ case S_IFDIR:
+ error = EPERM;
+ break;
+
+ case 0:
+ args->mode |= S_IFREG;
+ /* fall through */
+ case S_IFREG:
+ error = kern_open(td, path, UIO_SYSSPACE,
+ O_WRONLY | O_CREAT | O_TRUNC, args->mode);
+ break;
+
+ default:
+ error = EINVAL;
+ break;
+ }
LFREEPATH(path);
return (error);
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611081844.44550.jkim>
