Module Name:    src
Committed By:   christos
Date:           Tue Sep 27 01:40:32 UTC 2011

Modified Files:
        src/sys/sys: dirent.h extattr.h mqueue.h param.h syslimits.h xattr.h

Log Message:
Introduce KERNEL_NAME_MAX = 255, and bump NAME_MAX to 511. This makes
NAME_MAX match MAXNAMLEN, while at the same time does not allow names
to exceed KERNEL_NAME_MAX (enforced in vfs_lookup) so that binaries
don't break.


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 src/sys/sys/dirent.h
cvs rdiff -u -r1.7 -r1.8 src/sys/sys/extattr.h
cvs rdiff -u -r1.13 -r1.14 src/sys/sys/mqueue.h
cvs rdiff -u -r1.393 -r1.394 src/sys/sys/param.h
cvs rdiff -u -r1.24 -r1.25 src/sys/sys/syslimits.h
cvs rdiff -u -r1.4 -r1.5 src/sys/sys/xattr.h

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

Modified files:

Index: src/sys/sys/dirent.h
diff -u src/sys/sys/dirent.h:1.27 src/sys/sys/dirent.h:1.28
--- src/sys/sys/dirent.h:1.27	Tue Aug  9 16:05:04 2011
+++ src/sys/sys/dirent.h	Mon Sep 26 21:40:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: dirent.h,v 1.27 2011/08/09 20:05:04 dholland Exp $	*/
+/*	$NetBSD: dirent.h,v 1.28 2011/09/27 01:40:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 1989, 1993
@@ -52,7 +52,7 @@ struct dirent {
 	uint16_t d_namlen;		/* length of string in d_name */
 	uint8_t  d_type; 		/* file type, see below */
 #if defined(_NETBSD_SOURCE)
-#define	MAXNAMLEN	511
+#define	MAXNAMLEN	511		/* must be kept in sync with NAME_MAX */
 	char	d_name[MAXNAMLEN + 1];	/* name must be no longer than this */
 #else
 	char	d_name[511 + 1];	/* name must be no longer than this */

Index: src/sys/sys/extattr.h
diff -u src/sys/sys/extattr.h:1.7 src/sys/sys/extattr.h:1.8
--- src/sys/sys/extattr.h:1.7	Wed Aug  3 00:11:17 2011
+++ src/sys/sys/extattr.h	Mon Sep 26 21:40:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: extattr.h,v 1.7 2011/08/03 04:11:17 manu Exp $	*/
+/*	$NetBSD: extattr.h,v 1.8 2011/09/27 01:40:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 1999-2001 Robert N. M. Watson
@@ -52,12 +52,12 @@
 
 #ifdef _KERNEL
 
-#include <sys/syslimits.h>
+#include <sys/param.h>
 
 /* VOP_LISTEXTATTR flags */
 #define EXTATTR_LIST_LENPREFIX	1	/* names with length prefix */
 
-#define	EXTATTR_MAXNAMELEN	NAME_MAX
+#define	EXTATTR_MAXNAMELEN	KERNEL_NAME_MAX
 struct lwp;
 struct vnode;
 int	extattr_check_cred(struct vnode *, int, kauth_cred_t,

Index: src/sys/sys/mqueue.h
diff -u src/sys/sys/mqueue.h:1.13 src/sys/sys/mqueue.h:1.14
--- src/sys/sys/mqueue.h:1.13	Sun Apr 24 16:17:53 2011
+++ src/sys/sys/mqueue.h	Mon Sep 26 21:40:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: mqueue.h,v 1.13 2011/04/24 20:17:53 rmind Exp $	*/
+/*	$NetBSD: mqueue.h,v 1.14 2011/09/27 01:40:32 christos Exp $	*/
 
 /*
  * Copyright (c) 2007-2009 Mindaugas Rasiukevicius <rmind at NetBSD org>
@@ -50,6 +50,7 @@ struct mq_attr {
 #include <sys/queue.h>
 #include <sys/selinfo.h>
 #include <sys/types.h>
+#include <sys/param.h>
 
 /*
  * Flags below are used in mq_flags for internal purposes.
@@ -62,7 +63,7 @@ struct mq_attr {
 #define	MQ_RECEIVE		0x20000000
 
 /* Maximal length of mqueue name */
-#define	MQ_NAMELEN		(NAME_MAX + 1)
+#define	MQ_NAMELEN		(KERNEL_NAME_MAX + 1)
 
 /* Default size of the message */
 #define	MQ_DEF_MSGSIZE		1024

Index: src/sys/sys/param.h
diff -u src/sys/sys/param.h:1.393 src/sys/sys/param.h:1.394
--- src/sys/sys/param.h:1.393	Fri Sep 23 10:47:41 2011
+++ src/sys/sys/param.h	Mon Sep 26 21:40:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: param.h,v 1.393 2011/09/23 14:47:41 christos Exp $	*/
+/*	$NetBSD: param.h,v 1.394 2011/09/27 01:40:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -323,6 +323,15 @@
 #define	MAXPATHLEN	PATH_MAX
 #define	MAXSYMLINKS	32
 
+/*
+ * This is the maximum individual filename component length enforced by
+ * namei. Filesystems cannot exceed this limit. The upper bound for that
+ * limit is NAME_MAX. We don't bump it for now, for compatibility with
+ * old binaries during the time where MAXPATHLEN was 511 and NAME_MAX was
+ * 255
+ */
+#define	KERNEL_NAME_MAX	255
+
 /* Bit map related macros. */
 #define	setbit(a,i)	((a)[(i)/NBBY] |= 1<<((i)%NBBY))
 #define	clrbit(a,i)	((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))

Index: src/sys/sys/syslimits.h
diff -u src/sys/sys/syslimits.h:1.24 src/sys/sys/syslimits.h:1.25
--- src/sys/sys/syslimits.h:1.24	Mon Feb 25 12:29:13 2008
+++ src/sys/sys/syslimits.h	Mon Sep 26 21:40:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: syslimits.h,v 1.24 2008/02/25 17:29:13 ad Exp $	*/
+/*	$NetBSD: syslimits.h,v 1.25 2011/09/27 01:40:32 christos Exp $	*/
 
 /*
  * Copyright (c) 1988, 1993
@@ -46,7 +46,8 @@
 #define	LINK_MAX		32767	/* max file link count */
 #define	MAX_CANON		  255	/* max bytes in term canon input line */
 #define	MAX_INPUT		  255	/* max bytes in terminal input */
-#define	NAME_MAX		  255	/* max bytes in a file name */
+#define	NAME_MAX		  511	/* max bytes in a file name, must be
+					/* kept in sync with MAXPATHLEN */
 #define	NGROUPS_MAX		   16	/* max supplemental group id's */
 #define	UID_MAX		   2147483647U	/* max value for a uid_t (2^31-2) */
 #ifndef OPEN_MAX

Index: src/sys/sys/xattr.h
diff -u src/sys/sys/xattr.h:1.4 src/sys/sys/xattr.h:1.5
--- src/sys/sys/xattr.h:1.4	Mon Jul 18 07:28:24 2011
+++ src/sys/sys/xattr.h	Mon Sep 26 21:40:32 2011
@@ -1,4 +1,4 @@
-/*	$NetBSD: xattr.h,v 1.4 2011/07/18 11:28:24 drochner Exp $	*/
+/*	$NetBSD: xattr.h,v 1.5 2011/09/27 01:40:32 christos Exp $	*/
 
 /*-
  * Copyright (c) 2005 The NetBSD Foundation, Inc.
@@ -41,13 +41,13 @@
 #define	_SYS_XATTR_H_
 
 #include <sys/types.h>
-#include <sys/syslimits.h>
+#include <sys/param.h>
 
 /*
  * This is compatible with EXTATTR_MAXNAMELEN, and also happens to be
  * the same as Linux (255).
  */
-#define	XATTR_NAME_MAX		NAME_MAX
+#define	XATTR_NAME_MAX		KERNEL_NAME_MAX
 
 #define	XATTR_SIZE_MAX		65536	/* NetBSD does not enforce this */
 

Reply via email to