unsigned char   data_direction;
        compat_int_t    quiet;
        compat_int_t    timeout;
-       compat_caddr_t  reserved[1];
+       compat_caddr_t  unused;
 };
 #endif
 
                        .data_direction = cgc32.data_direction,
                        .quiet          = cgc32.quiet,
                        .timeout        = cgc32.timeout,
-                       .reserved[0]    = compat_ptr(cgc32.reserved[0]),
+                       .unused         = compat_ptr(cgc32.unused),
                };
                memcpy(&cgc->cmd, &cgc32.cmd, CDROM_PACKET_SIZE);
                return 0;
                        .data_direction = cgc->data_direction,
                        .quiet          = cgc->quiet,
                        .timeout        = cgc->timeout,
-                       .reserved[0]    = (uintptr_t)(cgc->reserved[0]),
+                       .unused         = (uintptr_t)(cgc->unused),
                };
                memcpy(&cgc32.cmd, &cgc->cmd, CDROM_PACKET_SIZE);
 
 
        unsigned char           data_direction;
        int                     quiet;
        int                     timeout;
-       void                    __user *reserved[1];    /* unused, actually */
+       union {
+               void            __user *reserved[1];    /* unused, actually */
+               void            __user *unused;
+       };
 };
 
 /*