Re: buggy changes to fs/smbfs/inode.c

From: Urban Widmark
Date: Fri Sep 26 2003 - 14:13:06 EST


On Thu, 25 Sep 2003, David S. Miller wrote:

>
> Your changes to fs/smbfs/inode.c do not build on platforms
> that do not define CONFIG_UID16. You cannot use low2highuid()
> unless CONFIG_UID16 is known to be defined.

Ah, sorry about that.

I guess what I want is an OLD_TO_NEW_UID macro. How does this look?

/Urban


--- linux-2.6.0-test5-smbfs/fs/smbfs/inode.c-orig Fri Sep 26 21:06:55 2003
+++ linux-2.6.0-test5-smbfs/fs/smbfs/inode.c Fri Sep 26 20:58:00 2003
@@ -551,8 +551,8 @@
if (ver == SMB_MOUNT_OLDVERSION) {
mnt->version = oldmnt->version;

- mnt->uid = low2highuid(oldmnt->uid);
- mnt->gid = low2highuid(oldmnt->gid);
+ mnt->uid = OLD_TO_NEW_UID(oldmnt->uid);
+ mnt->gid = OLD_TO_NEW_GID(oldmnt->gid);

mnt->file_mode = (oldmnt->file_mode & S_IRWXUGO) | S_IFREG;
mnt->dir_mode = (oldmnt->dir_mode & S_IRWXUGO) | S_IFDIR;
--- linux-2.6.0-test5-smbfs/include/linux/highuid.h-orig Fri Sep 26 21:07:34 2003
+++ linux-2.6.0-test5-smbfs/include/linux/highuid.h Fri Sep 26 21:07:42 2003
@@ -56,6 +56,8 @@
#define SET_GID16(var, gid) var = high2lowgid(gid)
#define NEW_TO_OLD_UID(uid) high2lowuid(uid)
#define NEW_TO_OLD_GID(gid) high2lowgid(gid)
+#define OLD_TO_NEW_UID(uid) low2highuid(uid)
+#define OLD_TO_NEW_GID(gid) low2highgid(gid)

/* specific to fs/stat.c */
#define SET_OLDSTAT_UID(stat, uid) (stat).st_uid = high2lowuid(uid)
@@ -69,6 +71,8 @@
#define SET_GID16(var, gid) do { ; } while (0)
#define NEW_TO_OLD_UID(uid) (uid)
#define NEW_TO_OLD_GID(gid) (gid)
+#define OLD_TO_NEW_UID(uid) (uid)
+#define OLD_TO_NEW_GID(gid) (gid)

#define SET_OLDSTAT_UID(stat, uid) (stat).st_uid = (uid)
#define SET_OLDSTAT_GID(stat, gid) (stat).st_gid = (gid)

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/