Change ioctl structs to be 8 byte aligned rather than sizeof(int). [Alasdair Kergon] --- diff/drivers/md/dm-ioctl.c 2003-04-17 17:54:29.000000000 +0100 +++ source/drivers/md/dm-ioctl.c 2003-04-17 17:54:51.000000000 +0100 @@ -400,13 +400,12 @@ } /* - * Round up the ptr to the next 'align' boundary. Obviously - * 'align' must be a power of 2. + * Round up the ptr to an 8 byte boundary. */ -static inline void *align_ptr(void *ptr, unsigned int align) +#define ALIGN_MASK 7 +static inline void *align_ptr(void *ptr) { - align--; - return (void *) (((unsigned long) (ptr + align)) & ~align); + return (void *) (((size_t) (ptr + ALIGN_MASK)) & ~ALIGN_MASK); } /* @@ -420,7 +419,7 @@ void *ptr = NULL; if (data) { - ptr = align_ptr(user + 1, sizeof(unsigned long)); + ptr = align_ptr(user + 1); param->data_start = ptr - (void *) user; } @@ -507,14 +506,6 @@ return md; } -#define ALIGNMENT sizeof(int) -static void *_align(void *ptr, unsigned int a) -{ - register unsigned long align = --a; - - return (void *) (((unsigned long) ptr + align) & ~align); -} - /* * Copies device info back to user space, used by * the create and info ioctls. @@ -646,7 +637,7 @@ outptr[0] = '\0'; outptr += strlen(outptr) + 1; - _align(outptr, ALIGNMENT); + align_ptr(outptr); spec->next = outptr - outbuf; }