diff --git a/fs/cifs/cifsfs.c b/fs/cifs/cifsfs.c
index 3d5365b..461a706 100644
--- a/fs/cifs/cifsfs.c
+++ b/fs/cifs/cifsfs.c
@@ -190,6 +190,7 @@
 
 #ifdef CONFIG_CIFS_EXPERIMENTAL
 /* BB we could add a second check for a QFS Unix capability bit */
+/* BB FIXME check CIFS_POSIX_EXTENSIONS Unix cap first FIXME BB */
     if (pTcon->ses->capabilities & CAP_UNIX)
 	    rc = CIFSSMBQFSPosixInfo(xid, pTcon, buf);
 
@@ -599,6 +600,9 @@
 #ifdef CONFIG_CIFS_EXPERIMENTAL
 	.dir_notify = cifs_dir_notify,
 #endif /* CONFIG_CIFS_EXPERIMENTAL */
+#ifdef CONFIG_CIFS_POSIX
+        .ioctl  = cifs_ioctl,
+#endif /* CONFIG_CIFS_POSIX */
 };
 
 static void
diff --git a/fs/cifs/cifspdu.h b/fs/cifs/cifspdu.h
index 5b35289..e3e9261 100644
--- a/fs/cifs/cifspdu.h
+++ b/fs/cifs/cifspdu.h
@@ -1556,7 +1556,7 @@
 #define CIFS_UNIX_POSIX_ACL_CAP         0x00000002 /* support getfacl/setfacl */
 #define CIFS_UNIX_XATTR_CAP             0x00000004 /* support new namespace   */
 #define CIFS_UNIX_EXTATTR_CAP           0x00000008 /* support chattr/chflag   */
-
+#define CIFS_POSIX_EXTENSIONS           0x00000010 /* support for new QFSInfo */
 typedef struct {
 	/* For undefined recommended transfer size return -1 in that field */
 	__le32 OptimalTransferSize;  /* bsize on some os, iosize on other os */
diff --git a/fs/cifs/ioctl.c b/fs/cifs/ioctl.c
index a4f1c34a..711bb7a 100644
--- a/fs/cifs/ioctl.c
+++ b/fs/cifs/ioctl.c
@@ -29,6 +29,8 @@
 #include "cifs_debug.h"
 #include "cifsfs.h"
 
+#define CIFS_IOC_CHECKUMOUNT _IO(0xCF, 2)
+
 int cifs_ioctl (struct inode * inode, struct file * filep, 
 		unsigned int command, unsigned long arg)
 {
@@ -36,8 +38,8 @@
 #ifdef CONFIG_CIFS_POSIX
 	__u64	ExtAttrBits = 0;
 	__u64	ExtAttrMask = 0;
-	__u64   caps;
 #endif /* CONFIG_CIFS_POSIX */
+	__u64   caps;
 	int xid;
 	struct cifs_sb_info *cifs_sb;
 	struct cifsTconInfo *tcon;
@@ -46,12 +48,11 @@
 
 	xid = GetXid();
 
+        cFYI(1,("ioctl file %p  cmd %u  arg %lu",filep,command,arg));
+
 	cifs_sb = CIFS_SB(inode->i_sb);
 	tcon = cifs_sb->tcon;
-	if (pSMBFile == NULL)
-		goto cifs_ioctl_out;
 
-#ifdef CONFIG_CIFS_POSIX
 	if(tcon)
 		caps = le64_to_cpu(tcon->fsUnixInfo.Capability);
 	else {
@@ -59,10 +60,22 @@
 		goto cifs_ioctl_out;
 	}
 
-	cFYI(1,("ioctl file %p  cmd %u  arg %lu",filep,command,arg));
 	switch(command) {
+		case CIFS_IOC_CHECKUMOUNT:
+			cFYI(1,("User unmount attempted"));
+			/* BB FIXME - add missing code here FIXME */
+			if(cifs_sb->mnt_uid == current->uid)
+				rc = 0;
+			else {
+				rc = -EACCES;
+				cFYI(1,("uids do not match"));
+			}
+			break;
+#ifdef CONFIG_CIFS_POSIX
 		case EXT2_IOC_GETFLAGS:
 			if(CIFS_UNIX_EXTATTR_CAP & caps) {
+				if (pSMBFile == NULL)
+					goto cifs_ioctl_out;
 				rc = CIFSGetExtAttr(xid, tcon, pSMBFile->netfid,
 					&ExtAttrBits, &ExtAttrMask);
 				if(rc == 0)
@@ -78,17 +91,19 @@
 					rc = -EFAULT;
 					goto cifs_ioctl_out;
 				}
-			  /* rc = CIFSGetExtAttr(xid, tcon, pSMBFile->netfid,
+				if (pSMBFile == NULL)
+					goto cifs_ioctl_out;
+				/* rc= CIFSGetExtAttr(xid,tcon,pSMBFile->netfid,
 					extAttrBits, &ExtAttrMask);*/
 				
 			}
 			cFYI(1,("set flags not implemented yet"));
 			break;
+#endif /* CONFIG_CIFS_POSIX */
 		default:
 			cFYI(1,("unsupported ioctl"));
-			return rc;
+			break;
 	}
-#endif /* CONFIG_CIFS_POSIX */
 
 cifs_ioctl_out:
 	FreeXid(xid);
