lkml.org 
[lkml]   [2008]   [Mar]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
Subject[RFC] breakage in 4223cc34365e4 (h8300: uaccess.h update)
	After that commit in asm-h8300/uaccess.h we have 

#define get_user(x, ptr) \
({ \
int __gu_err = 0; \
uint32_t __gu_val = 0; \
^^^^^^^^^^^^^^^^^
switch (sizeof(*(ptr))) { \
case 1: \
case 2: \
case 4: \
__gu_val = *(ptr); \
break; \
case 8: \
memcpy(&__gu_val, ptr, sizeof (*(ptr))); \
^^^^^^^^^^^^^^^^

which, of course, is FUBAR whenever we actually hit that case - memcpy of
8 bytes into uint32_t is obviously wrong. Why don't we simply do

#define get_user(x, ptr) \
({ \
int __gu_err = 0; \
typeof(*(ptr)) __gu_val = *ptr; \
switch (sizeof(*(ptr))) { \
case 1: \
case 2: \
case 4: \
case 8: \
break; \
default: \
__gu_err = __get_user_bad(); \
break; \
} \
(x) = __gu_val; \
__gu_err; \
})

and be done with that, anyway?


\
 
 \ /
  Last update: 2008-03-03 00:25    [W:0.038 / U:0.248 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site