>Number:         152079
>Category:       kern
>Synopsis:       msdosfs: Small cleanups from the other NetBSD/OpenBSD
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Tue Nov 09 15:50:06 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Pedro Giffuni
>Release:        8.1-RELEASE
>Organization:
>Environment:
FreeBSD mogwai.giffuni.net 8.1-RELEASE FreeBSD 8.1-RELEASE #0: Mon Jul 19 
02:55:53 UTC 2010     [email protected]:/usr/obj/usr/src/sys/GENERIC 
 i386

>Description:
Here are some small cleanups to sync with the other BSDs.

denode.h
NetBSD: protect userland exported files against multiple inclusion.
OpenBSD: Move some macros in <msdosfs/denode.h> to outside the #ifdef _KERNEL
so that libkvm doesn't need to define that, thereby avoiding some warnings.


msdosfs_lookup.c
NetBSD: Return EINVAL for rename and delete operations to the
root directory instead of the erroneous EROFS.
>How-To-Repeat:

>Fix:
Patch follows.

Patch attached with submission follows:

--- msdosfs/denode.h.orig       2010-11-09 09:54:16.000000000 +0000
+++ msdosfs/denode.h    2010-11-09 10:11:06.000000000 +0000
@@ -47,6 +47,8 @@
  *
  * October 1992
  */
+#ifndef _FS_MSDOSFS_DENODE_H_
+#define _FS_MSDOSFS_DENODE_H_
 
 /*
  * This is the pc filesystem specific portion of the vnode structure.
@@ -207,8 +209,6 @@
             ((dep)->de_Attributes & ATTR_DIRECTORY) ? 0 : (dep)->de_FileSize), 
\
         putushort((dp)->deHighClust, (dep)->de_StartCluster >> 16))
 
-#ifdef _KERNEL
-
 #define        VTODE(vp)       ((struct denode *)(vp)->v_data)
 #define        DETOV(de)       ((de)->de_vnode)
 
@@ -254,6 +254,8 @@
 #endif
 };
 
+#ifdef _KERNEL
+
 extern struct vop_vector msdosfs_vnodeops;
 
 int msdosfs_lookup(struct vop_cachedlookup_args *);
@@ -279,3 +281,4 @@
 int detrunc(struct denode *dep, u_long length, int flags, struct ucred *cred, 
struct thread *td);
 int doscheckpath( struct denode *source, struct denode *target);
 #endif /* _KERNEL */
+#endif /* !_FS_MSDOSFS_DENODE_H_ */
--- msdosfs/msdosfs_lookup.c.orig       2010-11-09 09:49:14.000000000 +0000
+++ msdosfs/msdosfs_lookup.c    2010-11-09 09:50:44.000000000 +0000
@@ -458,7 +458,7 @@
                 * Don't allow deleting the root.
                 */
                if (blkoff == MSDOSFSROOT_OFS)
-                       return EROFS;                           /* really? XXX 
*/
+                       return EINVAL;
 
                /*
                 * Write access to directory required to delete files.
@@ -491,7 +491,7 @@
         */
        if (nameiop == RENAME && (flags & ISLASTCN)) {
                if (blkoff == MSDOSFSROOT_OFS)
-                       return EROFS;                           /* really? XXX 
*/
+                       return EINVAL;
 
                error = VOP_ACCESS(vdp, VWRITE, cnp->cn_cred, cnp->cn_thread);
                if (error)


>Release-Note:
>Audit-Trail:
>Unformatted:
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-bugs
To unsubscribe, send any mail to "[email protected]"

Reply via email to