On Tue, Jan 13, 2015 at 02:41:20PM -0500, Chris Metcalf wrote: > Add an extra intermediate variable to __get_user and __put_user > to give sparse an opportunity to detect mismatches. > > Signed-off-by: Chris Metcalf <cmetcalf@xxxxxxxxxx> Reviewed-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > --- > arch/tile/include/asm/uaccess.h | 19 +++++++++++-------- > 1 file changed, 11 insertions(+), 8 deletions(-) > > diff --git a/arch/tile/include/asm/uaccess.h b/arch/tile/include/asm/uaccess.h > index b81b24a8489b..f41cb53cf645 100644 > --- a/arch/tile/include/asm/uaccess.h > +++ b/arch/tile/include/asm/uaccess.h > @@ -210,14 +210,16 @@ extern int __get_user_bad(void) > #define __get_user(x, ptr) \ > ({ \ > int __ret; \ > + typeof(x) _x; \ > __chk_user_ptr(ptr); \ > switch (sizeof(*(ptr))) { \ > - case 1: __get_user_1(x, ptr, __ret); break; \ > - case 2: __get_user_2(x, ptr, __ret); break; \ > - case 4: __get_user_4(x, ptr, __ret); break; \ > - case 8: __get_user_8(x, ptr, __ret); break; \ > + case 1: __get_user_1(_x, ptr, __ret); break; \ > + case 2: __get_user_2(_x, ptr, __ret); break; \ > + case 4: __get_user_4(_x, ptr, __ret); break; \ > + case 8: __get_user_8(_x, ptr, __ret); break; \ > default: __ret = __get_user_bad(); break; \ > } \ > + (x) = (typeof(*(ptr))) _x; \ > __ret; \ > }) > > @@ -289,12 +291,13 @@ extern int __put_user_bad(void) > #define __put_user(x, ptr) \ > ({ \ > int __ret; \ > + typeof(*(ptr)) _x = (x); \ > __chk_user_ptr(ptr); \ > switch (sizeof(*(ptr))) { \ > - case 1: __put_user_1(x, ptr, __ret); break; \ > - case 2: __put_user_2(x, ptr, __ret); break; \ > - case 4: __put_user_4(x, ptr, __ret); break; \ > - case 8: __put_user_8(x, ptr, __ret); break; \ > + case 1: __put_user_1(_x, ptr, __ret); break; \ > + case 2: __put_user_2(_x, ptr, __ret); break; \ > + case 4: __put_user_4(_x, ptr, __ret); break; \ > + case 8: __put_user_8(_x, ptr, __ret); break; \ > default: __ret = __put_user_bad(); break; \ > } \ > __ret; \ > -- > 2.1.2 -- To unsubscribe from this list: send the line "unsubscribe linux-arch" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html