s390/uaccess: add default cases for __put_user_fn()/__get_user_fn()
authorHeiko Carstens <hca@linux.ibm.com>
Thu, 8 Oct 2020 14:28:15 +0000 (16:28 +0200)
committerVasily Gorbik <gor@linux.ibm.com>
Fri, 9 Oct 2020 21:45:30 +0000 (23:45 +0200)
Add default cases for __put_user_fn()/__get_user_fn(). This doesn't
fix anything since the functions are only called with sane values.

However we get rid of smatch warnings:
./arch/s390/include/asm/uaccess.h:143 __get_user_fn() error: uninitialized symbol 'rc'.

Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/uaccess.h

index 23c8580..bf47d93 100644 (file)
@@ -60,6 +60,9 @@ raw_copy_to_user(void __user *to, const void *from, unsigned long n);
 #define INLINE_COPY_TO_USER
 #endif
 
+int __put_user_bad(void) __attribute__((noreturn));
+int __get_user_bad(void) __attribute__((noreturn));
+
 #ifdef CONFIG_HAVE_MARCH_Z10_FEATURES
 
 #define __put_get_user_asm(to, from, size, spec)               \
@@ -109,6 +112,9 @@ static __always_inline int __put_user_fn(void *x, void __user *ptr, unsigned lon
                                        (unsigned long *)x,
                                        size, spec);
                break;
+       default:
+               __put_user_bad();
+               break;
        }
        return rc;
 }
@@ -139,6 +145,9 @@ static __always_inline int __get_user_fn(void *x, const void __user *ptr, unsign
                                        (unsigned long __user *)ptr,
                                        size, spec);
                break;
+       default:
+               __get_user_bad();
+               break;
        }
        return rc;
 }
@@ -190,8 +199,6 @@ static inline int __get_user_fn(void *x, const void __user *ptr, unsigned long s
 })
 
 
-int __put_user_bad(void) __attribute__((noreturn));
-
 #define __get_user(x, ptr)                                     \
 ({                                                             \
        int __gu_err = -EFAULT;                                 \
@@ -238,8 +245,6 @@ int __put_user_bad(void) __attribute__((noreturn));
        __get_user(x, ptr);                                     \
 })
 
-int __get_user_bad(void) __attribute__((noreturn));
-
 unsigned long __must_check
 raw_copy_in_user(void __user *to, const void __user *from, unsigned long n);