]> git.neil.brown.name Git - history.git/commitdiff
Avoid warnings in uid/gid usage by making the assignment
authorLinus Torvalds <torvalds@home.osdl.org>
Tue, 7 Oct 2003 07:58:01 +0000 (00:58 -0700)
committerLinus Torvalds <torvalds@home.osdl.org>
Tue, 7 Oct 2003 07:58:01 +0000 (00:58 -0700)
unconditional. Simplify the macros.

fs/smbfs/ioctl.c
include/linux/highuid.h

index 4b48899eac230504fc8ba54e98adc6271ebcb06f..912c0460bfc4b67b6d96676c9a0f5e4c765d64d0 100644 (file)
@@ -31,8 +31,8 @@ smb_ioctl(struct inode *inode, struct file *filp,
        int result = -EINVAL;
 
        switch (cmd) {
-               uid16_t uid16 = 0;
-               uid_t uid32 = 0;
+               uid16_t uid16;
+               uid_t uid32;
        case SMB_IOC_GETMOUNTUID:
                SET_UID(uid16, server->mnt->mounted_uid);
                result = put_user(uid16, (uid16_t *) arg);
index 3ca170db446c9e7b6dcc39f88d3d10293b114c54..811cac9dba17bba7b61438f942eab8af01a1db78 100644 (file)
@@ -53,37 +53,22 @@ extern void __bad_gid(void);
 #define low2highuid(uid) ((uid) == (old_uid_t)-1 ? (uid_t)-1 : (uid_t)(uid))
 #define low2highgid(gid) ((gid) == (old_gid_t)-1 ? (gid_t)-1 : (gid_t)(gid))
 
-/* uid/gid input should be always 32bit uid_t */
-#define SET_UID(var, uid)      \
-       do {                    \
-       if (sizeof(var) == sizeof(old_uid_t)) (var) = high2lowuid(uid); \
-       else if (sizeof(var) >= sizeof(uid)) (var) = (uid); \
-       else __bad_uid(); \
-       } while(0)
-
-#define SET_GID(var, gid)      \
-       do {                    \
-       if (sizeof(var) == sizeof(old_gid_t)) (var) = high2lowgid(gid); \
-       else if (sizeof(var) >= sizeof(gid)) (var) = (gid); \
-       else __bad_gid(); \
-       } while(0)
+#define __convert_uid(size, uid) \
+       (size >= sizeof(uid) ? (uid) : high2lowuid(uid))
+#define __convert_gid(size, gid) \
+       (size >= sizeof(gid) ? (gid) : high2lowgid(gid))
+       
 
 #else
 
-#define SET_UID(var,uid) \
-       do { \
-       if (sizeof(var) < sizeof(uid)) __bad_uid(); \
-       (var) = (uid); \
-       } while (0)
-
-#define SET_GID(var,gid) \
-       do { \
-       if (sizeof(var) < sizeof(gid)) __bad_gid(); \
-       (var) = (gid); \
-       } while (0);
+#define __convert_uid(size, uid) (uid)
+#define __convert_gid(size, gid) (gid)
 
 #endif /* !CONFIG_UID16 */
 
+/* uid/gid input should be always 32bit uid_t */
+#define SET_UID(var, uid) do { (var) = __convert_uid(sizeof(var), (uid)); } while (0)
+#define SET_GID(var, gid) do { (var) = __convert_gid(sizeof(var), (gid)); } while (0)
 
 /*
  * Everything below this line is needed on all architectures, to deal with