On Wed, Dec 4, 2013 at 3:21 PM, One Thousand Gnomes <gnomes@xxxxxxxxxxxxxxxxxxx> wrote: > On Wed, 4 Dec 2013 10:35:54 -0800 > Greg KH <gregkh@xxxxxxxxxxxxxxxxxxx> wrote: > >> On Wed, Dec 04, 2013 at 06:09:41PM +0000, Serban Constantinescu wrote: >> > +#define size_helper(x) ({ \ >> > + size_t __size; \ >> > + if (!is_compat_task()) \ >> > + __size = sizeof(x); \ >> > + else if (sizeof(x) == sizeof(struct flat_binder_object)) \ >> > + __size = sizeof(struct compat_flat_binder_object); \ >> > + else if (sizeof(x) == sizeof(struct binder_transaction_data)) \ >> > + __size = sizeof(struct compat_binder_transaction_data); \ >> > + else if (sizeof(x) == sizeof(size_t)) \ >> > + __size = sizeof(compat_size_t); \ >> > + else \ >> > + BUG(); \ >> > + __size; \ >> > + }) >> >> Ick. >> >> First off, no driver should ever be able to crash the kernel, which you >> just did. > > And which would appear to mean that this code hasn't actually been > tested - at least not properly with error cases ? > > You talk about type safety too but your code is already full of > "put_user(node->ptr, (void * __user *)ptr))" None of this (the patch series or the original code) is mine. My question was more of a general one on designing ioctls, as well as concerns with changing the existing 32-bit api. _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel