diff -urNp linux-2.4.19/fs/smbfs/inode.c linux-2.4.19.SUSE/fs/smbfs/inode.c
--- linux-2.4.19/fs/smbfs/inode.c	2004-05-05 14:30:36.000000000 +0200
+++ linux-2.4.19.SUSE/fs/smbfs/inode.c	2004-05-05 14:30:53.000000000 +0200
@@ -23,6 +23,7 @@
 #include <linux/smp_lock.h>
 #include <linux/nls.h>
 #include <linux/seq_file.h>
+#include <linux/highuid.h>
 
 #include <linux/smb_fs.h>
 #include <linux/smbno.h>
@@ -485,10 +486,8 @@ smb_read_super(struct super_block *sb, v
 	if (ver == SMB_MOUNT_OLDVERSION) {
 		mnt->version = oldmnt->version;
 
-		/* FIXME: is this enough to convert uid/gid's ? */
-		mnt->mounted_uid = oldmnt->mounted_uid;
-		mnt->uid = oldmnt->uid;
-		mnt->gid = oldmnt->gid;
+		mnt->uid = low2highuid(oldmnt->uid);
+		mnt->gid = low2highuid(oldmnt->gid);
 
 		mnt->file_mode = (oldmnt->file_mode & S_IRWXUGO) | S_IFREG;
 		mnt->dir_mode = (oldmnt->dir_mode & S_IRWXUGO) | S_IFDIR;
@@ -497,9 +496,8 @@ smb_read_super(struct super_block *sb, v
 	} else {
 		if (parse_options(mnt, raw_data))
 			goto out_bad_option;
-
-		mnt->mounted_uid = current->uid;
 	}
+	mnt->mounted_uid = current->uid;
 	smb_setcodepage(server, &mnt->codepage);
 
 	/*
diff -urNp linux-2.4.19/include/linux/smb_mount.h linux-2.4.19.SUSE/include/linux/smb_mount.h
--- linux-2.4.19/include/linux/smb_mount.h	2004-05-05 14:30:36.000000000 +0200
+++ linux-2.4.19.SUSE/include/linux/smb_mount.h	2004-05-05 14:30:53.000000000 +0200
@@ -43,11 +43,11 @@ struct smb_mount_data {
 struct smb_mount_data_kernel {
 	int version;
 
-	__kernel_uid_t mounted_uid;	/* Who may umount() this filesystem? */
-	__kernel_uid_t uid;
-	__kernel_gid_t gid;
-	__kernel_mode_t file_mode;
-	__kernel_mode_t dir_mode;
+	uid_t mounted_uid;	/* Who may umount() this filesystem? */
+	uid_t uid;
+	gid_t gid;
+	mode_t file_mode;
+	mode_t dir_mode;
 
 	u32 flags;