9ns: Use an int for perm and mode

-1 means "don't change the mode."  That was 0x00000000ffffffff, which is
not ~0UL (0xffffffffffffffff).  Just use an int and don't play games with
the sizeof longs and whatnot.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
diff --git a/kern/drivers/dev/pipe.c b/kern/drivers/dev/pipe.c
index be2593b..b2e24cf 100644
--- a/kern/drivers/dev/pipe.c
+++ b/kern/drivers/dev/pipe.c
@@ -507,7 +507,7 @@
 			error(EEXIST, ERROR_FIXME);
 		strncpy(p->pipedir[1 + d1].name, d->name, KNAMELEN);
 	}
-	if (d->mode != ~0UL)
+	if (d->mode != -1)
 		p->pipedir[d1 + 1].perm = d->mode & 0777;
 	poperror();
 	kfree(d);
diff --git a/kern/drivers/dev/proc.c b/kern/drivers/dev/proc.c
index f4f9150..4212f8b 100644
--- a/kern/drivers/dev/proc.c
+++ b/kern/drivers/dev/proc.c
@@ -693,7 +693,7 @@
 		else
 			proc_set_username(p, d->uid);
 	}
-	if (d->mode != ~0UL)
+	if (d->mode != -1)
 		p->procmode = d->mode & 0777;
 
 	poperror();
diff --git a/kern/drivers/dev/root.c b/kern/drivers/dev/root.c
index 08a16e4..33275ca 100644
--- a/kern/drivers/dev/root.c
+++ b/kern/drivers/dev/root.c
@@ -442,7 +442,7 @@
 	if (!emptystr(dir->name))
 		printk("[%s] attempted rename of %s to %s\n", __FUNCTION__,
 		       file->name, dir->name);	/* strncpy for this btw */
-	if (dir->mode != ~0UL)
+	if (dir->mode != -1)
 		file->perm = dir->mode | (file->qid.type == QTDIR ? DMDIR : 0);
 	kfree(dir);
 	return m_sz;
diff --git a/kern/drivers/dev/sd.c b/kern/drivers/dev/sd.c
index 6022cc9..6259f23 100644
--- a/kern/drivers/dev/sd.c
+++ b/kern/drivers/dev/sd.c
@@ -1451,7 +1451,7 @@
 		error(EIO, "Short status");
 	if (!emptystr(d[0].uid))
 		kstrdup(&perm->user, d[0].uid);
-	if (d[0].mode != (uint32_t)~0UL)
+	if (d[0].mode != -1)
 		perm->perm = (perm->perm & ~0777) | (d[0].mode & 0777);
 
 	kfree(d);
diff --git a/kern/include/ns.h b/kern/include/ns.h
index 9dad04e..eb7fa9c 100644
--- a/kern/include/ns.h
+++ b/kern/include/ns.h
@@ -139,7 +139,7 @@
 	unsigned int dev;			/* server subtype */
 	/* file data */
 	struct qid qid;				/* unique id from server */
-	uint32_t mode;				/* permissions */
+	int mode;					/* permissions */
 	uint32_t atime;				/* last read time */
 	uint32_t mtime;				/* last write time */
 	int64_t length;				/* file length: see <u.h> */
@@ -475,7 +475,7 @@
 	char name[KNAMELEN];
 	struct qid qid;
 	int64_t length;
-	long perm;
+	int perm;
 };
 
 struct walkqid {
diff --git a/kern/src/net/devip.c b/kern/src/net/devip.c
index 63d5289..717bd3e 100644
--- a/kern/src/net/devip.c
+++ b/kern/src/net/devip.c
@@ -618,7 +618,7 @@
 		error(EPERM, ERROR_FIXME);
 	if (!emptystr(d->uid))
 		kstrdup(&cv->owner, d->uid);
-	if (d->mode != ~0UL)
+	if (d->mode != -1)
 		cv->perm = d->mode & 0777;
 	poperror();
 	kfree(d);
diff --git a/kern/src/net/netif.c b/kern/src/net/netif.c
index 89567ab..a66555b 100644
--- a/kern/src/net/netif.c
+++ b/kern/src/net/netif.c
@@ -471,7 +471,7 @@
 	}
 	if (!emptystr(dir[0].uid))
 		strlcpy(f->owner, dir[0].uid, KNAMELEN);
-	if (dir[0].mode != ~0UL)
+	if (dir[0].mode != -1)
 		f->mode = dir[0].mode;
 	kfree(dir);
 	return m;